|
|
@@ -1,5 +1,6 @@
|
|
|
package com.sckw.transport.service;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
@@ -28,6 +29,8 @@ import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
import com.sckw.transport.dao.*;
|
|
|
import com.sckw.transport.model.*;
|
|
|
import com.sckw.transport.model.dto.*;
|
|
|
+import com.sckw.transport.model.enuma.CarWaybillDetailEnum;
|
|
|
+import com.sckw.transport.model.enuma.CarWaybillNdexTopEnum;
|
|
|
import com.sckw.transport.model.enuma.CarWaybillTableTopEnum;
|
|
|
import com.sckw.transport.model.vo.*;
|
|
|
import jakarta.annotation.Resource;
|
|
|
@@ -172,10 +175,26 @@ public class KwtWaybillOrderV1Service {
|
|
|
PageHelper.startPage(params.getPage(), params.getPageSize());
|
|
|
params.setQueryWstatus(CarWaybillTableTopEnum.getValue(params.getStatus()));
|
|
|
List<WaybillOrderSelectVo> list = waybillOrderV1Dao.findListPage(params);
|
|
|
- for (WaybillOrderSelectVo waybillOrder:list) {
|
|
|
+
|
|
|
+ //用户ID
|
|
|
+ List<Long> userIds = list.stream().map(WaybillOrderSelectVo::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));
|
|
|
+ //企业ID
|
|
|
+ List<Long> entIds = list.stream().map(WaybillOrderSelectVo::getEntId).toList();
|
|
|
+ Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
|
|
|
+
|
|
|
+ //数据处理
|
|
|
+ List<WaybillOrderNdexVo> data = BeanUtil.copyToList(list, WaybillOrderNdexVo.class);
|
|
|
+ for (WaybillOrderNdexVo waybillOrder:data) {
|
|
|
waybillOrder.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
|
+ waybillOrder.setCreateByName(usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getName() : null);
|
|
|
+ waybillOrder.setFirmName(ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
|
|
|
+ //数据处理
|
|
|
+ findNdexPageHandle(waybillOrder);
|
|
|
}
|
|
|
- return PageHelperUtil.getPageResult(new PageInfo<>(list));
|
|
|
+ return PageHelperUtil.getPageResult(new PageInfo<>(data));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -240,7 +259,7 @@ public class KwtWaybillOrderV1Service {
|
|
|
for (KwtWaybillOrderTrack track:tracks) {
|
|
|
Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
trackData.put("status", track.getStatus());
|
|
|
- trackData.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
|
+ trackData.put("statusName", CarWaybillEnum.getAlias(waybillOrder.getStatus()));
|
|
|
trackData.put("remark", track.getRemark());
|
|
|
trackData.put("operateTime", track.getOperateTime());
|
|
|
trackData.put("createTime", track.getCreateTime());
|
|
|
@@ -249,11 +268,15 @@ public class KwtWaybillOrderV1Service {
|
|
|
trackList.add(trackData);
|
|
|
}
|
|
|
|
|
|
+ //物流订单编号
|
|
|
for (KwtWaybillOrderSubtask subtask:subtasks) {
|
|
|
KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(subtask.getLOrderId());
|
|
|
waybillDetail.setLOrderNo((StringUtils.isBlank(waybillDetail.getLOrderNo()) ? Global.EMPTY_STRING : Global.COMMA) + logisticsOrder.getLOrderNo());
|
|
|
}
|
|
|
|
|
|
+ //状态轨迹
|
|
|
+ List<Map<String, Object>> trajectory = waybillDetailHandle(wOrderId);
|
|
|
+
|
|
|
BeanUtils.copyProperties(waybillOrder, waybillDetail);
|
|
|
waybillDetail.setWOrderId(waybillOrder.getId());
|
|
|
waybillDetail.setStatusName(CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
|
@@ -261,13 +284,14 @@ public class KwtWaybillOrderV1Service {
|
|
|
waybillDetail.setCreateByPhone(usersMap.get(waybillOrder.getCreateBy()) != null ? usersMap.get(waybillOrder.getCreateBy()).getPhone() : null);
|
|
|
waybillDetail.setTracks(trackList);
|
|
|
waybillDetail.setAddresses(addressList);
|
|
|
+ waybillDetail.setTrajectory(trajectory);
|
|
|
return HttpResult.ok(waybillDetail);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @param waybillOrder 运单信息
|
|
|
* @param unitMap 字段
|
|
|
- * @desc 分页查询
|
|
|
+ * @desc 分页列表查询
|
|
|
* @author zk
|
|
|
* @date 2024/3/13
|
|
|
**/
|
|
|
@@ -328,6 +352,116 @@ public class KwtWaybillOrderV1Service {
|
|
|
waybillOrder.setUnloadAddress(unloadAddress);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param waybillOrder 运单信息
|
|
|
+ * @desc 分页看板查询处理
|
|
|
+ * @author zk
|
|
|
+ * @date 2024/3/13
|
|
|
+ **/
|
|
|
+ public void findNdexPageHandle(WaybillOrderNdexVo waybillOrder){
|
|
|
+ /*数据处理*/
|
|
|
+ List<Map<String, Object>> trackList = new ArrayList<>();
|
|
|
+ for (CarWaybillNdexTopEnum entity:CarWaybillNdexTopEnum.values()) {
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ //审核状态
|
|
|
+ KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrackV1(waybillOrder.getWOrderId(), CarWaybillDetailEnum.IN_TRANSIT.getValue());
|
|
|
+ trackData.put("statusName", entity.getName());
|
|
|
+ trackData.put("operateStatus", track != null);
|
|
|
+ trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
|
|
|
+ trackList.add(trackData);
|
|
|
+ }
|
|
|
+ waybillOrder.setTracks(trackList);
|
|
|
+
|
|
|
+ //榜单信息
|
|
|
+ List<KwtWaybillOrderTicket> tickets = waybillOrderTicketDao.findWaybillOrderTicket(waybillOrder.getWOrderId(), null, null);
|
|
|
+ //数据处理
|
|
|
+ List<String> loadUrl = new ArrayList<>(), unloadUrl = new ArrayList<>();
|
|
|
+ for (KwtWaybillOrderTicket ticket:tickets) {
|
|
|
+ if(ticket.getType().equals(AddressDefaultTypeEnum.SHIPMENT.getCode())){
|
|
|
+ loadUrl.add(FileUtils.spliceBatch(ticket.getUrls()));
|
|
|
+ } else {
|
|
|
+ unloadUrl.add(FileUtils.spliceBatch(ticket.getUrls()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ waybillOrder.setLoadUrl(loadUrl);
|
|
|
+ waybillOrder.setUnloadUrl(unloadUrl);
|
|
|
+
|
|
|
+ //运单-子单
|
|
|
+ List<KwtWaybillOrderSubtask> subtasks = waybillOrderSubtaskDao.findByWOrderId(waybillOrder.getWOrderId());
|
|
|
+ //装货时间
|
|
|
+ Optional<KwtWaybillOrderSubtask> unloadDate = subtasks.stream().max(Comparator.comparing(KwtWaybillOrderSubtask::getUnloadTime));
|
|
|
+ //卸货时间
|
|
|
+ Optional<KwtWaybillOrderSubtask> loadDate = subtasks.stream().min(Comparator.comparing(KwtWaybillOrderSubtask::getLoadTime));
|
|
|
+ waybillOrder.setStartTime(loadDate.get().getLoadTime());
|
|
|
+ waybillOrder.setEndTime(unloadDate.get().getUnloadTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param wOrderId 运单ID
|
|
|
+ * @desc 运单详情状态轴
|
|
|
+ * @author zk
|
|
|
+ * @date 2024/3/14
|
|
|
+ **/
|
|
|
+ public List<Map<String, Object>> waybillDetailHandle(Long wOrderId){
|
|
|
+ /*数据处理*/
|
|
|
+ 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 = waybillOrderTrackDao.findWaybillOrderTrack(wOrderId, null, null, Integer.valueOf(status));
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ 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 = waybillOrderAddressDao.findByAddresses(wOrderId, null);
|
|
|
+ for (KwtWaybillOrderAddress address:addresses) {
|
|
|
+ if (address.getAddressType().equals(AddressDefaultTypeEnum.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 = waybillOrderSubtaskDao.selectById(address.getWSubtaskId());
|
|
|
+ for (Integer status:statusList) {
|
|
|
+ //状态记录
|
|
|
+ KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(wOrderId, null, null, status);
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ trackData.put("id", track != null ? track.getId() : 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("addressName", address.getName());
|
|
|
+ trackData.put("addressCityName", address.getCityName());
|
|
|
+ trackData.put("addressDetail", address.getDetailAddress());
|
|
|
+ trackList.add(trackData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //审核状态
|
|
|
+ KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrackV1(wOrderId, CarWaybillDetailEnum.IN_TRANSIT.getValue());
|
|
|
+ Map<String, Object> trackData = new HashMap<>(NumberConstant.SIXTEEN);
|
|
|
+ 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);
|
|
|
+ return trackList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param driverId 司机ID
|
|
|
* @desc 统计司机任务数(待接单 / 出车 / 执行 / 完结)
|
|
|
@@ -2006,15 +2140,6 @@ public class KwtWaybillOrderV1Service {
|
|
|
return HttpResult.ok(result);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* @param wOrderId 运单ID
|
|
|
* @desc 变更车辆/司机查询
|
|
|
@@ -2221,5 +2346,4 @@ public class KwtWaybillOrderV1Service {
|
|
|
//罚款值=扣亏量 * 扣亏货值
|
|
|
return deficitLossAmount.multiply(goodsPrice).setScale(4, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
-
|
|
|
}
|