|
|
@@ -37,6 +37,7 @@ import org.springframework.data.mongodb.core.query.Query;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
@@ -107,8 +108,8 @@ public class WaybillManagementService {
|
|
|
wayBillDetailDTO.setEntrustAmount(String.valueOf(info.getEntrustAmount()));
|
|
|
wayBillDetailDTO.setType(String.valueOf(info.getType()));
|
|
|
wayBillDetailDTO.setTypeLabel(info.getType().equals(NumberConstant.ONE) ? "趟次" : "循环");
|
|
|
- wayBillDetailDTO.setStartTime(DateUtil.getDateTime(info.getStartTime()));
|
|
|
- wayBillDetailDTO.setEndTime(DateUtil.getDateTime(info.getEndTime()));
|
|
|
+ wayBillDetailDTO.setStartTime(info.getStartTime());
|
|
|
+ wayBillDetailDTO.setEndTime(info.getEndTime());
|
|
|
wayBillDetailDTO.setCreateBy(info.getCreateByName());
|
|
|
wayBillDetailDTO.setGoodsName(info.getGoodsName());
|
|
|
wayBillDetailDTO.setLoadDetailAddress(info.getLoadCityName().concat(info.getLoadDetailAddress()));
|
|
|
@@ -189,6 +190,7 @@ public class WaybillManagementService {
|
|
|
waybillTrackVO.setId(String.valueOf(kwtWaybillOrderTrack.getId()))
|
|
|
.setRemark(kwtWaybillOrderTrack.getRemark())
|
|
|
.setStatus(String.valueOf(kwtWaybillOrderTrack.getStatus()))
|
|
|
+ .setStatusLabel(CarWaybillEnum.getName(kwtWaybillOrderTrack.getStatus()))
|
|
|
.setCreateBy(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
|
|
|
? null : usersMap.get(kwtWaybillOrderTrack.getCreateBy()).getName())
|
|
|
.setCreateByPhone(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
|
|
|
@@ -495,4 +497,153 @@ public class WaybillManagementService {
|
|
|
listMap.get("all").setTotal(listMap.values().parallelStream().mapToInt(e -> e.getTotal()).sum());
|
|
|
return HttpResult.ok(listMap.values());
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * app 运单分类统计数据 [运输中|已完成]
|
|
|
+ * @param keyword
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public HttpResult waybillDataStatisticApp(String keyword){
|
|
|
+ Long entId = LoginUserHolder.getEntId();
|
|
|
+ // 运输途中
|
|
|
+ List<Integer> onWayStates = getWallBillStatues("onway");
|
|
|
+ Long onWayCount = kwtWaybillOrderMapper.selectWaybillOrderCountByStatus(entId, onWayStates, keyword);
|
|
|
+ // 已完成
|
|
|
+ List<Integer> finishStates = getWallBillStatues("finish");
|
|
|
+ Long finishCount = kwtWaybillOrderMapper.selectWaybillOrderCountByStatus(entId, finishStates, keyword);
|
|
|
+ Map<String, Long> statistic = new HashMap<>();
|
|
|
+ statistic.put("onway", onWayCount);
|
|
|
+ statistic.put("finish", finishCount);
|
|
|
+ return HttpResult.ok(statistic);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * app 运单分类统计数据 [运输中|已完成]
|
|
|
+ * @param keyword
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public HttpResult waybillDataApp(String status, Integer page, Integer pageSize, String keyword){
|
|
|
+ List<Integer> _statuses = getWallBillStatues(status);
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("entId").is(LoginUserHolder.getEntId());
|
|
|
+ criteria.and("delFlag").is(NumberConstant.ZERO);
|
|
|
+ // 多条件模糊查询
|
|
|
+ List<Criteria> orCriteria = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotBlank(keyword)) {
|
|
|
+ Pattern pattern = Pattern.compile("^.*" + keyword + ".*$", 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));
|
|
|
+ criteria.orOperator(orCriteria);
|
|
|
+ }
|
|
|
+ Query queryFormat = new Query(criteria);
|
|
|
+ // in查询
|
|
|
+ if (CollectionUtils.isNotEmpty(_statuses)) {
|
|
|
+ queryFormat.addCriteria(Criteria.where("status").in(_statuses));
|
|
|
+ }
|
|
|
+ // 总记录数
|
|
|
+ long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
|
|
|
+ queryFormat.with(PageRequest.of(page - 1, pageSize,
|
|
|
+ Sort.by(Sort.Order.desc("createTime"))));
|
|
|
+ // 执行查询
|
|
|
+ List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
|
|
|
+ List<CarWaybillAppVo> returnList = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ packageWayBillReturnList(list, returnList);
|
|
|
+ }
|
|
|
+ PageResult build = PageResult.build(page, pageSize, total, returnList);
|
|
|
+ return HttpResult.ok(build);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 运单处理运单查询结果
|
|
|
+ *
|
|
|
+ * @param list
|
|
|
+ * @param returnList
|
|
|
+ */
|
|
|
+ private void packageWayBillReturnList(List<SckwWaybillOrder> list, List<CarWaybillAppVo> returnList) {
|
|
|
+ for (SckwWaybillOrder waybillOrder : list) {
|
|
|
+ CarWaybillAppVo vo = new CarWaybillAppVo();
|
|
|
+ vo.setWOrderNo(waybillOrder.getWOrderNo() == null ?
|
|
|
+ null : String.valueOf(waybillOrder.getWOrderNo()));
|
|
|
+ vo.setWOrderId(waybillOrder.getWOrderId() == null ?
|
|
|
+ String.valueOf(waybillOrder.get_id()) : String.valueOf(waybillOrder.getWOrderId()));
|
|
|
+ vo.setTruckNo(waybillOrder.getTruckNo());
|
|
|
+ vo.setDriverName(waybillOrder.getDriverName() == null ?
|
|
|
+ null : String.valueOf(waybillOrder.getDriverName()));
|
|
|
+ vo.setType(String.valueOf(waybillOrder.getType()));
|
|
|
+ String typeString = "";
|
|
|
+ if (waybillOrder.getType().equals(NumberConstant.ONE)) {
|
|
|
+ typeString = "趟次";
|
|
|
+ }
|
|
|
+ if (waybillOrder.getType().equals(NumberConstant.TWO)) {
|
|
|
+ typeString = "循环";
|
|
|
+ }
|
|
|
+ vo.setTypeLabel(typeString);
|
|
|
+ vo.setStatus(waybillOrder.getStatus() == null ?
|
|
|
+ null : String.valueOf(waybillOrder.getStatus()));
|
|
|
+ vo.setSendCarTime(waybillOrder.getCreateTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getCreateTime()));
|
|
|
+ vo.setStartTime(waybillOrder.getStartTime() == null ?
|
|
|
+ null : waybillOrder.getStartTime());
|
|
|
+ vo.setEndTime(waybillOrder.getEndTime() == null ?
|
|
|
+ null : waybillOrder.getEndTime());
|
|
|
+ vo.setEntrustAmount(String.valueOf(waybillOrder.getEntrustAmount()));
|
|
|
+ vo.setLoadName(waybillOrder.getLoadName() == null ?
|
|
|
+ null : waybillOrder.getLoadName());
|
|
|
+ vo.setLoadAddress((waybillOrder.getLoadCityName() == null ? "" : waybillOrder.getLoadCityName())
|
|
|
+ .concat(waybillOrder.getLoadDetailAddress() == null ? "" : waybillOrder.getLoadDetailAddress()));
|
|
|
+ vo.setUnloadName(waybillOrder.getUnloadName() == null ?
|
|
|
+ null : waybillOrder.getUnloadName());
|
|
|
+ vo.setUnloadAddress((waybillOrder.getUnloadCityName() == null ? "" : waybillOrder.getUnloadCityName())
|
|
|
+ .concat(waybillOrder.getUnloadDetailAddress() == null ? "" : waybillOrder.getUnloadDetailAddress()));
|
|
|
+ vo.setLoadAmount(waybillOrder.getLoadAmount() == null ?
|
|
|
+ null : String.valueOf(waybillOrder.getLoadAmount()));
|
|
|
+ vo.setUnloadAmount(waybillOrder.getUnloadAmount() == null ?
|
|
|
+ null : String.valueOf(waybillOrder.getUnloadAmount()));
|
|
|
+ vo.setLoadDateTime(waybillOrder.getLoadTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getLoadTime()));
|
|
|
+ vo.setUnloadDateTime(waybillOrder.getUnloadTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getUnloadTime()));
|
|
|
+ vo.setCreateTime(waybillOrder.getCreateTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getCreateTime()));
|
|
|
+ vo.setUpdateTime(waybillOrder.getUpdateTime() == null ?
|
|
|
+ null : DateUtil.getDateTime(waybillOrder.getUpdateTime()));
|
|
|
+ vo.setDeficitAmount(waybillOrder.getDeficitAmount() == null ?
|
|
|
+ null : String.valueOf(waybillOrder.getDeficitAmount()));
|
|
|
+ BigDecimal deficitLoss = waybillOrder.getLoss() == null ? BigDecimal.valueOf(0) : waybillOrder.getLoss();
|
|
|
+ BigDecimal deficitAmount = waybillOrder.getDeficitAmount() == null ? BigDecimal.valueOf(0) : waybillOrder.getDeficitAmount();
|
|
|
+ BigDecimal deficitRealAmount = BigDecimal.valueOf(0);
|
|
|
+ if(deficitAmount.compareTo(BigDecimal.valueOf(0)) > 0) {
|
|
|
+ deficitRealAmount = deficitLoss.subtract(deficitAmount);
|
|
|
+ }
|
|
|
+ vo.setDeficitRealAmount(deficitRealAmount.toString());
|
|
|
+ vo.setGoodsPriceUnit(waybillOrder.getGoodsPriceUnit() == null ?
|
|
|
+ null : String.valueOf(waybillOrder.getGoodsPriceUnit()));
|
|
|
+ returnList.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取 [运输中|已完成] 状态列表
|
|
|
+ * @param status
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<Integer> getWallBillStatues(String status) {
|
|
|
+ List<Integer> _list = new ArrayList<>();
|
|
|
+ if(status.equals("onway")) {
|
|
|
+ _list.add(CarWaybillEnum.PENDING_ORDER.getCode());
|
|
|
+ _list.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
|
|
|
+ _list.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
|
|
|
+ _list.add(CarWaybillEnum.WAIT_LOADING.getCode());
|
|
|
+ _list.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
|
|
|
+ _list.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
|
|
|
+ }
|
|
|
+ if(status.equals("finish")) {
|
|
|
+ _list.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
|
|
|
+ _list.add(CarWaybillEnum.APPROVAL_PASS.getCode());
|
|
|
+ }
|
|
|
+ return _list;
|
|
|
+ }
|
|
|
}
|