|
|
@@ -11,6 +11,7 @@ import com.sckw.core.annotation.Log;
|
|
|
import com.sckw.core.common.enums.NumberConstant;
|
|
|
import com.sckw.core.common.enums.enums.DictEnum;
|
|
|
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.enums.LogisticsOrderEnum;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
@@ -24,9 +25,7 @@ import com.sckw.core.web.response.HttpResult;
|
|
|
import com.sckw.mongo.enums.BusinessTypeEnum;
|
|
|
import com.sckw.mongo.model.SckwLogisticsOrder;
|
|
|
import com.sckw.order.api.dubbo.TradeOrderInfoService;
|
|
|
-import com.sckw.order.api.model.CreateOrCancelLogisticsOrderParam;
|
|
|
-import com.sckw.order.api.model.OrderDetailRes;
|
|
|
-import com.sckw.order.api.model.UnitInfoDetailRes;
|
|
|
+import com.sckw.order.api.model.*;
|
|
|
import com.sckw.stream.enums.MessageEnum;
|
|
|
import com.sckw.stream.model.SckwBusSum;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
@@ -75,6 +74,9 @@ public class TransportCommonService {
|
|
|
@Autowired
|
|
|
public CommonService commonService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ public KwtWaybillOrderService waybillOrderService;
|
|
|
+
|
|
|
@Autowired
|
|
|
public KwtLogisticsOrderGoodsMapper logisticsOrderGoodsMapper;
|
|
|
|
|
|
@@ -752,19 +754,20 @@ public class TransportCommonService {
|
|
|
|
|
|
/**2物流订单树形数据结构**/
|
|
|
//所有管理物流订单
|
|
|
- List<KwtLogisticsOrder> orders = logisticsOrderMapper.findLogisticsOrder(new HashMap<>(){{
|
|
|
- put("upperlOrderId", lOrderId);
|
|
|
- put("belowlOrderId", logisticsOrder.getPids());
|
|
|
+ List<KwtLogisticsOrder> orders = logisticsOrderMapper.findLogisticsOrder(new HashMap<>(Global.NUMERICAL_SIXTEEN){{
|
|
|
+ put("plOrderIds", lOrderId);
|
|
|
+ put("currentlOrderId", logisticsOrder.getPids());
|
|
|
+ put("allOrderId", Global.NUMERICAL_ONE);
|
|
|
}});
|
|
|
//数据copy
|
|
|
- List<KwtLogisticsOrderTreeVo> logisticsOrders = orders.stream().map( order -> {
|
|
|
- KwtLogisticsOrderTreeVo logisticsOrderVo = new KwtLogisticsOrderTreeVo();
|
|
|
- BeanUtils.copyPropertiesValue(order, logisticsOrderVo);
|
|
|
- return logisticsOrderVo;
|
|
|
- }
|
|
|
- ).collect(Collectors.toList());
|
|
|
+ List<KwtLogisticsOrderTreeVo> logisticsOrders = new ArrayList<>();
|
|
|
+ for (KwtLogisticsOrder order:orders) {
|
|
|
+ KwtLogisticsOrderTreeVo logisticsOrderVo = new KwtLogisticsOrderTreeVo();
|
|
|
+ BeanUtils.copyProperties(order, logisticsOrderVo);
|
|
|
+ logisticsOrders.add(logisticsOrderVo);
|
|
|
+ }
|
|
|
List<KwtLogisticsOrderTreeVo> treeData = findTree(logisticsOrders);
|
|
|
- /**数据去除已完结订单下级*/
|
|
|
+ //数据去除已完结订单下级
|
|
|
orderTreeHandle(treeData);
|
|
|
|
|
|
/**3链路数据组装*/
|
|
|
@@ -775,49 +778,74 @@ public class TransportCommonService {
|
|
|
}
|
|
|
List<KwtLogisticsOrderTreeVo> orderLink = findLink(orderLinks, lOrderId);
|
|
|
//倒序
|
|
|
+ assert orderLink != null;
|
|
|
Collections.reverse(orderLink);
|
|
|
|
|
|
/**4数据处理**/
|
|
|
for (KwtLogisticsOrderTreeVo order:orderLink) {
|
|
|
//排除已完结订单
|
|
|
if (Objects.equals(order.getStatus(), LogisticsOrderEnum.HAVE_FINISHED.getCode())) {
|
|
|
- //计算总装总卸向上级统计
|
|
|
+ //上级物流订单分包量技术-排除一级物流订单
|
|
|
+ if (order.getPid() != null) {
|
|
|
+ //mysql数据更新
|
|
|
+ KwtLogisticsOrder currentOrder = logisticsOrderMapper.selectById(order.getPid());
|
|
|
+ //差值=上游委托量-实际总装货量
|
|
|
+ BigDecimal difference = order.getAmount().subtract(order.getTotalLoadAmount());
|
|
|
+ currentOrder.setSubcontractAmount(currentOrder.getSubcontractAmount().subtract(difference));
|
|
|
+ logisticsOrderMapper.updateById(currentOrder);
|
|
|
+
|
|
|
+ //Mongodb数据更新
|
|
|
+ SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
|
|
|
+ lOrder.setSubcontractAmount(currentOrder.getSubcontractAmount());
|
|
|
+ waybillOrderService.editSckwLogisticsOrder(lOrder, currentOrder);
|
|
|
+ }
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//车辆运单统计(运输中的物流订单+车辆运单审核通过)
|
|
|
- WaybillCountVo waybillCount = waybillOrderMapper.findWaybillOrderCount(new HashMap() {{
|
|
|
+ WaybillCountVo waybillCount = waybillOrderMapper.findWaybillOrderCount(new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
|
|
|
+ //put("ownOrderId", order.getId());
|
|
|
put("upperlOrderId", order.getId());
|
|
|
put("passStatus", Global.NUMERICAL_ONE);
|
|
|
put("logisticsStatus", LogisticsOrderEnum.IN_TRANSIT.getCode());
|
|
|
}});
|
|
|
//物流订单统计(运输完成后的物流订单)
|
|
|
- LogisticsCountVo LogisticsCount = logisticsOrderMapper.findLogisticsOrderCount(new HashMap(){{
|
|
|
+ LogisticsCountVo LogisticsCount = logisticsOrderMapper.findLogisticsOrderCount(new HashMap<>(Global.NUMERICAL_SIXTEEN){{
|
|
|
put("upperlOrderId", order.getId());
|
|
|
put("finishedStatus", Global.NUMERICAL_ONE);
|
|
|
}});
|
|
|
|
|
|
- KwtLogisticsOrder currentOrder = logisticsOrderMapper.selectById(lOrderId);
|
|
|
- currentOrder.setTotalLoadAmount(waybillCount.getLoadAmount().add(LogisticsCount.getLoadAmount()));
|
|
|
- currentOrder.setTotalUnloadAmount(waybillCount.getUnloadAmount().add(LogisticsCount.getUnloadAmount()));
|
|
|
+ //mysql数据更新
|
|
|
+ KwtLogisticsOrder currentOrder = logisticsOrderMapper.selectById(order.getId());
|
|
|
+ currentOrder.setTotalLoadAmount(waybillCount.getLoadAmount().add(LogisticsCount.getTotalLoadAmount()));
|
|
|
+ currentOrder.setTotalUnloadAmount(waybillCount.getUnloadAmount().add(LogisticsCount.getTotalUnloadAmount()));
|
|
|
logisticsOrderMapper.updateById(currentOrder);
|
|
|
|
|
|
- /**Mongodb数据更新**/
|
|
|
+ //Mongodb数据更新
|
|
|
SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
|
|
|
- lOrder.setTotalLoadAmount(waybillCount.getLoadAmount());
|
|
|
- lOrder.setTotalUnloadAmount(waybillCount.getUnloadAmount());
|
|
|
- SckwBusSum busSum = new SckwBusSum();
|
|
|
- //业务汇总类型
|
|
|
- busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
|
|
|
- //操作对象(1新增/2修改)
|
|
|
- busSum.setMethod(NumberConstant.TWO);
|
|
|
- //业务汇总数据对象
|
|
|
- busSum.setObject(order);
|
|
|
- streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
|
|
|
+ lOrder.setTotalLoadAmount(currentOrder.getTotalLoadAmount());
|
|
|
+ lOrder.setTotalUnloadAmount(currentOrder.getTotalUnloadAmount());
|
|
|
+ waybillOrderService.editSckwLogisticsOrder(lOrder, currentOrder);
|
|
|
|
|
|
//一级物流订单向贸易订单推送数据
|
|
|
- if (order.getPid() == null) {
|
|
|
-
|
|
|
+ if (order.getPid() == null && Integer.parseInt(order.getType()) == Global.NUMERICAL_ONE) {
|
|
|
+ //物流订单统计(运输完成后的物流订单)
|
|
|
+ LogisticsCountVo tradeCount = logisticsOrderMapper.findLogisticsOrderCount(new HashMap<>(){{
|
|
|
+ put("tOrderId", order.getTOrderId());
|
|
|
+ put("level", Global.NUMERICAL_ONE);
|
|
|
+ }});
|
|
|
+ UpdateActualAmountParam tradeOrder = new UpdateActualAmountParam();
|
|
|
+ tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
|
|
|
+ tradeOrder.setActualLoadAmount(tradeCount.getTotalLoadAmount());
|
|
|
+ tradeOrder.setActualUnloadAmount(tradeCount.getTotalUnloadAmount());
|
|
|
+ tradeOrder.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ tradeOrder.setUpdateByName(LoginUserHolder.getUserName());
|
|
|
+ log.info("托运订单手动完结请求参数:{}", JSONObject.toJSONString(tradeOrder));
|
|
|
+ HttpResult httpResult = tradeOrderInfoService.updateActualAmount(tradeOrder);
|
|
|
+ if (httpResult.getCode() != HttpStatus.SUCCESS_CODE) {
|
|
|
+ log.info("贸易订单手动完结订单异常,传递信息:{},返回信息:{}", JSONObject.toJSONString(tradeOrder), JSONObject.toJSONString(httpResult));
|
|
|
+ throw new BusinessException("单据完结出现错误!" + httpResult.getMsg());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -963,4 +991,5 @@ public class TransportCommonService {
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
}
|