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

订单列表查询统计优化

yzc 2 лет назад
Родитель
Сommit
555a7ed219

+ 26 - 23
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -92,7 +92,7 @@ public class KwOrderService {
                     .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
                     .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
                     .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
-                    .setConsignmentStatus(e.getEntrustAmount().compareTo(e.getAmount()) < 0 ? "待托运" : "已托运")
+                    .setConsignmentStatus(Objects.isNull(e.getEntrustAmount()) || e.getEntrustAmount().compareTo(e.getAmount()) < 0 ? "待托运" : "已托运")
                     .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
             result.add(order);
         });
@@ -110,69 +110,72 @@ public class KwOrderService {
     private Query getQuery(TradeOrderListStatisticParam params, Boolean isStatistic) {
         Long entId = LoginUserHolder.getEntId();
         Query query = new Query();
-        Criteria criteria = new Criteria();
-        criteria.and("delFlag").is(0);
+        Criteria andCriteria = new Criteria();
+        andCriteria.and("delFlag").is(0);
         if (Objects.equals(params.getOrderType(), 1)) {
             //采购订单
-            criteria.and("procureTopEntId").is(entId);
+            andCriteria.and("procureTopEntId").is(entId);
         } else {
             //销售订单
-            criteria.and("supplyTopEntId").is(entId);
+            andCriteria.and("supplyTopEntId").is(entId);
         }
         //日期范围
         if (Objects.nonNull(params.getStartCreateTime())) {
-            criteria.and("createTime").gte(params.getStartCreateTime());
+            andCriteria.and("createTime").gte(params.getStartCreateTime());
         }
         if (Objects.nonNull(params.getEndCreateTime())) {
-            criteria.and("createTime").lte(params.getEndCreateTime());
+            andCriteria.and("createTime").lte(params.getEndCreateTime());
         }
         //装卸货地址
         if (StringUtils.isNotBlank(params.getShippingAddressCode())) {
             Pattern pattern = Pattern.compile("^" + params.getShippingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
-            criteria.and("loadCityCode").regex(pattern);
+            andCriteria.and("loadCityCode").regex(pattern);
         }
         if (StringUtils.isNotBlank(params.getUnloadingAddressCode())) {
             Pattern pattern = Pattern.compile("^" + params.getUnloadingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
-            criteria.and("unloadCityCode").regex(pattern);
+            andCriteria.and("unloadCityCode").regex(pattern);
         }
         //提货方式
         if (StringUtils.isNotBlank(params.getPickupType())) {
-            criteria.and("pickupType").is(params.getPickupType());
+            andCriteria.and("pickupType").is(params.getPickupType());
         }
         //交易方式
         if (StringUtils.isNotBlank(params.getTrading())) {
-            criteria.and("trading").is(params.getTrading());
+            andCriteria.and("trading").is(params.getTrading());
         }
         //交付类型
         if (StringUtils.isNotBlank(params.getDeliveryType())) {
-            criteria.and("deliveryType").is(params.getDeliveryType());
+            andCriteria.and("deliveryType").is(params.getDeliveryType());
         }
         //下单方式
         if (StringUtils.isNotBlank(params.getSource())) {
-            criteria.and("source").is(params.getSource());
+            andCriteria.and("source").is(params.getSource());
         }
         List<Criteria> orCriteriaList = new ArrayList<>();
         //订单状态
         if (Objects.nonNull(params.getStatus()) && !isStatistic) {
-            criteria.and("status").is(params.getStatus());
+            andCriteria.and("status").is(params.getStatus());
             if (Objects.equals(params.getStatus(), Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()))) {
                 //草稿状态只能创建订单的企业能看
-                criteria.and("entId").is(entId);
+                andCriteria.and("entId").is(entId);
             }
         } else {
             //非草稿状态
-            criteria.and("status").ne(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
+            andCriteria.and("status").ne(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
             //or草稿状态且是当前企业
-            orCriteriaList.add(Criteria.where("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue())).and("entId").is(entId));
+            orCriteriaList.add(Criteria.where("entId").is(entId).and("status")
+                    .is(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue())).and("delFlag").is(0));
         }
+        orCriteriaList.add(andCriteria);
         //关键字模糊匹配
         if (StringUtils.isNotBlank(params.getKeywords())) {
             Pattern pattern = Pattern.compile("^.*" + params.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            orCriteriaList.add(Criteria.where("tOrderNo").regex(pattern));
-            orCriteriaList.add(Criteria.where("procureFirmName").regex(pattern));
-            orCriteriaList.add(Criteria.where("supplyFirmName").regex(pattern));
-            orCriteriaList.add(Criteria.where("goodsName").regex(pattern));
+            orCriteriaList.add(Criteria.where("tOrderNo").regex(pattern).and("delFlag").is(0));
+            orCriteriaList.add(Criteria.where("procureFirmName").regex(pattern).and("delFlag").is(0));
+            orCriteriaList.add(Criteria.where("supplyFirmName").regex(pattern).and("delFlag").is(0));
+            orCriteriaList.add(Criteria.where("goodsName").regex(pattern).and("delFlag").is(0));
         }
+        Criteria criteria = new Criteria();
         if (CollectionUtils.isNotEmpty(orCriteriaList)) {
             criteria.orOperator(orCriteriaList);
         }
@@ -230,7 +233,7 @@ public class KwOrderService {
             }
             query.addCriteria(criteria);
         } else {
-            query = getQuery(params,false);
+            query = getQuery(params, false);
         }
         List<SckwTradeOrder> orders = mongoTemplate.find(query, SckwTradeOrder.class);
         if (CollectionUtils.isEmpty(orders)) {
@@ -265,7 +268,7 @@ public class KwOrderService {
         Query query = new Query();
         Long entId = LoginUserHolder.getEntId();
         Criteria criteria = new Criteria();
-        criteria.and("status").is(DictEnum.TORDER_STATUS_5.getValue()).and("delFlag").is(0);
+        criteria.and("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue())).and("delFlag").is(0);
         if (Objects.equals(params.getOrderType(), 1)) {
             //采购订单
             criteria.and("procureTopEntId").is(entId);