Selaa lähdekoodia

Merge branch 'dev' into dev_spt

sptkw 2 vuotta sitten
vanhempi
commit
10d4aec722
24 muutettua tiedostoa jossa 420 lisäystä ja 139 poistoa
  1. 9 0
      sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/dubbo/GoodsInfoService.java
  2. 10 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/EntCacheResDto.java
  3. 6 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsEnterpriseResDto.java
  4. 1 1
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java
  5. 1 1
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/FileApiController.java
  6. 1 1
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/TestController.java
  7. 9 4
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  8. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java
  9. 2 2
      sckw-modules/sckw-order/src/main/resources/bootstrap-dev.yml
  10. 2 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  11. 2 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  12. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementLogisticsService.java
  13. 2 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementOfflineService.java
  14. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementTradeService.java
  15. 2 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementWalletService.java
  16. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/dubbo/PayCenterServiceImpl.java
  17. 2 11
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/CommonValidator.java
  18. 6 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java
  19. 15 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  20. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java
  21. 46 31
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java
  22. 44 36
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwConsignService.java
  23. 240 34
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  24. 15 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

+ 9 - 0
sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/dubbo/GoodsInfoService.java

@@ -51,4 +51,13 @@ public interface GoodsInfoService {
      * @return: com.sckw.core.web.response.HttpResult
      */
     HttpResult updateGoodsAmount(Long id, BigDecimal amount);
+
+    /**
+     * @desc: 是否有关联客服经理
+     * @author: yzc
+     * @date: 2023-08-15 10:06
+     * @Param userId:  用户id
+     * @return: java.lang.Boolean
+     */
+    Boolean associateManager(Long userId);
 }

+ 10 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/EntCacheResDto.java

@@ -85,4 +85,14 @@ public class EntCacheResDto implements Serializable {
      */
     private List<EntCacheResDto> child;
 
+    /**
+     * 主营业务
+     */
+    private String business;
+
+    /**
+     * 企业地址-----区域表id---实际用途?
+     */
+    private String cityName;
+
 }

+ 6 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsEnterpriseResDto.java

@@ -162,4 +162,10 @@ public class KwsEnterpriseResDto implements Serializable {
      */
     private Long manager;
 
+    /**
+     * 主营业务
+     */
+    private String business;
+
+
 }

+ 1 - 1
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java

@@ -47,7 +47,7 @@ public class ExcelExportController {
     @Autowired
     ExcelExportService excelExportService;
 
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     FileApiDubboService fileApiDubboService;
 
     @Autowired

+ 1 - 1
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/FileApiController.java

@@ -31,7 +31,7 @@
 //    @Autowired
 //    private FileApiFeignService fileApiFeignService;
 //
-//    @DubboReference(version = "2.0.0", group = "design", check = false)
+//    @DubboReference(version = "1.0.0", group = "design", check = false)
 //    private FileApiDubboService fileApiDubboService;
 //
 //    @Autowired

+ 1 - 1
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/TestController.java

@@ -18,7 +18,7 @@ import java.util.List;
 @RestController
 @RequestMapping("/test")
 public class TestController {
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private PayCenterDubboService payCenterDubboService;
 
     @GetMapping("/detail")

+ 9 - 4
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -1,6 +1,5 @@
 package com.sckw.fleet.controller;
 
-import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -18,8 +17,14 @@ import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
-import com.sckw.fleet.model.*;
-import com.sckw.fleet.model.dto.*;
+import com.sckw.fleet.model.KwfFleet;
+import com.sckw.fleet.model.KwfTransportLicense;
+import com.sckw.fleet.model.KwfTruck;
+import com.sckw.fleet.model.KwfTruckLicense;
+import com.sckw.fleet.model.dto.GpsByTruckNoDto;
+import com.sckw.fleet.model.dto.KwfTransportLicenseDto;
+import com.sckw.fleet.model.dto.KwfTruckDto;
+import com.sckw.fleet.model.dto.KwfTruckLicenseDto;
 import com.sckw.fleet.model.vo.KwfDriverVo;
 import com.sckw.fleet.model.vo.KwfTruckVo;
 import com.sckw.fleet.service.KwfTruckService;
@@ -49,7 +54,7 @@ public class KwfTruckController {
 
     @Autowired
     KwfTruckService truckService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
     /**

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java

@@ -48,7 +48,7 @@ public class KwoTransportDemandService {
 
     private final KwoTransportDemandMapper kwoTransportDemandMapper;
 
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
 

+ 2 - 2
sckw-modules/sckw-order/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw_zk
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,7 +14,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw_zk
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
         #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组

+ 2 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -63,9 +63,9 @@ public class KwpLedgerLogisticsService extends AbsLedger {
     private KwpLedgerLogisticsOrderService logisticsOrderService;
     @Resource
     private KwpLedgerLogisticsMapper logisticsMapper;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private TransportDubboService transportDubboService;
 
     private void changeDict(List<ILedger> list) {

+ 2 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -58,9 +58,9 @@ public class KwpLedgerTradeService extends AbsLedger {
     private KwpSettlementTradeService settlementTradeService;
     @Resource
     private KwpLedgerTradeUnitService tradeUnitService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private TradeOrderInfoService tradeOrderInfoService;
 
     /**

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementLogisticsService.java

@@ -35,7 +35,7 @@ import java.util.*;
 @Service
 @Slf4j
 public class KwpSettlementLogisticsService {
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
     private final KwpSettlementLogisticsMapper settlementLogisticsMapper;
 

+ 2 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementOfflineService.java

@@ -55,9 +55,9 @@ public class KwpSettlementOfflineService {
     private final KwpSettlementTradeService settlementTradeService;
     private final KwpLedgerTradeOrderService tradeOrderService;
     private final KwpSettlementTradeTrackService settlementTradeTrackService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private TradeOrderInfoService tradeOrderInfoService;
     private final RedisLockUtil redisLockUtil;
     private final KwpSettlementLogisticsService kwpSettlementLogisticsService;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementTradeService.java

@@ -37,7 +37,7 @@ import java.util.Objects;
 public class KwpSettlementTradeService {
     @Resource
     private KwpSettlementTradeMapper settlementTradeMapper;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
     /**

+ 2 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementWalletService.java

@@ -65,9 +65,9 @@ public class KwpSettlementWalletService {
     private final KwpWalletRelationService walletRelationService;
     private final RedisLockUtil redisLockUtil;
     private final KwpSettlementTradeTrackService settlementTradeTrackService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private TradeOrderInfoService tradeOrderInfoService;
     private final KwpSettlementLogisticsTrackMapper kwpSettlementLogisticsTrackMapper;
 

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/dubbo/PayCenterServiceImpl.java

@@ -17,7 +17,7 @@ import org.springframework.stereotype.Service;
 import java.util.List;
 
 @Service
-@DubboService(group = "design", version = "2.0.0")
+@DubboService(group = "design", version = "1.0.0")
 @Slf4j
 public class PayCenterServiceImpl implements PayCenterDubboService {
     @Resource

+ 2 - 11
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/CommonValidator.java

@@ -1,21 +1,12 @@
 package com.sckw.payment.utils;
 
 import com.sckw.core.exception.BusinessException;
-import com.sckw.payment.model.constant.SettlementEnum;
-import com.sckw.payment.model.dto.SettlementLogisticsDto;
 import com.sckw.system.api.RemoteSystemService;
-import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.apache.poi.ss.formula.functions.T;
 
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.regex.Pattern;
 import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author Aick Spt
@@ -25,7 +16,7 @@ public class CommonValidator {
 
     // 时间格式的正则表达式
     private static final String TIME_PATTERN = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
-    @DubboReference(version = "2.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
     /**

+ 6 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java

@@ -78,4 +78,10 @@ public class GoodsInfoServiceImpl implements GoodsInfoService {
         }
         return HttpResult.ok();
     }
+
+    @Override
+    public Boolean associateManager(Long userId) {
+        Long count = kwpGoodsService.getCountByManager(userId);
+        return Objects.nonNull(count) && count > 0L;
+    }
 }

+ 15 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -921,4 +921,19 @@ public class KwpGoodsService {
             RedissonUtils.unlock(lockKey);
         }
     }
+
+    /**
+     * @desc: 根据客服经理id获取未删除非草稿的商品数量
+     * @author: yzc
+     * @date: 2023-08-15 10:47
+     * @Param managerId:
+     * @return: java.lang.Long
+     */
+
+    public Long getCountByManager(Long managerId) {
+        LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpGoods::getManager, managerId).eq(KwpGoods::getDelFlag, Global.NO).
+                ne(KwpGoods::getStatus, GoodsStatusEnum.SAVED.getCode());
+        return kwpGoodsMapper.selectCount(wrapper);
+    }
 }

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java

@@ -74,7 +74,7 @@ public class KwTransportController {
         try {
             return acceptCarriageService.statisticsAcceptCarriage(query,"2");
         } catch (Exception e) {
-            log.error("运订单top统计失败:{}", e.getMessage(), e);
+            log.error("运订单top统计失败:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }

+ 46 - 31
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java

@@ -26,10 +26,7 @@ import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -96,12 +93,12 @@ public class KwAcceptCarriageService {
             criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
         }
         if (StringUtils.isNotBlank(query.getStatus())) {
-            if (String.valueOf(NumberConstant.EIGHT).equals(query.getStatus())){
-                List<String> status=new ArrayList<>();
+            if (String.valueOf(NumberConstant.EIGHT).equals(query.getStatus())) {
+                List<String> status = new ArrayList<>();
                 status.add(LogisticsOrderEnum.REJECT_ORDER.getStatus());
                 status.add(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
                 criteria.and("status").in(status);
-            }else {
+            } else {
                 criteria.and("status").is(query.getStatus());
             }
         }
@@ -116,16 +113,16 @@ public class KwAcceptCarriageService {
 //            criteria.and("createTime").lte(query.getStartDateTime());
 //        }
         if (StringUtils.isNotEmpty(query.getStartDateTime())) {
-            criteria.andOperator(Criteria.where("startTime").gte(query.getStartDateTime()), Criteria.where("startTime")
-                    .lte(query.getStartDateTime()));
+//            criteria.andOperator(Criteria.where("startTime").gte(query.getStartDateTime()).lte(query.getStartDateTime()));
+            criteria.and("startTime").gte(query.getStartDateTime()).lte(query.getStartDateTime());
         }
         if (StringUtils.isNotEmpty(query.getEndDateTime())) {
-            criteria.andOperator(Criteria.where("endTime").gte(query.getEndDateTime()), Criteria.where("endTime")
-                    .lte(query.getEndDateTime()));
+//            criteria.andOperator(Criteria.where("endTime").gte(query.getEndDateTime()).lte(query.getEndDateTime()));
+            criteria.and("endTime").gte(query.getEndDateTime()).lte(query.getEndDateTime());
         }
         if (StringUtils.isNotEmpty(query.getCreateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(query.getCreateTime()), Criteria.where("createTime")
-                    .lte(query.getCreateTime()));
+//            criteria.andOperator(Criteria.where("createTime").gte(query.getCreateTime()).lte(query.getCreateTime()));
+            criteria.and("createTime").gte(query.getCreateTime()).lte(query.getCreateTime());
         }
         //多条件模糊查询
         Criteria c1 = new Criteria();
@@ -154,7 +151,7 @@ public class KwAcceptCarriageService {
         // 10. 分页
         query1.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
                 // 11. 排序list = {ArrayList@27436}  size = 3returnList = {ArrayList@27393}  size = 3
-                Sort.by(Sort.Direction.DESC,"lOrderId","createTime")));
+                Sort.by(Sort.Direction.DESC, "lOrderId", "createTime")));
         // 执行查询
         List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
         List<AcceptCarriageOrderVo> returnList = new ArrayList<>();
@@ -210,25 +207,17 @@ public class KwAcceptCarriageService {
         }
         criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
         // 4. 日期范围
-//        if (StringUtils.isNotEmpty(param.getStartDateTime()) && StringUtils.isNotEmpty(param.getEndDateTime())) {
-//            criteria.andOperator(Criteria.where("createTime").gte(param.getStartDateTime()), Criteria.where("createTime")
-//                    .lte(param.getEndDateTime()));
-//        } else if (StringUtils.isNotEmpty(param.getStartDateTime())) {
-//            criteria.and("createTime").gte(param.getStartDateTime());
-//        } else if (StringUtils.isNotEmpty(param.getEndDateTime())) {
-//            criteria.and("createTime").lte(param.getStartDateTime());
-//        }
         if (StringUtils.isNotEmpty(param.getStartDateTime())) {
-            criteria.andOperator(Criteria.where("startTime").gte(param.getStartDateTime()), Criteria.where("startTime")
-                    .lte(param.getStartDateTime()));
+//            criteria.andOperator(Criteria.where("startTime").gte(query.getStartDateTime()).lte(query.getStartDateTime()));
+            criteria.and("startTime").gte(param.getStartDateTime()).lte(param.getStartDateTime());
         }
         if (StringUtils.isNotEmpty(param.getEndDateTime())) {
-            criteria.andOperator(Criteria.where("endTime").gte(param.getEndDateTime()), Criteria.where("endTime")
-                    .lte(param.getEndDateTime()));
+//            criteria.andOperator(Criteria.where("endTime").gte(query.getEndDateTime()).lte(query.getEndDateTime()));
+            criteria.and("endTime").gte(param.getEndDateTime()).lte(param.getEndDateTime());
         }
         if (StringUtils.isNotEmpty(param.getCreateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(param.getCreateTime()), Criteria.where("createTime")
-                    .lte(param.getCreateTime()));
+//            criteria.andOperator(Criteria.where("createTime").gte(query.getCreateTime()).lte(query.getCreateTime()));
+            criteria.and("createTime").gte(param.getCreateTime()).lte(param.getCreateTime());
         }
         List<String> stringList = StringUtils.splitStrToList(param.getIds(), StringConstant.COMMA, String.class);
         if (CollectionUtils.isNotEmpty(stringList)) {
@@ -259,7 +248,7 @@ public class KwAcceptCarriageService {
         List<TableTops> arrayList = new ArrayList<>();
         arrayList.addAll(mappedResults);
         /**补全数据状态不齐的情况*/
-        packageReturnStatistics(mappedResults, arrayList);
+        arrayList = packageReturnStatistics(mappedResults, arrayList);
         // 查询结果
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("tableTop", arrayList);
@@ -337,7 +326,7 @@ public class KwAcceptCarriageService {
      * @param mappedResults
      * @param arrayList
      */
-    private void packageReturnStatistics(List<com.sckw.mongo.model.TableTops> mappedResults, List<TableTops> arrayList) {
+    private List<TableTops> packageReturnStatistics(List<com.sckw.mongo.model.TableTops> mappedResults, List<TableTops> arrayList) {
         List<String> codeList = LogisticsOrderEnum.getCodeStringList();
         List<String> collect = mappedResults.stream().map(e -> e.getValue()).collect(Collectors.toList());
         List<String> diffrentList = transportService.getDiffrentList(collect, codeList);
@@ -362,15 +351,41 @@ public class KwAcceptCarriageService {
                 arrayList.add(top);
             }
         }
+        arrayList = arrayList.stream().sorted(Comparator.comparing(TableTops::getValue)).collect(Collectors.toList());
         if (CollectionUtils.isNotEmpty(arrayList)) {
+            int total = 0;
+            for (TableTops tops : arrayList) {
+                if (LogisticsOrderEnum.REJECT_ORDER.getStatus().equals(tops.getValue())) {
+                    total = total + tops.getTotal();
+                }
+                if (LogisticsOrderEnum.CANCEL_ORDER.getStatus().equals(tops.getValue())) {
+                    total = total + tops.getTotal();
+                }
+            }
+            for (TableTops tops : arrayList) {
+                if (LogisticsOrderEnum.SEND_BACK.getStatus().equals(tops.getValue())) {
+                    tops.setTotal(tops.getTotal() + total);
+                }
+            }
+            Iterator iterator = arrayList.iterator();
+            while (iterator.hasNext()) {
+                TableTops tableTops = (TableTops) iterator.next();
+                if (tableTops.getValue().equals(LogisticsOrderEnum.REJECT_ORDER.getStatus())) {
+                    iterator.remove();
+                }
+                if (tableTops.getValue().equals(LogisticsOrderEnum.CANCEL_ORDER.getStatus())) {
+                    iterator.remove();
+                }
+            }
             /**补全统计【全部字段】*/
             Integer sum = Math.toIntExact(arrayList.stream().filter(item -> ObjectUtil.isNotEmpty(item.getTotal())).collect(Collectors.summarizingInt(item -> item.getTotal())).getSum());
             TableTops top = new TableTops();
             top.setName("全部");
             top.setValue("all");
             top.setTotal(sum);
-            arrayList.add(top);
+            arrayList.add(0, top);
         }
+        return arrayList;
     }
 
     /**

+ 44 - 36
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwConsignService.java

@@ -27,10 +27,7 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -101,25 +98,17 @@ public class KwConsignService {
         }
         criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
         // 4. 日期范围
-//        if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
-//            criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
-//                    .lte(query.getEndDateTime()));
-//        } else if (StringUtils.isNotEmpty(query.getStartDateTime())) {
-//            criteria.and("createTime").gte(query.getStartDateTime());
-//        } else if (StringUtils.isNotEmpty(query.getEndDateTime())) {
-//            criteria.and("createTime").lte(query.getStartDateTime());
-//        }
         if (StringUtils.isNotEmpty(query.getStartDateTime())) {
-            criteria.andOperator(Criteria.where("startTime").gte(query.getStartDateTime()), Criteria.where("startTime")
-                    .lte(query.getStartDateTime()));
+//            criteria.andOperator(Criteria.where("startTime").gte(query.getStartDateTime()).lte(query.getStartDateTime()));
+            criteria.and("startTime").gte(query.getStartDateTime()).lte(query.getStartDateTime());
         }
         if (StringUtils.isNotEmpty(query.getEndDateTime())) {
-            criteria.andOperator(Criteria.where("endTime").gte(query.getEndDateTime()), Criteria.where("endTime")
-                    .lte(query.getEndDateTime()));
+//            criteria.andOperator(Criteria.where("endTime").gte(query.getEndDateTime()).lte(query.getEndDateTime()));
+            criteria.and("endTime").gte(query.getEndDateTime()).lte(query.getEndDateTime());
         }
         if (StringUtils.isNotEmpty(query.getCreateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(query.getCreateTime()), Criteria.where("createTime")
-                    .lte(query.getCreateTime()));
+//            criteria.andOperator(Criteria.where("createTime").gte(query.getCreateTime()).lte(query.getCreateTime()));
+            criteria.and("createTime").gte(query.getCreateTime()).lte(query.getCreateTime());
         }
         //多条件模糊查询
         Criteria c1 = new Criteria();
@@ -148,7 +137,7 @@ public class KwConsignService {
         // 10. 分页
         query1.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
                 // 11. 排序list = {ArrayList@27436}  size = 3returnList = {ArrayList@27393}  size = 3
-                Sort.by(Sort.Direction.DESC,"lOrderId","createTime")));
+                Sort.by(Sort.Direction.DESC, "lOrderId", "createTime")));
         // 执行查询
         List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
         List<ConsignOrderVo> returnList = new ArrayList<>();
@@ -381,25 +370,17 @@ public class KwConsignService {
         }
         criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
         // 4. 日期范围
-//        if (StringUtils.isNotEmpty(param.getStartDateTime()) && StringUtils.isNotEmpty(param.getEndDateTime())) {
-//            criteria.andOperator(Criteria.where("createTime").gte(param.getStartDateTime()), Criteria.where("createTime")
-//                    .lte(param.getEndDateTime()));
-//        } else if (StringUtils.isNotEmpty(param.getStartDateTime())) {
-//            criteria.and("createTime").gte(param.getStartDateTime());
-//        } else if (StringUtils.isNotEmpty(param.getEndDateTime())) {
-//            criteria.and("createTime").lte(param.getStartDateTime());
-//        }
         if (StringUtils.isNotEmpty(param.getStartDateTime())) {
-            criteria.andOperator(Criteria.where("startTime").gte(param.getStartDateTime()), Criteria.where("startTime")
-                    .lte(param.getStartDateTime()));
+//            criteria.andOperator(Criteria.where("startTime").gte(query.getStartDateTime()).lte(query.getStartDateTime()));
+            criteria.and("startTime").gte(param.getStartDateTime()).lte(param.getStartDateTime());
         }
         if (StringUtils.isNotEmpty(param.getEndDateTime())) {
-            criteria.andOperator(Criteria.where("endTime").gte(param.getEndDateTime()), Criteria.where("endTime")
-                    .lte(param.getEndDateTime()));
+//            criteria.andOperator(Criteria.where("endTime").gte(query.getEndDateTime()).lte(query.getEndDateTime()));
+            criteria.and("endTime").gte(param.getEndDateTime()).lte(param.getEndDateTime());
         }
         if (StringUtils.isNotEmpty(param.getCreateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(param.getCreateTime()), Criteria.where("createTime")
-                    .lte(param.getCreateTime()));
+//            criteria.andOperator(Criteria.where("createTime").gte(query.getCreateTime()).lte(query.getCreateTime()));
+            criteria.and("createTime").gte(param.getCreateTime()).lte(param.getCreateTime());
         }
         List<String> stringList = StringUtils.splitStrToList(param.getIds(), StringConstant.COMMA, String.class);
         if (CollectionUtils.isNotEmpty(stringList)) {
@@ -430,7 +411,7 @@ public class KwConsignService {
         List<TableTops> arrayList = new ArrayList<>();
         arrayList.addAll(mappedResults);
         /**补全数据状态不齐的情况*/
-        packageReturnStatistics(mappedResults, arrayList);
+        arrayList = packageReturnStatistics(mappedResults, arrayList);
         // 查询结果
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("tableTop", arrayList);
@@ -444,7 +425,7 @@ public class KwConsignService {
      * @param mappedResults
      * @param arrayList
      */
-    private void packageReturnStatistics(List<TableTops> mappedResults, List<TableTops> arrayList) {
+    private List<TableTops> packageReturnStatistics(List<TableTops> mappedResults, List<TableTops> arrayList) {
         List<String> codeList = LogisticsOrderEnum.getCodeStringList();
         List<String> collect = mappedResults.stream().map(e -> e.getValue()).collect(Collectors.toList());
         List<String> diffrentList = transportService.getDiffrentList(collect, codeList);
@@ -469,15 +450,42 @@ public class KwConsignService {
                 arrayList.add(top);
             }
         }
+        arrayList = arrayList.stream().sorted(Comparator.comparing(TableTops::getValue)).collect(Collectors.toList());
         if (CollectionUtils.isNotEmpty(arrayList)) {
+            /**已退回数据补充*/
+            int total = 0;
+            for (TableTops tops : arrayList) {
+                if (LogisticsOrderEnum.REJECT_ORDER.getStatus().equals(tops.getValue())) {
+                    total = total + tops.getTotal();
+                }
+                if (LogisticsOrderEnum.CANCEL_ORDER.getStatus().equals(tops.getValue())) {
+                    total = total + tops.getTotal();
+                }
+            }
+            for (TableTops tops : arrayList) {
+                if (LogisticsOrderEnum.SEND_BACK.getStatus().equals(tops.getValue())) {
+                    tops.setTotal(tops.getTotal() + total);
+                }
+            }
+            Iterator iterator = arrayList.iterator();
+            while (iterator.hasNext()) {
+                TableTops tableTops = (TableTops) iterator.next();
+                if (tableTops.getValue().equals(LogisticsOrderEnum.REJECT_ORDER.getStatus())) {
+                    iterator.remove();
+                }
+                if (tableTops.getValue().equals(LogisticsOrderEnum.CANCEL_ORDER.getStatus())) {
+                    iterator.remove();
+                }
+            }
             /**补全统计【全部字段】*/
             Integer sum = Math.toIntExact(arrayList.stream().filter(item -> ObjectUtil.isNotEmpty(item.getTotal())).collect(Collectors.summarizingInt(item -> item.getTotal())).getSum());
             TableTops top = new TableTops();
             top.setName("全部");
             top.setValue("all");
             top.setTotal(sum);
-            arrayList.add(top);
+            arrayList.add(0, top);
         }
+        return arrayList;
     }
 
 }

+ 240 - 34
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -1,11 +1,12 @@
 package com.sckw.transport.service;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
 import com.sckw.core.common.enums.NumberConstant;
-import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
@@ -22,6 +23,8 @@ import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
+import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.order.api.model.CompleteLogisticsOrderParam;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
@@ -38,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
@@ -54,6 +58,9 @@ import java.util.stream.Collectors;
 @Service
 public class ConsignOrderService {
 
+    @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
+    TradeOrderInfoService tradeOrderInfoService;
+
     @DubboReference(version = "1.0.0", group = "design", check = false)
     RemoteSystemService remoteSystemService;
     @DubboReference(version = "1.0.0", group = "design", check = false)
@@ -520,7 +527,7 @@ public class ConsignOrderService {
         List<Integer> statusList = new ArrayList<>();
         statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
         statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
-        List<OrderCarDTO> list = kwtWaybillOrderMapper.selectWaybillOrderCarListGroupByTruckNo(stringList, statusList,orderDto.getPage() - 1, orderDto.getPageSize());
+        List<OrderCarDTO> list = kwtWaybillOrderMapper.selectWaybillOrderCarListGroupByTruckNo(stringList, statusList, orderDto.getPage() - 1, orderDto.getPageSize());
         if (CollectionUtils.isNotEmpty(list)) {
             List<String> stringLists = list.stream().map(OrderCarDTO::getTruckNo).collect(Collectors.toList());
             Map<String, RTruckVo> truck = remoteFleetService.findTruck(stringLists);
@@ -548,9 +555,10 @@ public class ConsignOrderService {
     /**
      * 托运订单-完结订单
      *
-     * @param orderFinishDTO 页面传递数据dto
+     * @param orderFinishDTO
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public HttpResult commitConsignOrderFinish(OrderFinishDTO orderFinishDTO) {
         /** 订单完结 物流运单状态为【待派车】、【运输中】可操作*/
         /**完结拦截 必须车辆运单无正在运输中的单据才能完结 状态有 待接单之后已核弹之前的状态 都不能完结*/
@@ -561,7 +569,7 @@ public class ConsignOrderService {
         KwtLogisticsOrder logisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(KwtLogisticsOrder::getId, id));
         if (logisticsOrder == null) {
-            throw new RuntimeException("托运订单-完结订单-物流单据不存在!");
+            throw new BusinessException("采购订单-完结订单-物流单据不存在!");
         }
         if (logisticsOrder.getLoadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
             throw new BusinessException("完结订单,实装量不能大于分配量");
@@ -569,49 +577,247 @@ public class ConsignOrderService {
         /**订单状态验证*/
         if (!LogisticsOrderEnum.WAIT_DELIVERY.getStatus().equals(String.valueOf(logisticsOrder.getStatus()))
                 && !LogisticsOrderEnum.IN_TRANSIT.getStatus().equals(String.valueOf(logisticsOrder.getStatus()))) {
-            throw new RuntimeException("当前运单并不属于【待派车】,【运输中】状态");
+            throw new BusinessException("当前运单并不属于【待派车】,【运输中】状态");
+        }
+        //验证当前物流订单是否还存在进行的车辆运单
+        boolean flag = judgmentWaybillOrderIsFinish(id);
+        if (flag) {
+            throw new BusinessException("您现在有车辆运单正在执行中,该订单目前不可完结,请先将运单执行完毕");
+        }
+        //修改单据本身数据
+        BigDecimal ignoreAmount = logisticsOrder.getAmount().subtract(logisticsOrder.getTotalLoadAmount());
+        logisticsOrder.setTotalLoadAmount(orderFinishDTO.getLoadAmount());
+        logisticsOrder.setTotalUnloadAmount(orderFinishDTO.getUnloadAmount());
+        logisticsOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getCode());
+        logisticsOrder.setUpdateTime(new Date());
+        logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+        logisticsOrder.setIgnoreAmount(ignoreAmount);
+        kwtLogisticsOrderMapper.updateById(logisticsOrder);
+        //获取物流订单下的子单
+        /**完结订单-对应物流订单下子订单都要进行完结*/
+        List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                .eq(KwtLogisticsOrder::getDelFlag, NumberConstant.ZERO)
+                .apply(id != null, "FIND_IN_SET ('" + id + "', pids)").ne(KwtLogisticsOrder::getId, id));
+        /**找到该订单下所有的物流订单**/
+        //需要修改的mongodb数据
+        List<Map<String, Object>> list = new ArrayList<>();
+        if (!org.springframework.util.CollectionUtils.isEmpty(kwtLogisticsOrders)) {
+            //修改单据状态
+//            List<Long> ids = kwtLogisticsOrders.stream().map(KwtLogisticsOrder::getId).collect(Collectors.toList());
+            //修改单据剩余运输量
+            kwtLogisticsOrders.forEach(kwtLogisticsOrder -> {
+                BigDecimal subtract = kwtLogisticsOrder.getAmount().subtract(kwtLogisticsOrder.getTotalLoadAmount());
+                updateLogisticOrderAndTrack(kwtLogisticsOrder.getId(), orderFinishDTO, subtract);
+                //新增mongodb要修改的数据
+                Map<String, Object> map = new HashMap<>();
+                map.put("id", kwtLogisticsOrder.getId());
+                map.put("ignoreAmount", subtract);
+                list.add(map);
+//                updateMongoDbByLogisticsOrder(kwtLogisticsOrder.getId(), orderFinishDTO, subtract);
+            });
         }
-        /**完结拦截*/
+        /**是否是一级订单,是->推送至贸易,否,数据推送至物流订单上级*/
+        if (logisticsOrder.getPid() == null) {
+            //数据推送至贸易订单
+            CompleteLogisticsOrderParam tradeOrder = new CompleteLogisticsOrderParam();
+            //获取实际装货量-实际卸货量
+            Map<String, BigDecimal> map = kwtLogisticsOrderMapper.countAmountByTradeOrderId(logisticsOrder.getTOrderId());
+            //获取是否订单已经全部处理完成
+            List<Integer> statusList = new ArrayList<>();
+            statusList.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
+            statusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
+            statusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
+            statusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
+            List<KwtLogisticsOrder> logisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                    .eq(KwtLogisticsOrder::getTOrderId, logisticsOrder.getTOrderId())
+                    .in(KwtLogisticsOrder::getStatus, statusList));
+            if (org.springframework.util.CollectionUtils.isEmpty(logisticsOrders)) {
+                tradeOrder.setIsAllComplete(true);
+            }
+            tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
+            tradeOrder.setActualLoadAmount(map.get("totalLoadAmount"));
+            tradeOrder.setActualUnloadAmount(map.get("totalUnloadAmount"));
+            tradeOrder.setUpdateBy(LoginUserHolder.getUserId());
+            tradeOrder.setUpdateByName(LoginUserHolder.getUserName());
+            HttpResult httpResult = tradeOrderInfoService.completeLogisticsOrder(tradeOrder);
+            if (httpResult.getCode() != HttpStatus.SUCCESS_CODE) {
+                log.info("贸易订单手动完结订单异常,传递信息:{},返回信息:{}", JSONObject.toJSONString(tradeOrder), JSONObject.toJSONString(httpResult));
+                throw new BusinessException("单据完结出现错误!");
+            }
+        }
+        //修改mongodb的数据
+        updateMongoDbByLogisticsOrder(logisticsOrder.getId(), orderFinishDTO, ignoreAmount);
+        if (!CollectionUtils.isEmpty(list) && list.size() > 0) {
+            for (Map<String, Object> map : list) {
+                updateMongoDbByLogisticsOrder(Long.parseLong(map.get("id").toString()), orderFinishDTO, new BigDecimal(map.get("ignoreAmount").toString()));
+            }
+        }
+        return HttpResult.ok("托运订单-完结订单成功");
+    }
+
+    /**
+     * 物流订单完结订单-修改物流表+新增物流状态记录
+     *
+     * @param lOrderId
+     * @param orderFinishDTO
+     * @param ignoreAmount
+     */
+    private void updateLogisticOrderAndTrack(Long lOrderId, OrderFinishDTO orderFinishDTO, BigDecimal ignoreAmount) {
+        Integer code = LogisticsOrderEnum.HAVE_FINISHED.getCode();
+        kwtLogisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                .set(KwtLogisticsOrder::getStatus, code)
+                .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
+                .set(KwtLogisticsOrder::getIgnoreAmount, ignoreAmount)
+                .set(KwtLogisticsOrder::getUpdateTime, new Date())
+                .eq(KwtLogisticsOrder::getId, lOrderId)
+        );
+        KwtLogisticsOrderTrack track = kwtLogisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
+                .eq(KwtLogisticsOrderTrack::getLOrderId, lOrderId).eq(KwtLogisticsOrderTrack::getStatus, code)
+        );
+        if (track != null) {
+            kwtLogisticsOrderTrackMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrderTrack>()
+                    .set(KwtLogisticsOrderTrack::getUpdateBy, LoginUserHolder.getUserId())
+                    .set(KwtLogisticsOrderTrack::getUpdateTime, new Date())
+                    .set(KwtLogisticsOrderTrack::getRemark, orderFinishDTO.getRemark())
+                    .eq(KwtLogisticsOrderTrack::getId, track.getId())
+            );
+        } else {
+            KwtLogisticsOrderTrack orderTrack = new KwtLogisticsOrderTrack();
+            orderTrack.setId(new IdWorker(NumberConstant.ONE).nextId());
+            orderTrack.setLOrderId(lOrderId);
+            orderTrack.setRemark(orderFinishDTO.getRemark());
+            orderTrack.setStatus(code);
+            orderTrack.setCreateBy(LoginUserHolder.getUserId());
+            orderTrack.setCreateTime(new Date());
+            orderTrack.setUpdateBy(LoginUserHolder.getUserId());
+            orderTrack.setUpdateTime(new Date());
+            orderTrack.setDelFlag(NumberConstant.ZERO);
+            kwtLogisticsOrderTrackMapper.insert(orderTrack);
+        }
+    }
+
+    /**
+     * 验证当前物流订单是否存在未完结的车辆运单
+     *
+     * @param id 对应物流订单id
+     */
+    private boolean judgmentWaybillOrderIsFinish(String id) {
+        boolean flag = false;
         List<Integer> statusList = new ArrayList<>();
+        statusList.add(CarWaybillEnum.PENDING_ORDER.getCode());
         statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
         statusList.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
         statusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
+        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
         int count = kwtWaybillOrderMapper.selectDataByLorderId(id, statusList);
         if (count > NumberConstant.ZERO) {
-            throw new RuntimeException("检测您现在有运单正在执行中,该订单目前不可完结,请先将运单执行完毕");
+            flag = true;
         }
-        /**完结订单-对应物流订单下子订单都要进行完结*/
-        List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
-                .in(KwtLogisticsOrder::getPids, Long.parseLong(orderFinishDTO.getId())));
-        if (CollectionUtils.isNotEmpty(kwtLogisticsOrders)) {
-            for (KwtLogisticsOrder kwtLogisticsOrder : kwtLogisticsOrders) {
-                String[] split = kwtLogisticsOrder.getPids().split(StringConstant.COMMA);
-                if (split.length > NumberConstant.ONE) {
-                    for (String s : split) {
-                        if (String.valueOf(kwtLogisticsOrder.getId()).equals(s)) {
-                            //本身订单
-                            //只存在当前订单无分包订单
-                            /**单据完结修改状态以及数据*/
-                            updateDataByItself(logisticsOrder, orderFinishDTO);
-                        } else {
-                            //修改分包后的订单-代表存在分包订单
-                            /**单据完结修改状态以及数据*/
-                            updateDataBySubset(orderFinishDTO, s);
-                        }
-                    }
-                } else {
-                    //只存在当前订单无分包订单
-                    /**单据完结修改状态以及数据*/
-                    updateDataByItself(logisticsOrder, orderFinishDTO);
-                }
-            }
-        }
-        return HttpResult.ok("承运订单-分包托运完结订单成功");
+        return flag;
+    }
+
+    /**
+     * 根据物流订单修改mongodb数据
+     *
+     * @param id             物流订单id
+     * @param orderFinishDTO
+     * @param ignoreAmount   剩余量
+     */
+    private void updateMongoDbByLogisticsOrder(Long id, OrderFinishDTO orderFinishDTO, BigDecimal ignoreAmount) {
+        //更新mongodb
+        SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+        lOrder.set_id(id);
+        lOrder.setLOrderId(id);
+        lOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getStatus());
+        lOrder.setUpdateTime(new Date());
+        lOrder.setUpdateBy(LoginUserHolder.getUserId());
+        lOrder.setUpdateByName(LoginUserHolder.getUserName());
+        lOrder.setTotalLoadAmount(orderFinishDTO.getLoadAmount());
+        lOrder.setTotalUnloadAmount(orderFinishDTO.getUnloadAmount());
+        lOrder.setIgnoreAmount(ignoreAmount);
+        //rabbitMq业务汇总数据发送/消费对象
+        SckwBusSum busSum = new SckwBusSum();
+        //业务汇总类型
+        busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+        //操作对象(1新增/2修改/3替换数据)
+        busSum.setMethod(2);
+        //业务汇总数据对象
+        busSum.setObject(lOrder);
+        busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+        busSum.setMethod(NumberConstant.TWO);
+        streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
     }
 
+//    /**
+//     * 托运订单-完结订单
+//     *
+//     * @param orderFinishDTO 页面传递数据dto
+//     * @return
+//     */
+//    public HttpResult commitConsignOrderFinish(OrderFinishDTO orderFinishDTO) {
+//        /** 订单完结 物流运单状态为【待派车】、【运输中】可操作*/
+//        /**完结拦截 必须车辆运单无正在运输中的单据才能完结 状态有 待接单之后已核弹之前的状态 都不能完结*/
+//        /**完结订单-对应物流订单下子订单都要进行完结*/
+//        /**完结订单 不做页面填写数量与数据库数量进行计算验证-直接获取页面填写数据进行保存处理*/
+//        //物流订单id
+//        String id = orderFinishDTO.getId();
+//        KwtLogisticsOrder logisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
+//                .eq(KwtLogisticsOrder::getId, id));
+//        if (logisticsOrder == null) {
+//            throw new RuntimeException("托运订单-完结订单-物流单据不存在!");
+//        }
+//        if (logisticsOrder.getLoadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
+//            throw new BusinessException("完结订单,实装量不能大于分配量");
+//        }
+//        /**订单状态验证*/
+//        if (!LogisticsOrderEnum.WAIT_DELIVERY.getStatus().equals(String.valueOf(logisticsOrder.getStatus()))
+//                && !LogisticsOrderEnum.IN_TRANSIT.getStatus().equals(String.valueOf(logisticsOrder.getStatus()))) {
+//            throw new RuntimeException("当前运单并不属于【待派车】,【运输中】状态");
+//        }
+//        /**完结拦截*/
+//        List<Integer> statusList = new ArrayList<>();
+//        statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
+//        statusList.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
+//        statusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
+//        statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
+//        statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
+//        statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
+//        int count = kwtWaybillOrderMapper.selectDataByLorderId(id, statusList);
+//        if (count > NumberConstant.ZERO) {
+//            throw new RuntimeException("检测您现在有运单正在执行中,该订单目前不可完结,请先将运单执行完毕");
+//        }
+//        /**完结订单-对应物流订单下子订单都要进行完结*/
+//        List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
+//                .in(KwtLogisticsOrder::getPids, Long.parseLong(orderFinishDTO.getId())));
+//        if (CollectionUtils.isNotEmpty(kwtLogisticsOrders)) {
+//            for (KwtLogisticsOrder kwtLogisticsOrder : kwtLogisticsOrders) {
+//                String[] split = kwtLogisticsOrder.getPids().split(StringConstant.COMMA);
+//                if (split.length > NumberConstant.ONE) {
+//                    for (String s : split) {
+//                        if (String.valueOf(kwtLogisticsOrder.getId()).equals(s)) {
+//                            //本身订单
+//                            //只存在当前订单无分包订单
+//                            /**单据完结修改状态以及数据*/
+//                            updateDataByItself(logisticsOrder, orderFinishDTO);
+//                        } else {
+//                            //修改分包后的订单-代表存在分包订单
+//                            /**单据完结修改状态以及数据*/
+//                            updateDataBySubset(orderFinishDTO, s);
+//                        }
+//                    }
+//                } else {
+//                    //只存在当前订单无分包订单
+//                    /**单据完结修改状态以及数据*/
+//                    updateDataByItself(logisticsOrder, orderFinishDTO);
+//                }
+//            }
+//        }
+//        return HttpResult.ok("承运订单-分包托运完结订单成功");
+//    }
+
 
     /**
      * 托运订单-完结订单-修改本身数据

+ 15 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -830,15 +830,17 @@ public class LogisticsConsignmentService {
         for (String id : stringList) {
             List<OrderCarDTO> list = waybillOrderMapper.selectWaybillOrderCarListNotPage(id);
             List<String> collect = list.stream().map(OrderCarDTO::getTruckNo).collect(Collectors.toList());
-            Map<String, RTruckVo> truck = remoteFleetService.findTruck(collect);
-            for (OrderCarDTO orderCarDTO : list) {
+            if (CollectionUtils.isNotEmpty(collect)) {
+                Map<String, RTruckVo> truck = remoteFleetService.findTruck(collect);
+                for (OrderCarDTO orderCarDTO : list) {
 //            orderCarDTO.setDriverId(String.valueOf(orderCarDTO.getDriverId()));
 //            orderCarDTO.setDriverName(orderCarDTO.getDriverName());
 //            orderCarDTO.setDriverPhone(orderCarDTO.getDriverPhone());
 //            orderCarDTO.setDriverCard(orderCarDTO.getDriverCard());
-                orderCarDTO.setLoadAmount(truck.get(orderCarDTO.getTruckNo()) == null ?
-                        null : (truck.get(orderCarDTO.getTruckNo()).getActualWeight() == null ?
-                        null : (String.valueOf(truck.get(orderCarDTO.getTruckNo()).getActualWeight()))));
+                    orderCarDTO.setLoadAmount(truck.get(orderCarDTO.getTruckNo()) == null ?
+                            null : (truck.get(orderCarDTO.getTruckNo()).getActualWeight() == null ?
+                            null : (String.valueOf(truck.get(orderCarDTO.getTruckNo()).getActualWeight()))));
+                }
             }
             if (CollectionUtils.isNotEmpty(list)) {
                 returnList.addAll(list);
@@ -1062,6 +1064,7 @@ public class LogisticsConsignmentService {
         //修改单据本身数据
         logisticsOrder.setTotalLoadAmount(orderFinishDTO.getLoadAmount());
         logisticsOrder.setTotalUnloadAmount(orderFinishDTO.getUnloadAmount());
+        logisticsOrder.setIgnoreAmount(logisticsOrder.getAmount());
         logisticsOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getCode());
         logisticsOrder.setUpdateTime(new Date());
         logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
@@ -1407,6 +1410,13 @@ public class LogisticsConsignmentService {
     }
 
 
+    /**
+     * 修改物流订单状态,以及状态表新增记录
+     *
+     * @param lOrderId       物流订单id
+     * @param orderFinishDTO 页面请求参数
+     * @param ignoreAmount   剩余量
+     */
     private void updateLogisticOrderAndTrack(Long lOrderId, OrderFinishDTO orderFinishDTO, BigDecimal ignoreAmount) {
         Integer code = LogisticsOrderEnum.HAVE_FINISHED.getCode();
         kwtLogisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()