|
|
@@ -94,6 +94,9 @@ public class KwtWaybillManagementV1Service {
|
|
|
@Autowired
|
|
|
public KwtLogisticsOrderGoodsMapper logisticsOrderGoodsMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderUnitMapper logisticsOrderUnitMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
KwtWaybillOrderTicketService kwtWaybillOrderTicketService;
|
|
|
|
|
|
@@ -222,15 +225,13 @@ public class KwtWaybillManagementV1Service {
|
|
|
* @author zk
|
|
|
* @date 2024/3/13
|
|
|
**/
|
|
|
- public HttpResult waybillDetail(Long wOrderId) {
|
|
|
+ public HttpResult waybillDetail1(Long wOrderId) {
|
|
|
//运单信息
|
|
|
KwtWaybillOrderV1 waybillOrder = waybillOrderV1Mapper.selectById(wOrderId);
|
|
|
if (waybillOrder == null) {
|
|
|
return HttpResult.error("运单" + wOrderId + "不存在,请确认!");
|
|
|
}
|
|
|
|
|
|
- //子单
|
|
|
- List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskMapper.findByWOrderId(wOrderId);
|
|
|
//运单状态记录
|
|
|
List<KwtWaybillOrderTrack> tracks = kwtWaybillOrderTrackMapper.findTrack(wOrderId, null, null, null);
|
|
|
//用户信息
|
|
|
@@ -246,15 +247,28 @@ public class KwtWaybillManagementV1Service {
|
|
|
//单位
|
|
|
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);
|
|
|
- //车辆信息
|
|
|
- RTruckVo truck = remoteFleetService.findTruck(waybillOrder.getTruckId());
|
|
|
|
|
|
- //返回信息
|
|
|
- WaybillDetailVo waybillDetail = new WaybillDetailVo();
|
|
|
- //地址信息
|
|
|
+ /*数据处理*/
|
|
|
+ List<Map<String, Object>> trackList = new ArrayList<>();
|
|
|
+ List<Integer> statusList = CarWaybillDetailEnum.initWaybillStatus();
|
|
|
+ //使用for-each循环来遍历Color枚举类的所有值
|
|
|
+ for (Integer value:statusList) {
|
|
|
+ List<String> asList = Arrays.asList(CarWaybillDetailEnum.getValue(value).split(Global.COMMA));
|
|
|
+ for (String status:asList) {
|
|
|
+ KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.findWaybillOrderTrack(wOrderId, null, null, Integer.valueOf(status));
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ trackData.put("operateByName", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : waybillOrder.getDriverName());
|
|
|
+ trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
|
|
|
+ trackData.put("operateStatus", track != null);
|
|
|
+ trackData.put("createTime", track != null ? track.getCreateTime() : null);
|
|
|
+ trackData.put("status", status);
|
|
|
+ trackData.put("statusName", CarWaybillDetailEnum.getName1(Integer.valueOf(status)));
|
|
|
+ trackList.add(trackData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //运单地址状态处理(到达装货点、已装货、到达卸货点、已卸货)
|
|
|
List<KwtWaybillOrderAddress> addresses = kwtWaybillOrderAddressMapper.findByAddresses(wOrderId, null);
|
|
|
- //地址数据处理
|
|
|
- List<Map<String, Object>> addressList = new ArrayList<>(NumberConstant.SIXTEEN);
|
|
|
for (KwtWaybillOrderAddress address:addresses) {
|
|
|
//运单子单
|
|
|
KwtWaybillOrderSubtask subtask = waybillOrderSubtaskMapper.selectById(address.getWSubtaskId());
|
|
|
@@ -276,16 +290,22 @@ public class KwtWaybillManagementV1Service {
|
|
|
addressData.put("urls", ticket != null ? FileUtils.spliceBatch(ticket.getUrls()) : null);
|
|
|
addressData.put("operateStatus", ticket != null);
|
|
|
addressData.put("operateTime", ticket != null ? DateUtils.format(address.getPlanTime(), DateUtils.FORMAT11) : null);
|
|
|
+ addressData.put("operateByName", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : waybillOrder.getDriverName());
|
|
|
addressData.put("status", ticket != null ? ticket.getStatus() : null);
|
|
|
addressData.put("statusName", ticket != null ? ApproveStatusEnum.getName(ticket.getStatus()) : null);
|
|
|
- addressList.add(addressData);
|
|
|
+ trackList.add(addressData);
|
|
|
}
|
|
|
|
|
|
- //物流订单编号
|
|
|
- for (KwtWaybillOrderSubtask subtask:subtasks) {
|
|
|
- KwtLogisticsOrder logisticsOrder = kwtLogisticsOrderMapper.selectById(subtask.getLOrderId());
|
|
|
- waybillDetail.setLOrderNo((StringUtils.isBlank(waybillDetail.getLOrderNo()) ? Global.EMPTY_STRING : Global.COMMA) + logisticsOrder.getLOrderNo());
|
|
|
- }
|
|
|
+ //审核状态
|
|
|
+ KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.findWaybillOrderTrackV1(wOrderId, CarWaybillDetailEnum.WAIT_APPROVAL.getValue());
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ trackData.put("operateByName", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : waybillOrder.getDriverName());
|
|
|
+ trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
|
|
|
+ trackData.put("operateStatus", track != null);
|
|
|
+ trackData.put("createTime", track != null ? track.getCreateTime() : null);
|
|
|
+ trackData.put("status", CarWaybillDetailEnum.WAIT_APPROVAL.getCode());
|
|
|
+ trackData.put("statusName", CarWaybillDetailEnum.WAIT_APPROVAL.getName());
|
|
|
+ trackList.add(trackData);
|
|
|
|
|
|
//榜单信息
|
|
|
List<KwtWaybillOrderTicket> tickets = kwtWaybillOrderTicketMapper.findWaybillOrderTicket(wOrderId, null, null);
|
|
|
@@ -298,19 +318,129 @@ public class KwtWaybillManagementV1Service {
|
|
|
unloadUrl.add(FileUtils.spliceBatch(ticket.getUrls()));
|
|
|
}
|
|
|
}
|
|
|
- waybillDetail.setLoadUrl(loadUrl);
|
|
|
- waybillDetail.setUnloadUrl(unloadUrl);
|
|
|
-
|
|
|
- BeanUtils.copyProperties(waybillOrder, waybillDetail);
|
|
|
- waybillDetail.setWOrderId(waybillOrder.getId());
|
|
|
- waybillDetail.setStatusName(CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
|
- waybillDetail.setCreateByName(usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : null);
|
|
|
- waybillDetail.setCreateByPhone(usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getPhone() : null);
|
|
|
- waybillDetail.setTrailerNo(truck != null ? truck.getTrailerNo() : null);
|
|
|
- waybillDetail.setTruckType(truck != null ? truck.getTruckType() : null);
|
|
|
- waybillDetail.setFirmName(ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
|
|
|
- waybillDetail.setAddresses(addressList);
|
|
|
+
|
|
|
+ //返回信息
|
|
|
+ Map<String, Object> waybillDetail = BeanUtil.beanToMap(waybillOrder);
|
|
|
+ waybillDetail.put("loadUrl", loadUrl);
|
|
|
+ waybillDetail.put("unloadUrl", unloadUrl);
|
|
|
+ waybillDetail.put("wOrederId", waybillOrder.getId());
|
|
|
+ waybillDetail.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
|
+ waybillDetail.put("createByName", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : null);
|
|
|
+ waybillDetail.put("createByPhone", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getPhone() : null);
|
|
|
+ waybillDetail.put("firmName", ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
|
|
|
+ waybillDetail.put("trackList", trackList);
|
|
|
return HttpResult.ok(waybillDetail);
|
|
|
}
|
|
|
|
|
|
+ public HttpResult waybillDetail(Long wOrderId) {
|
|
|
+ //车辆运单信息
|
|
|
+ KwtWaybillOrderV1 waybillOrder = waybillOrderV1Mapper.selectById(wOrderId);
|
|
|
+ if (waybillOrder == null) {
|
|
|
+ return HttpResult.ok("车辆运单信息不存在!");
|
|
|
+ }
|
|
|
+ //运单状态
|
|
|
+ List<KwtWaybillOrderTrack> tracks = kwtWaybillOrderTrackMapper.findTrack(wOrderId, null, null, null);
|
|
|
+ //操作人
|
|
|
+ List<Long> userIds = tracks.stream().map(KwtWaybillOrderTrack::getCreateBy).toList();
|
|
|
+ List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
|
|
|
+ Map<Long, UserCacheResDto> usersMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
|
|
|
+ users.forEach(e -> usersMap.put(e.getId(), e));
|
|
|
+ //单位
|
|
|
+ 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);
|
|
|
+
|
|
|
+ /*数据处理*/
|
|
|
+ List<Map<String, Object>> trackList = new ArrayList<>();
|
|
|
+ //运单状态(待接单、待出车、出车)
|
|
|
+ List<Integer> statusList = CarWaybillDetailEnum.initWaybillStatus();
|
|
|
+ //使用for-each循环来遍历Color枚举类的所有值
|
|
|
+ for (Integer value:statusList) {
|
|
|
+ List<String> asList = Arrays.asList(CarWaybillDetailEnum.getValue(value).split(Global.COMMA));
|
|
|
+ for (String status:asList) {
|
|
|
+ KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.findWaybillOrderTrack(wOrderId, null, null, Integer.valueOf(status));
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ trackData.put("operateByName", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : waybillOrder.getDriverName());
|
|
|
+ trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
|
|
|
+ trackData.put("operateStatus", track != null);
|
|
|
+ trackData.put("createTime", track != null ? track.getCreateTime() : null);
|
|
|
+ trackData.put("status", status);
|
|
|
+ trackData.put("statusName", CarWaybillDetailEnum.getName1(Integer.valueOf(status)));
|
|
|
+ trackList.add(trackData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //运单状态处理(到达装货点、已装货、到达卸货点、已卸货)
|
|
|
+ List<KwtWaybillOrderAddress> addresses = kwtWaybillOrderAddressMapper.findByAddresses(wOrderId, null);
|
|
|
+ for (KwtWaybillOrderAddress address:addresses) {
|
|
|
+ if (address.getAddressType().equals(AddressTypeEnum.SHIPMENT.getCode())) {
|
|
|
+ statusList = new ArrayList<>(){{add(CarWaybillEnum.WAIT_LOADING.getCode()); add(CarWaybillEnum.COMPLETION_LOADING.getCode());}};
|
|
|
+ } else {
|
|
|
+ statusList = new ArrayList<>(){{add(CarWaybillEnum.WAIT_UNLOADING.getCode()); add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());}};
|
|
|
+ }
|
|
|
+
|
|
|
+ //子单信息
|
|
|
+ KwtWaybillOrderSubtask subtask = waybillOrderSubtaskMapper.selectById(address.getWSubtaskId());
|
|
|
+ //物流订单商品信息
|
|
|
+ KwtLogisticsOrderGoods goods = logisticsOrderGoodsMapper.findByGoods(subtask != null ? subtask.getLOrderId() : null);
|
|
|
+ for (Integer status:statusList) {
|
|
|
+ //状态记录
|
|
|
+ KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.findWaybillOrderTrack(wOrderId, subtask.getId(), address.getId(), status);
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ trackData.put("id", track != null ? track.getId() : null);
|
|
|
+ trackData.put("wOrderId", address.getWOrderId());
|
|
|
+ trackData.put("wSubtaskId", address.getWSubtaskId());
|
|
|
+ trackData.put("wAddressId", address.getId());
|
|
|
+ trackData.put("operateByName", track != null ? usersMap.get(track.getCreateBy()) == null ? waybillOrder.getDriverName() : usersMap.get(track.getCreateBy()).getName() : null);
|
|
|
+ trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
|
|
|
+ trackData.put("operateStatus", track != null);
|
|
|
+ trackData.put("createTime", track != null ? track.getCreateTime() : null);
|
|
|
+ trackData.put("status", status);
|
|
|
+ trackData.put("statusName", CarWaybillEnum.getName(status));
|
|
|
+ trackData.put("planTime", track != null ? address.getPlanTime() : null);
|
|
|
+ trackData.put("entrustAmount", track != null ? address.getEntrustAmount() : null);
|
|
|
+ trackData.put("unit", subtask.getUnit());
|
|
|
+ trackData.put("unitName", unitMap.get(subtask.getUnit()));
|
|
|
+ trackData.put("goodsName", goods != null ? goods.getGoodsName() : null);
|
|
|
+ trackData.put("addressName", address.getName());
|
|
|
+ trackData.put("addressCityName", address.getCityName());
|
|
|
+ trackData.put("addressDetail", address.getDetailAddress());
|
|
|
+ trackList.add(trackData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //审核状态
|
|
|
+ KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.findWaybillOrderTrackV1(wOrderId, CarWaybillDetailEnum.WAIT_APPROVAL.getValue());
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ trackData.put("operateByName", usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : waybillOrder.getDriverName());
|
|
|
+ trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
|
|
|
+ trackData.put("operateStatus", track != null);
|
|
|
+ trackData.put("createTime", track != null ? track.getCreateTime() : null);
|
|
|
+ trackData.put("status", CarWaybillDetailEnum.WAIT_APPROVAL.getCode());
|
|
|
+ trackData.put("statusName", CarWaybillDetailEnum.WAIT_APPROVAL.getName());
|
|
|
+ trackList.add(trackData);
|
|
|
+
|
|
|
+ //运单子单
|
|
|
+ List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskMapper.findByWOrderId(wOrderId);
|
|
|
+ List<Long> lOrderIds = subtasks.stream().map(KwtWaybillOrderSubtask::getLOrderId).toList();
|
|
|
+ List<KwtLogisticsOrderUnit> units = logisticsOrderUnitMapper.selectCompanyBylOrderId(lOrderIds, null);
|
|
|
+ String checkFirmName = units.stream().filter(item -> item.getUnitType().equals(NumberConstant.TWO)).map(KwtLogisticsOrderUnit::getFirmName).collect(Collectors.joining(", "));
|
|
|
+ String carrierFirmName = units.stream().filter(item -> item.getUnitType().equals(NumberConstant.TWO)).map(KwtLogisticsOrderUnit::getFirmName).collect(Collectors.joining(", "));
|
|
|
+
|
|
|
+ //数据拼接
|
|
|
+ Map<String, Object> result = new HashMap<>(Global.NUMERICAL_SIXTEEN);
|
|
|
+ result.put("wOrderId", wOrderId);
|
|
|
+ result.put("wOrderNo", waybillOrder.getWOrderNo());
|
|
|
+ result.put("status", waybillOrder.getStatus());
|
|
|
+ result.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
|
+ result.put("truckNo", waybillOrder.getTruckNo());
|
|
|
+ result.put("driverName", waybillOrder.getDriverName());
|
|
|
+ result.put("driverPhone", waybillOrder.getDriverPhone());
|
|
|
+ result.put("driverIdcard", waybillOrder.getDriverIdcard());
|
|
|
+ result.put("createTime", waybillOrder.getCreateTime());
|
|
|
+ result.put("checkFirmName", checkFirmName);
|
|
|
+ result.put("carrierFirmName", carrierFirmName);
|
|
|
+ result.put("trackList", trackList);
|
|
|
+ return HttpResult.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
}
|