|
|
@@ -13,6 +13,7 @@ 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.mongo.model.TableTops;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
import com.sckw.transport.dao.KwtWaybillOrderAddressMapper;
|
|
|
@@ -32,9 +33,12 @@ 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.aggregation.Aggregation;
|
|
|
+import org.springframework.data.mongodb.core.aggregation.AggregationResults;
|
|
|
import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
import org.springframework.data.mongodb.core.query.Query;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Pattern;
|
|
|
@@ -76,107 +80,144 @@ public class WaybillManagementService {
|
|
|
* @return
|
|
|
*/
|
|
|
public HttpResult waybillData(@Param("id") Long id) {
|
|
|
- WayBillDetailDTO kwtWaybillOrder = kwtWaybillOrderMapper.selectWaybillRelate(id);
|
|
|
- // 收发地址
|
|
|
- List<KwtWaybillOrderAddress> kwtWaybillOrderAddressList = kwtWaybillOrderAddressMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderAddress>()
|
|
|
- .eq(KwtWaybillOrderAddress::getWOrderId, kwtWaybillOrder.getLOrderId()));
|
|
|
- if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddressList)) {
|
|
|
- for (KwtWaybillOrderAddress kwtWaybillOrderAddress : kwtWaybillOrderAddressList) {
|
|
|
- // 1装货地址、2卸货地址
|
|
|
- if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.ONE)) {
|
|
|
- kwtWaybillOrder.setStartLocationName(kwtWaybillOrderAddress.getName());
|
|
|
- kwtWaybillOrder.setStartLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
|
|
|
- }
|
|
|
- if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.TWO)) {
|
|
|
- kwtWaybillOrder.setEndLocationName(kwtWaybillOrderAddress.getName());
|
|
|
- kwtWaybillOrder.setEndLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
|
|
|
- }
|
|
|
+ List<Integer> statuses = initWaybillIndexStatus();
|
|
|
+ // 初始化各状态
|
|
|
+ Map<String, WaybillStatusVO> statusMap = new HashMap<>();
|
|
|
+ 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("已核单");
|
|
|
}
|
|
|
- }
|
|
|
- WaybillDataVO waybillDataVO = new WaybillDataVO();
|
|
|
- waybillDataVO.setTransportMessage(kwtWaybillOrder);
|
|
|
+ statusMap.put(String.valueOf(e), waybillStatusVO);
|
|
|
+ });
|
|
|
|
|
|
- // 车辆信息
|
|
|
- List<String> list = new ArrayList<>(NumberConstant.SIXTEEN);
|
|
|
- list.add(kwtWaybillOrder.getTruckNo());
|
|
|
- Map<String, RTruckVo> trucks = remoteFleetService.findTruck(list);
|
|
|
- WaybillCarVO waybillCarVO = new WaybillCarVO();
|
|
|
- if (CollectionUtils.isNotEmpty(trucks)) {
|
|
|
- waybillCarVO.setType(trucks.get(0).getTruckType());
|
|
|
- waybillCarVO.setTruckId(String.valueOf(trucks.get(0).getId()));
|
|
|
- waybillCarVO.setTrailerNo(trucks.get(0).getTrailerNo());
|
|
|
- }
|
|
|
- waybillCarVO.setDriverId(String.valueOf(kwtWaybillOrder.getDriverId()))
|
|
|
- .setTruckNo(kwtWaybillOrder.getTruckNo())
|
|
|
- .setDriverName(kwtWaybillOrder.getDriverName())
|
|
|
- .setDriverPhone(kwtWaybillOrder.getDriverPhone());
|
|
|
- waybillDataVO.setCarMessage(waybillCarVO);
|
|
|
- // 履约信息
|
|
|
- List<KwtWaybillOrderTicket> kwtWaybillOrderTicket = kwtWaybillOrderTicketMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
|
|
|
- .eq(KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getWOrderId()));
|
|
|
- WaybillTicketVO waybillTicketVO = new WaybillTicketVO();
|
|
|
- if (CollectionUtils.isNotEmpty(kwtWaybillOrderTicket)) {
|
|
|
- for (KwtWaybillOrderTicket ticket : kwtWaybillOrderTicket) {
|
|
|
- // 装货
|
|
|
- if (ticket.getType().equals(NumberConstant.ONE)) {
|
|
|
- waybillTicketVO.setLoadUrl(ticket.getUrls())
|
|
|
- .setLoadWeight(String.valueOf(ticket.getGrossAmount()))
|
|
|
- .setLoadTime(String.valueOf(ticket.getCreateTime()));
|
|
|
- }
|
|
|
- // 卸货
|
|
|
- if (ticket.getType().equals(NumberConstant.TWO)) {
|
|
|
- waybillTicketVO.setUnloadUrl(ticket.getUrls())
|
|
|
- .setUnloadWeight(String.valueOf(ticket.getGrossAmount()))
|
|
|
- .setUnloadTime(String.valueOf(ticket.getCreateTime()));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- waybillDataVO.setAgreementMessage(waybillTicketVO);
|
|
|
- // 业务日志
|
|
|
- List<WaybillTrackVO> waybillTrackVOS = new ArrayList<>();
|
|
|
- List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
|
|
|
- .eq(KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getWOrderId()));
|
|
|
- if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
|
|
|
- List<Long> userIds = new ArrayList<>();
|
|
|
- for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
|
|
|
- userIds.add(track.getCreateBy());
|
|
|
- }
|
|
|
- List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
|
|
|
- for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
|
|
|
- WaybillTrackVO waybillTrackVO = new WaybillTrackVO();
|
|
|
- waybillTrackVO.setId(String.valueOf(track.getId()))
|
|
|
- .setRemark(track.getRemark())
|
|
|
- .setStatus(String.valueOf(track.getStatus()))
|
|
|
- .setCreateBy(String.valueOf(track.getCreateBy()));
|
|
|
- for (UserCacheResDto user : users) {
|
|
|
- if (Long.valueOf(user.getId()).equals(track.getCreateBy())) {
|
|
|
- waybillTrackVO.setCreateByName(user.getName())
|
|
|
- .setCreateByPhone(user.getPhone());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- waybillTrackVOS.add(waybillTrackVO);
|
|
|
- }
|
|
|
+// WayBillDetailDTO kwtWaybillOrder = kwtWaybillOrderMapper.selectWaybillRelate(id);
|
|
|
+// // 收发地址
|
|
|
+// List<KwtWaybillOrderAddress> kwtWaybillOrderAddressList = kwtWaybillOrderAddressMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderAddress>()
|
|
|
+// .eq(KwtWaybillOrderAddress::getWOrderId, kwtWaybillOrder.getLOrderId()));
|
|
|
+// if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddressList)) {
|
|
|
+// for (KwtWaybillOrderAddress kwtWaybillOrderAddress : kwtWaybillOrderAddressList) {
|
|
|
+// // 1装货地址、2卸货地址
|
|
|
+// if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.ONE)) {
|
|
|
+// kwtWaybillOrder.setStartLocationName(kwtWaybillOrderAddress.getName());
|
|
|
+// kwtWaybillOrder.setStartLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
|
|
|
+// }
|
|
|
+// if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.TWO)) {
|
|
|
+// kwtWaybillOrder.setEndLocationName(kwtWaybillOrderAddress.getName());
|
|
|
+// kwtWaybillOrder.setEndLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// WaybillDataVO waybillDataVO = new WaybillDataVO();
|
|
|
+// waybillDataVO.setTransport(kwtWaybillOrder);
|
|
|
+//
|
|
|
+// // 车辆信息
|
|
|
+// List<String> list = new ArrayList<>();
|
|
|
+// list.add(kwtWaybillOrder.getTruckNo());
|
|
|
+//// Map<String, RTruckVo> trucks = remoteFleetService.findTruck(list);
|
|
|
+// Map<String, RTruckVo> trucks = new HashMap<>();
|
|
|
+// WaybillCarVO waybillCarVO = new WaybillCarVO();
|
|
|
+// if (CollectionUtils.isNotEmpty(trucks)) {
|
|
|
+// waybillCarVO.setType(trucks.get(0).getTruckType());
|
|
|
+// waybillCarVO.setTruckId(String.valueOf(trucks.get(0).getId()));
|
|
|
+// waybillCarVO.setTrailerNo(trucks.get(0).getTrailerNo());
|
|
|
+// }
|
|
|
+// waybillCarVO.setDriverId(String.valueOf(kwtWaybillOrder.getDriverId()))
|
|
|
+// .setTruckNo(kwtWaybillOrder.getTruckNo())
|
|
|
+// .setDriverName(kwtWaybillOrder.getDriverName())
|
|
|
+// .setDriverPhone(kwtWaybillOrder.getDriverPhone());
|
|
|
+// waybillDataVO.setCar(waybillCarVO);
|
|
|
+// // 履约信息
|
|
|
+// List<KwtWaybillOrderTicket> kwtWaybillOrderTicket = kwtWaybillOrderTicketMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
|
|
|
+// .eq(KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getWOrderId()));
|
|
|
+// WaybillTicketVO waybillTicketVO = new WaybillTicketVO();
|
|
|
+// if (CollectionUtils.isNotEmpty(kwtWaybillOrderTicket)) {
|
|
|
+// for (KwtWaybillOrderTicket ticket : kwtWaybillOrderTicket) {
|
|
|
+// // 装货
|
|
|
+// if (ticket.getType().equals(NumberConstant.ONE)) {
|
|
|
+// waybillTicketVO.setLoadUrl(ticket.getUrls())
|
|
|
+// .setLoadWeight(String.valueOf(ticket.getGrossAmount()))
|
|
|
+// .setLoadTime(String.valueOf(ticket.getCreateTime()));
|
|
|
+// }
|
|
|
+// // 卸货
|
|
|
+// if (ticket.getType().equals(NumberConstant.TWO)) {
|
|
|
+// waybillTicketVO.setUnloadUrl(ticket.getUrls())
|
|
|
+// .setUnloadWeight(String.valueOf(ticket.getGrossAmount()))
|
|
|
+// .setUnloadTime(String.valueOf(ticket.getCreateTime()));
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// waybillDataVO.setAgreement(waybillTicketVO);
|
|
|
+// // 业务日志
|
|
|
+// List<WaybillTrackVO> waybillTrackVOS = new ArrayList<>();
|
|
|
+// List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
|
|
|
+// .eq(KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getWOrderId()));
|
|
|
+// if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
|
|
|
+// List<Long> userIds = new ArrayList<>();
|
|
|
+// for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
|
|
|
+// userIds.add(track.getCreateBy());
|
|
|
+// }
|
|
|
+// List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
|
|
|
+// Map<String, UserCacheResDto> userMap = new HashMap<>();
|
|
|
+// if(!ObjectUtils.isEmpty(users)) {
|
|
|
+// users.forEach(e -> userMap.put(String.valueOf(e.getId()), e));
|
|
|
+// }
|
|
|
+// for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
|
|
|
+// WaybillTrackVO waybillTrackVO = new WaybillTrackVO();
|
|
|
+// if(statusMap.containsKey(String.valueOf(track.getStatus()))) {
|
|
|
+// statusMap.get(String.valueOf(track.getStatus()))
|
|
|
+// .setCreateTime(DateUtil.getDateTime(track.getCreateTime()))
|
|
|
+// .setCreateByName(userMap.get(String.valueOf(track.getCreateBy())).getName())
|
|
|
+// .setStatus(true)
|
|
|
+// .setId(track.getId());
|
|
|
+// }
|
|
|
+// waybillTrackVO.setId(String.valueOf(track.getId()))
|
|
|
+// .setRemark(track.getRemark())
|
|
|
+// .setStatus(String.valueOf(track.getStatus()))
|
|
|
+// .setCreateBy(userMap.get(String.valueOf(track.getCreateBy())).getName());
|
|
|
+// waybillTrackVOS.add(waybillTrackVO);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// waybillDataVO.setLogs(waybillTrackVOS);
|
|
|
+// waybillDataVO.setProcess(statusMap.values().stream().toList());
|
|
|
+// return HttpResult.ok(waybillDataVO);
|
|
|
+
|
|
|
+ WaybillDataVO waybillDataVO = new WaybillDataVO();
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("wOrderId").is(id);
|
|
|
+ criteria.and("entId").is(LoginUserHolder.getEntId());
|
|
|
+ criteria.and("delFlag").is(NumberConstant.ZERO);
|
|
|
+ Query queryFormat = new Query(criteria);
|
|
|
+ SckwWaybillOrder info = mongoTemplate.findOne(queryFormat, SckwWaybillOrder.class);
|
|
|
+ WayBillDetailDTO wayBillDetailDTO = new WayBillDetailDTO();
|
|
|
+ if(!ObjectUtils.isEmpty(info)) {
|
|
|
+ wayBillDetailDTO.setDriverId(info.getDriverId());
|
|
|
+ wayBillDetailDTO.setDriverName(info.getDriverName());
|
|
|
+ wayBillDetailDTO.setDriverPhone(info.getDriverPhone());
|
|
|
+ wayBillDetailDTO.setDriverId(info.getDriverId());
|
|
|
}
|
|
|
- waybillDataVO.setLogsMessage(waybillTrackVOS);
|
|
|
+ waybillDataVO.setTransport(wayBillDetailDTO);
|
|
|
return HttpResult.ok(waybillDataVO);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 运单看板列表
|
|
|
+ * @param query
|
|
|
* @return
|
|
|
+ * @throws Exception
|
|
|
*/
|
|
|
- public HttpResult waybillIndex(WaybillOrderDTO query) {
|
|
|
+ public HttpResult waybillIndex(WaybillOrderDTO query) throws Exception {
|
|
|
// 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_PASS.getCode());
|
|
|
+ List<Integer> statuses = initWaybillIndexStatus();
|
|
|
// 初始化各状态
|
|
|
List<WaybillStatusVO> statusVOS = new ArrayList<>();
|
|
|
statuses.forEach(e -> {
|
|
|
@@ -195,51 +236,7 @@ public class WaybillManagementService {
|
|
|
statusVOS.add(waybillStatusVO);
|
|
|
});
|
|
|
|
|
|
- Criteria criteria = new Criteria();
|
|
|
- criteria.and("entId").is(LoginUserHolder.getEntId());
|
|
|
- criteria.and("delFlag").is(NumberConstant.ZERO);
|
|
|
-
|
|
|
- List<Long> wOrderIds = StringUtils.splitStrToList(query.getIds(), ",", Long.class);
|
|
|
- if (CollectionUtils.isNotEmpty(wOrderIds)) {
|
|
|
- Criteria.where("wOrderId").in(wOrderIds);
|
|
|
- }
|
|
|
-
|
|
|
- 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);
|
|
|
- }
|
|
|
+ Criteria criteria = buildWaybillIndexQuery(query, statuses);
|
|
|
Query queryFormat = new Query(criteria);
|
|
|
long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
|
|
|
queryFormat.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
|
|
|
@@ -300,4 +297,130 @@ public class WaybillManagementService {
|
|
|
PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, orders);
|
|
|
return HttpResult.ok(build);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<Integer> initWaybillIndexStatus() {
|
|
|
+ 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_PASS.getCode());
|
|
|
+ return statuses;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 运单看板 查询条件构造
|
|
|
+ * @param query
|
|
|
+ * @param statuses
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Criteria buildWaybillIndexQuery(WaybillOrderDTO query,List<Integer> statuses) {
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("entId").is(LoginUserHolder.getEntId());
|
|
|
+ criteria.and("delFlag").is(NumberConstant.ZERO);
|
|
|
+
|
|
|
+ List<Long> wOrderIds = StringUtils.splitStrToList(query.getIds(), ",", Long.class);
|
|
|
+ if (CollectionUtils.isNotEmpty(wOrderIds)) {
|
|
|
+ Criteria.where("wOrderId").in(wOrderIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(query.getStatus())) {
|
|
|
+ criteria.and("status").is(query.getStatus());
|
|
|
+ } else {
|
|
|
+ criteria.and("status").in(statuses);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 装货城市
|
|
|
+ if (StringUtils.isNotBlank(query.getLoadCityName()) && StringUtils.isNotEmpty(query.getLoadCityName())) {
|
|
|
+ criteria.and("loadCityName").is(query.getLoadCityName());
|
|
|
+ }
|
|
|
+ // 卸货城市
|
|
|
+ if (StringUtils.isNotBlank(query.getUnloadCityName()) && StringUtils.isNotEmpty(query.getUnloadCityName())) {
|
|
|
+ criteria.and("unloadCityName").is(query.getUnloadCityName());
|
|
|
+ }
|
|
|
+ // 装载时间
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ return criteria;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 运单看板TOP
|
|
|
+ * @param query
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public HttpResult waybillIndexStatistics(WaybillOrderDTO query){
|
|
|
+ List<Integer> statuses = initWaybillIndexStatus();
|
|
|
+ Criteria criteria = buildWaybillIndexQuery(query, statuses);
|
|
|
+ Aggregation aggregation = Aggregation.newAggregation(
|
|
|
+ Aggregation.match(criteria),
|
|
|
+ Aggregation.group("status").count().as("total"),
|
|
|
+ Aggregation.project("total").and("value").previousOperation()
|
|
|
+ );
|
|
|
+ AggregationResults<TableTops> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwWaybillOrder.class, TableTops.class);
|
|
|
+ List<TableTops> results = outputTypeCount.getMappedResults();
|
|
|
+
|
|
|
+ Map<String, TableTops> listMap = new HashMap<>();
|
|
|
+ TableTops topTotal = new TableTops();
|
|
|
+ topTotal.setName("全部");
|
|
|
+ topTotal.setValue("");
|
|
|
+ topTotal.setTotal(0);
|
|
|
+ listMap.put("", topTotal);
|
|
|
+ statuses.forEach(e -> {
|
|
|
+ TableTops top = new TableTops();
|
|
|
+ top.setValue(String.valueOf(e));
|
|
|
+ top.setTotal(0);
|
|
|
+ switch (e){
|
|
|
+ case 2 -> top.setName("司机接单");
|
|
|
+ case 3 -> top.setName("出车");
|
|
|
+ case 4 -> top.setName("到装货地");
|
|
|
+ case 5 -> top.setName("装货");
|
|
|
+ case 6 -> top.setName("到卸货地");
|
|
|
+ case 7 -> top.setName("卸货");
|
|
|
+ case 8 -> top.setName("核单");
|
|
|
+ }
|
|
|
+ listMap.put(String.valueOf(e), top);
|
|
|
+ });
|
|
|
+ if(CollectionUtils.isNotEmpty(results)) {
|
|
|
+ for(TableTops result: results) {
|
|
|
+ listMap.get(result.getValue()).setTotal(result.getTotal());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listMap.get("").setTotal(listMap.values().parallelStream().mapToInt(e -> e.getTotal()).sum());
|
|
|
+ return HttpResult.ok(listMap.values());
|
|
|
+ }
|
|
|
}
|