|
|
@@ -2,10 +2,17 @@ package com.sckw.transport.service;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.sckw.core.common.enums.NumberConstant;
|
|
|
+import com.sckw.core.model.enums.CarWaybillEnum;
|
|
|
+import com.sckw.core.model.page.PageResult;
|
|
|
+import com.sckw.core.utils.BeanUtils;
|
|
|
import com.sckw.core.utils.CollectionUtils;
|
|
|
+import com.sckw.core.utils.StringUtils;
|
|
|
+import com.sckw.core.web.context.LoginUserHolder;
|
|
|
import com.sckw.core.web.response.HttpResult;
|
|
|
+import com.sckw.excel.utils.DateUtil;
|
|
|
import com.sckw.fleet.api.RemoteFleetService;
|
|
|
import com.sckw.fleet.api.model.vo.RTruckVo;
|
|
|
+import com.sckw.mongo.model.SckwWaybillOrder;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
import com.sckw.transport.dao.KwtWaybillOrderAddressMapper;
|
|
|
@@ -16,15 +23,21 @@ import com.sckw.transport.model.KwtWaybillOrderAddress;
|
|
|
import com.sckw.transport.model.KwtWaybillOrderTicket;
|
|
|
import com.sckw.transport.model.KwtWaybillOrderTrack;
|
|
|
import com.sckw.transport.model.dto.WayBillDetailDTO;
|
|
|
-import com.sckw.transport.model.vo.WaybillCarVO;
|
|
|
-import com.sckw.transport.model.vo.WaybillDataVO;
|
|
|
-import com.sckw.transport.model.vo.WaybillTicketVO;
|
|
|
-import com.sckw.transport.model.vo.WaybillTrackVO;
|
|
|
+import com.sckw.transport.model.dto.WaybillOrderDTO;
|
|
|
+import com.sckw.transport.model.vo.*;
|
|
|
+import jakarta.validation.constraints.NotBlank;
|
|
|
+import lombok.Value;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
+import org.springframework.data.mongodb.core.MongoTemplate;
|
|
|
+import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
+import org.springframework.data.mongodb.core.query.Query;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
@@ -57,6 +70,9 @@ public class WaybillManagementService {
|
|
|
@Autowired
|
|
|
public KwtWaybillOrderTrackMapper kwtWaybillOrderTrackMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private MongoTemplate mongoTemplate;
|
|
|
+
|
|
|
/**
|
|
|
* 运单详情
|
|
|
*
|
|
|
@@ -149,4 +165,132 @@ public class WaybillManagementService {
|
|
|
waybillDataVO.setLogsMessage(waybillTrackVOS);
|
|
|
return HttpResult.ok(waybillDataVO);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 运单看板列表
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public HttpResult waybillIndex(WaybillOrderDTO query) {
|
|
|
+ // mongo查询列数据,不足的数据单独关联表查询
|
|
|
+ // 状态查询 status [2-8]
|
|
|
+ List<Integer> statuses = new ArrayList<>();
|
|
|
+ statuses.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
|
|
|
+ statuses.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
|
|
|
+ statuses.add(CarWaybillEnum.WAIT_LOADING.getCode());
|
|
|
+ statuses.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
|
|
|
+ statuses.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
|
|
|
+ statuses.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
|
|
|
+ statuses.add(CarWaybillEnum.APPROVAL_COMPLETED.getCode());
|
|
|
+ // 初始化各状态
|
|
|
+ List<WaybillStatusVO> statusVOS = new ArrayList<>();
|
|
|
+ statuses.forEach(e -> {
|
|
|
+ WaybillStatusVO waybillStatusVO = new WaybillStatusVO();
|
|
|
+ waybillStatusVO.setStatus(false);
|
|
|
+ waybillStatusVO.setCode(e);
|
|
|
+ switch (e){
|
|
|
+ case 2 -> waybillStatusVO.setDestination("司机接单");
|
|
|
+ case 3 -> waybillStatusVO.setDestination("出车");
|
|
|
+ case 4 -> waybillStatusVO.setDestination("到装货地");
|
|
|
+ case 5 -> waybillStatusVO.setDestination("装货");
|
|
|
+ case 6 -> waybillStatusVO.setDestination("到卸货地");
|
|
|
+ case 7 -> waybillStatusVO.setDestination("卸货");
|
|
|
+ case 8 -> waybillStatusVO.setDestination("核单");
|
|
|
+ }
|
|
|
+ statusVOS.add(waybillStatusVO);
|
|
|
+ });
|
|
|
+
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("entId").is(LoginUserHolder.getEntId());
|
|
|
+ criteria.and("delFlag").is(NumberConstant.ZERO);
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(query.getStatus())) {
|
|
|
+ criteria.and("status").is(query.getStatus());
|
|
|
+ } else {
|
|
|
+ criteria.and("status").in(statuses);
|
|
|
+ }
|
|
|
+ // 装载时间
|
|
|
+ if (StringUtils.isNotBlank(query.getStartLoadTime()) && StringUtils.isNotEmpty(query.getEndLoadTime())) {
|
|
|
+ criteria.andOperator(Criteria.where("loadTime").gte(query.getStartLoadTime()), Criteria.where("loadTime")
|
|
|
+ .lte(query.getEndLoadTime()));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(query.getStartLoadTime()) && StringUtils.isNotEmpty(query.getEndLoadTime())) {
|
|
|
+ criteria.andOperator(Criteria.where("loadTime").gte(query.getStartLoadTime()), Criteria.where("loadTime")
|
|
|
+ .lte(query.getEndLoadTime()));
|
|
|
+ }
|
|
|
+ // 派车时间
|
|
|
+ if (StringUtils.isNotBlank(query.getStartSendCarTime()) && StringUtils.isNotEmpty(query.getEndSendCarTime())) {
|
|
|
+ criteria.andOperator(Criteria.where("sendCarTime").gte(query.getStartSendCarTime()), Criteria.where("sendCarTime")
|
|
|
+ .lte(query.getEndSendCarTime()));
|
|
|
+ }
|
|
|
+ // 卸货时间
|
|
|
+ if (StringUtils.isNotBlank(query.getStartUnloadTime()) && StringUtils.isNotEmpty(query.getEndUnloadTime())) {
|
|
|
+ criteria.andOperator(Criteria.where("unloadTime").gte(query.getStartUnloadTime()), Criteria.where("unloadTime")
|
|
|
+ .lte(query.getEndUnloadTime()));
|
|
|
+ }
|
|
|
+ // 多条件模糊查询
|
|
|
+ List<Criteria> orCriteria = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotBlank(query.getKeywords())) {
|
|
|
+ /*Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
|
|
|
+ orCriteria.add(Criteria.where("wOrderNo").regex(pattern));
|
|
|
+ orCriteria.add(Criteria.where("truckNo").regex(pattern));
|
|
|
+ orCriteria.add(Criteria.where("driverName").regex(pattern));
|
|
|
+ orCriteria.add(Criteria.where("firmName").regex(pattern));
|
|
|
+ orCriteria.add(Criteria.where("loadAddress").regex(pattern));
|
|
|
+ orCriteria.add(Criteria.where("unloadAddress").regex(pattern));
|
|
|
+ criteria.orOperator(orCriteria);*/
|
|
|
+ }
|
|
|
+ Query queryFormat = new Query(criteria);
|
|
|
+ long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
|
|
|
+ queryFormat.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
|
|
|
+ Sort.by(Sort.Order.desc("createTime"))));
|
|
|
+ // 执行查询
|
|
|
+ List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
|
|
|
+ // 查询关联单据信息
|
|
|
+ List<WaybillBoardListVO> orders = new ArrayList<>();
|
|
|
+ for (SckwWaybillOrder sckwWaybillOrder:list) {
|
|
|
+ WaybillBoardListVO waybillBoardListVO = new WaybillBoardListVO();
|
|
|
+ waybillBoardListVO.setWOrderId(String.valueOf(sckwWaybillOrder.getWOrderId()));
|
|
|
+ waybillBoardListVO.setWOrderNo(String.valueOf(sckwWaybillOrder.getWOrderNo()));
|
|
|
+ waybillBoardListVO.setGoodsName(String.valueOf(sckwWaybillOrder.getGoodsName()));
|
|
|
+ waybillBoardListVO.setLoadDetailAddress(String.valueOf(sckwWaybillOrder.getLoadDetailAddress()));
|
|
|
+ waybillBoardListVO.setUnloadDetailAddress(String.valueOf(sckwWaybillOrder.getUnloadDetailAddress()));
|
|
|
+ waybillBoardListVO.setStartTime(DateUtil.getDateTime(sckwWaybillOrder.getStartTime()));
|
|
|
+ waybillBoardListVO.setEndTime(DateUtil.getDateTime(sckwWaybillOrder.getEndTime()));
|
|
|
+ waybillBoardListVO.setFirmName(String.valueOf(sckwWaybillOrder.getFirmName()));
|
|
|
+ waybillBoardListVO.setCreateByName(String.valueOf(sckwWaybillOrder.getCreateByName()));
|
|
|
+ waybillBoardListVO.setCreateTime(DateUtil.getDateTime(sckwWaybillOrder.getCreateTime()));
|
|
|
+ waybillBoardListVO.setDriverName(String.valueOf(sckwWaybillOrder.getDriverName()));
|
|
|
+ waybillBoardListVO.setDriverPhone(String.valueOf(sckwWaybillOrder.getDriverPhone()));
|
|
|
+ waybillBoardListVO.setTruckNo(String.valueOf(sckwWaybillOrder.getTruckNo()));
|
|
|
+ waybillBoardListVO.setLoadGrossAmount(sckwWaybillOrder.getLoadGrossAmount() != null ? String.valueOf(sckwWaybillOrder.getLoadGrossAmount()) : null);
|
|
|
+ waybillBoardListVO.setUnloadGrossAmount(sckwWaybillOrder.getUnloadGrossAmount() != null ? String.valueOf(sckwWaybillOrder.getUnloadGrossAmount()) : null);
|
|
|
+ waybillBoardListVO.setLoadUrls(sckwWaybillOrder.getLoadUrls() != null ? String.valueOf(sckwWaybillOrder.getLoadUrls()) : null);
|
|
|
+ waybillBoardListVO.setUnloadUrls(sckwWaybillOrder.getUnloadUrls() != null ? String.valueOf(sckwWaybillOrder.getUnloadUrls()) : null);
|
|
|
+ // 运单进度
|
|
|
+ List<WaybillStatusVO> statusVOS2 = new ArrayList<>();
|
|
|
+ BeanUtils.copyProperties(statusVOS, statusVOS2);
|
|
|
+ log.error("XXXX-11 {}", statusVOS);
|
|
|
+ log.error("XXXX-12 {}", statusVOS2);
|
|
|
+ List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
|
|
|
+ .eq(KwtWaybillOrderTrack::getWOrderId, sckwWaybillOrder.getWOrderId()));
|
|
|
+ if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
|
|
|
+ for (WaybillStatusVO waybillStatusVO: statusVOS2) {
|
|
|
+ for (KwtWaybillOrderTrack waybillOrderTrack: kwtWaybillOrderTracks) {
|
|
|
+ log.error("XXXX-1 {}", waybillStatusVO.getCode());
|
|
|
+ log.error("XXXX-2 {}", waybillOrderTrack.getStatus());
|
|
|
+ if(waybillStatusVO.getCode().equals(waybillOrderTrack.getStatus())) {
|
|
|
+ waybillStatusVO.setStatus(true);
|
|
|
+ waybillStatusVO.setCreateTime(DateUtil.getDateTime(waybillOrderTrack.getCreateTime()));
|
|
|
+ waybillStatusVO.setCreateByName(String.valueOf(waybillOrderTrack.getCreateBy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ waybillBoardListVO.setTracks(statusVOS);
|
|
|
+ orders.add(waybillBoardListVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, orders);
|
|
|
+ return HttpResult.ok(build);
|
|
|
+ }
|
|
|
}
|