|
|
@@ -10,6 +10,7 @@ import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import com.google.common.collect.Sets;
|
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
+import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
|
import com.sckw.core.model.constant.NumberConstant;
|
|
|
import com.sckw.core.model.constant.UrlConstants;
|
|
|
@@ -121,6 +122,8 @@ public class KwtWaybillOrderV1Service {
|
|
|
private final KwtWaybillOrderRepository kwtWaybillOrderRepository;
|
|
|
private final KwtLogisticsOrderUnitRepository kwtLogisticsOrderUnitRepository;
|
|
|
private final KwtLogisticsOrderGoodsRepository kwtLogisticsOrderGoodsRepository;
|
|
|
+ private final KwtWaybillOrderSubtaskRepository kwtWaybillOrderSubtaskRepository;
|
|
|
+ private final KwtLogisticsOrderRepository kwtLogisticsOrderRepository;
|
|
|
@Resource
|
|
|
private StreamBridge streamBridge;
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
@@ -3141,7 +3144,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
waybillOrderResp.setLoadingTime(DateUtils.format(loadTrack.getOperateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
|
waybillOrderResp.setOffsiteTime(DateUtils.format(unloadTrack.getOperateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
|
waybillOrderResp.setStatus(String.valueOf(record.getStatus()));
|
|
|
- waybillOrderResp.setStatusDesc(CarWaybillEnum.getName(record.getStatus()));
|
|
|
+ waybillOrderResp.setStatusDesc(CarWaybillV1Enum.geDesc(record.getStatus()));
|
|
|
return waybillOrderResp;
|
|
|
}
|
|
|
|
|
|
@@ -3155,4 +3158,101 @@ public class KwtWaybillOrderV1Service {
|
|
|
return order;
|
|
|
}
|
|
|
|
|
|
+ public WaybillOrderDetailResp queryBillOrderDetail(WaybillOrderRequest req) {
|
|
|
+ log.info("查询运单详情请求:{}",JSON.toJSONString( req));
|
|
|
+ Long orderId = req.getOrderId();
|
|
|
+ KwtWaybillOrder billOrder = kwtWaybillOrderRepository.queryByBillOrderId(orderId);
|
|
|
+ if (Objects.isNull(billOrder)){
|
|
|
+ throw new BusinessException("运单信息不存在");
|
|
|
+ }
|
|
|
+ //查询车辆信息
|
|
|
+ RTruckVo truck = remoteFleetService.findTruck(billOrder.getTruckId());
|
|
|
+ //查询子运单
|
|
|
+ KwtWaybillOrderSubtask subtask = kwtWaybillOrderSubtaskRepository.queryByBillOrderId(billOrder.getId());
|
|
|
+ if (Objects.isNull(subtask)){
|
|
|
+ throw new BusinessException("子运单信息不存在");
|
|
|
+ }
|
|
|
+ //查询物流信息
|
|
|
+ KwtLogisticsOrder logOrder = kwtLogisticsOrderRepository.queryByLogisticsOrderId(subtask.getLOrderId());
|
|
|
+ if (Objects.isNull(logOrder)){
|
|
|
+ throw new BusinessException("物流信息不存在");
|
|
|
+ }
|
|
|
+ //查询车队
|
|
|
+ Long fleetId = Objects.nonNull(truck) && org.apache.commons.lang3.StringUtils.isNotBlank(truck.getFleetId()) ?
|
|
|
+ Long.parseLong(truck.getFleetId()) : null;
|
|
|
+
|
|
|
+ RFleetVo fleet = remoteFleetService.findFleetById(fleetId);
|
|
|
+
|
|
|
+ //查询商品信息
|
|
|
+ KwtLogisticsOrderGoods goods = kwtLogisticsOrderGoodsRepository.queryByLogOrderId(logOrder.getId());
|
|
|
+ //查询运单装货地址卸货地址
|
|
|
+ List<KwtWaybillOrderAddress> kwtWaybillOrderAddresses = waybillOrderAddressRepository.queryByWOrderId(billOrder.getId());
|
|
|
+ Map<String, KwtWaybillOrderAddress> keyAndAddressMap = Maps.newHashMap() ;
|
|
|
+ if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwtWaybillOrderAddresses)){
|
|
|
+ keyAndAddressMap = kwtWaybillOrderAddresses.stream()
|
|
|
+ .collect(Collectors.toMap(x -> x.getId() + "-" + x.getAddressType(),
|
|
|
+ Function.identity(), (x, y) -> x));
|
|
|
+ }
|
|
|
+
|
|
|
+ return getWaybillOrderDetailResp(billOrder, logOrder, truck, fleet, goods, keyAndAddressMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private static WaybillOrderDetailResp getWaybillOrderDetailResp(KwtWaybillOrder billOrder, KwtLogisticsOrder logOrder, RTruckVo truck, RFleetVo fleet, KwtLogisticsOrderGoods goods, Map<String, KwtWaybillOrderAddress> keyAndAddressMap) {
|
|
|
+ WaybillOrderDetailResp waybillOrderDetailResp = new WaybillOrderDetailResp();
|
|
|
+ waybillOrderDetailResp.setWaybillOrderId(String.valueOf(billOrder.getId()));
|
|
|
+ waybillOrderDetailResp.setLogisticOrderNo(logOrder.getLOrderNo());
|
|
|
+ waybillOrderDetailResp.setTruckNo(billOrder.getTruckNo());
|
|
|
+ waybillOrderDetailResp.setCarAxis(Objects.nonNull(truck) ? truck.getCarAxis() : "");
|
|
|
+ waybillOrderDetailResp.setFleetName(Optional.ofNullable(fleet).map(RFleetVo::getName).orElse( ""));
|
|
|
+ waybillOrderDetailResp.setDriverName(billOrder.getDriverName());
|
|
|
+ waybillOrderDetailResp.setDriverPhone(billOrder.getDriverPhone());
|
|
|
+ waybillOrderDetailResp.setDriverIdCard(billOrder.getDriverIdcard());
|
|
|
+ waybillOrderDetailResp.setGoodsName(Optional.ofNullable(goods).map(KwtLogisticsOrderGoods::getGoodsName).orElse( ""));
|
|
|
+ KwtWaybillOrderAddress loadAdd = keyAndAddressMap.getOrDefault(billOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtWaybillOrderAddress());
|
|
|
+ waybillOrderDetailResp.setLoadAddress(loadAdd.getDetailAddress());
|
|
|
+ KwtWaybillOrderAddress unLoadAdd =
|
|
|
+ keyAndAddressMap.getOrDefault(billOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(),
|
|
|
+ new KwtWaybillOrderAddress());
|
|
|
+ waybillOrderDetailResp.setUnloadAddress(unLoadAdd.getDetailAddress());
|
|
|
+ waybillOrderDetailResp.setTaskVolume(Objects.nonNull(billOrder.getEntrustAmount()) ?
|
|
|
+ billOrder.getEntrustAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");
|
|
|
+ waybillOrderDetailResp.setLoadAmount(Objects.nonNull(billOrder.getLoadAmount()) ?
|
|
|
+ billOrder.getLoadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");
|
|
|
+ waybillOrderDetailResp.setUnloadAmount(Objects.nonNull(billOrder.getUnloadAmount()) ?
|
|
|
+ billOrder.getUnloadAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");
|
|
|
+ return waybillOrderDetailResp;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean reviewWaybillOrder(@Valid ReviewWaybillOrderReq req) {
|
|
|
+ log.info("审核运单请求参数:{}", JSON.toJSONString(req));
|
|
|
+ Long waybillId = Long.parseLong(req.getWaybillId());
|
|
|
+ Integer status = Integer.parseInt(req.getStatus());
|
|
|
+ //查询运单信息
|
|
|
+ KwtWaybillOrder billOrder = kwtWaybillOrderRepository.queryByBillOrderId(waybillId);
|
|
|
+ if (Objects.isNull(billOrder)){
|
|
|
+ throw new BusinessException("运单信息不存在");
|
|
|
+ }
|
|
|
+ KwtWaybillOrderSubtask subtask = kwtWaybillOrderSubtaskRepository.queryByBillOrderId(waybillId);
|
|
|
+ if (Objects.isNull(subtask)){
|
|
|
+ throw new BusinessException("子运单信息不存在");
|
|
|
+ }
|
|
|
+ KwtWaybillOrder updateOrder = new KwtWaybillOrder();
|
|
|
+ updateOrder.setId(billOrder.getId());
|
|
|
+ KwtWaybillOrderSubtask updateSubtask = new KwtWaybillOrderSubtask();
|
|
|
+ updateSubtask.setId(subtask.getId());
|
|
|
+ //运单当前状态是已卸货,传入的订单是已完成 驳回的订单可以通过完善单证变成已完成
|
|
|
+ List<Integer> statusList = Arrays.asList(CarWaybillV1Enum.COMPLETION_LOADING.getCode(),
|
|
|
+ CarWaybillV1Enum.COMPLETION_UNLOADING.getCode());
|
|
|
+ if (statusList.contains(billOrder.getStatus()) && Objects.equals(status, CarWaybillV1Enum.WAIT_UNLOADING.getCode())){
|
|
|
+ updateOrder.setStatus(status);
|
|
|
+ updateSubtask.setStatus(status);
|
|
|
+ boolean b = kwtWaybillOrderRepository.updateById(updateOrder) && kwtWaybillOrderSubtaskRepository.updateById(updateSubtask);
|
|
|
+ if (!b){
|
|
|
+ throw new BusinessException("运单状态更新失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Boolean.TRUE;
|
|
|
+ }
|
|
|
}
|