Просмотр исходного кода

update 调整运单查询代码

chenlin 2 лет назад
Родитель
Сommit
d4611d1623

+ 81 - 214
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -1,7 +1,6 @@
 package com.sckw.report.service;
 
 import com.sckw.core.common.enums.NumberConstant;
-import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
@@ -18,6 +17,7 @@ import com.sckw.report.service.param.ConsignOrderQuery;
 import com.sckw.report.service.param.WaybillOrderQuery;
 import com.sckw.report.service.vo.CarWaybillVo;
 import com.sckw.report.service.vo.ConsignOrderVo;
+import com.sckw.report.service.vo.WaybillsCountVo;
 import com.sckw.transport.api.dubbo.TransportDubboService;
 import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
 import lombok.extern.slf4j.Slf4j;
@@ -36,7 +36,6 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
-import java.util.stream.Collectors;
 
 /**
  * @author zk
@@ -55,7 +54,6 @@ public class KwTransportService {
 
     @DubboReference(version = "2.0.0", group = "design", check = false)
     TransportDubboService transportDubboService;
-
     public HttpResult list(ConsignOrderQuery query) throws ParseException {
         //模糊匹配
         //根据条件查询所有并排序,且分页
@@ -163,56 +161,9 @@ public class KwTransportService {
                 Aggregation.project("total").and("value").previousOperation()
         );
         AggregationResults<TobleTop> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwLogisticsOrder.class, TobleTop.class);
-        List<TobleTop> mappedResults = outputTypeCount.getMappedResults();
-        List<TobleTop> arrayList = new ArrayList<>();
-        arrayList.addAll(mappedResults);
-        /**补全数据状态不齐的情况*/
-        packageReturnStatistics(mappedResults, arrayList);
+        List<TobleTop> results = (List<TobleTop>) outputTypeCount.getRawResults().get("results");
         // 查询结果
-        return HttpResult.ok(arrayList);
-    }
-
-    /**
-     * 组装返回数据
-     *
-     * @param mappedResults
-     * @param arrayList
-     */
-    private void packageReturnStatistics(List<TobleTop> mappedResults, List<TobleTop> arrayList) {
-        List<String> codeList = LogisticsOrderEnum.getCodeStringList();
-        List<String> collect = mappedResults.stream().map(e -> e.getValue()).collect(Collectors.toList());
-        List<String> diffrentList = getDiffrentList(collect, codeList);
-        if (CollectionUtils.isNotEmpty(mappedResults)) {
-            if (CollectionUtils.isNotEmpty(diffrentList)) {
-                for (String s : diffrentList) {
-                    TobleTop top = new TobleTop();
-                    top.setValue(s);
-                    top.setTotal(NumberConstant.ZERO);
-                    arrayList.add(top);
-                }
-            }
-            for (TobleTop top : arrayList) {
-                top.setName(LogisticsOrderEnum.getName(Integer.valueOf(top.getValue())));
-            }
-        } else {
-            for (LogisticsOrderEnum logisticsOrderEnum : LogisticsOrderEnum.values()) {
-                TobleTop top = new TobleTop();
-                top.setName(logisticsOrderEnum.getDestination());
-                top.setValue(logisticsOrderEnum.getStatus());
-                top.setTotal(NumberConstant.ZERO);
-                arrayList.add(top);
-            }
-        }
-    }
-
-    /**
-     * @param sourceList 源数据  [1,2,3]
-     * @param targetList 目标数据 [1]
-     * @Description: 获取targetList中在sourceList中不存在的项
-     * @return: List<String>    [2,3]
-     */
-    public static List<String> getDiffrentList(List<String> sourceList, List<String> targetList) {
-        return targetList.stream().filter(item -> sourceList.stream().allMatch(each -> !item.equals(each))).collect(Collectors.toList());
+        return HttpResult.ok(results);
     }
 
     public List<ConsignOrderVo> export(ConsignOrderQuery query) {
@@ -222,51 +173,44 @@ public class KwTransportService {
         // 创建条件对象
         Criteria criteria = new Criteria();
         // 1. 全等于
-        Query query1 =new Query();
         criteria.and("entId").is(LoginUserHolder.getEntId());
+        if (StringUtils.isNotBlank(query.getLoadAddress())) {
+            criteria.and("loadDetailAddress").is(query.getLoadAddress());
+        }
+        if (StringUtils.isNotBlank(query.getUnloadAddress())) {
+            criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
+        }
+        if (StringUtils.isNotBlank(query.getStatus())) {
+            criteria.and("status").is(query.getStatus());
+        }
         criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
-        if (CollectionUtils.isEmpty(query.getIds())) {
-            if (StringUtils.isNotBlank(query.getLoadAddress())) {
-                criteria.and("loadDetailAddress").is(query.getLoadAddress());
-            }
-            if (StringUtils.isNotBlank(query.getUnloadAddress())) {
-                criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
-            }
-            if (StringUtils.isNotBlank(query.getStatus())) {
-                criteria.and("status").is(query.getStatus());
-            }
-            // 4. 日期范围
-            if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
-                criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
-                        .lte(query.getEndDateTime()));
-            }
-            //多条件模糊查询
-            Criteria c1 = new Criteria();
-            Criteria c2 = new Criteria();
-            Criteria c3 = new Criteria();
-            Criteria c4 = new Criteria();
-            Criteria c5 = new Criteria();
-            if (StringUtils.isNotBlank(query.getKeywords())) {
-                Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-                c1 = Criteria.where("firmName").regex(pattern);
-                c2 = Criteria.where("carrierFirmName").regex(pattern);
-                c3 = Criteria.where("checkFirmName").regex(pattern);
-                c4 = Criteria.where("tOrderNo").regex(pattern);
-                c5 = Criteria.where("lOrderNo").regex(pattern);
-                criteria.orOperator(c1, c2, c3, c4, c5);
-            }
-            query1.addCriteria(criteria);
-            if (CollectionUtils.isNotEmpty(query.getIds())) {
-                query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
-            }
-        }else {
-            query1.addCriteria(criteria);
-            if (CollectionUtils.isNotEmpty(query.getIds())) {
-                query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
-            }
+        // 4. 日期范围
+        if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
+            criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
+                    .lte(query.getEndDateTime()));
+        }
+        //多条件模糊查询
+        Criteria c1 = new Criteria();
+        Criteria c2 = new Criteria();
+        Criteria c3 = new Criteria();
+        Criteria c4 = new Criteria();
+        Criteria c5 = new Criteria();
+        if (StringUtils.isNotBlank(query.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            c1 = Criteria.where("firmName").regex(pattern);
+            c2 = Criteria.where("carrierFirmName").regex(pattern);
+            c3 = Criteria.where("checkFirmName").regex(pattern);
+            c4 = Criteria.where("tOrderNo").regex(pattern);
+            c5 = Criteria.where("lOrderNo").regex(pattern);
+            criteria.orOperator(c1, c2, c3, c4, c5);
+        }
+        Query query1 = new Query(criteria);
+        if (CollectionUtils.isNotEmpty(query.getIds())) {
+            query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
         }
         // 执行查询
         List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
+//        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, list);
         List<ConsignOrderVo> returnList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list)) {
             packageReturnList(list, returnList);
@@ -335,7 +279,6 @@ public class KwTransportService {
 
     /**
      * 司机端 运单详情页面-【作废】
-     *
      * @param id
      * @param type
      * @return
@@ -393,45 +336,7 @@ public class KwTransportService {
      * @date 2023/07/21
      */
     public HttpResult getWaybillOrders(WaybillOrderQuery query) throws ParseException {
-        // 模糊匹配
-        // 根据条件查询所有并排序,且分页
-        // 设置模糊查询匹配规则  忽略大小写
-        // 创建条件对象
-        Criteria criteria = new Criteria();
-        criteria.and("entId").is(LoginUserHolder.getEntId());
-        criteria.and("delFlag").is(NumberConstant.ZERO);
-        // 装载时间
-        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()));
-        }
-        // 多条件模糊查询
-        Criteria c1 = new Criteria();
-        Criteria c2 = new Criteria();
-        Criteria c3 = new Criteria();
-        Criteria c4 = new Criteria();
-        Criteria c5 = new Criteria();
-        Criteria c6 = new Criteria();
-        if (StringUtils.isNotBlank(query.getKeywords())) {
-            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            c1 = Criteria.where("wOrderNo").regex(pattern);
-            c2 = Criteria.where("truckNo").regex(pattern);
-            c3 = Criteria.where("driverName").regex(pattern);
-            c4 = Criteria.where("firmName").regex(pattern);
-            c5 = Criteria.where("loadAddress").regex(pattern);
-            c6 = Criteria.where("unloadAddress").regex(pattern);
-            criteria.orOperator(c1, c2, c3, c4, c5, c6);
-        }
+        Criteria criteria = buildWaybillOrdersQuery(query);
         Query queryFormat = new Query(criteria);
         // in查询
         if (CollectionUtils.isNotEmpty(query.getIds())) {
@@ -452,17 +357,14 @@ public class KwTransportService {
     }
 
     /**
-     * 运单管理-运单列表 top 统计
-     *
-     * @param query 查询
-     * @return {@link HttpResult }
-     * @author jc
-     * @date 2023/07/21
+     *  构造运单关联查询条件
+     * @param query
+     * @return
      */
-    public HttpResult getWayBillStatistics(WaybillOrderQuery query) {
-        //模糊匹配
-        //根据条件查询所有并排序,且分页
-        //设置模糊查询匹配规则  忽略大小写
+    public Criteria buildWaybillOrdersQuery(WaybillOrderQuery query) {
+        // 模糊匹配
+        // 根据条件查询所有并排序,且分页
+        // 设置模糊查询匹配规则  忽略大小写
         // 创建条件对象
         Criteria criteria = new Criteria();
         criteria.and("entId").is(LoginUserHolder.getEntId());
@@ -503,6 +405,19 @@ public class KwTransportService {
             c6 = Criteria.where("unloadAddress").regex(pattern);
             criteria.orOperator(c1, c2, c3, c4, c5, c6);
         }
+        return criteria;
+    }
+
+    /**
+     * 运单管理-运单列表 top 统计
+     *
+     * @param query 查询
+     * @return {@link HttpResult }
+     * @author jc
+     * @date 2023/07/21
+     */
+    public HttpResult getWayBillStatistics(WaybillOrderQuery query){
+        Criteria criteria = buildWaybillOrdersQuery(query);
         Aggregation aggregation = Aggregation.newAggregation(
                 Aggregation.match(criteria),
                 Aggregation.group("status").count().as("total"),
@@ -512,14 +427,14 @@ public class KwTransportService {
         List<TobleTop> results = outputTypeCount.getMappedResults();
         // 填充默认值
         List<TobleTop> list = new ArrayList<>();
-        for (CarWaybillEnum status : CarWaybillEnum.values()) {
+        for (CarWaybillEnum status:CarWaybillEnum.values()) {
             TobleTop top = new TobleTop();
             top.setName(status.getDestination());
             top.setValue(String.valueOf(status.getCode()));
             top.setTotal(0);
-            if (CollectionUtils.isNotEmpty(results)) {
-                for (TobleTop result : results) {
-                    if (StringUtils.isNotEmpty(result.getValue()) && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
+            if(CollectionUtils.isNotEmpty(results)) {
+                for (TobleTop result:results) {
+                    if(StringUtils.isNotEmpty(result.getValue()) && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
                         top.setTotal(result.getTotal());
                         continue;
                     }
@@ -539,79 +454,24 @@ public class KwTransportService {
      * @author jc
      * @date 2023/07/21
      */
-    public HttpResult wayBillTotalCount(WaybillOrderQuery query) {
+    public HttpResult wayBillTotalCount(WaybillOrderQuery query){
         // 统计项字段
-        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());
-        }
-        // 装载时间
-        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()));
-        }
-        // 多条件模糊查询
-        Criteria c1 = new Criteria();
-        Criteria c2 = new Criteria();
-        Criteria c3 = new Criteria();
-        Criteria c4 = new Criteria();
-        Criteria c5 = new Criteria();
-        Criteria c6 = new Criteria();
-        if (StringUtils.isNotBlank(query.getKeywords())) {
-            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            c1 = Criteria.where("wOrderNo").regex(pattern);
-            c2 = Criteria.where("truckNo").regex(pattern);
-            c3 = Criteria.where("driverName").regex(pattern);
-            c4 = Criteria.where("firmName").regex(pattern);
-            c5 = Criteria.where("loadAddress").regex(pattern);
-            c6 = Criteria.where("unloadAddress").regex(pattern);
-            criteria.orOperator(c1, c2, c3, c4, c5, c6);
-        }
+        Criteria criteria = buildWaybillOrdersQuery(query);
         Aggregation aggregation = Aggregation.newAggregation(
                 Aggregation.match(criteria),
-                Aggregation.group("status").count().as("total"),
-                Aggregation.project("total").and("value").previousOperation()
+                Aggregation.group("id").count().as("countTotal")
+                        .sum("entrustAmount").as("entrustTotal")
+                        .sum("loadAmount").as("loadTotal")
+                        .sum("unloadAmount").as("unloadTotal"),
+                Aggregation.project("countTotal", "entrustTotal", "loadTotal", "unloadTotal")
         );
-        AggregationResults<TobleTop> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwWaybillOrder.class, TobleTop.class);
-        List<TobleTop> results = outputTypeCount.getMappedResults();
-        // 填充默认值
-        List<TobleTop> list = new ArrayList<>();
-        for (CarWaybillEnum status : CarWaybillEnum.values()) {
-            TobleTop top = new TobleTop();
-            top.setName(status.getDestination());
-            top.setValue(String.valueOf(status.getCode()));
-            top.setTotal(0);
-            if (CollectionUtils.isNotEmpty(results)) {
-                for (TobleTop result : results) {
-                    if (StringUtils.isNotEmpty(result.getValue()) && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
-                        top.setTotal(result.getTotal());
-                        continue;
-                    }
-                }
-            }
-            list.add(top);
-        }
-
-        // 查询结果
-        return HttpResult.ok(list);
+        AggregationResults<WaybillsCountVo> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwWaybillOrder.class, WaybillsCountVo.class);
+        List<WaybillsCountVo> results = outputTypeCount.getMappedResults();
+        return HttpResult.ok(results);
     }
 
     /**
-     * 处理运单查询结果
-     *
+     * 运单处理运单查询结果
      * @param list
      * @param returnList
      */
@@ -642,14 +502,21 @@ public class KwTransportService {
             vo.setLoadTime(waybillOrder.getLoadTime() == null ?
                     null : DateUtil.getDateTime(waybillOrder.getLoadTime()));
             vo.setUnloadTime(waybillOrder.getUnloadTime() == null ?
-                    null : DateUtil.getDateTime(waybillOrder.getUnloadTime()));
+                    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()));
+            vo.setGoodsPriceUnit(waybillOrder.getGoodsPriceUnit() == null ?
+                    null :String.valueOf(waybillOrder.getGoodsPriceUnit()));
             returnList.add(vo);
         }
     }
 
     /**
      * 承运订单-分包托运列表数据展示
-     *
      * @param lOrderId
      * @param page
      * @param pageSize

+ 17 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/CarWaybillVo.java

@@ -95,7 +95,24 @@ public class CarWaybillVo implements Serializable {
      */
     private String unloadTime;
 
+    /**
+     * 亏吨重量
+     */
+    private String deficitAmount;
+
+    /**
+     * 扣亏损值(合理损耗-(实装-实卸))-单位
+     */
+    private String goodsPriceUnit;
+
+    /**
+     * 创建时间
+     */
     private String createTime;
+
+    /**
+     * 更新时间
+     */
     private String updateTime;
 
 }

+ 31 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/WaybillsCountVo.java

@@ -0,0 +1,31 @@
+package com.sckw.report.service.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author jc
+ * @description 运单列表 统计行数据
+ * @date 2023-07-10 12:07:40
+ */
+@Data
+@Accessors(chain = true)
+public class WaybillsCountVo {
+    /**
+     * 总计条数
+     */
+    private String countTotal;
+    /**
+     * 总计托运量
+     */
+    private String entrustTotal;
+    /**
+     * 总计实际装载量
+     */
+    private String loadTotal;
+    /**
+     * 总计实际卸货量
+     */
+    private String unloadTotal;
+
+}

+ 6 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -83,13 +83,13 @@ public class WaybillManagementService {
         waybillDataVO.setTransportMessage(kwtWaybillOrder);
 
         // 车辆信息
-//        Map<Long, RTruckVo> trucks  = remoteFleetService.findTruck(kwtWaybillOrder.getTruckNo());
+        Map<Long, RTruckVo> trucks  = remoteFleetService.findTruck(kwtWaybillOrder.getTruckNo());
         WaybillCarVO waybillCarVO = new WaybillCarVO();
-//        if(CollectionUtils.isNotEmpty(trucks)) {
-//            waybillCarVO.setType(trucks.get(0).getTruckNo());
-//            waybillCarVO.setTruckId(trucks.get(0).getId());
-//            waybillCarVO.setTrailerNo(trucks.get(0).getTrailerNo());
-//        }
+        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())