Преглед изворни кода

Merge remote-tracking branch 'origin/dev_20251130' into dev_20251130

# Conflicts:
#	sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java
donglang пре 4 недеља
родитељ
комит
5870c5a2d9
26 измењених фајлова са 399 додато и 182 уклоњено
  1. 11 3
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/feign/DriverScoreFeignService.java
  2. 3 3
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/dto/UpdateDriverScoreDto.java
  3. 7 6
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/feign/TradeOrderApi.java
  4. 46 24
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/impl/KwcContractLogisticsScoreServiceImpl.java
  5. 5 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverController.java
  6. 7 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverMapper.java
  7. 2 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreDetailMapper.java
  8. 3 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreMapper.java
  9. 19 14
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverScoreService.java
  10. 33 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java
  11. 1 1
      sckw-modules/sckw-fleet/src/main/resources/bootstrap.yml
  12. 9 1
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverMapper.xml
  13. 13 25
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreDetailMapper.xml
  14. 7 26
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreMapper.xml
  15. 1 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/feign/TradeOrderApiImpl.java
  16. 3 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderListResVO.java
  17. 52 49
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  18. 3 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/repository/KwsEntTypeRepository.java
  19. 3 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java
  20. 3 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LeaveMockHandler.java
  21. 2 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/TakingOrderHandler.java
  22. 10 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderStatusResp.java
  23. 1 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderSubtaskRepository.java
  24. 68 7
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java
  25. 15 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java
  26. 72 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

+ 11 - 3
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/feign/DriverScoreFeignService.java

@@ -6,12 +6,20 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
-@FeignClient(name = "sckw-ng-fleet",path = "/driverScore")
+@FeignClient(name = "sckw-ng-fleet")
 public interface DriverScoreFeignService {
     /**
      * 更新司机评分
      */
-    @PostMapping("/update")
+    @PostMapping("/driverScore/update")
     public HttpResult update(@Validated @RequestBody UpdateDriverScoreDto updateDriverScoreDto);
-}
+
+    /**
+     * 统计司机数量
+     */
+    @PostMapping("/kwfDriver/countDriver")
+    public HttpResult countDriver(@RequestParam("entId") Long entId);
+ }
+

+ 3 - 3
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/dto/UpdateDriverScoreDto.java

@@ -29,9 +29,9 @@ public class UpdateDriverScoreDto {
     /** 变动评分 */
     private BigDecimal scoreChange;
 
-    /** 物流企业评分 */
-    @NotNull(message = "物流企业评分不能为空")
-    private BigDecimal logisticsEntScore;
+    /** 物流企业更新后评分 */
+    @NotNull(message = "物流企业更新后评分不能为空")
+    private BigDecimal afterUpdateLogisticsEntScore;
 
     /** 变动原因 */
     @NotBlank(message = "变动原因不能为空")

+ 7 - 6
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/feign/TradeOrderApi.java

@@ -1,20 +1,21 @@
 package com.sckw.order.api.feign;
 
 import com.sckw.order.api.model.TradeOrderPara;
-import com.sckw.order.api.model.TradeOrderVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 
-import java.util.List;
-
 /**
  * @author xucaiqin
  * @date 2025-12-01 15:26:28
  */
 @FeignClient(name = "sckw-order-ai", contextId = "tradeOrderApi")
 public interface TradeOrderApi {
-
-    @GetMapping(value = "/trade/order/get")
-    List<TradeOrderVo> queryTradeOrder(TradeOrderPara tradeOrderPara);
+    /**
+     * 更新装卸货量
+     * @param tradeOrderPara
+     * @return
+     */
+    @GetMapping(value = "/trade/order/update")
+    void updateLoad(TradeOrderPara tradeOrderPara);
 
 }

+ 46 - 24
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/impl/KwcContractLogisticsScoreServiceImpl.java

@@ -1,6 +1,7 @@
 package com.sckw.contract.service.impl;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -38,8 +39,8 @@ import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.MapUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -136,6 +137,9 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
         PageUtils.startPage();
         detailReqDto.setScoreIds(Collections.singletonList(detailReqDto.getScoreId()));
         List<KwcContractLogisticsScoreDetail> logisticsScoreDetails = kwcContractLogisticsScoreDetailMapper.selectKwcContractLogisticsScoreDetailList(detailReqDto);
+        //根据影响人id列表查询影响人
+        List<Long> influenceByIds = logisticsScoreDetails.stream().map(KwcContractLogisticsScoreDetail::getInfluenceBy).toList();
+        Map<Long, UserCacheResDto> userCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(influenceByIds);
         if(CollectionUtils.isNotEmpty(logisticsScoreDetails)){
             pageInfo = ((Page<KwcContractLogisticsScoreDetail>) logisticsScoreDetails).toPageInfo(e -> {
                 LogisticsScoreDetailResVo logisticsScoreDetailResVo = new LogisticsScoreDetailResVo();
@@ -149,6 +153,10 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
                     logisticsScoreDetailResVo.setScore("");
                 }
                 logisticsScoreDetailResVo.setLogisticsEntName(entCacheResDto.getFirmName());
+                UserCacheResDto userCacheResDto = userCacheResDtoMap.get(e.getInfluenceBy());
+                if(userCacheResDto != null){
+                    logisticsScoreDetailResVo.setInfluenceByName(userCacheResDto.getName());
+                }
                 return logisticsScoreDetailResVo;
             });
         }
@@ -172,10 +180,12 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
             return null;
         }
         EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(logisticsScore.getLogisticsEntId());
+        UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(logisticsScoreDetail.getInfluenceBy());
         logisticsScoreDetail.setLogisticsEntName(entCacheResDto.getFirmName());
         LogisticsScoreDetailResVo logisticsScoreDetailResVo = new LogisticsScoreDetailResVo();
         BeanUtils.copyProperties(logisticsScoreDetail,logisticsScoreDetailResVo);
         logisticsScoreDetailResVo.setScore(logisticsScore.getScore().toString());
+        logisticsScoreDetailResVo.setInfluenceByName(userCacheResDto.getName());
         return logisticsScoreDetailResVo;
     }
 
@@ -388,24 +398,33 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
         KwcContractLogisticsScore logisticsScore = kwcContractLogisticsScoreMapper.selectLogisticsScoreByEntId(detailDto.getProviderEntId(),detailDto.getLogisticsEntId());
         //1、更新企业评分
         BigDecimal score = logisticsScore.getScore();
-        BigDecimal resultScore = score.add(detailDto.getScoreChange());
-        logisticsScore.setScore(resultScore);
-        logisticsScore.setUpdateBy(LoginUserHolder.getUserId());
-        logisticsScore.setUpdateTime(new Date());
-        kwcContractLogisticsScoreMapper.updateKwcContractLogisticsScore(logisticsScore);
-        //2.插入评分明细记录
-        LogisticsScoreDetailAddDto detailAddDto = new LogisticsScoreDetailAddDto();
-        detailAddDto.setScoreId(logisticsScore.getId());
-        detailAddDto.setInfluenceBy(detailDto.getInfluenceBy());
-        detailAddDto.setAction(detailDto.getAction());
-        detailAddDto.setScoreChange(detailDto.getScoreChange());
-        detailAddDto.setScore(resultScore);
-        //2.设置评分状态为通过
-        detailAddDto.setStatus(NumberConstant.ONE);
-        //3.构建评分明细记录
-        KwcContractLogisticsScoreDetail logisticsScoreDetail = buildLogisticsScoreDetail(detailAddDto);
-        //4.插入数据
-        return SqlHelper.retBool(kwcContractLogisticsScoreDetailMapper.insertKwcContractLogisticsScoreDetail(logisticsScoreDetail));
+        //查询物流企业下所有的司机
+        HttpResult result = driverScoreFeignService.countDriver(detailDto.getLogisticsEntId());
+        if(result.getCode() == HttpStatus.SUCCESS_CODE  && (Integer)result.getData()>0){
+           Integer driverCount =(Integer)result.getData();
+                //企业变动评分
+            BigDecimal entScoreChange = detailDto.getScoreChange().divide(new BigDecimal(driverCount),2, RoundingMode.HALF_UP);
+            BigDecimal resultScore = score.add(entScoreChange);
+            logisticsScore.setScore(resultScore);
+            logisticsScore.setUpdateBy(LoginUserHolder.getUserId());
+            logisticsScore.setUpdateTime(new Date());
+            kwcContractLogisticsScoreMapper.updateKwcContractLogisticsScore(logisticsScore);
+            //2.插入评分明细记录
+            LogisticsScoreDetailAddDto detailAddDto = new LogisticsScoreDetailAddDto();
+            detailAddDto.setScoreId(logisticsScore.getId());
+            detailAddDto.setInfluenceBy(detailDto.getInfluenceBy());
+            detailAddDto.setAction(detailDto.getAction());
+            detailAddDto.setScoreChange(entScoreChange);
+            detailAddDto.setScore(resultScore);
+            //2.设置评分状态为通过
+            detailAddDto.setStatus(NumberConstant.ONE);
+            //3.构建评分明细记录
+            KwcContractLogisticsScoreDetail logisticsScoreDetail = buildLogisticsScoreDetail(detailAddDto);
+            //4.插入数据
+            return SqlHelper.retBool(kwcContractLogisticsScoreDetailMapper.insertKwcContractLogisticsScoreDetail(logisticsScoreDetail));
+        }else{
+            throw new BusinessException("查询物流企业司机数量失败");
+        }
     }
 
 
@@ -415,6 +434,7 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
     {
         //1.校验供应商企业评分权限
         KwcContractLogisticsScore logisticsScore = checkLogisticsScoreAuth(providerEntId, scoreId);
+        BigDecimal originScore = logisticsScore.getScore();
         String lockKey = String.format(RedisConstant.LOGISTICS_SCORE_RECORD_RESET_KEY,scoreId);
         if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
             throw new BusinessException("业务繁忙,请稍后再试!");
@@ -426,7 +446,7 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
             logisticsScore.setUpdateTime(new Date());
             kwcContractLogisticsScoreMapper.updateKwcContractLogisticsScore(logisticsScore);
             //3.评分明细中插入重置记录
-            KwcContractLogisticsScoreDetail resetLogisticsScoreDetail = buildResetLogisticsScoreDetail(scoreId);
+            KwcContractLogisticsScoreDetail resetLogisticsScoreDetail = buildResetLogisticsScoreDetail(scoreId,originScore);
             kwcContractLogisticsScoreDetailMapper.insertKwcContractLogisticsScoreDetail(resetLogisticsScoreDetail);
             //4.清除待审核评分
             kwcContractLogisticsScoreDetailMapper.deleteKwcContractLogisticsScoreDetailByScoreId(logisticsScore.getId(),NumberConstant.ZERO);
@@ -444,7 +464,7 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
         updateDriverScoreDto.setProviderEntId(logisticsScore.getProviderEntId());
         updateDriverScoreDto.setLogisticsEntId(logisticsScore.getLogisticsEntId());
         updateDriverScoreDto.setScoreChange(logisticsScoreDetail.getScoreChange());
-        updateDriverScoreDto.setLogisticsEntScore(logisticsScore.getScore());
+        updateDriverScoreDto.setAfterUpdateLogisticsEntScore(logisticsScore.getScore());
         updateDriverScoreDto.setAction(logisticsScoreDetail.getAction());
         updateDriverScoreDto.setOperatorType(operatorType);
         HttpResult result = driverScoreFeignService.update(updateDriverScoreDto);
@@ -460,15 +480,17 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
      * @param scoreId 评分id
      * @return 评分记录
      */
-    private KwcContractLogisticsScoreDetail buildResetLogisticsScoreDetail(Long scoreId) {
+    private KwcContractLogisticsScoreDetail buildResetLogisticsScoreDetail(Long scoreId,BigDecimal originScore) {
         KwcContractLogisticsScoreDetail logisticsScoreDetail = new KwcContractLogisticsScoreDetail();
         long scoreDetailId = new IdWorker(1L).nextId();
         logisticsScoreDetail.setId(scoreDetailId);
         logisticsScoreDetail.setScoreId(scoreId);
         logisticsScoreDetail.setInfluenceBy(LoginUserHolder.getUserId());
         logisticsScoreDetail.setAction("重置企业评分");
-        logisticsScoreDetail.setScore(new BigDecimal(customConfig.getLogisticsInitScore()));
-        logisticsScoreDetail.setScoreChange(null);
+        BigDecimal score = new BigDecimal(customConfig.getLogisticsInitScore());
+        BigDecimal scoreChange = score.subtract(originScore);
+        logisticsScoreDetail.setScore(score);
+        logisticsScoreDetail.setScoreChange(scoreChange);
         logisticsScoreDetail.setStatus(NumberConstant.ONE);
         logisticsScoreDetail.setCreateBy(LoginUserHolder.getUserId());
         logisticsScoreDetail.setCreateTime(new Date());

+ 5 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverController.java

@@ -361,5 +361,10 @@ public class KwfDriverController {
         return BaseResult.success();
     }
 
+    @PostMapping("/countDriver")
+    public HttpResult countDriver(@RequestParam("entId") Long entId) {
+        Integer driverCount = driverService.countDriversByEntId(entId);
+        return HttpResult.ok(driverCount);
+    }
 
 }

+ 7 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverMapper.java

@@ -59,6 +59,13 @@ public interface KwfDriverMapper extends BaseMapper<KwfDriver> {
 
     List<KwfDriver> findListByEntId(Long entId);
 
+    /**
+     * 统计   当前企业的司机数量
+     * @param entId
+     * @return
+     */
+    Integer countDriversByEntId(Long entId);
+
     /**
      * 查询
      * @param params

+ 2 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreDetailMapper.java

@@ -3,6 +3,7 @@ package com.sckw.fleet.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.fleet.model.KwfDriverScoreDetail;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -45,7 +46,7 @@ public interface KwfDriverScoreDetailMapper extends BaseMapper<KwfDriverScoreDet
      * @param driverScoreDetails 司机评分明细
      * @return 结果
      */
-    public int insertBatch(List<KwfDriverScoreDetail> driverScoreDetails);
+    public int insertBatch(@Param("driverScoreDetails") List<KwfDriverScoreDetail> driverScoreDetails);
 
     /**
      * 修改司机评分明细

+ 3 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreMapper.java

@@ -3,6 +3,7 @@ package com.sckw.fleet.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.fleet.model.KwfDriverScore;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -45,7 +46,7 @@ public interface KwfDriverScoreMapper extends BaseMapper<KwfDriverScore>
      * @param driverScores 司机评分
      * @return 结果
      */
-    public int insertBatch(List<KwfDriverScore> driverScores);
+    public int insertBatch(@Param("driverScores") List<KwfDriverScore> driverScores);
 
     /**
      * 批量修改司机评分
@@ -53,7 +54,7 @@ public interface KwfDriverScoreMapper extends BaseMapper<KwfDriverScore>
      * @param driverScores 司机评分
      * @return 结果
      */
-    public int updateScoreBatch(List<KwfDriverScore> driverScores);
+    public int updateScoreBatch(@Param("driverScores") List<KwfDriverScore> driverScores);
 
     /**
      * 删除司机评分

+ 19 - 14
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverScoreService.java

@@ -87,12 +87,12 @@ public class KwfDriverScoreService {
         KwfDriverScore driverScoreDto = new KwfDriverScore();
         driverScoreDto.setProviderEntId(updateDriverScoreDto.getProviderEntId());
         driverScoreDto.setLogisticsEntId(updateDriverScoreDto.getLogisticsEntId());
-        List<KwfDriverScore> kwfDriverScores = kwfDriverScoreMapper.selectKwfDriverScoreList(driverScoreDto).stream().filter(v-> driversMap.containsKey(v.getDriverId())).toList();
+        List<KwfDriverScore> kwfDriverScores = new ArrayList<>(kwfDriverScoreMapper.selectKwfDriverScoreList(driverScoreDto).stream().filter(v -> driversMap.containsKey(v.getDriverId())).toList());
         //对未进行评分初始化的司机进行初始化
-        KwfDriverScoreAndDetail kwfDriverScoreAndDetail = initDriverScore(updateDriverScoreDto, driversMap, kwfDriverScores);
-        //将刚初始化的评分记录放入司机评分集合中
-        if(kwfDriverScoreAndDetail != null){
-            kwfDriverScores.addAll(kwfDriverScoreAndDetail.getDriverScores());
+        initDriverScore(updateDriverScoreDto, driversMap, kwfDriverScores);
+        if(CollectionUtils.isEmpty(kwfDriverScores)){
+            //无已存在的司机评分,直接返回
+            return;
         }
         //
         //根据不同的操作类型调用不同的更新方法
@@ -125,6 +125,10 @@ public class KwfDriverScoreService {
         kwfDriverScoreMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScores());
         //批量插入评分明细
         kwfDriverScoreDetailMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScoreDetails());
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException ignored) {
+        }
         return kwfDriverScoreAndDetail;
     }
 
@@ -167,7 +171,7 @@ public class KwfDriverScoreService {
                     break;
                 }
                 //计算当前司机最大可改的分
-                BigDecimal changeMaxScore = updateDriverScoreDto.getLogisticsEntScore().subtract(kwfDriverScore.getScore());
+                BigDecimal changeMaxScore = updateDriverScoreDto.getAfterUpdateLogisticsEntScore().subtract(kwfDriverScore.getScore());
                 //计算司机实际可改的分
                 BigDecimal changeScore = exceedScore.abs().compareTo(changeMaxScore.abs()) < 0 ? exceedScore : changeMaxScore;
                 kwfDriverScore.setScore(kwfDriverScore.getScore().add(changeScore));
@@ -201,6 +205,7 @@ public class KwfDriverScoreService {
         //构建司机评分记录集合
         List<KwfDriverScore> driverScores = new ArrayList<>();
         List<KwfDriverScoreDetail> driverScoreDetails = new ArrayList<>();
+        BigDecimal initScore = new BigDecimal("0.00");
         IdWorker idWorker = new IdWorker(1L);
         for (KwfDriver driver : drivers) {
             long scoreId = idWorker.nextId();
@@ -210,14 +215,14 @@ public class KwfDriverScoreService {
             driverScore.setProviderEntId(updateDriverScoreDto.getProviderEntId());
             driverScore.setLogisticsEntId(updateDriverScoreDto.getLogisticsEntId());
             driverScore.setDriverId(driver.getId());
-            driverScore.setScore(updateDriverScoreDto.getLogisticsEntScore());
+            driverScore.setScore(updateDriverScoreDto.getAfterUpdateLogisticsEntScore());
             driverScore.setCreateBy(LoginUserHolder.getUserId());
             driverScore.setCreateTime(now);
             driverScore.setUpdateBy(LoginUserHolder.getUserId());
             driverScore.setUpdateTime(now);
             driverScores.add(driverScore);
             //构建司机评分明细
-            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driver, new BigDecimal("0.00"));
+            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail("司机评分初始化", driverScore, driver, initScore);
             driverScoreDetails.add(scoreDetail);
         }
 
@@ -226,7 +231,7 @@ public class KwfDriverScoreService {
 
     private KwfDriverScoreAndDetail buildDriverScoreUpdateRecord(UpdateDriverScoreDto updateDriverScoreDto,Map<Long, KwfDriver> driversMap,List<KwfDriverScore> kwfDriverScores,List<KwfDriverScore> kwfDriverScoresNew){
         //原评分记录集合
-        Map<Long, KwfDriverScore> originDriverScoreMap = kwfDriverScores.stream().collect(Collectors.toMap(KwfDriverScore::getId, v -> v));
+        Map<Long, KwfDriverScore> originDriverScoreMap = kwfDriverScores.stream().collect(Collectors.toMap(KwfDriverScore::getDriverId, v -> v));
         //构建司机评分记录集合
         List<KwfDriverScoreDetail> driverScoreDetails = new ArrayList<>();
         Date now = new Date();
@@ -236,7 +241,7 @@ public class KwfDriverScoreService {
             driverScore.setUpdateTime(now);
             //构建司机评分明细信息
             KwfDriverScore originDriverScore = originDriverScoreMap.get(driverScore.getDriverId());
-            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore.getScore());
+            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto.getAction(), driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore.getScore());
             driverScoreDetails.add(scoreDetail);
         }
 
@@ -249,11 +254,11 @@ public class KwfDriverScoreService {
         for (KwfDriverScore driverScore : kwfDriverScores) {
             BigDecimal originDriverScore = driverScore.getScore();
             //更新评分记录更新信息
-            driverScore.setScore(updateDriverScoreDto.getLogisticsEntScore());
+            driverScore.setScore(updateDriverScoreDto.getAfterUpdateLogisticsEntScore());
             driverScore.setUpdateBy(LoginUserHolder.getUserId());
             driverScore.setUpdateTime(new Date());
             //构建司机评分明细信息
-            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore);
+            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto.getAction(), driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore);
             driverScoreDetails.add(scoreDetail);
         }
 
@@ -261,7 +266,7 @@ public class KwfDriverScoreService {
     }
 
 
-    private KwfDriverScoreDetail buildDriverScoreDetail(UpdateDriverScoreDto updateDriverScoreDto,KwfDriverScore driverScore,KwfDriver driver,BigDecimal originDriverScore){
+    private KwfDriverScoreDetail buildDriverScoreDetail(String action,KwfDriverScore driverScore,KwfDriver driver,BigDecimal originDriverScore){
         IdWorker idWorker = new IdWorker(1L);
         Date now = new Date();
         //构建司机评分明细信息
@@ -271,7 +276,7 @@ public class KwfDriverScoreService {
         if(driver != null){
             scoreDetail.setDriverId(driver.getId());
         }
-        scoreDetail.setAction(updateDriverScoreDto.getAction());
+        scoreDetail.setAction(action);
         BigDecimal scoreChange = driverScore.getScore().subtract(originDriverScore);
         scoreDetail.setScoreChange(scoreChange);
         scoreDetail.setScore(driverScore.getScore());

+ 33 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.vo.KwcContractLogisticsDto;
+import com.google.common.collect.Maps;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
@@ -53,6 +54,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.InputStream;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -106,6 +108,9 @@ public class KwfDriverService {
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
     private RemoteContractService remoteContractService;
 
+    @Autowired
+    private KwfDriverMapper driverMapper;
+
     /**
      * @param key 逐渐id
      * @desc 根据主键查询
@@ -1235,13 +1240,30 @@ public class KwfDriverService {
         if (CollectionUtils.isEmpty(associatedTrackList)) {
             return Collections.emptyList();
         }
+        //查询轴数表
+        Set<Integer> truckAxleIds = associatedTrackList.stream()
+                .filter(x -> Objects.nonNull(x.getTruckAxleId()))
+                .map(x -> Long.valueOf(x.getTruckAxleId().toString()).intValue())
+                .collect(Collectors.toSet());
+        Map<Integer, TmsTruckAxleNum> truckAxleNumMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(truckAxleIds)) {
+            List<TmsTruckAxleNum> truckAxleNumList = truckAxleNumRepository.queryByIds(truckAxleIds);
+            if (CollectionUtils.isNotEmpty(truckAxleNumList)) {
+                truckAxleNumMap = truckAxleNumList.stream()
+                        .collect(Collectors.toMap(TmsTruckAxleNum::getId, Function.identity(), (key1, key2) -> key1));
+            }
+        }
+
+
+        Map<Integer, TmsTruckAxleNum> finalTruckAxleNumMap = truckAxleNumMap;
         List<KwfDriverAssociatedTrackVO> associatedTrackVOList = associatedTrackList.stream().map(truck ->{
             KwfDriverAssociatedTrackVO vo = new KwfDriverAssociatedTrackVO();
             TmsTruckAxleNum carAxisInfo = getCarAxisInfo(truck.getTruckAxleId());
             vo.setId(truck.getId());
             vo.setTruckNo(truck.getTruckNo());
             vo.setTruckAxleName(carAxisInfo.getName());
-            vo.setLegalLoad(truck.getLegalLoad());
+            TmsTruckAxleNum tmsTruckAxleNum = finalTruckAxleNumMap.getOrDefault(truck.getTruckAxleId(), new TmsTruckAxleNum());
+            vo.setLegalLoad(tmsTruckAxleNum.getLegalLoad());
             vo.setStatus(truck.getStatus());
             return vo;
         }).collect(Collectors.toList());
@@ -1491,4 +1513,14 @@ public class KwfDriverService {
     }
 
 
+    /**
+     * @param
+     * @desc 查询
+     * @author zk
+     * @date 2023/7/6
+     **/
+    public Integer countDriversByEntId(Long entId) {
+        return driverMapper.countDriversByEntId(entId);
+    }
+
 }

+ 1 - 1
sckw-modules/sckw-fleet/src/main/resources/bootstrap.yml

@@ -6,7 +6,7 @@ spring:
     name: sckw-ng-fleet
   profiles:
     #    active: ${DEPLOY_MODE:dev}
-    active: test
+    active: @profiles.active@
   main:
     allow-bean-definition-overriding: true
     allow-circular-references: true

+ 9 - 1
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverMapper.xml

@@ -279,7 +279,7 @@
         ORDER BY dr.create_time desc
     </select>
 
-    <select id="findListByEntId" resultType="com.sckw.fleet.model.KwfDriver" parameterType="java.util.Map" >
+    <select id="findListByEntId" resultType="com.sckw.fleet.model.KwfDriver" parameterType="java.lang.Long" >
         SELECT
         dr.id, name, phone, idcard, total_complete totalComplete,
         total_take totalTake, total_weight totalWeight, dre.ent_id entId
@@ -289,6 +289,14 @@
         and dre.ent_id = #{entId, jdbcType=VARCHAR}
     </select>
 
+    <select id="countDriversByEntId" resultType="java.lang.Integer" parameterType="java.lang.Long" >
+        SELECT count(1)
+        from kwf_driver dr
+                 inner join kwf_driver_ent dre on dr.id = dre.driver_id
+        where dr.del_flag = 0 and dre.del_flag = 0
+          and dre.ent_id = #{entId}
+    </select>
+
     <select id="findDriver" resultType="com.sckw.fleet.model.KwfDriver" parameterType="java.util.Map" >
         SELECT
             id, ent_id entId, name, phone, salt, password, idcard, total_complete totalComplete,

+ 13 - 25
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreDetailMapper.xml

@@ -64,33 +64,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </insert>
 
     <insert id="insertBatch">
-        insert into kwf_driver_score_detail
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
-            <if test="scoreId != null">score_id,</if>
-            <if test="driverId != null">driver_id,</if>
-            <if test="action != null and action != ''">action,</if>
-            <if test="scoreChange != null">score_change,</if>
-            <if test="score != null">score,</if>
-            <if test="createBy != null">create_by,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="updateBy != null">update_by,</if>
-            <if test="updateTime != null">update_time,</if>
-        </trim>
+        insert into kwf_driver_score_detail  (id,score_id,driver_id,action,score_change,score,create_by,create_time,update_by,update_time)
         values
         <foreach collection="driverScoreDetails" item="scoreDetail" separator=",">
-            <trim prefix="(" suffix=")" suffixOverrides=",">
-                <if test="id != null">#{scoreDetail.id},</if>
-                <if test="scoreId != null">#{scoreDetail.scoreId},</if>
-                <if test="driverId != null">#{scoreDetail.driverId},</if>
-                <if test="action != null and action != ''">#{scoreDetail.action},</if>
-                <if test="scoreChange != null">#{scoreDetail.scoreChange},</if>
-                <if test="score != null">#{scoreDetail.score},</if>
-                <if test="createBy != null">#{scoreDetail.createBy},</if>
-                <if test="createTime != null">#{scoreDetail.createTime},</if>
-                <if test="updateBy != null">#{scoreDetail.updateBy},</if>
-                <if test="updateTime != null">#{scoreDetail.updateTime},</if>
-            </trim>
+            (
+             #{scoreDetail.id},
+             #{scoreDetail.scoreId},
+             #{scoreDetail.driverId},
+             #{scoreDetail.action},
+             #{scoreDetail.scoreChange},
+             #{scoreDetail.score},
+             #{scoreDetail.createBy},
+             #{scoreDetail.createTime},
+             #{scoreDetail.updateBy},
+             #{scoreDetail.updateTime}
+            )
         </foreach>
     </insert>
 

+ 7 - 26
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreMapper.xml

@@ -61,31 +61,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </insert>
 
     <insert id="insertBatch">
-        insert into kwf_driver_score
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
-            <if test="providerEntId != null">provider_ent_id,</if>
-            <if test="logisticsEntId != null">logistics_ent_id,</if>
-            <if test="driverId != null">driver_id,</if>
-            <if test="score != null">score,</if>
-            <if test="createBy != null">create_by,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="updateBy != null">update_by,</if>
-            <if test="updateTime != null">update_time,</if>
-        </trim>
+        insert into kwf_driver_score (id,provider_ent_id,logistics_ent_id,driver_id,score,create_by,create_time,update_by,update_time)
         values
         <foreach collection="driverScores" item="driverScore" separator=",">
-            <trim prefix="(" suffix=")" suffixOverrides=",">
-                <if test="id != null">#{driverScore.id},</if>
-                <if test="providerEntId != null">#{driverScore.providerEntId},</if>
-                <if test="logisticsEntId != null">#{driverScore.logisticsEntId},</if>
-                <if test="driverId != null">#{driverScore.driverId},</if>
-                <if test="score != null">#{driverScore.score},</if>
-                <if test="createBy != null">#{driverScore.createBy},</if>
-                <if test="createTime != null">#{driverScore.createTime},</if>
-                <if test="updateBy != null">#{driverScore.updateBy},</if>
-                <if test="updateTime != null">#{driverScore.updateTime},</if>
-            </trim>
+            (
+             #{driverScore.id},#{driverScore.providerEntId},#{driverScore.logisticsEntId},#{driverScore.driverId},#{driverScore.score},#{driverScore.createBy},#{driverScore.createTime},#{driverScore.updateBy},#{driverScore.updateTime}
+            )
         </foreach>
     </insert>
 
@@ -109,9 +90,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <foreach collection="driverScores" item="driverScore" separator=";">
             update kwf_driver_score
             <set>
-                <if test="score != null">score = #{driverScore.score},</if>
-                <if test="updateBy != null">update_by = #{driverScore.updateBy},</if>
-                <if test="updateTime != null">update_time = #{driverScore.updateTime},</if>
+                <if test="driverScore.score != null">score = #{driverScore.score},</if>
+                <if test="driverScore.updateBy != null">update_by = #{driverScore.updateBy},</if>
+                <if test="driverScore.updateTime != null">update_time = #{driverScore.updateTime},</if>
             </set>
             WHERE id = #{driverScore.id}
         </foreach>

+ 1 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/feign/TradeOrderApiImpl.java

@@ -20,7 +20,6 @@ public class TradeOrderApiImpl implements TradeOrderApi {
 
 
     @Override
-    public List<TradeOrderVo> queryTradeOrder(TradeOrderPara tradeOrderPara) {
-        return kwoTradeOrderService.queryOrder(tradeOrderPara);
+    public void updateLoad(TradeOrderPara tradeOrderPara) {
     }
 }

+ 3 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderListResVO.java

@@ -72,6 +72,7 @@ public class OrderListResVO {
      */
     private String deliveryType;
 
+
     /**
      * 交付类型label
      */
@@ -127,6 +128,8 @@ public class OrderListResVO {
     private String goodsSpec;
 
     private String goodsTaxRate;
+    private String goodsTypeLabel;
+    private String goodsType;
 
     /**
      * 商品缩略图

+ 52 - 49
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -27,7 +27,6 @@ import com.sckw.core.exception.CustomPromptException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.enums.*;
-import com.sckw.core.model.enums.DispatchWayEnums;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.model.vo.TableBottom;
@@ -73,8 +72,8 @@ import com.sckw.stream.model.SckwBusSum;
 import com.sckw.stream.model.SckwMessage;
 import com.sckw.stream.model.UserInfo;
 import com.sckw.system.api.RemoteSystemService;
-import com.sckw.system.api.model.dto.req.ActualDisPatchDto;
 import com.sckw.system.api.RemoteUserService;
+import com.sckw.system.api.model.dto.req.ActualDisPatchDto;
 import com.sckw.system.api.model.dto.res.*;
 import com.sckw.transport.api.dubbo.TransportRemoteService;
 import com.sckw.transport.api.model.param.AddLogisticOrderParam;
@@ -1595,20 +1594,22 @@ public class KwoTradeOrderService {
         Map<Long, UserCacheResDto> userMap = remoteSystemService.queryUserCacheMapByIds(createByIds);
         Map<Long, KwpGoods> goodsMap = goodsInfoService.getGoodsByIds(goodIdList);
         Map<Long, ContractCommonInfoResDto> contractMap = remoteContractService.queryContractBaseInfo(contracIdList);
-        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.TORDER_STATUS.getType(), DictTypeEnum.TRADE_TYPE.getType(), DictTypeEnum.SETTLEMENT_WAY.getType(), DictTypeEnum.CONSIGNMENT_WAY.getType(), DictTypeEnum.TORDER_SOURCE.getType()));
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.TORDER_STATUS.getType(), DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.TRADE_TYPE.getType(), DictTypeEnum.SETTLEMENT_WAY.getType(), DictTypeEnum.CONSIGNMENT_WAY.getType(), DictTypeEnum.TORDER_SOURCE.getType()));
         Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
-        Map<String, String> tradeMap, deliveryMap, pickupMap, sourceMap;
+        Map<String, String> tradeMap, deliveryMap, pickupMap, sourceMap, nameMap;
         if (CollUtil.isNotEmpty(dict)) {
             tradeMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.TRADE_TYPE.getType())) ? dict.get(DictTypeEnum.TRADE_TYPE.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
             deliveryMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.SETTLEMENT_WAY.getType())) ? dict.get(DictTypeEnum.SETTLEMENT_WAY.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
             pickupMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.CONSIGNMENT_WAY.getType())) ? dict.get(DictTypeEnum.CONSIGNMENT_WAY.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
             sourceMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.TORDER_SOURCE.getType())) ? dict.get(DictTypeEnum.TORDER_SOURCE.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            nameMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType())) ? dict.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
 
         } else {
             tradeMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
             deliveryMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
             pickupMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
             sourceMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            nameMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         }
         list.forEach(e -> {
             //装货地址
@@ -1626,7 +1627,14 @@ public class KwoTradeOrderService {
             UserCacheResDto userCache = userMap.get(e.getCreateBy());
 
             OrderListResVO vo = BeanUtil.copyProperties(e, OrderListResVO.class);
-            vo.setStatusLabel(TradeOrderStatusEnum.getMsg(e.getStatus())).setTradingLabel(tradeMap.get(e.getTrading())).setTrading(tradeMap.get(e.getTrading())).setDeliveryType(deliveryMap.get(e.getDeliveryType())).setPickupTypeLabel(pickupMap.get(e.getPickupType())).setSourceLabel(sourceMap.get(e.getSource())).setSource(sourceMap.get(e.getSource())).setContractName(Objects.isNull(contract) ? null : contract.getContactName()).setContractSigningWay(Objects.isNull(contract) ? null : contract.getSigningWayName()).setGoodsName(Objects.isNull(goods) ? null : goods.getName()).setGoodsSpec(Objects.isNull(goods) ? null : goods.getSpec()).setGoodsTaxRate(Objects.isNull(goods) ? null : goods.getTaxRate()).setGoodsThumb(Objects.isNull(goods) ? null : goods.getThumb()).setWaitEntrustAmount(setScale(getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount()))).setActualPrice(actualAmount.multiply(unitPrice).setScale(2, RoundingMode.HALF_UP)).setUnitPrice(setScale(e.getUnitPrice())).setPrice(setScale(e.getPrice())).setUnit(e.getUnit()).setUnitLabel(unitType == null ? e.getUnit() : (unitType.get(e.getUnit()) == null ? e.getUnit() : unitType.get(e.getUnit()).getLabel())).setAmount(setScale(vo.getAmount())).setEntrustAmount(setScale(e.getEntrustAmount())).setActualAmount(setScale(e.getActualAmount())).setCreateByName(Objects.isNull(userCache) ? null : userCache.getName());
+            vo.setStatusLabel(TradeOrderStatusEnum.getMsg(e.getStatus())).setTradingLabel(tradeMap.get(e.getTrading())).setTrading(tradeMap.get(e.getTrading())).setDeliveryType(deliveryMap.get(e.getDeliveryType())).setPickupTypeLabel(pickupMap.get(e.getPickupType())).setSourceLabel(sourceMap.get(e.getSource())).setSource(sourceMap.get(e.getSource())).setContractName(Objects.isNull(contract) ? null : contract.getContactName()).setContractSigningWay(Objects.isNull(contract) ? null : contract.getSigningWayName()).setGoodsName(Objects.isNull(goods) ? null : goods.getName());
+            vo.setGoodsSpec(Objects.isNull(goods) ? null : goods.getSpec());
+            vo.setGoodsTaxRate(Objects.isNull(goods) ? null : goods.getTaxRate());
+            vo.setGoodsThumb(Objects.isNull(goods) ? null : goods.getThumb());
+            vo.setGoodsType(Objects.isNull(goods) ? null : goods.getGoodsType());
+            vo.setGoodsTypeLabel(nameMap.get(Objects.isNull(goods) ? null : goods.getGoodsType()));
+            vo.setWaitEntrustAmount(setScale(getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount())));
+            vo.setActualPrice(actualAmount.multiply(unitPrice).setScale(2, RoundingMode.HALF_UP)).setUnitPrice(setScale(e.getUnitPrice())).setPrice(setScale(e.getPrice())).setUnit(e.getUnit()).setUnitLabel(unitType == null ? e.getUnit() : (unitType.get(e.getUnit()) == null ? e.getUnit() : unitType.get(e.getUnit()).getLabel())).setAmount(setScale(vo.getAmount())).setEntrustAmount(setScale(e.getEntrustAmount())).setActualAmount(setScale(e.getActualAmount())).setCreateByName(Objects.isNull(userCache) ? null : userCache.getName());
             vo.setDeliveryTypeLabel(DictEnum.getLabel(DictTypeEnum.LOAD_UNLOAD_WAY.getType(), String.valueOf(e.getChargeType())));
             loadAddress.ifPresent(d -> {
                 vo.setLoadName(d.getName());
@@ -2221,16 +2229,44 @@ public class KwoTradeOrderService {
             addLogisticOrderParam.setActualDisPatch(actualDisPatch);
 
         } else if (Objects.equals(tradeContractResDto.getConsignment(), 2)) {
-                List<LogisticInfo> collect = logisticsContractId.stream().map(d -> {
+            List<LogisticInfo> collect = logisticsContractId.stream().map(d -> {
+                LogisticInfo logisticInfo = new LogisticInfo();
+                logisticInfo.setContractId(d.getContractId());
+                logisticInfo.setContractNo(d.getContractNo());
+                logisticInfo.setContractName("");
+                logisticInfo.setAcceptCompanyId(d.getEntId());
+                logisticInfo.setAcceptContactPhone("");
+                logisticInfo.setAcceptContacts(d.getContacts());
+                logisticInfo.setAcceptContactsId(d.getContactsId());
+                logisticInfo.setAcceptCompany("");
+                logisticInfo.setPrice(d.getTransportPrice());
+                logisticInfo.setPriceType(0L);
+                logisticInfo.setAmount(new BigDecimal("0"));
+                logisticInfo.setAmountUnit("");
+                logisticInfo.setLoss(new BigDecimal("0"));
+                logisticInfo.setPayment(0L);
+                logisticInfo.setSigningWay(0);
+                logisticInfo.setLossUnit("");
+                logisticInfo.setRemark("");
+                logisticInfo.setType(0);
+
+                return logisticInfo;
+            }).collect(Collectors.toList());
+            addLogisticOrderParam.setLogisticInfo(collect);
+        } else {
+            List<KwoTradeOrderTransport> list = kwoTradeOrderTransportService.queryList(kwoTradeOrder.getId());
+            if (CollUtil.isNotEmpty(list)) {
+                //Map<Long, ContractCommonInfoResDto> contractMap = remoteContractService.queryContractBaseInfo(list.stream().map(KwoTradeOrderTransport::getContractId).collect(Collectors.toList()));
+                List<LogisticInfo> collect = list.stream().map(d -> {
                     LogisticInfo logisticInfo = new LogisticInfo();
                     logisticInfo.setContractId(d.getContractId());
                     logisticInfo.setContractNo(d.getContractNo());
                     logisticInfo.setContractName("");
                     logisticInfo.setAcceptCompanyId(d.getEntId());
-                    logisticInfo.setAcceptContactPhone("");
+                    logisticInfo.setAcceptContactPhone(d.getPhone());
                     logisticInfo.setAcceptContacts(d.getContacts());
                     logisticInfo.setAcceptContactsId(d.getContactsId());
-                    logisticInfo.setAcceptCompany("");
+                    logisticInfo.setAcceptCompany(d.getFirmName());
                     logisticInfo.setPrice(d.getTransportPrice());
                     logisticInfo.setPriceType(0L);
                     logisticInfo.setAmount(new BigDecimal("0"));
@@ -2245,37 +2281,9 @@ public class KwoTradeOrderService {
                     return logisticInfo;
                 }).collect(Collectors.toList());
                 addLogisticOrderParam.setLogisticInfo(collect);
-            } else {
-                List<KwoTradeOrderTransport> list = kwoTradeOrderTransportService.queryList(kwoTradeOrder.getId());
-                if (CollUtil.isNotEmpty(list)) {
-                    //Map<Long, ContractCommonInfoResDto> contractMap = remoteContractService.queryContractBaseInfo(list.stream().map(KwoTradeOrderTransport::getContractId).collect(Collectors.toList()));
-                    List<LogisticInfo> collect = list.stream().map(d -> {
-                        LogisticInfo logisticInfo = new LogisticInfo();
-                        logisticInfo.setContractId(d.getContractId());
-                        logisticInfo.setContractNo(d.getContractNo());
-                        logisticInfo.setContractName("");
-                        logisticInfo.setAcceptCompanyId(d.getEntId());
-                        logisticInfo.setAcceptContactPhone(d.getPhone());
-                        logisticInfo.setAcceptContacts(d.getContacts());
-                        logisticInfo.setAcceptContactsId(d.getContactsId());
-                        logisticInfo.setAcceptCompany(d.getFirmName());
-                        logisticInfo.setPrice(d.getTransportPrice());
-                        logisticInfo.setPriceType(0L);
-                        logisticInfo.setAmount(new BigDecimal("0"));
-                        logisticInfo.setAmountUnit("");
-                        logisticInfo.setLoss(new BigDecimal("0"));
-                        logisticInfo.setPayment(0L);
-                        logisticInfo.setSigningWay(0);
-                        logisticInfo.setLossUnit("");
-                        logisticInfo.setRemark("");
-                        logisticInfo.setType(0);
-
-                        return logisticInfo;
-                    }).collect(Collectors.toList());
-                    addLogisticOrderParam.setLogisticInfo(collect);
-                }
-
             }
+
+        }
         addLogisticOrderParam.setTradeOrderId(kwoTradeOrder.getId());
         addLogisticOrderParam.setTradeOrderNo(kwoTradeOrder.getTOrderNo());
         addLogisticOrderParam.setBillingMode(String.valueOf(kwoTradeOrder.getChargeType()));
@@ -2359,6 +2367,7 @@ public class KwoTradeOrderService {
 
     /**
      * 实际派车数
+     *
      * @param tradeOrder
      * @param addressList
      * @return
@@ -2383,8 +2392,7 @@ public class KwoTradeOrderService {
         dto.setVehicleAvgSpeed(truckDispatchVO.getVehicleAvgSpeed());
 
         //查询贸易订单装卸货地址
-        Map<Integer, KwoTradeOrderAddress> addressMap = addressList.stream().collect(Collectors.toMap(
-                address -> StringUtils.isBlank(address.getAddressType()) ? 0 : Integer.valueOf(address.getAddressType()), Function.identity(), (x, y) -> x));
+        Map<Integer, KwoTradeOrderAddress> addressMap = addressList.stream().collect(Collectors.toMap(address -> StringUtils.isBlank(address.getAddressType()) ? 0 : Integer.valueOf(address.getAddressType()), Function.identity(), (x, y) -> x));
         KwoTradeOrderAddress shipmentAddress = addressMap.getOrDefault(AddressTypeEnum.SHIPMENT.getCode(), new KwoTradeOrderAddress());
         KwoTradeOrderAddress takeAddress = addressMap.getOrDefault(AddressTypeEnum.TAKE.getCode(), new KwoTradeOrderAddress());
         dto.setLon1(shipmentAddress.getLng());
@@ -2404,6 +2412,7 @@ public class KwoTradeOrderService {
 
     /**
      * 物流企业可派车
+     *
      * @param byOrderId
      * @param contractLogisticsList
      * @return
@@ -2411,16 +2420,13 @@ public class KwoTradeOrderService {
     public Integer getEntAvailableVehicle(KwoTradeOrderGoods byOrderId, List<LogisticsEntDtoVO> contractLogisticsList) {
         List<Long> contractIds = contractLogisticsList.stream().map(LogisticsEntDtoVO::getContractId).collect(Collectors.toList());
         //物流企业总运力
-        int sumAvailableVehicle = contractIds.stream()
-                .filter(Objects::nonNull)
-                .map(contractId -> getSignEntAvailableVehicle(byOrderId.getGoodsId(), contractId))
-                .mapToInt(num -> num == null ? 0 : num)
-                .sum();
+        int sumAvailableVehicle = contractIds.stream().filter(Objects::nonNull).map(contractId -> getSignEntAvailableVehicle(byOrderId.getGoodsId(), contractId)).mapToInt(num -> num == null ? 0 : num).sum();
         return sumAvailableVehicle;
     }
 
     /**
      * 单个物流企业满足轴数可派车
+     *
      * @param goodId
      * @param contractId
      * @return
@@ -2438,10 +2444,7 @@ public class KwoTradeOrderService {
 
         //当前物流企业总运力
         List<RTruckVo> truckVoList = remoteFleetService.findTruckByEntIds(unitDto.getEntId());
-        return Math.toIntExact(truckVoList.stream()
-                .filter(Objects::nonNull)
-                .filter(truck -> Objects.equals(truck.getCarAxis(), String.valueOf(carAxisInfo.getId())))
-                .count());
+        return Math.toIntExact(truckVoList.stream().filter(Objects::nonNull).filter(truck -> Objects.equals(truck.getCarAxis(), String.valueOf(carAxisInfo.getId()))).count());
     }
 
 

+ 3 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/repository/KwsEntTypeRepository.java

@@ -21,6 +21,7 @@ public class KwsEntTypeRepository extends ServiceImpl<KwsEntTypeDao, KwsEntType>
     public List<KwsEntType> queryByEntIdsAndType(Set<Long> entIds, List<String> entTypes) {
         return list(Wrappers.<KwsEntType>lambdaQuery()
                 .eq(BaseModel::getDelFlag,0)
+                .eq(BaseModel::getStatus,0)
                 .in(KwsEntType::getEntId, entIds)
                 .in(KwsEntType::getType, entTypes));
     }
@@ -28,6 +29,7 @@ public class KwsEntTypeRepository extends ServiceImpl<KwsEntTypeDao, KwsEntType>
     public List<KwsEntType> queryByType(List<String> entTypes) {
         return list(Wrappers.<KwsEntType>lambdaQuery()
                 .eq(BaseModel::getDelFlag,0)
+                .eq(BaseModel::getStatus,0)
                 .in(KwsEntType::getType, entTypes));
     }
 
@@ -40,6 +42,7 @@ public class KwsEntTypeRepository extends ServiceImpl<KwsEntTypeDao, KwsEntType>
     public List<KwsEntType> queryByEntIds(Set<Long> entIds) {
         return list(Wrappers.<KwsEntType>lambdaQuery()
                 .eq(BaseModel::getDelFlag,0)
+                .eq(BaseModel::getStatus,0)
                 .in(KwsEntType::getEntId, entIds));
     }
 }

+ 3 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java

@@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -102,7 +103,8 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
         Date fiveSecondsLater = new Date(System.currentTimeMillis() + 5000);
         // 第二条:称重信息
         KwtWaybillOrderNode node2 = getWaybillOrderNode(param, waybillOrder);
-        node2.setRemark("[" + param.getWeighbridgeName() + "]称重[" + param.getTareAmount() + "吨]");
+        String tareAmount = Objects.isNull(param.getTareAmount()) ? "0.00" : param.getTareAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
+        node2.setRemark("[" + param.getWeighbridgeName() + "]称重[" + tareAmount + "吨]");
         node2.setCreateTime(fiveSecondsLater);
         waybillOrderNodeRepository.save(node2);
         log.info("记录【称重】节点轨迹成功,节点ID:{}", node2.getId());

+ 3 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LeaveMockHandler.java

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -121,6 +122,7 @@ public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLe
 
     @Override
     protected String getRemark(WaybillOrderLeaveMockParam param, KwtWaybillOrder waybillOrder) {
-        return "[" + param.getWeighbridgeName() + "]称重[" + param.getGrossAmount() + "吨]";
+        String grossAmount = Objects.isNull(param.getGrossAmount()) ? "0.00" : param.getGrossAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
+        return "[" + param.getWeighbridgeName() + "]称重[" + grossAmount + "吨]";
     }
 }

+ 2 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/TakingOrderHandler.java

@@ -544,7 +544,8 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
     protected String getRemark(OrderCirculateTakingQueryParam param, KwtWaybillOrder waybillOrder) {
         KwtWaybillOrder actualOrder = BusinessContext.get("createdWaybillOrder");
         KwtWaybillOrderSubtask subtask = getWaybillSubtask(actualOrder.getId());
-        return  "司机[" + actualOrder.getDriverName() + "]接单成功,预计任务量[" + subtask.getEntrustAmount() + "吨]";
+        String entrustAmount = Objects.isNull(subtask.getEntrustAmount()) ? "0.00" : subtask.getEntrustAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
+        return  "司机[" + actualOrder.getDriverName() + "]接单成功,预计任务量[" + entrustAmount + "吨]";
     }
 
     // 7. 接单需要单独创建接单轨迹数据

+ 10 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderStatusResp.java

@@ -37,6 +37,11 @@ public class WaybillOrderStatusResp implements Serializable {
      */
     @Schema(description = "物流订单编号")
     private String logisticsOrderNo;
+    /**
+     * 运单编号
+     */
+    @Schema(description = "运单编号")
+    private String waybillNo;
 
     /**
      * 托运单位id
@@ -200,6 +205,9 @@ public class WaybillOrderStatusResp implements Serializable {
      */
     @Schema(description = "状态描述")
     private String statusDesc;
-
-
+    /**
+     * 订单余量
+     */
+    @Schema(description = "订单余量")
+    private String orderSurplus;
 }

+ 1 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderSubtaskRepository.java

@@ -64,7 +64,7 @@ public class KwtWaybillOrderSubtaskRepository extends ServiceImpl<KwtWaybillOrde
                 .eq(KwtWaybillOrderSubtask::getLOrderId,logOrderId));
     }
 
-    public IPage<KwtWaybillOrderSubtask> queryByPage(Set<Long> entIds, Set<Long> logOrderIds, Set<Long> billOrderIds,
+    public IPage<KwtWaybillOrderSubtask> queryByPage( Set<Long> logOrderIds, Set<Long> billOrderIds,
                                                      Integer status,
                                                      int pageNum,
                                                      int pageSize) {
@@ -72,7 +72,6 @@ public class KwtWaybillOrderSubtaskRepository extends ServiceImpl<KwtWaybillOrde
                 Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
                         .eq(BaseModel::getDelFlag,0)
                         .eq(Objects.nonNull( status),KwtWaybillOrderSubtask::getStatus, status)
-                        .in(CollectionUtils.isNotEmpty(entIds),KwtWaybillOrderSubtask::getEntId, entIds)
                         .in(CollectionUtils.isNotEmpty(logOrderIds),KwtWaybillOrderSubtask::getLOrderId, logOrderIds)
                         .in(CollectionUtils.isNotEmpty(billOrderIds),KwtWaybillOrderSubtask::getWOrderId, billOrderIds)
                         .orderByDesc(BaseModel::getUpdateTime)

+ 68 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -2541,15 +2541,27 @@ public class KwtLogisticsConsignmentService {
         //根据物流订单号查询运单信息
         List<KwtWaybillOrderSubtask> waybillOrderSubtasks = waybillOrderSubtaskRepository.queryByLogId(logisticsOrder.getId());
 
+        //根据贸易订单号查询物流订单
+        List<KwtLogisticsOrder> logOrderList = logisticsOrderRepository.queryByTradeOrderId(logisticsOrder.getTOrderId());
+        //查询贸易订单
+        OrderDetailVo orderDetailVo = tradeOrderInfoService.queryByTradeOrderId(logisticsOrder.getTOrderId());
+
         //获取返回信息
         return getLogisticsOrderDetailResp(orderContract,tradeContractResDto, logOrderIdUnitTypeKeyAndUnitMap, logisticsOrder, kwpGoods,
-                logOrderIdAndUnitTypeKeyAndAddressMap, waybillOrderSubtasks);
+                logOrderIdAndUnitTypeKeyAndAddressMap, waybillOrderSubtasks, logOrderList,orderDetailVo);
 
     }
 
     @NotNull
-    private static LogisticsOrderDetailResp getLogisticsOrderDetailResp(KwtLogisticsOrderContract orderContract,KwcContractLogisticsDto tradeContractResDto, Map<String, KwtLogisticsOrderUnit> logOrderIdUnitTypeKeyAndUnitMap, KwtLogisticsOrder logisticsOrder,
-                                                                        KwpGoods kwpGoods, Map<String, KwtLogisticsOrderAddress> logOrderIdAndUnitTypeKeyAndAddressMap, List<KwtWaybillOrderSubtask> waybillOrderSubtasks) {
+    private LogisticsOrderDetailResp getLogisticsOrderDetailResp(KwtLogisticsOrderContract orderContract,
+                                                                        KwcContractLogisticsDto tradeContractResDto,
+                                                                        Map<String, KwtLogisticsOrderUnit> logOrderIdUnitTypeKeyAndUnitMap,
+                                                                        KwtLogisticsOrder logisticsOrder,
+                                                                        KwpGoods kwpGoods,
+                                                                        Map<String, KwtLogisticsOrderAddress> logOrderIdAndUnitTypeKeyAndAddressMap,
+                                                                        List<KwtWaybillOrderSubtask> waybillOrderSubtasks,
+                                                                        List<KwtLogisticsOrder> logOrderList,
+                                                                        OrderDetailVo orderDetailVo ) {
         LogisticsOrderDetailResp logisticsOrderDetailResp = new LogisticsOrderDetailResp();
         //设置合同信息
         setContractInfo(orderContract, tradeContractResDto,logisticsOrderDetailResp);
@@ -2563,7 +2575,7 @@ public class KwtLogisticsConsignmentService {
         setAddressInfo(logOrderIdAndUnitTypeKeyAndAddressMap, logisticsOrder, logisticsOrderDetailResp);
 
         //设置履约信息
-        setPerformInfo(logisticsOrder, waybillOrderSubtasks, logisticsOrderDetailResp);
+        setPerformInfo(logisticsOrder, waybillOrderSubtasks, logisticsOrderDetailResp,logOrderList, orderDetailVo);
 
         //设置物流信息
         setLogisticInfo(logisticsOrder,logisticsOrderDetailResp);
@@ -2580,7 +2592,11 @@ public class KwtLogisticsConsignmentService {
         logisticsOrderDetailResp.setLogisticOrderInfo(logisticOrderInfo);
     }
 
-    private static void setPerformInfo(KwtLogisticsOrder logisticsOrder, List<KwtWaybillOrderSubtask> waybillOrderSubtasks, LogisticsOrderDetailResp logisticsOrderDetailResp) {
+    private void setPerformInfo(KwtLogisticsOrder logisticsOrder,
+                                       List<KwtWaybillOrderSubtask> waybillOrderSubtasks,
+                                       LogisticsOrderDetailResp logisticsOrderDetailResp,
+                                       List<KwtLogisticsOrder> logOrderList,
+                                       OrderDetailVo orderDetailVo) {
         LogisticsOrderDetailResp.PerformanceInfoVO performanceInfoVO = new LogisticsOrderDetailResp.PerformanceInfoVO();
         performanceInfoVO.setBillingMode(logisticsOrder.getBillingMode());
         performanceInfoVO.setBillingModeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
@@ -2613,12 +2629,57 @@ public class KwtLogisticsConsignmentService {
                     BigDecimal.ZERO;
         }
         performanceInfoVO.setTotalCarriageCost(totalCarriageCost.setScale(2,RoundingMode.HALF_UP).toPlainString());
-        performanceInfoVO.setSurplusAmount(Objects.nonNull(logisticsOrder.getAmount())  ?
-                logisticsOrder.getAmount().subtract(loadAmount).setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00");
+        BigDecimal tradeAmount = Optional.ofNullable(orderDetailVo).map(OrderDetailVo::getAmount).orElse(BigDecimal.ZERO);
+        BigDecimal totalAmount = getTotalAmount(logOrderList);
+        BigDecimal surplusAmount = tradeAmount.subtract(totalAmount);
+        performanceInfoVO.setSurplusAmount(surplusAmount.setScale(2,RoundingMode.HALF_UP).toPlainString());
 
         logisticsOrderDetailResp.setPerformanceInfoVO(performanceInfoVO);
     }
 
+    @NotNull
+    private BigDecimal getTotalAmount(List<KwtLogisticsOrder> logOrderList) {
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(logOrderList)) {
+            return totalAmount;
+        }
+        // 计费方式
+        String billingMode = logOrderList.get(0).getBillingMode();
+        // 物流订单ID列表
+        List<Long> logOrderIds = logOrderList.stream()
+                .map(KwtLogisticsOrder::getId)
+                .collect(Collectors.toList());
+
+        // 根据物流订单查询子运单
+        List<KwtWaybillOrderSubtask> waybillOrderSubtasks = waybillOrderSubtaskRepository.queryByLogIds(logOrderIds);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(waybillOrderSubtasks)) {
+            return totalAmount;
+        }
+        // 筛选出状态为已完成的子运单
+        List<KwtWaybillOrderSubtask> pendingUnloadSubtasks = waybillOrderSubtasks.stream()
+                .filter(subtask -> Objects.equals(subtask.getStatus(), CarWaybillV1Enum.WAIT_UNLOADING.getCode()))
+                .collect(Collectors.toList());
+
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(pendingUnloadSubtasks)) {
+            return totalAmount;
+        }
+        // 按装货量计费
+        if (org.apache.commons.lang3.StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_1.getValue())) {
+            totalAmount = pendingUnloadSubtasks.stream()
+                    .filter(subtask -> Objects.nonNull(subtask.getLoadAmount()))
+                    .map(KwtWaybillOrderSubtask::getLoadAmount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+        }
+        // 按卸货量计费
+        else if (org.apache.commons.lang3.StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_2.getValue())) {
+            totalAmount = pendingUnloadSubtasks.stream()
+                    .filter(subtask -> Objects.nonNull(subtask.getUnloadAmount()))
+                    .map(KwtWaybillOrderSubtask::getUnloadAmount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+        }
+    return totalAmount;
+}
+
     private static void setAddressInfo(Map<String, KwtLogisticsOrderAddress> logOrderIdAndUnitTypeKeyAndAddressMap, KwtLogisticsOrder logisticsOrder, LogisticsOrderDetailResp logisticsOrderDetailResp) {
         LogisticsOrderDetailResp.LoadingInfoVO loadingInfoVO = new LogisticsOrderDetailResp.LoadingInfoVO();
         KwtLogisticsOrderAddress loadAdd = logOrderIdAndUnitTypeKeyAndAddressMap.getOrDefault(logisticsOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(),

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

@@ -2974,11 +2974,11 @@ public class KwtWaybillOrderV1Service {
         log.info("查询订单列表请求阐述:{}",JSON.toJSONString( req));
         Integer status = org.apache.commons.lang3.StringUtils.isNoneBlank(req.getStatus()) ?
                 Integer.parseInt(req.getStatus()) : null;
-        Set<Long> allEnt = getAllEnt(req);
+       // Set<Long> allEnt = getAllEnt(req);
         //物流订单号集合
         Set<Long> logOrderIds = getLogOrderIds(req);
         boolean b1 = !org.apache.commons.lang3.StringUtils.isAllBlank(req.getLogisticsOrderNo(), req.getGoodsName(),
-                req.getCarrierId(), req.getConsignorId());
+                req.getCarrierId(), req.getConsignorId()) || !Objects.nonNull(LoginUserHolder.getEntId());
         if(org.apache.commons.collections4.CollectionUtils.isEmpty(logOrderIds) && b1){
             return PageDataResult.empty(req.getPageNum(), req.getPageSize());
         }
@@ -2993,7 +2993,7 @@ public class KwtWaybillOrderV1Service {
             return PageDataResult.empty(req.getPageNum(), req.getPageSize());
         }
 
-        IPage<KwtWaybillOrderSubtask> page = waybillOrderSubtaskRepository.queryByPage(allEnt ,logOrderIds,
+        IPage<KwtWaybillOrderSubtask> page = waybillOrderSubtaskRepository.queryByPage(logOrderIds,
                 billOrderIds,status, req.getPageNum(), req.getPageSize());
         List<KwtWaybillOrderSubtask> records = page.getRecords();
         if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)){
@@ -3205,6 +3205,7 @@ public class KwtWaybillOrderV1Service {
             }
         }
         Set<Long> entIds = Sets.newHashSet();
+        entIds.add(LoginUserHolder.getEntId());
         if (StringUtils.isNotBlank(req.getConsignorId())){
             entIds.add(Long.parseLong(req.getConsignorId()));
         }
@@ -3215,9 +3216,18 @@ public class KwtWaybillOrderV1Service {
         if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(entIds)){
             List<KwtLogisticsOrderUnit> unitList = kwtLogisticsOrderUnitRepository.queryByEntIds(entIds);
             if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(unitList)){
-                logOrderIds.addAll(unitList.stream()
+                Set<Long> logOrderIdList = unitList.stream()
+                        .filter(x -> Objects.equals(x.getEntId(), LoginUserHolder.getEntId()))
+                        .map(KwtLogisticsOrderUnit::getLOrderId)
+                        .collect(Collectors.toSet());
+                Set<Long> logisticsOrderIds = unitList.stream()
                         .map(KwtLogisticsOrderUnit::getLOrderId)
-                        .collect(Collectors.toSet())) ;
+                        .filter(logOrderIdList::contains)
+                        .collect(Collectors.toSet());
+                if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logisticsOrderIds)){
+                    logOrderIds.addAll(logisticsOrderIds);
+                }
+
             }
          }
         List<KwtLogisticsOrderGoods> logisticsOrderGoods =null ;

+ 72 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Maps;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
@@ -22,6 +23,7 @@ import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.order.api.model.OrderDetailVo;
 import com.sckw.order.api.model.OrderUnitInfoDetailVO;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
@@ -45,6 +47,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
@@ -196,6 +199,7 @@ public class WaybillOrderService {
         if (StringUtils.isBlank(param.getTruckNo())) {
             return PageDataResult.empty(param.getPageNum(), param.getPageSize());
         }
+        //cxf 帮修改 查询改物流订单下待接单的订单
         LambdaQueryWrapper<KwtLogisticsOrderCirculate> queryWrapper = Wrappers.<KwtLogisticsOrderCirculate>lambdaQuery()
                 .eq(KwtLogisticsOrderCirculate::getEntId, param.getEntId())
                 .eq(KwtLogisticsOrderCirculate::getTruckNo, param.getTruckNo())
@@ -601,7 +605,20 @@ public class WaybillOrderService {
         }
         Map<Long, KwtLogisticsOrder> logOrderMap = logOrderList.stream().collect(Collectors.toMap(logOrder -> logOrder.getId(),
                 Function.identity(), (x, y) -> x));
-
+        Set<Long> tradeIds = logOrderList.stream()
+                .map(KwtLogisticsOrder::getTOrderId)
+                .collect(Collectors.toSet());
+        //获取贸易订单
+        List<OrderDetailVo> orderDetailVos = tradeOrderInfoService.queryByTradeOrderIds(tradeIds);
+        Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(orderDetailVos)){
+            tradeIdAndOrderDetailVoMap = orderDetailVos.stream()
+                    .collect(Collectors.toMap(OrderDetailVo::getId, Function.identity(), (x, y) -> x));
+        }
+        Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList = logOrderList.stream()
+                .collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
+        Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList = orderSubtaskList.stream()
+                .collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
         //物流订单商品
         List<KwtLogisticsOrderGoods> logOrderGoods = logisticsOrderGoodsRepository.queryByLogOrderIds(logOrderIdList);
         if (CollectionUtils.isEmpty(logOrderGoods)) {
@@ -635,10 +652,12 @@ public class WaybillOrderService {
                 Collectors.toMap(ticket -> ticket.getWOrderId() + "-" + ticket.getType(),
                         Function.identity(), (x, y) -> x));
 
+        Map<Long, OrderDetailVo> finalTradeIdAndOrderDetailVoMap = tradeIdAndOrderDetailVoMap;
         List<WaybillOrderStatusResp> ordderList = records.stream().map(
                 billOrder -> {
                     return getWaybillOrderResp(billOrder, subtaskMap, logOrderMap, logOrderIdAndCirculateMap,
-                            logOrderIdAndGoodsMap, logOrderIdAndUnitMap, logOrderIdAndAddressMap, ticketMap);
+                            logOrderIdAndGoodsMap, logOrderIdAndUnitMap, logOrderIdAndAddressMap, ticketMap,
+                            finalTradeIdAndOrderDetailVoMap,tradeIdAndLogOrderList,logisticsOrderIdAndSubtaskList);
                 }).collect(Collectors.toList());
         return ordderList;
     }
@@ -658,10 +677,14 @@ public class WaybillOrderService {
                                                        Map<Long, KwtLogisticsOrderGoods> logOrderIdAndGoodsMap,
                                                        Map<String, KwtLogisticsOrderUnit> logOrderIdAndUnitMap,
                                                        Map<String, KwtLogisticsOrderAddress> logOrderIdAndAddressMap,
-                                                       Map<String, KwtWaybillOrderTicket> ticketMap) {
+                                                       Map<String, KwtWaybillOrderTicket> ticketMap,
+                                                       Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap,
+                                                       Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList ,
+                                                       Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList) {
         WaybillOrderStatusResp wbOrderResp = new WaybillOrderStatusResp();
         wbOrderResp.setId(wbOrder.getId());
         wbOrderResp.setLogisticsOrderId(Optional.ofNullable(wbOrder.getLOrderId()).map(String::valueOf).orElse(null));
+        wbOrderResp.setWaybillNo(wbOrder.getWOrderNo());
         //装货、卸货净重、任务量
         KwtWaybillOrderSubtask subtask = subtaskMap.getOrDefault(wbOrder.getId(), new KwtWaybillOrderSubtask());
         wbOrderResp.setLoadingNetWeight(subtask.getLoadAmount());
@@ -673,7 +696,8 @@ public class WaybillOrderService {
         wbOrderResp.setLogisticsOrderNo(logOrder.getLOrderNo());
         wbOrderResp.setChargeType(logOrder.getBillingMode());
         wbOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), logOrder.getBillingMode()));
-
+        //设置余量
+        setSupAmount(wbOrder, logOrderMap, tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList, logisticsOrderIdAndSubtaskList, wbOrderResp);
         //托运企业
         KwtLogisticsOrderUnit consignEnt = logOrderIdAndUnitMap.getOrDefault(wbOrder.getLOrderId() + "-" + UnitTypeEnum.CONSIGN.getCode(), new KwtLogisticsOrderUnit());
         wbOrderResp.setConsignCompanyId(Optional.ofNullable(consignEnt.getEntId()).map(String::valueOf).orElse(null));
@@ -730,11 +754,54 @@ public class WaybillOrderService {
 
         //状态
         wbOrderResp.setStatus(wbOrder.getStatus());
-        wbOrderResp.setStatusDesc(CarWaybillV1Enum.geDesc(wbOrder.getStatus()));
+        // 使用已定义的常量集合来判断状态
+        if (UNDER_WAY.contains(wbOrder.getStatus())) {
+            wbOrderResp.setStatusDesc("进行中");
+        } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.COMPLETION_LOADING.getCode())) {
+            wbOrderResp.setStatusDesc("待审核");
+        } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.WAIT_UNLOADING.getCode())) {
+            wbOrderResp.setStatusDesc("已完成");
+        } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.COMPLETION_UNLOADING.getCode())) {
+            wbOrderResp.setStatusDesc("待修改");
+        } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.APPROVAL_TREAT.getCode())) {
+            wbOrderResp.setStatusDesc("已取消");
+        } else {
+            wbOrderResp.setStatusDesc("未知状态");
+        }
+
         return wbOrderResp;
 
     }
 
+    private static void setSupAmount(KwtWaybillOrder wbOrder, Map<Long, KwtLogisticsOrder> logOrderMap, Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap, Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList, Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList, WaybillOrderStatusResp wbOrderResp) {
+        KwtLogisticsOrder order = logOrderMap.getOrDefault(wbOrder.getLOrderId(), new KwtLogisticsOrder());
+        OrderDetailVo detailVo = tradeIdAndOrderDetailVoMap.getOrDefault(order.getTOrderId(), new OrderDetailVo());
+        BigDecimal tradeAmount = Optional.ofNullable(detailVo).map(OrderDetailVo::getAmount).orElse(BigDecimal.ZERO);
+        List<KwtLogisticsOrder> kwtLogisticsOrders = tradeIdAndLogOrderList.get(order.getTOrderId());
+        BigDecimal logTotatalAmount = BigDecimal.ZERO;
+        if (CollectionUtils.isNotEmpty(kwtLogisticsOrders)){
+            String billingMode = kwtLogisticsOrders.get(0).getBillingMode();
+
+            for (KwtLogisticsOrder kwtLogisticsOrder : kwtLogisticsOrders) {
+                List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logisticsOrderIdAndSubtaskList.getOrDefault(kwtLogisticsOrder.getId(), new ArrayList<>());
+                if (StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_1.getValue())) {
+                    BigDecimal loadAmountSum = waybillOrderSubtasks.stream()
+                            .map(KwtWaybillOrderSubtask::getLoadAmount)
+                            .filter(Objects::nonNull)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    logTotatalAmount = logTotatalAmount.add(loadAmountSum);
+                } else if (StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_2.getValue())) {
+                    BigDecimal unloadAmountSum = waybillOrderSubtasks.stream()
+                            .map(KwtWaybillOrderSubtask::getUnloadAmount)
+                            .filter(Objects::nonNull)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    logTotatalAmount = logTotatalAmount.add(unloadAmountSum);
+                }
+            }
+        }
+        wbOrderResp.setOrderSurplus(tradeAmount.subtract(logTotatalAmount).setScale(2, RoundingMode.HALF_UP).toPlainString());
+    }
+
     /**
      * 运单统计
      * @param param