|
@@ -2128,9 +2128,7 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //更新贸易订单状态
|
|
|
|
|
- kwoTradeOrder.setStatus(Objects.equals(tradeOrderAuditParam.getStatus(), 2) ? TradeOrderStatusEnum.BACK.getCode() : TradeOrderStatusEnum.ING.getCode());
|
|
|
|
|
- kwoTradeOrderMapper.updateById(kwoTradeOrder);
|
|
|
|
|
|
|
+
|
|
|
if (Objects.equals(tradeOrderAuditParam.getStatus(), 2)) {
|
|
if (Objects.equals(tradeOrderAuditParam.getStatus(), 2)) {
|
|
|
KwoTradeOrderTrack kwoTradeOrderTrack = new KwoTradeOrderTrack();
|
|
KwoTradeOrderTrack kwoTradeOrderTrack = new KwoTradeOrderTrack();
|
|
|
kwoTradeOrderTrack.setTOrderId(kwoTradeOrder.getId());
|
|
kwoTradeOrderTrack.setTOrderId(kwoTradeOrder.getId());
|
|
@@ -2254,6 +2252,7 @@ public class KwoTradeOrderService {
|
|
|
return logisticInfo;
|
|
return logisticInfo;
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
addLogisticOrderParam.setLogisticInfo(collect);
|
|
addLogisticOrderParam.setLogisticInfo(collect);
|
|
|
|
|
+ addLogisticOrderParam.setDispatchWay(DispatchWayEnums.MANUAL_DISPATCH.getCode());
|
|
|
} else {
|
|
} else {
|
|
|
List<KwoTradeOrderTransport> list = kwoTradeOrderTransportService.queryList(kwoTradeOrder.getId());
|
|
List<KwoTradeOrderTransport> list = kwoTradeOrderTransportService.queryList(kwoTradeOrder.getId());
|
|
|
if (CollUtil.isNotEmpty(list)) {
|
|
if (CollUtil.isNotEmpty(list)) {
|
|
@@ -2360,9 +2359,15 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
}
|
|
|
addLogisticOrderParam.setEntId(LoginUserHolder.getEntId());
|
|
addLogisticOrderParam.setEntId(LoginUserHolder.getEntId());
|
|
|
addLogisticOrderParam.setUserId(LoginUserHolder.getUserId());
|
|
addLogisticOrderParam.setUserId(LoginUserHolder.getUserId());
|
|
|
- addLogisticOrderParam.setDispatchWay(DispatchWayEnums.MANUAL_DISPATCH.getCode());
|
|
|
|
|
log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
|
|
log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
|
|
|
- transportRemoteService.addLogisticOrder(addLogisticOrderParam);
|
|
|
|
|
|
|
+ Integer result = transportRemoteService.addLogisticOrder(addLogisticOrderParam);
|
|
|
|
|
+ //自动派单运力不足
|
|
|
|
|
+ if (result == Global.YES) {
|
|
|
|
|
+ kwoTradeOrder.setAddVehicles(Global.YES);
|
|
|
|
|
+ }
|
|
|
|
|
+ //更新贸易订单状态
|
|
|
|
|
+ kwoTradeOrder.setStatus(Objects.equals(tradeOrderAuditParam.getStatus(), 2) ? TradeOrderStatusEnum.BACK.getCode() : TradeOrderStatusEnum.ING.getCode());
|
|
|
|
|
+ kwoTradeOrderMapper.updateById(kwoTradeOrder);
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2515,4 +2520,223 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
}
|
|
|
return new ArrayList<>();
|
|
return new ArrayList<>();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查询增补运力物流合同(手动派车物流合同)
|
|
|
|
|
+ * @param param
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<ContractLogisticsVO> queryAddContractList(ContractLogisticsQueryParam param) {
|
|
|
|
|
+ KwoTradeOrder kwoTradeOrder = kwoTradeOrderMapper.selectOne(new LambdaQueryWrapper<KwoTradeOrder>().eq(KwoTradeOrder::getId, param.getTradeOrderId()).eq(KwoTradeOrder::getDelFlag, 0));
|
|
|
|
|
+ if (Objects.isNull(kwoTradeOrder)) {
|
|
|
|
|
+ throw new BusinessException("贸易订单不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!Objects.equals(TradeOrderStatusEnum.ING.getCode(), kwoTradeOrder.getStatus())) {
|
|
|
|
|
+ throw new BusinessException("只有进行中的贸易订单可以增补运力");
|
|
|
|
|
+ }
|
|
|
|
|
+ //查询满足手动派单的物流合同
|
|
|
|
|
+ List<LogisticsEntDtoVO> contractLogisticsList = remoteContractService.queryContractLogOrder(param.getSupEntId(), param.getGoodsId());
|
|
|
|
|
+ List<LogisticsEntDtoVO> validContractLog = contractLogisticsList.stream()
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .filter(log -> log.getStartTime() != null && log.getEndTime() != null)
|
|
|
|
|
+ .filter(log -> {
|
|
|
|
|
+ boolean startTimeOk = log.getStartTime().after(kwoTradeOrder.getStartTime());
|
|
|
|
|
+ boolean endTimeOk = kwoTradeOrder.getEndTime() == null || log.getEndTime().before(kwoTradeOrder.getEndTime());
|
|
|
|
|
+ return startTimeOk && endTimeOk;
|
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
+ if (CollectionUtils.isEmpty(validContractLog)) {
|
|
|
|
|
+ throw new BusinessException("未找到该商品有效的自动派车物流合同,请先签订自动派车物流合同");
|
|
|
|
|
+ }
|
|
|
|
|
+ //填充运输单价
|
|
|
|
|
+ for (LogisticsEntDtoVO vo : validContractLog) {
|
|
|
|
|
+ LogisticsGoodsDto dto = remoteContractService.queryLogGoodsByContractId(vo.getContractId(), param.getGoodsId());
|
|
|
|
|
+ if (dto.getPrice() == null || dto.getPrice().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
|
+ vo.setTransportPrice(vo.getCommonPrice());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ vo.setTransportPrice(dto.getPrice());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ContractLogisticsVO> contractLogisticsVOS = new ArrayList<>();
|
|
|
|
|
+ for (LogisticsEntDtoVO vo : validContractLog) {
|
|
|
|
|
+ ContractLogisticsVO logisticsVO = new ContractLogisticsVO();
|
|
|
|
|
+ logisticsVO.setContractId(vo.getContractId());
|
|
|
|
|
+ logisticsVO.setContractNo(vo.getContractNo());
|
|
|
|
|
+ logisticsVO.setStartTime(vo.getStartTime());
|
|
|
|
|
+ logisticsVO.setEndTime(vo.getEndTime());
|
|
|
|
|
+ logisticsVO.setEntId(vo.getEntId());
|
|
|
|
|
+ logisticsVO.setEntName(vo.getEntName());
|
|
|
|
|
+ logisticsVO.setCommonPrice(vo.getCommonPrice());
|
|
|
|
|
+ logisticsVO.setContactsId(vo.getContactsId());
|
|
|
|
|
+ logisticsVO.setContacts(vo.getContacts());
|
|
|
|
|
+ logisticsVO.setPhone(vo.getPhone());
|
|
|
|
|
+ logisticsVO.setTransportPrice(vo.getTransportPrice());
|
|
|
|
|
+ contractLogisticsVOS.add(logisticsVO);
|
|
|
|
|
+ }
|
|
|
|
|
+ return contractLogisticsVOS;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查询增补运力物流合同(手动派车物流合同)
|
|
|
|
|
+ * @param param
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public void addContractList(ContractLogisticsAddParam param) {
|
|
|
|
|
+ KwoTradeOrder kwoTradeOrder = kwoTradeOrderMapper.selectOne(new LambdaQueryWrapper<KwoTradeOrder>().eq(KwoTradeOrder::getId, param.getTradeOrderId()).eq(KwoTradeOrder::getDelFlag, 0));
|
|
|
|
|
+ if (Objects.isNull(kwoTradeOrder)) {
|
|
|
|
|
+ throw new BusinessException("贸易订单不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!Objects.equals(TradeOrderStatusEnum.ING.getCode(), kwoTradeOrder.getStatus())) {
|
|
|
|
|
+ throw new BusinessException("只有进行中的贸易订单可以增补运力");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ KwoTradeOrderGoods byOrderId = kwoTradeOrderGoodsService.getByOrderId(kwoTradeOrder.getId());
|
|
|
|
|
+ if (Objects.isNull(byOrderId)) {
|
|
|
|
|
+ throw new BusinessException("贸易订单关联商品信息不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<KwoTradeOrderAddress> addressList = kwoTradeOrderAddressService.getByOrderId(kwoTradeOrder.getId());
|
|
|
|
|
+ if (CollUtil.isEmpty(addressList)) {
|
|
|
|
|
+ throw new BusinessException("贸易订单运输地址信息不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<String, List<KwoTradeOrderAddress>> addressMap = addressList.stream().collect(Collectors.groupingBy(KwoTradeOrderAddress::getAddressType));
|
|
|
|
|
+ if (CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()))) && CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.BOTH.getCode())))) {
|
|
|
|
|
+ throw new BusinessException("装货地址信息不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.TAKE.getCode()))) && CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.BOTH.getCode())))) {
|
|
|
|
|
+ throw new BusinessException("卸货地址信息不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ TradeContractResDto tradeContractResDto = remoteContractService.queryTradeContract(param.getTradeContractId(), param.getGoodsId());
|
|
|
|
|
+ if (Objects.isNull(tradeContractResDto)) {
|
|
|
|
|
+ throw new BusinessException("贸易合同不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitService.getByOrderId(kwoTradeOrder.getId());
|
|
|
|
|
+ if (CollUtil.isEmpty(orderUnits)) {
|
|
|
|
|
+ throw new BusinessException("贸易订单企业信息不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<String, KwoTradeOrderUnit> unitMap = orderUnits.stream().collect(Collectors.toMap(KwoTradeOrderUnit::getUnitType, e -> e, (a, b) -> a));
|
|
|
|
|
+ if (unitMap.keySet().size() < 2) {
|
|
|
|
|
+ throw new BusinessException("贸易订单企业信息缺失");
|
|
|
|
|
+ }
|
|
|
|
|
+ if(Objects.equals(tradeContractResDto.getConsignment(), 2)) {
|
|
|
|
|
+ throw new BusinessException("增补运力必须为卖方托运");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<LogisticsEntDto> logisticsContractList = param.getLogisticsContractList();
|
|
|
|
|
+ if (CollUtil.isEmpty(logisticsContractList)) {
|
|
|
|
|
+ throw new BusinessException("物流合同不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //创建贸易订单和物流合同关联关系
|
|
|
|
|
+ for (LogisticsEntDto logisticsEntDto : logisticsContractList) {
|
|
|
|
|
+ KwoTradeOrderTransport kwoTradeOrderTransport = new KwoTradeOrderTransport();
|
|
|
|
|
+ kwoTradeOrderTransport.setId(new IdWorker(1).nextId());
|
|
|
|
|
+ kwoTradeOrderTransport.setTOrderId(kwoTradeOrder.getId());
|
|
|
|
|
+ kwoTradeOrderTransport.setTOrderNo(kwoTradeOrder.getTOrderNo());
|
|
|
|
|
+ kwoTradeOrderTransport.setEntId(logisticsEntDto.getEntId());
|
|
|
|
|
+ kwoTradeOrderTransport.setFirmName(logisticsEntDto.getEntName());
|
|
|
|
|
+ kwoTradeOrderTransport.setContractId(logisticsEntDto.getContractId());
|
|
|
|
|
+ kwoTradeOrderTransport.setContractNo(logisticsEntDto.getContractNo());
|
|
|
|
|
+ kwoTradeOrderTransport.setTransportPrice(logisticsEntDto.getTransportPrice());
|
|
|
|
|
+ kwoTradeOrderTransport.setContactsId(logisticsEntDto.getContactsId());
|
|
|
|
|
+ kwoTradeOrderTransport.setContacts(logisticsEntDto.getContacts());
|
|
|
|
|
+ kwoTradeOrderTransport.setPhone(logisticsEntDto.getPhone());
|
|
|
|
|
+ kwoTradeOrderTransport.setRemark("");
|
|
|
|
|
+ kwoTradeOrderTransport.setStatus(0);
|
|
|
|
|
+ kwoTradeOrderTransport.setCreateBy(LoginUserHolder.getUserId());
|
|
|
|
|
+ kwoTradeOrderTransport.setCreateTime(LocalDateTime.now());
|
|
|
|
|
+ kwoTradeOrderTransportService.insert(kwoTradeOrderTransport);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //组装下游生成物流订单数据
|
|
|
|
|
+ AddLogisticOrderParam addLogisticOrderParam = new AddLogisticOrderParam();
|
|
|
|
|
+ List<LogisticInfo> collect = logisticsContractList.stream().map(d -> {
|
|
|
|
|
+ LogisticInfo logisticInfo = new LogisticInfo();
|
|
|
|
|
+ logisticInfo.setContractId(d.getContractId());
|
|
|
|
|
+ logisticInfo.setContractNo(d.getContractNo());
|
|
|
|
|
+ logisticInfo.setContractName("");
|
|
|
|
|
+ logisticInfo.setAcceptCompanyId(d.getEntId());
|
|
|
|
|
+ logisticInfo.setAcceptContactPhone("");
|
|
|
|
|
+ logisticInfo.setAcceptContacts(d.getContacts());
|
|
|
|
|
+ logisticInfo.setAcceptContactsId(d.getContactsId());
|
|
|
|
|
+ logisticInfo.setAcceptCompany("");
|
|
|
|
|
+ logisticInfo.setPrice(d.getTransportPrice());
|
|
|
|
|
+ logisticInfo.setPriceType(0L);
|
|
|
|
|
+ logisticInfo.setAmount(new BigDecimal("0"));
|
|
|
|
|
+ logisticInfo.setAmountUnit("");
|
|
|
|
|
+ logisticInfo.setLoss(new BigDecimal("0"));
|
|
|
|
|
+ logisticInfo.setPayment(0L);
|
|
|
|
|
+ logisticInfo.setSigningWay(0);
|
|
|
|
|
+ logisticInfo.setLossUnit("");
|
|
|
|
|
+ logisticInfo.setRemark("");
|
|
|
|
|
+ logisticInfo.setType(0);
|
|
|
|
|
+
|
|
|
|
|
+ return logisticInfo;
|
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
+ addLogisticOrderParam.setLogisticInfo(collect);
|
|
|
|
|
+
|
|
|
|
|
+ addLogisticOrderParam.setTradeOrderId(kwoTradeOrder.getId());
|
|
|
|
|
+ addLogisticOrderParam.setTradeOrderNo(kwoTradeOrder.getTOrderNo());
|
|
|
|
|
+ addLogisticOrderParam.setBillingMode(String.valueOf(kwoTradeOrder.getChargeType()));
|
|
|
|
|
+ addLogisticOrderParam.setStartTime(DateUtils.dateToLocalDate(kwoTradeOrder.getStartTime()));
|
|
|
|
|
+ addLogisticOrderParam.setEndTime(DateUtils.dateToLocalDate(kwoTradeOrder.getEndTime()));
|
|
|
|
|
+
|
|
|
|
|
+ KwoTradeOrderUnit kwoTradeOrderUnit = unitMap.get("2");//卖方
|
|
|
|
|
+ if (Objects.nonNull(kwoTradeOrderUnit)) {
|
|
|
|
|
+ addLogisticOrderParam.setConsignCompany(kwoTradeOrderUnit.getFirmName());
|
|
|
|
|
+ addLogisticOrderParam.setConsignCompanyId(kwoTradeOrderUnit.getEntId());
|
|
|
|
|
+ addLogisticOrderParam.setConsignContactPhone(kwoTradeOrderUnit.getPhone());
|
|
|
|
|
+ addLogisticOrderParam.setConsignContacts(kwoTradeOrderUnit.getContacts());
|
|
|
|
|
+ addLogisticOrderParam.setConsignContactsId(kwoTradeOrderUnit.getContactsId());
|
|
|
|
|
+ }
|
|
|
|
|
+ KwoTradeOrderUnit kwoTradeOrderUnit2 = unitMap.get("1");//买方
|
|
|
|
|
+ if (Objects.nonNull(kwoTradeOrderUnit2)) {
|
|
|
|
|
+ addLogisticOrderParam.setNonConsignCompany(kwoTradeOrderUnit2.getFirmName());
|
|
|
|
|
+ addLogisticOrderParam.setNonConsignCompanyId(kwoTradeOrderUnit2.getEntId());
|
|
|
|
|
+ addLogisticOrderParam.setNonConsignContactPhone(kwoTradeOrderUnit2.getPhone());
|
|
|
|
|
+ addLogisticOrderParam.setNonConsignContacts(kwoTradeOrderUnit2.getContacts());
|
|
|
|
|
+ addLogisticOrderParam.setNonConsignContactsId(kwoTradeOrderUnit2.getContactsId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ addLogisticOrderParam.setGoodsId(byOrderId.getGoodsId());
|
|
|
|
|
+ addLogisticOrderParam.setGoodsName(byOrderId.getGoodsName());
|
|
|
|
|
+ addLogisticOrderParam.setGoodsType(byOrderId.getGoodsType());
|
|
|
|
|
+ addLogisticOrderParam.setGoodsPrice(byOrderId.getUnitPrice());
|
|
|
|
|
+ addLogisticOrderParam.setGoodsPriceUnit(byOrderId.getUnit());
|
|
|
|
|
+ List<KwoTradeOrderAddress> kwoTradeOrderAddresses = addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()));
|
|
|
|
|
+ KwoTradeOrderAddress kwoTradeOrderAddress = kwoTradeOrderAddresses.get(0);
|
|
|
|
|
+ if (Objects.nonNull(kwoTradeOrderAddress)) {
|
|
|
|
|
+ addLogisticOrderParam.setLoadName(kwoTradeOrderAddress.getName());
|
|
|
|
|
+ addLogisticOrderParam.setLoadCityCode(kwoTradeOrderAddress.getCityCode());
|
|
|
|
|
+ addLogisticOrderParam.setLoadCityName(kwoTradeOrderAddress.getCityName());
|
|
|
|
|
+ addLogisticOrderParam.setLoadContacts(kwoTradeOrderAddress.getContacts());
|
|
|
|
|
+ addLogisticOrderParam.setLoadPhone(kwoTradeOrderAddress.getPhone());
|
|
|
|
|
+ addLogisticOrderParam.setLoadDetailAddress(kwoTradeOrderAddress.getDetailAddress());
|
|
|
|
|
+ addLogisticOrderParam.setLoadLat(kwoTradeOrderAddress.getLat());
|
|
|
|
|
+ addLogisticOrderParam.setLoadLng(kwoTradeOrderAddress.getLng());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<KwoTradeOrderAddress> kwoTradeOrderAddresses2 = addressMap.get(String.valueOf(AddressTypeEnum.TAKE.getCode()));
|
|
|
|
|
+ KwoTradeOrderAddress unloadAddress = kwoTradeOrderAddresses2.get(0);
|
|
|
|
|
+ if (Objects.nonNull(unloadAddress)) {
|
|
|
|
|
+ addLogisticOrderParam.setUnloadId(unloadAddress.getId());
|
|
|
|
|
+ addLogisticOrderParam.setUnloadName(unloadAddress.getName());
|
|
|
|
|
+ addLogisticOrderParam.setUnloadCityCode(unloadAddress.getCityCode());
|
|
|
|
|
+ addLogisticOrderParam.setUnloadCityName(unloadAddress.getCityName());
|
|
|
|
|
+ addLogisticOrderParam.setUnLoadDetailAddress(unloadAddress.getDetailAddress());
|
|
|
|
|
+ addLogisticOrderParam.setUnloadContacts(unloadAddress.getContacts());
|
|
|
|
|
+ addLogisticOrderParam.setUnloadPhone(unloadAddress.getPhone());
|
|
|
|
|
+ addLogisticOrderParam.setUnloadLng(unloadAddress.getLng());
|
|
|
|
|
+ addLogisticOrderParam.setUnloadLat(unloadAddress.getLat());
|
|
|
|
|
+ }
|
|
|
|
|
+ addLogisticOrderParam.setEntId(LoginUserHolder.getEntId());
|
|
|
|
|
+ addLogisticOrderParam.setUserId(LoginUserHolder.getUserId());
|
|
|
|
|
+ addLogisticOrderParam.setDispatchWay(DispatchWayEnums.MANUAL_DISPATCH.getCode());
|
|
|
|
|
+ log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
|
|
|
|
|
+ transportRemoteService.addLogisticOrder(addLogisticOrderParam);
|
|
|
|
|
+
|
|
|
|
|
+ //修改贸易订单增派运力是否满足
|
|
|
|
|
+ kwoTradeOrder.setAddVehicles(Global.NO);
|
|
|
|
|
+ kwoTradeOrderMapper.updateById(kwoTradeOrder);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|