Przeglądaj źródła

1.优化承运订单-分包数据分页查询
2.优化采购订单-车辆信息-销售订单ids
3.修复SAS-1563
4.物流订单车辆运单枚举新增状态对应查询
5.扣亏量计算-合理损耗单位null判断

lengfaqiang 2 lat temu
rodzic
commit
781c76774d
14 zmienionych plików z 435 dodań i 92 usunięć
  1. 18 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java
  2. 20 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java
  3. 30 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java
  4. 3 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  5. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java
  6. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  7. 7 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java
  8. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SubcontractConsignmentVO.java
  9. 94 43
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  10. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java
  11. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  12. 121 41
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  13. 102 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  14. 26 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 18 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -165,4 +165,22 @@ public enum CarWaybillEnum {
         }
         return false;
     }
+
+    /**
+     * 获取编码以及注释
+     *
+     * @return
+     */
+    public static String getCodeAndDestination() {
+        StringBuilder sb = new StringBuilder();
+        for (CarWaybillEnum value : CarWaybillEnum.values()) {
+            sb.append(value.getCode()+":").append(value.destination).append(";");
+        }
+        return sb.toString();
+    }
+
+    public static void main(String[] args) {
+        String codeAndDestination = getCodeAndDestination();
+        System.out.println(codeAndDestination);
+    }
 }

+ 20 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java

@@ -109,6 +109,7 @@ public enum LogisticsOrderEnum {
 
     /**
      * 获取所有的状态
+     *
      * @return
      */
     public static List<String> getCodeStringList() {
@@ -120,7 +121,6 @@ public enum LogisticsOrderEnum {
     }
 
 
-
     public static String getDestination(String status) {
         for (LogisticsOrderEnum logisticsOrderEnum : LogisticsOrderEnum.values()) {
             if (logisticsOrderEnum.getStatus().equals(status)) {
@@ -162,4 +162,23 @@ public enum LogisticsOrderEnum {
         }
         return true;
     }
+
+
+    /**
+     * 获取编码以及注释
+     *
+     * @return
+     */
+    public static String getCodeAndDestination() {
+        StringBuilder sb = new StringBuilder();
+        for (LogisticsOrderEnum value : LogisticsOrderEnum.values()) {
+            sb.append(value.getCode()+":").append(value.destination).append(";");
+        }
+        return sb.toString();
+    }
+
+    public static void main(String[] args) {
+        String codeAndDestination = getCodeAndDestination();
+        System.out.println(codeAndDestination);
+    }
 }

+ 30 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java

@@ -4,6 +4,8 @@ import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 
 import java.lang.reflect.InvocationTargetException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -784,6 +786,34 @@ public class StringUtils {
         return result.toString();
     }
 
+    /**
+     * @desc: 设置两位小数
+     * @author: yzc
+     * @date: 2023-09-26 10:11
+     * @Param d:
+     * @return: java.lang.BigDecimal
+     */
+    private BigDecimal setScale(Double d) {
+        if (Objects.isNull(d) || BigDecimal.ZERO.compareTo(BigDecimal.valueOf(d)) == 0) {
+            return new BigDecimal("0.00");
+        }
+        return BigDecimal.valueOf(d).setScale(2, RoundingMode.HALF_UP);
+    }
+
+    /**
+     * @desc: 设置两位小数
+     * @author: yzc
+     * @date: 2023-09-26 10:11
+     * @Param d:
+     * @return: java.lang.BigDecimal
+     */
+    private BigDecimal setScale(BigDecimal d) {
+        if (Objects.isNull(d) || BigDecimal.ZERO.compareTo(d) == 0) {
+            return new BigDecimal("0.00");
+        }
+        return d.setScale(2, RoundingMode.HALF_UP);
+    }
+
     public static void main(String[] args) {
         Map<String, Object> param = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         param.put("account", "17358629955");

+ 3 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java

@@ -240,10 +240,10 @@ public class AcceptCarriageOrderController {
      */
     @RequestMapping(value = "/getSubcontractConsignment", method = RequestMethod.GET)
     public HttpResult getSubcontractConsignment(@RequestParam("lOrderIds") @NotBlank(message = "单据id不能为空") String lOrderIds,
-                                                @RequestParam("page") @NotNull(message = "分页不能为空") int page,
-                                                @RequestParam("pageSize") @NotNull(message = "分页条数不能为空") int pageSize) {
+                                                                       @RequestParam("page") @NotNull(message = "分页不能为空") int page,
+                                                                       @RequestParam("pageSize") @NotNull(message = "分页条数不能为空") int pageSize) {
         try {
-            return acceptCarriageOrderService.getSubcontractConsignment(lOrderIds, page, pageSize);
+            return HttpResult.ok(acceptCarriageOrderService.getSubcontractConsignment(lOrderIds, page, pageSize));
         } catch (Exception e) {
             log.error("承运订单-获取分包托运列表 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java

@@ -130,7 +130,7 @@ public class LogisticsConsignmentController {
     public HttpResult purchaseLogisticsCar(@Valid @RequestBody OrderQuery orderQuery) {
         log.info("采购订单-车辆详情 传递参数信息:{}", JSONObject.toJSONString(orderQuery));
         try {
-            return logisticsConsignmentService.purchaseLogisticsCar(orderQuery.getIds(), orderQuery.getPage(), orderQuery.getPageSize());
+            return HttpResult.ok(logisticsConsignmentService.purchaseLogisticsCar(orderQuery.getIds(), orderQuery.getPage(), orderQuery.getPageSize()));
         } catch (Exception e) {
             log.error("采购订单-车辆详情 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java

@@ -62,6 +62,15 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      */
     List<com.sckw.transport.model.dto.LogisticsOrderDTO> selectOrderListNotPage(@Param("id") String id, @Param("type") String type);
 
+    /**
+     * 销售订单-采购订单-托运详情
+     *
+     * @param ids 贸易订单id
+     * @param type
+     * @return
+     */
+    List<com.sckw.transport.model.dto.LogisticsOrderDTO> selectOrderListNotPageByIds(@Param("ids") List<Long> ids, @Param("type") String type);
+
     List<SckwLogisticsOrderVO> selectOrderListByContractId(@Param("type") String type, @Param("entId") Long entId, @Param("contractIds") List<Long> contractIds);
 
     /**
@@ -116,6 +125,7 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      * @return
      */
     List<SubcontractConsignmentVO> getSubcontractConsignmentNotPage(@Param("lOrderId") String lOrderId);
+    List<SubcontractConsignmentVO> getSubcontractConsignmentList(@Param("lOrderIds") List<Long> lOrderIds);
 
     /**
      * @param lOrderId

+ 7 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java

@@ -134,6 +134,13 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      */
     List<OrderCarDTO> selectWaybillOrderCarListNotPage(@Param("id") String id);
 
+    /**
+     *
+     * @param ids
+     * @return
+     */
+    List<OrderCarDTO> selectWaybillOrderCarListByTradeOrderId(@Param("ids") List<Long> ids);
+
     /**
      * 按状态统计运单
      * @param entId 企业ID

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SubcontractConsignmentVO.java

@@ -229,7 +229,7 @@ public class SubcontractConsignmentVO {
     /**
      * 创建时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
 }

+ 94 - 43
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -18,7 +18,6 @@ import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.*;
 import com.sckw.core.model.page.PageRes;
-import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
@@ -970,11 +969,16 @@ public class AcceptCarriageOrderService {
      * @param pageSize  每页条数
      * @return
      */
-    public HttpResult getSubcontractConsignment(String lOrderIds, Integer page, Integer pageSize) {
+    public PageRes<SubcontractConsignmentVO> getSubcontractConsignment(String lOrderIds, Integer page, Integer pageSize) {
+        PageHelper.startPage(page, pageSize);
         List<String> stringList = StringUtils.splitStrToList(lOrderIds, String.class);
         if (CollectionUtils.isEmpty(stringList)) {
-            return HttpResult.ok();
+            PageRes<SubcontractConsignmentVO> objectPageRes = new PageRes<>();
+            objectPageRes.setPage(page);
+            objectPageRes.setPageSize(pageSize);
+            return objectPageRes;
         }
+        List<Long> ids = StringUtils.splitStrToList(lOrderIds, Long.class);
         /**运价方式*/
         Map<String, String> priceDictData = getDictData(DictTypeEnum.PRICE_TYPE.getType());
         /**车载计算方式*/
@@ -986,51 +990,98 @@ public class AcceptCarriageOrderService {
         /**结算周期*/
         Map<String, String> settlementDictData = getDictData(DictTypeEnum.SETTLEMENT_CYCLE.getType());
         List<SubcontractConsignmentVO> allList = new ArrayList<>();
-        for (String lOrderId : stringList) {
-            List<SubcontractConsignmentVO> list = logisticsOrderMapper.getSubcontractConsignmentNotPage(lOrderId);
-            //联查数据
-            if (CollectionUtils.isNotEmpty(list)) {
-                for (SubcontractConsignmentVO subcontractConsignmentVO : list) {
-                    //关联父级承运单据号
-                    if (subcontractConsignmentVO.getPid() != null) {
-                        KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getId, subcontractConsignmentVO.getPid()));
-                        if (kwtLogisticsOrder != null) {
-                            subcontractConsignmentVO.setCarrierOrderNo(kwtLogisticsOrder.getLOrderNo());
-                        }
-                    }
-                    subcontractConsignmentVO.setStatusLabel(LogisticsOrderEnum.getDestination(subcontractConsignmentVO.getStatus()));
-                    if (subcontractConsignmentVO.getPriceType() != null) {
-                        subcontractConsignmentVO.setPriceTypeLabel(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
+        List<SubcontractConsignmentVO> voList = logisticsOrderMapper.getSubcontractConsignmentList(ids);
+        if (CollectionUtils.isEmpty(voList)){
+            PageRes<SubcontractConsignmentVO> objectPageRes = new PageRes<>();
+            objectPageRes.setPage(page);
+            objectPageRes.setPageSize(pageSize);
+            return objectPageRes;
+        }
+        PageInfo<SubcontractConsignmentVO> pageInfo = new PageInfo<>(voList);
+        if (CollectionUtils.isNotEmpty(voList)) {
+            for (SubcontractConsignmentVO subcontractConsignmentVO : voList) {
+                //关联父级承运单据号
+                if (subcontractConsignmentVO.getPid() != null) {
+                    KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getId, subcontractConsignmentVO.getPid()));
+                    if (kwtLogisticsOrder != null) {
+                        subcontractConsignmentVO.setCarrierOrderNo(kwtLogisticsOrder.getLOrderNo());
                     }
-                    if (subcontractConsignmentVO.getLossUnit() != null) {
-                        subcontractConsignmentVO.setLossUnitLabel(weightDictData == null ? null : weightDictData.get(subcontractConsignmentVO.getLossUnit()));
-                    }
-                    if (subcontractConsignmentVO.getGoodsPriceUnit() != null) {
-                        subcontractConsignmentVO.setGoodsPriceUnitLabel(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getGoodsPriceUnit()));
-                    }
-                    //分包托运不需要展示签约方式
+                }
+                subcontractConsignmentVO.setStatusLabel(LogisticsOrderEnum.getDestination(subcontractConsignmentVO.getStatus()));
+                if (subcontractConsignmentVO.getPriceType() != null) {
+                    subcontractConsignmentVO.setPriceTypeLabel(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
+                }
+                if (subcontractConsignmentVO.getLossUnit() != null) {
+                    subcontractConsignmentVO.setLossUnitLabel(weightDictData == null ? null : weightDictData.get(subcontractConsignmentVO.getLossUnit()));
+                }
+                if (subcontractConsignmentVO.getGoodsPriceUnit() != null) {
+                    subcontractConsignmentVO.setGoodsPriceUnitLabel(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getGoodsPriceUnit()));
+                }
+                //分包托运不需要展示签约方式
 //                subcontractConsignmentVO.setContractSigningWay(singDictData == null ? null : singDictData.get(subcontractConsignmentVO.getContractSigningWay()));
-                    if (subcontractConsignmentVO.getBillingMode() != null) {
-                        subcontractConsignmentVO.setBillingModeLabel(chargingDictData == null ? null : chargingDictData.get(subcontractConsignmentVO.getBillingMode()));
-                    }
-                    if (subcontractConsignmentVO.getSettlementCycle() != null) {
-                        subcontractConsignmentVO.setSettlementCycleLabel(settlementDictData == null ? null : settlementDictData.get(subcontractConsignmentVO.getSettlementCycle()));
-                    }
-                    if (subcontractConsignmentVO.getCreateBy() != null) {
-                        UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(Long.parseLong(subcontractConsignmentVO.getCreateBy()));
-                        if (userCacheResDto != null) {
-                            subcontractConsignmentVO.setCreateName(userCacheResDto.getName());
-                        }
+                if (subcontractConsignmentVO.getBillingMode() != null) {
+                    subcontractConsignmentVO.setBillingModeLabel(chargingDictData == null ? null : chargingDictData.get(subcontractConsignmentVO.getBillingMode()));
+                }
+                if (subcontractConsignmentVO.getSettlementCycle() != null) {
+                    subcontractConsignmentVO.setSettlementCycleLabel(settlementDictData == null ? null : settlementDictData.get(subcontractConsignmentVO.getSettlementCycle()));
+                }
+                if (subcontractConsignmentVO.getCreateBy() != null) {
+                    UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(Long.parseLong(subcontractConsignmentVO.getCreateBy()));
+                    if (userCacheResDto != null) {
+                        subcontractConsignmentVO.setCreateName(userCacheResDto.getName());
                     }
-                    subcontractConsignmentVO.setLoadAddressDetail(subcontractConsignmentVO.getLoadCityName() + subcontractConsignmentVO.getLoadAddress());
-                    subcontractConsignmentVO.setUnloadAddressDetail(subcontractConsignmentVO.getUnloadCityName() + subcontractConsignmentVO.getUnloadAddress());
                 }
-                allList.addAll(list);
+                subcontractConsignmentVO.setLoadAddressDetail(subcontractConsignmentVO.getLoadCityName() + subcontractConsignmentVO.getLoadAddress());
+                subcontractConsignmentVO.setUnloadAddressDetail(subcontractConsignmentVO.getUnloadCityName() + subcontractConsignmentVO.getUnloadAddress());
             }
-        }
-        List<SubcontractConsignmentVO> returnList = allList.stream().skip((page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
-        PageResult build = PageResult.build(page, pageSize, allList.stream().count(), returnList);
-        return HttpResult.ok(build);
+            allList.addAll(voList);
+        }
+        return PageRes.build(pageInfo,allList);
+//        for (String lOrderId : stringList) {
+//            List<SubcontractConsignmentVO> list = logisticsOrderMapper.getSubcontractConsignmentNotPage(lOrderId);
+//            //联查数据
+//            if (CollectionUtils.isNotEmpty(list)) {
+//                for (SubcontractConsignmentVO subcontractConsignmentVO : list) {
+//                    //关联父级承运单据号
+//                    if (subcontractConsignmentVO.getPid() != null) {
+//                        KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getId, subcontractConsignmentVO.getPid()));
+//                        if (kwtLogisticsOrder != null) {
+//                            subcontractConsignmentVO.setCarrierOrderNo(kwtLogisticsOrder.getLOrderNo());
+//                        }
+//                    }
+//                    subcontractConsignmentVO.setStatusLabel(LogisticsOrderEnum.getDestination(subcontractConsignmentVO.getStatus()));
+//                    if (subcontractConsignmentVO.getPriceType() != null) {
+//                        subcontractConsignmentVO.setPriceTypeLabel(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
+//                    }
+//                    if (subcontractConsignmentVO.getLossUnit() != null) {
+//                        subcontractConsignmentVO.setLossUnitLabel(weightDictData == null ? null : weightDictData.get(subcontractConsignmentVO.getLossUnit()));
+//                    }
+//                    if (subcontractConsignmentVO.getGoodsPriceUnit() != null) {
+//                        subcontractConsignmentVO.setGoodsPriceUnitLabel(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getGoodsPriceUnit()));
+//                    }
+//                    //分包托运不需要展示签约方式
+////                subcontractConsignmentVO.setContractSigningWay(singDictData == null ? null : singDictData.get(subcontractConsignmentVO.getContractSigningWay()));
+//                    if (subcontractConsignmentVO.getBillingMode() != null) {
+//                        subcontractConsignmentVO.setBillingModeLabel(chargingDictData == null ? null : chargingDictData.get(subcontractConsignmentVO.getBillingMode()));
+//                    }
+//                    if (subcontractConsignmentVO.getSettlementCycle() != null) {
+//                        subcontractConsignmentVO.setSettlementCycleLabel(settlementDictData == null ? null : settlementDictData.get(subcontractConsignmentVO.getSettlementCycle()));
+//                    }
+//                    if (subcontractConsignmentVO.getCreateBy() != null) {
+//                        UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(Long.parseLong(subcontractConsignmentVO.getCreateBy()));
+//                        if (userCacheResDto != null) {
+//                            subcontractConsignmentVO.setCreateName(userCacheResDto.getName());
+//                        }
+//                    }
+//                    subcontractConsignmentVO.setLoadAddressDetail(subcontractConsignmentVO.getLoadCityName() + subcontractConsignmentVO.getLoadAddress());
+//                    subcontractConsignmentVO.setUnloadAddressDetail(subcontractConsignmentVO.getUnloadCityName() + subcontractConsignmentVO.getUnloadAddress());
+//                }
+//                allList.addAll(list);
+//            }
+//        }
+//        List<SubcontractConsignmentVO> returnList = allList.stream().skip((page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
+//        PageResult build = PageResult.build(page, pageSize, allList.stream().count(), returnList);
+//        return HttpResult.ok(build);
     }
 
 

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -849,7 +849,7 @@ public class CommonService {
 //        return deficitPrice;
 
         if (StringUtils.isBlank(lossUnit)) {
-            loss = new BigDecimal(Global.AMOUNT);
+            lossUnit = String.valueOf(NumberConstant.ZERO);
         }
         //亏吨<=0
         if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {

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

@@ -45,8 +45,8 @@ import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
-import com.sckw.transport.dao.*;
 import com.sckw.transport.common.enums.OrderTypeEnum;
+import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.param.AcceptCarriageOrderQuery;

+ 121 - 41
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -6,6 +6,8 @@ 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.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -14,6 +16,7 @@ import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.model.enums.OrderRuleEnum;
 import com.sckw.core.model.enums.RedisOrderGenerateEnum;
+import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
@@ -246,9 +249,9 @@ public class LogisticsConsignmentService {
 
 //        commonService.initIatingLogisticsConsignment(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId());
         commonService.newSendLogisticsOrderToMessage(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId(),
-                messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
-                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
-                MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT,MessageEnum.NEW_CARRIAGE_ORDER,"1");
+                messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT, MessageEnum.NEW_CARRIAGE_ORDER, "1");
     }
 
     /**
@@ -679,6 +682,8 @@ public class LogisticsConsignmentService {
         }
         List<LogisticsOrderDTO> returnList = new ArrayList<>();
         stringList = stringList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
+        /**后期分页优化,可以使用此方法*/
+//        PageRes<LogisticsOrderDTO> logisticsOrderListByTradeOrderIds = getLogisticsOrderListByTradeOrderIds(stringList, page, pageSize, type);
         for (String id : stringList) {
             OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(id));
             if (orderDetailRes == null) {
@@ -732,6 +737,64 @@ public class LogisticsConsignmentService {
         return HttpResult.ok(build);
     }
 
+    /**
+     * 贸易订单或者物流订单分页优化代码
+     * @param stringList    贸易订单id集合
+     * @param page  分页数据
+     * @param pageSize  分页条数
+     * @param type  数据类型 1 采购2销售
+     * @return
+     */
+    public PageRes<LogisticsOrderDTO> getLogisticsOrderListByTradeOrderIds(List<String> stringList, Integer page, Integer pageSize, String type) {
+        PageHelper.startPage(page,pageSize);
+        List<Long> returnIds = new ArrayList<>();
+        for (String id : stringList) {
+            OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(id));
+            if (orderDetailRes == null) {
+                continue;
+            }
+            /**
+             * 0销售展示是供应配送  1采购展示是采购自提
+             * 根据提货方式(0供应配送/1采购自提)
+             * 决定托运数据是否展示
+             *
+             */
+            /**销售订单-供应配送的才能看*/
+            /**采购订单-采方自提的才能看*/
+            boolean flag = false;
+            if (String.valueOf(NumberConstant.ZERO).equals(orderDetailRes.getPickupType())) {
+                flag = true;
+                returnIds.add(Long.parseLong(id));
+            }
+        }
+        List<LogisticsOrderDTO> orderDTOList = kwtLogisticsOrderMapper.selectOrderListNotPageByIds(returnIds, type);
+        PageInfo<LogisticsOrderDTO> info = new PageInfo<>(orderDTOList);
+        if (CollectionUtils.isEmpty(orderDTOList)){
+            PageRes<LogisticsOrderDTO> pageRes = new PageRes<>();
+            pageRes.setPage(page);
+            pageRes.setPageSize(pageSize);
+            return pageRes;
+        }
+        /**计量单位*/
+        Map<String, String> unitTypeDictData = commonService.getDictData(DictTypeEnum.UNIT_TYPE.getType());
+        /**运价方式*/
+        Map<String, String> priceDictData = commonService.getDictData(DictTypeEnum.PRICE_TYPE.getType());
+        /**合理损耗*/
+        Map<String, String> taxRateTypeDictData = commonService.getDictData(DictTypeEnum.TAX_RATE_TYPE.getType());
+        for (LogisticsOrderDTO logisticsOrderDTO : orderDTOList) {
+            logisticsOrderDTO.setStatusLabel(LogisticsOrderEnum.getDestination(logisticsOrderDTO.getStatus()));
+            String createName = StringUtils.isBlank(logisticsOrderDTO.getCreateBy()) ? null :
+                    (remoteSystemService.queryUserCacheById(Long.parseLong(logisticsOrderDTO.getCreateBy())) == null ? null :
+                            remoteSystemService.queryUserCacheById(Long.parseLong(logisticsOrderDTO.getCreateBy())).getName());
+            logisticsOrderDTO.setCreateName(createName);
+            logisticsOrderDTO.setPriceLabel(priceDictData.get(logisticsOrderDTO.getPriceType()));
+            logisticsOrderDTO.setLossUnitLabel(taxRateTypeDictData.get(logisticsOrderDTO.getLossUnit()));
+            logisticsOrderDTO.setGoodsPriceUnitLabel(priceDictData.get(logisticsOrderDTO.getGoodsPriceUnit()));
+            logisticsOrderDTO.setUnitLabel(unitTypeDictData.get(logisticsOrderDTO.getUnit()));
+        }
+        return PageRes.build(info,orderDTOList);
+    }
+
     /**
      * 采购订单/销售订单-托运订单列表-下方数据统计
      *
@@ -883,39 +946,60 @@ public class LogisticsConsignmentService {
      * @param pageSize
      * @return
      */
-    public HttpResult purchaseLogisticsCar(String ids, Integer page, Integer pageSize) {
+    public PageRes<OrderCarDTO> purchaseLogisticsCar(String ids, Integer page, Integer pageSize) {
+        PageHelper.startPage(page,pageSize);
         List<String> stringList = StringUtils.splitStrToList(ids, String.class);
         if (CollectionUtils.isEmpty(stringList)) {
-            return HttpResult.ok();
+            PageRes<OrderCarDTO> pageRes = new PageRes<>();
+            pageRes.setPages(page);
+            pageRes.setPageSize(pageSize);
+            return pageRes;
         }
-        List<OrderCarDTO> returnList = new ArrayList<>();
-        stringList = stringList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
-        for (String id : stringList) {
-            List<OrderCarDTO> list = waybillOrderMapper.selectWaybillOrderCarListNotPage(id);
-            List<String> collect = list.stream().map(OrderCarDTO::getTruckNo).distinct().collect(Collectors.toList());
-            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.setStatusLabel(CarWaybillEnum.getName(orderCarDTO.getStatus()));
-                    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);
-            }
+        List<Long> idsList = StringUtils.splitStrToList(ids, Long.class);
+        List<OrderCarDTO> orderCarList = waybillOrderMapper.selectWaybillOrderCarListByTradeOrderId(idsList);
+        PageInfo<OrderCarDTO> info = new PageInfo<>(orderCarList);
+        if (CollectionUtils.isEmpty(orderCarList)){
+            PageRes<OrderCarDTO> pageRes = new PageRes<>();
+            pageRes.setPage(page);
+            pageRes.setPageSize(pageSize);
+            return pageRes;
         }
-        List<OrderCarDTO> subList = new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(returnList)) {
-            subList = returnList.stream().skip((page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
+        List<String> collected = orderCarList.stream().map(OrderCarDTO::getTruckNo).distinct().collect(Collectors.toList());
+        for (OrderCarDTO orderCarDTO : orderCarList) {
+            if (CollectionUtils.isNotEmpty(collected)){
+                Map<String, RTruckVo> truck = remoteFleetService.findTruck(collected);
+                orderCarDTO.setStatusLabel(CarWaybillEnum.getName(orderCarDTO.getStatus()));
+                orderCarDTO.setLoadAmount(truck.get(orderCarDTO.getTruckNo()) == null ?
+                        null : (truck.get(orderCarDTO.getTruckNo()).getActualWeight() == null ?
+                        null : (String.valueOf(truck.get(orderCarDTO.getTruckNo()).getActualWeight()))));
+            }
         }
-        PageResult build = PageResult.build(page, pageSize, returnList.stream().count(), subList);
-        return HttpResult.ok(build);
+        List<OrderCarDTO> returnList = new ArrayList<>();
+        returnList.addAll(orderCarList);
+        return PageRes.build(info,returnList);
+//        stringList = stringList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
+//        for (String id : stringList) {
+//            List<OrderCarDTO> list = waybillOrderMapper.selectWaybillOrderCarListNotPage(id);
+//            List<String> collect = list.stream().map(OrderCarDTO::getTruckNo).distinct().collect(Collectors.toList());
+//            if (CollectionUtils.isNotEmpty(collect)) {
+//                Map<String, RTruckVo> truck = remoteFleetService.findTruck(collect);
+//                for (OrderCarDTO orderCarDTO : list) {
+//                    orderCarDTO.setStatusLabel(CarWaybillEnum.getName(orderCarDTO.getStatus()));
+//                    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);
+//            }
+//        }
+//        List<OrderCarDTO> subList = new ArrayList<>();
+//        if (CollectionUtils.isNotEmpty(returnList)) {
+//            subList = returnList.stream().skip((page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
+//        }
+//        PageResult build = PageResult.build(page, pageSize, returnList.stream().count(), subList);
+//        return HttpResult.ok(build);
     }
 
     //    /**
@@ -955,10 +1039,6 @@ public class LogisticsConsignmentService {
             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.setStatusLabel(CarWaybillEnum.getName(orderCarDTO.getStatus()));
                     orderCarDTO.setLoadAmount(truck.get(orderCarDTO.getTruckNo()) == null ?
                             null : (truck.get(orderCarDTO.getTruckNo()).getActualWeight() == null ?
@@ -1111,8 +1191,8 @@ public class LogisticsConsignmentService {
 //                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
                 commonService.newSendLogisticsOrderToMessage(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
                         kwtLogisticsOrder.getEntId(),
-                        messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
-                        messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                        messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                        messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
                         MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS,
                         "1");
             } else {
@@ -1211,9 +1291,9 @@ public class LogisticsConsignmentService {
 //                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
                 commonService.newSendLogisticsOrderToMessage(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
                         kwtLogisticsOrder.getEntId(),
-                        messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
-                        messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
-                        MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS,"1");
+                        messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                        messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                        MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS, "1");
             } else {
                 result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
                 result.setMsg("操作失败:" + httpResult.getMsg());
@@ -1364,7 +1444,7 @@ public class LogisticsConsignmentService {
         HttpResult result1 = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
         if (result1.getCode() != HttpStatus.SUCCESS_CODE) {
             log.info("采购订单/销售订单完结订单,返回信息:{}", "id:" + logisticsOrder.getTOrderId() + "orderNo" + logisticsOrder.getTOrderNo(), JSONObject.toJSONString(result1));
-            throw new BusinessException("{" + logisticsOrder.getTOrderNo() + "} 采购订单/销售订单完结订单失败!"+result1.getMsg());
+            throw new BusinessException("{" + logisticsOrder.getTOrderNo() + "} 采购订单/销售订单完结订单失败!" + result1.getMsg());
         }
         transportCommonService.closeHandle(logisticsOrder.getId());
         waybillOrderService.cancelSendCar(logisticsOrder.getId());

+ 102 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -109,6 +109,43 @@
     </select>
 
 
+    <select id="selectOrderListNotPageByIds" resultType="com.sckw.transport.model.dto.LogisticsOrderDTO">
+        SELECT a.id               as lOrderId,
+        a.l_order_no       as lOrderNo,
+        b.`status`         as `status`,
+        a.t_order_id       as tOrderId,
+        a.t_order_no       as tOrderNo,
+        a.payment          as payment,
+        a.amount,
+        a.unit             as unit,
+        a.price,
+        a.price_type       as priceType,
+        a.loss,
+        a.loss_unit        AS lossUnit,
+        a.goods_price      as goodsPrice,
+        a.goods_price_unit as goodsPriceUnit,
+        c.firm_name        as companyName,
+        c.contacts,
+        c.phone,
+        a.create_by        as createBy,
+        a.create_time      as createTime
+        FROM kwt_logistics_order a
+        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
+        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
+        WHERE a.del_flag = '0'
+        AND b.del_flag = '0'
+        <if test="type != null and type != ''">
+            AND c.unit_type = #{type}
+        </if>
+        <if test="ids != null and ids.size() > 0">
+            AND a.t_order_id in
+            <foreach collection="ids" separator="," open="(" close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
+        order by createTime desc
+    </select>
+
     <select id="selectOrderListByTradeOrderIds" resultType="com.sckw.transport.model.dto.LogisticsOrderDTO">
         SELECT a.id               as lOrderId,
         a.l_order_no       as lOrderNo,
@@ -431,6 +468,71 @@
             limit #{page}, #{pageSize}
     </select>
 
+    <select id="getSubcontractConsignmentList" resultType="com.sckw.transport.model.vo.SubcontractConsignmentVO">
+        SELECT a.id,
+        a.pid,
+        a.`status` as status,
+        a.l_order_no as consignOrderNo,
+        <!--               a.l_order_no       as carrierOrderNo,-->
+        c.firm_name as carrierCompany,
+        d.goods_name as goodsName,
+        a.amount as carryingCapacity,
+        a.price,
+        a.price_type as priceType,
+        e.detail_address as loadAddress,
+        f.detail_address as unloadAddress,
+        a.billing_mode as billingMode,
+        a.loss,
+        a.loss_unit as lossUnit,
+        a.goods_price as goodsPrice,
+        a.goods_price_unit as goodsPriceUnit,
+        a.settlement_cycle as settlementCycle,
+        c.contacts as carrierContacts,
+        c.phone as carrierPhone,
+        b.firm_name as consignCompany,
+        b.contacts as consignContacts,
+        b.phone as consignPhone,
+        e.contacts as loadContacts,
+        e.phone as loadPhone,
+        f.contacts as unloadContacts,
+        f.phone as unloadPhone,
+        a.start_time as shipmentsDate,
+        a.end_time as receiveGoodsDate,
+        a.remark,
+        a.create_by as createBy,
+        a.create_time as createTime,
+        g.contract_id as contractId,
+        g.contract_no as contractNo,
+        g.contract_name as contractName,
+        g.signing_way as signing,
+        e.city_name as loadCityName,
+        f.city_name as unloadCityName
+        FROM kwt_logistics_order a
+        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
+        AND b.unit_type = 1
+        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
+        AND c.unit_type = 2
+        LEFT JOIN kwt_logistics_order_goods d ON a.id = d.l_order_id
+        LEFT JOIN kwt_logistics_order_address e ON a.id = e.l_order_id
+        AND e.address_type = 1
+        LEFT JOIN kwt_logistics_order_address f ON a.id = f.l_order_id
+        AND f.address_type = 2
+        LEFT JOIN kwt_logistics_order_contract g ON a.id = g.l_order_id
+        WHERE a.del_flag = 0
+        AND b.del_flag = 0
+        AND c.del_flag = 0
+        AND e.del_flag = 0
+        AND f.del_flag = 0
+        <if test="lOrderIds != null and lOrderIds.size() > 0">
+            and a.pid in
+            <foreach collection="lOrderIds" item="item" close=")" open="(" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+        </if>
+<!--        ORDER BY a.id desc-->
+        ORDER BY a.create_time desc
+    </select>
+
     <select id="getSubcontractConsignmentNotPage" resultType="com.sckw.transport.model.vo.SubcontractConsignmentVO">
         SELECT a.id,
         a.pid,

+ 26 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -498,6 +498,32 @@
           and b.t_order_id = #{id,jdbcType=VARCHAR}
     </select>
 
+
+    <select id="selectWaybillOrderCarListByTradeOrderId" resultType="com.sckw.transport.model.dto.OrderCarDTO">
+        SELECT a.id            as wOrderId,
+        a.w_order_no    as wOrderNo,
+        a.driver_id     as driverId,
+        a.driver_name   as driverName,
+        a.driver_phone  as driverPhone,
+        a.driver_idcard as driverCard,
+        a.truck_no      as truckNo,
+        a.status        as status,
+        a.l_order_id    as lOrderId,
+        b.l_order_no    as lOrderNo,
+        b.t_order_id    as tOrderId,
+        b.t_order_no    as tOrderNo
+        FROM kwt_waybill_order a
+        LEFT JOIN kwt_logistics_order b ON a.l_order_id = b.id
+        WHERE a.del_flag = 0
+        and b.del_flag = 0
+        <if test="ids != null and ids.size() > 0">
+            and b.t_order_id in
+            <foreach collection="ids" item="item" close=")" open="(" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+        </if>
+    </select>
+
     <select id="selectWaybillOrderCountByStatus">
         SELECT COUNT(id)
         FROM kwt_waybill_order