|
|
@@ -128,6 +128,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
private final KwtLogisticsOrderRepository kwtLogisticsOrderRepository;
|
|
|
private final KwtWaybillOrderTicketRepository kwtWaybillOrderTicketRepository;
|
|
|
private final KwtWaybillOrderNodeRepository kwtWaybillOrderNodeRepository;
|
|
|
+ private final KwtWaybillOrderNodeRepository waybillOrderNodeRepository;
|
|
|
@Resource
|
|
|
private StreamBridge streamBridge;
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
@@ -3381,10 +3382,13 @@ public class KwtWaybillOrderV1Service {
|
|
|
//获取更新 订单状态
|
|
|
KwtLogisticsOrder kwtLogisticsOrder = getKwtLogisticsOrder(kwtLogistics, subtask);
|
|
|
boolean b1 = kwtLogisticsOrderRepository.updateById(kwtLogisticsOrder);
|
|
|
-
|
|
|
+ // 存储记录
|
|
|
+ String remark = "审核通过,运单【"+ billOrder.getWOrderNo() + "】已完成";
|
|
|
+ saveNode(billOrder, subtask, status,remark);
|
|
|
if (!b || !b1){
|
|
|
throw new BusinessException("审核运单失败");
|
|
|
}
|
|
|
+
|
|
|
return Boolean.TRUE;
|
|
|
}
|
|
|
// 驳回的订单可以通过完善单证变成已完成
|
|
|
@@ -3398,6 +3402,12 @@ public class KwtWaybillOrderV1Service {
|
|
|
kwtWaybillOrderTicket.setUrls(req.getAddressUrl());
|
|
|
kwtWaybillOrderTicket.setUploadingTime(new Date());
|
|
|
Boolean b1 = kwtWaybillOrderTicketRepository.updateByBillOrderIdAndType(kwtWaybillOrderTicket, 2);
|
|
|
+ // 存储记录
|
|
|
+ Long currentRoleId = LoginUserHolder.getCurrentRoleId();
|
|
|
+ KwsRoleDto kwsRoleDto = remoteSystemService.queryByRoleIdAndEntId(currentRoleId);
|
|
|
+ String roleName = Objects.nonNull(kwsRoleDto) ? kwsRoleDto.getName() : "";
|
|
|
+ String remark = "供应方,【"+roleName+"】【"+LoginUserHolder.getUserName()+"】已审核单证";
|
|
|
+ saveNode(billOrder, subtask, status,remark);
|
|
|
if (!b || !b1){
|
|
|
throw new BusinessException("完整单证失败");
|
|
|
}
|
|
|
@@ -3406,6 +3416,15 @@ public class KwtWaybillOrderV1Service {
|
|
|
return Boolean.FALSE;
|
|
|
}
|
|
|
|
|
|
+ private void saveNode(KwtWaybillOrder billOrder, KwtWaybillOrderSubtask subtask, Integer status,String remark) {
|
|
|
+ KwtWaybillOrderNode kwtWaybillOrderNode = new KwtWaybillOrderNode();
|
|
|
+ kwtWaybillOrderNode.setWOrderId(billOrder.getId());
|
|
|
+ kwtWaybillOrderNode.setWSubtaskId(subtask.getId());
|
|
|
+ kwtWaybillOrderNode.setOrderStatus(status);
|
|
|
+ kwtWaybillOrderNode.setRemark(remark);
|
|
|
+ waybillOrderNodeRepository.save(kwtWaybillOrderNode);
|
|
|
+ }
|
|
|
+
|
|
|
@NotNull
|
|
|
private static KwtLogisticsOrder getKwtLogisticsOrder(KwtLogisticsOrder kwtLogistics, KwtWaybillOrderSubtask subtask) {
|
|
|
if (Objects.isNull(kwtLogistics)){
|
|
|
@@ -3470,7 +3489,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
* @author system
|
|
|
* @date 2025/06/24
|
|
|
*/
|
|
|
- public List<WaybillOrderNodeVo> queryWaybillOrderNodeTimeline(WaybillOrderNodeReq req) {
|
|
|
+ public WaybillOrderNodeVo queryWaybillOrderNodeTimeline(WaybillOrderNodeReq req) {
|
|
|
log.info("查询运单节点轨迹,请求参数:{}", JSON.toJSONString(req));
|
|
|
|
|
|
// 查询节点轨迹数据
|
|
|
@@ -3478,7 +3497,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
req.getWOrderId(), req.getWSubtaskId());
|
|
|
|
|
|
if (CollectionUtils.isEmpty(nodes)) {
|
|
|
- return new ArrayList<>();
|
|
|
+ return new WaybillOrderNodeVo();
|
|
|
}
|
|
|
|
|
|
// 查询运单子单信息,用于获取商品名称和重量
|
|
|
@@ -3498,27 +3517,19 @@ public class KwtWaybillOrderV1Service {
|
|
|
Map<Long, KwtLogisticsOrderGoods> goodsMap = goodsList.stream()
|
|
|
.collect(Collectors.toMap(KwtLogisticsOrderGoods::getLOrderId, Function.identity(), (k1, k2) -> k1));
|
|
|
|
|
|
- // 查询过磅单据信息(如果有地磅)
|
|
|
-// Set<Long> nodeIds = nodes.stream()
|
|
|
-// .filter(n -> n.getWeighbridgeId() != null)
|
|
|
-// .map(KwtWaybillOrderNode::getId)
|
|
|
-// .collect(Collectors.toSet());
|
|
|
-// Map<Long, KwtWaybillOrderTicket> ticketMap = new HashMap<>();
|
|
|
-// if (!nodeIds.isEmpty()) {
|
|
|
-// // 这里假设根据wSubtaskId和地址ID查询
|
|
|
-// // 实际可能需要根据具体业务调整查询逻辑
|
|
|
-// }
|
|
|
|
|
|
// 单位字典
|
|
|
- Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(
|
|
|
- List.of(DictTypeEnum.UNIT_TYPE.getType()));
|
|
|
- Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ?
|
|
|
- dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+// Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(
|
|
|
+// List.of(DictTypeEnum.UNIT_TYPE.getType()));
|
|
|
+// Map<String, String> unitMap = CollectionUtils.isNotEmpty(dict) ?
|
|
|
+// dict.get(DictTypeEnum.UNIT_TYPE.getType()) : new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
|
|
|
// 转换为VO对象
|
|
|
- List<WaybillOrderNodeVo> voList = new ArrayList<>();
|
|
|
+ WaybillOrderNodeVo waybillOrderNodeVo = new WaybillOrderNodeVo();
|
|
|
+ List<WaybillOrderNodeVo.Timeline> voList = new ArrayList<>();
|
|
|
for (KwtWaybillOrderNode node : nodes) {
|
|
|
- WaybillOrderNodeVo vo = new WaybillOrderNodeVo();
|
|
|
+ WaybillOrderNodeVo.Timeline vo = new WaybillOrderNodeVo.Timeline();
|
|
|
+ //WaybillOrderNodeVo vo = new WaybillOrderNodeVo();
|
|
|
vo.setId(node.getId());
|
|
|
vo.setCreateTime(DateUtils.format(node.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
|
vo.setOrderStatus(node.getOrderStatus());
|
|
|
@@ -3531,9 +3542,9 @@ public class KwtWaybillOrderV1Service {
|
|
|
vo.setHasWeighbridge(node.getWeighbridgeId() != null);
|
|
|
|
|
|
// 构建状态描述
|
|
|
- KwtWaybillOrderSubtask subtask = subtaskMap.get(node.getWSubtaskId());
|
|
|
- String statusDesc = buildStatusDescription(node, subtask, goodsMap, unitMap);
|
|
|
- vo.setStatusDesc(statusDesc);
|
|
|
+ //KwtWaybillOrderSubtask subtask = subtaskMap.get(node.getWSubtaskId());
|
|
|
+ // String statusDesc = buildStatusDescription(node, subtask, goodsMap, unitMap);
|
|
|
+ vo.setRemark(node.getRemark());
|
|
|
|
|
|
// 构建地址信息
|
|
|
String address = buildAddressFromLatLng(node.getLng(), node.getLat());
|
|
|
@@ -3541,8 +3552,26 @@ public class KwtWaybillOrderV1Service {
|
|
|
|
|
|
voList.add(vo);
|
|
|
}
|
|
|
+ waybillOrderNodeVo.setTimelines(voList);
|
|
|
+ Map<Integer, List<WaybillOrderNodeVo.Timeline>> statusAndTimelineMap = voList.stream()
|
|
|
+ .filter(t ->!Arrays.asList(CarWaybillV1Enum.WAIT_UNLOADING.getCode(),CarWaybillV1Enum.APPROVAL_TREAT.getCode(), CarWaybillV1Enum.COMPLETION_UNLOADING.getCode()).contains(t.getOrderStatus()))
|
|
|
+ .sorted(Comparator.comparing(WaybillOrderNodeVo.Timeline::getCreateTime))
|
|
|
+ .collect(Collectors.groupingBy(WaybillOrderNodeVo.Timeline::getOrderStatus));
|
|
|
+ List<WaybillOrderNodeVo.WaybillOrderNode> nodeList = Lists.newArrayList();
|
|
|
+ statusAndTimelineMap.forEach((status, timelines) -> {
|
|
|
+ WaybillOrderNodeVo.WaybillOrderNode waybillOrderNode = new WaybillOrderNodeVo.WaybillOrderNode();
|
|
|
+ if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(timelines)){
|
|
|
+ WaybillOrderNodeVo.Timeline timeline = timelines.get(0);
|
|
|
+ waybillOrderNode.setId(timeline.getId());
|
|
|
+ waybillOrderNode.setCreateTime(timeline.getCreateTime());
|
|
|
+ waybillOrderNode.setOrderStatus(timeline.getOrderStatus());
|
|
|
+ waybillOrderNode.setOrderStatusName(CarWaybillV1Enum.geDesc( timeline.getOrderStatus()));
|
|
|
+ nodeList.add(waybillOrderNode);
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
- return voList;
|
|
|
+ waybillOrderNodeVo.setWaybillOrderNodes(nodeList);
|
|
|
+ return waybillOrderNodeVo;
|
|
|
}
|
|
|
|
|
|
/**
|