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

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

zk 2 лет назад
Родитель
Сommit
4d829f9bc5
14 измененных файлов с 359 добавлено и 77 удалено
  1. 43 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java
  2. 17 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java
  3. 6 1
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java
  4. 19 4
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java
  5. 60 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java
  6. 45 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CreateOrCancelLogisticsOrderParam.java
  7. 2 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  8. 6 7
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  9. 77 34
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java
  10. 3 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java
  11. 7 11
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java
  12. 46 15
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  13. 26 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/ContractParam.java
  14. 2 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

+ 43 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java

@@ -2,6 +2,7 @@ package com.sckw.core.model.page;
 
 import com.github.pagehelper.PageInfo;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -34,6 +35,15 @@ public class PageRes<T> {
     protected List<T> list;
 
     public PageRes() {
+        this.list = new ArrayList<>();
+    }
+
+    public PageRes(int page, int pageSize, long size, int pages, List<T> list) {
+        this.page = page;
+        this.pageSize = pageSize;
+        this.size = size;
+        this.pages = pages;
+        this.list = list;
     }
 
     public PageRes(PageInfo<T> pageInfo) {
@@ -44,6 +54,39 @@ public class PageRes<T> {
         this.list = pageInfo.getList();
     }
 
+    public PageRes(PageInfo<T> pageInfo, List<T> list) {
+        this.page = pageInfo.getPageNum();
+        this.pageSize = pageInfo.getPageSize();
+        this.size = pageInfo.getTotal();
+        this.pages = pageInfo.getPages();
+        this.list = list;
+    }
+
+    public PageRes(List<T> list) {
+        PageInfo<T> pageInfo = new PageInfo<>(list);
+        this.page = pageInfo.getPageNum();
+        this.pageSize = pageInfo.getPageSize();
+        this.size = pageInfo.getTotal();
+        this.pages = pageInfo.getPages();
+        this.list = pageInfo.getList();
+    }
+
+    /**
+     * 构建返回数据
+     * @param pagInfo pageHelper的分页对象
+     * @param list    实际返回的数据集
+     * @return
+     */
+    public static <T> PageRes<T> build(PageInfo<?> pagInfo, List<T> list) {
+        PageRes<T> tPageRes = new PageRes<>();
+        tPageRes.setPage(pagInfo.getPageNum());
+        tPageRes.setPageSize(pagInfo.getPageSize());
+        tPageRes.setSize(pagInfo.getTotal());
+        tPageRes.setPages(pagInfo.getPages());
+        tPageRes.setList(list);
+        return tPageRes;
+    }
+
     public void setPage(int page) {
         this.page = page;
     }

+ 17 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java

@@ -40,6 +40,11 @@ public class DateUtil {
         return LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern));
     }
 
+    /**
+     * 2023-07-14T09:43:40.511+00:00 -> 2023-07-14 09:13:40
+     * @param date
+     * @return
+     */
     public static String getDateTime(Date date) {
         Instant instant = date.toInstant();
         ZoneId zoneId = ZoneId.systemDefault();
@@ -47,6 +52,18 @@ public class DateUtil {
         return localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     }
 
+    /**
+     * data
+     * @param date  Date 时间
+     * @return
+     * @throws ParseException
+     */
+    public static String dateTimeFormatter(Date date){
+        String format = new SimpleDateFormat(DEFAULT_DATE_PATTERN).format(date);
+        return format;
+    }
+
+
     public static String dateToStr(LocalDate date) {
         return dateToStr(date, "yyyy-MM-dd");
     }

+ 6 - 1
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java

@@ -1,12 +1,13 @@
 package com.sckw.mongo.model;
 
-import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -397,6 +398,8 @@ public class SckwLogisticsOrder {
     /**
      * 创建时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
     /**
@@ -412,6 +415,8 @@ public class SckwLogisticsOrder {
     /**
      * 更新时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
     /**

+ 19 - 4
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -1,10 +1,7 @@
 package com.sckw.order.api.dubbo;
 
 import com.sckw.core.web.response.HttpResult;
-import com.sckw.order.api.model.ContractSignCompletedParam;
-import com.sckw.order.api.model.OrderDetailRes;
-import com.sckw.order.api.model.UpdateOrderAmountParam;
-import com.sckw.order.api.model.UpdateOrderStatusParam;
+import com.sckw.order.api.model.*;
 
 /**
  * @desc: 贸易订单信息相关dubbo
@@ -32,6 +29,7 @@ public interface TradeOrderInfoService {
     HttpResult updateOrderStatus(UpdateOrderStatusParam param);
 
     /**
+     * @desc: 已废弃,请用orderAmountUpdate
      * @desc: 更新订单委托量、已履约量
      * @author: yzc
      * @date: 2023-07-18 18:34
@@ -40,6 +38,23 @@ public interface TradeOrderInfoService {
      */
     HttpResult updateOrderAmount(UpdateOrderAmountParam param);
 
+    /**
+     * @desc: 生成或撤销物流订单
+     * @author: yzc
+     * @date: 2023-08-03 10:57
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    HttpResult createOrCancelLogisticsOrder(CreateOrCancelLogisticsOrderParam param);
+    /**
+     * @desc: 完结物流订单
+     * @author: yzc
+     * @date: 2023-08-03 11:11
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    HttpResult completeLogisticsOrder(CompleteLogisticsOrderParam param);
+
     /**
      * @desc: 合同签约完成
      * @author: yzc

+ 60 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java

@@ -0,0 +1,60 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @desc: 更新订单委托量、已履约量
+ * @author: yzc
+ * @date: 2023-08-03 10:52
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class CompleteLogisticsOrderParam implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 8425395587373735142L;
+
+    /**
+     * 订单id
+     */
+    private Long tOrderId;
+
+    /**
+     * 任务量  传负数
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 实装量 传正数
+     */
+    private BigDecimal actualLoadAmount;
+
+    /**
+     * 实卸量  传正数
+     */
+    private BigDecimal actualUnloadAmount;
+
+    /**
+     * 物流订单是否已全部完结
+     */
+    private Boolean isAllComplete;
+
+    /**
+     * 更新用户id 需传,订单状态变化记录需要
+     */
+    private Long updateBy;
+
+    /**
+     * 更新者姓名 需传,订单状态变化记录需要
+     */
+    private String updateByName;
+
+}

+ 45 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CreateOrCancelLogisticsOrderParam.java

@@ -0,0 +1,45 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @desc: 更新订单委托量、已履约量
+ * @author: yzc
+ * @date: 2023-08-03 10:52
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class CreateOrCancelLogisticsOrderParam implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 8425395587373735142L;
+
+    /**
+     * 订单id
+     */
+    private Long tOrderId;
+
+    /**
+     * 任务量  生成物流订单传正数,撤销物流订单传负数
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 更新用户id 需传,订单状态变化记录需要
+     */
+    private Long updateBy;
+
+    /**
+     * 更新者姓名 需传,订单状态变化记录需要
+     */
+    private String updateByName;
+
+}

+ 2 - 3
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java

@@ -17,7 +17,6 @@ import com.sckw.contract.model.dto.res.QueryListResDto;
 import com.sckw.contract.model.entity.KwcContractLogistics;
 import com.sckw.contract.model.entity.KwcContractLogisticsGoods;
 import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
-import com.sckw.contract.model.entity.KwcContractTrade;
 import com.sckw.contract.model.vo.req.*;
 import com.sckw.contract.model.vo.res.*;
 import com.sckw.core.common.enums.enums.DictEnum;
@@ -181,7 +180,7 @@ public class KwcContractLogisticsService {
         contractLogisticsDetailResVo.setId(kwcContractLogistics.getId());
         contractLogisticsDetailResVo.setRemark(kwcContractLogistics.getRemark());
         contractLogisticsDetailResVo.setStatus(kwcContractLogistics.getStatus());
-        contractLogisticsDetailResVo.setStatusName(ContractStatusEnum.getName(kwcContractLogistics.getStatus()).getName());
+        contractLogisticsDetailResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(kwcContractLogistics.getStatus())).getName());
         //基础信息
         List<KwcContractLogisticsUnit> kwcContractLogisticsUnitList = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
         if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnitList)) {
@@ -491,7 +490,7 @@ public class KwcContractLogisticsService {
                 queryListResVo.setInitiateEntName(Objects.isNull(userCacheResDto.getEntInfo()) ? "" : userCacheResDto.getEntInfo().getFirmName());
             }
             queryListResVo.setChargingName(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), String.valueOf(queryListResDto.getCharging())));
-            queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
+            queryListResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(queryListResDto.getStatus())).getName());
             queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), String.valueOf(queryListResDto.getSigningWay())));
             queryListResVo.setPerformedAmount(queryListResDto.getPerformedAmount());
             queryListResVo.setAmount(queryListResDto.getAmount());

+ 6 - 7
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java

@@ -98,7 +98,7 @@ public class KwcContractTradeService {
      * @date: 2023/7/18
      */
     private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos) {
-        Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>();
+        Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>(8);
         List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
         if (CollectionUtils.isNotEmpty(initiateByList)) {
             longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(initiateByList);
@@ -121,7 +121,7 @@ public class KwcContractTradeService {
                 queryListResVo.setInitiateEntName(Objects.isNull(userCacheResDto.getEntInfo()) ? "" : userCacheResDto.getEntInfo().getFirmName());
             }
             queryListResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(queryListResDto.getTrading())));
-            queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
+            queryListResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(queryListResDto.getStatus())).getName());
             queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), String.valueOf(queryListResDto.getSigningWay())));
             queryListResVo.setAmount(queryListResDto.getAmount());
             queryListResVo.setPerformedAmount(new BigDecimal("0"));
@@ -254,7 +254,7 @@ public class KwcContractTradeService {
 
         ContractTradeDetailResVo contractTradeDetailResVo = new ContractTradeDetailResVo();
         contractTradeDetailResVo.setStatus(kwcContractTrade.getStatus());
-        contractTradeDetailResVo.setStatusName(ContractStatusEnum.getName(kwcContractTrade.getStatus()).getName());
+        contractTradeDetailResVo.setStatusName(Objects.requireNonNull(ContractStatusEnum.getName(kwcContractTrade.getStatus())).getName());
         contractTradeDetailResVo.setRemark(kwcContractTrade.getRemark());
 
 
@@ -281,18 +281,17 @@ public class KwcContractTradeService {
 
         //标的信息
         List<KwcContractTradeGoods> kwcContractTradeGoodsList = kwcContractTradeGoodsService.queryGoodsInfoByContractId(id);
-        List<Long> goodsIdList = kwcContractTradeGoodsList.stream().map(KwcContractTradeGoods::getGoodsId).toList();
-        Map<Long, KwpGoods> goodsMap = goodsInfoService.getGoodsByIds(goodsIdList);
+        Map<Long, KwpGoods> goodsMap = new HashMap<>(8);
         if (CollectionUtils.isNotEmpty(kwcContractTradeGoodsList)) {
             List<TradeGoodsInfoResVo> tradeGoodsInfoResVoList = new ArrayList<>();
-
+            List<Long> goodsIdList = kwcContractTradeGoodsList.stream().map(KwcContractTradeGoods::getGoodsId).toList();
+            goodsMap = goodsInfoService.getGoodsByIds(goodsIdList);
             StringBuilder keys = new StringBuilder();
             for (KwcContractTradeGoods item : kwcContractTradeGoodsList) {
                 keys.append(DictTypeEnum.UNIT_TYPE.getType()).append(Global.POUND).append(item.getUnit()).append(Global.COMMA);
             }
             Map<String, SysDictResDto> stringSysDictResDtoMap = remoteSystemService.queryDictMapByTypeValues(keys.toString());
 
-
             for (KwcContractTradeGoods kwcContractTradeGoods : kwcContractTradeGoodsList) {
                 TradeGoodsInfoResVo tradeGoodsInfoResVo = new TradeGoodsInfoResVo();
                 tradeGoodsInfoResVo.setAmount(kwcContractTradeGoods.getAmount());

+ 77 - 34
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -10,10 +10,7 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
-import com.sckw.order.api.model.ContractSignCompletedParam;
-import com.sckw.order.api.model.OrderDetailRes;
-import com.sckw.order.api.model.UpdateOrderAmountParam;
-import com.sckw.order.api.model.UpdateOrderStatusParam;
+import com.sckw.order.api.model.*;
 import com.sckw.order.model.KwoTradeOrder;
 import com.sckw.order.model.KwoTradeOrderContract;
 import com.sckw.order.model.KwoTradeOrderTrack;
@@ -92,19 +89,77 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         SckwTradeOrder updateParam = new SckwTradeOrder();
         updateParam.setTOrderId(order.getId()).setStatus(order.getStatus()).setUpdateBy(param.getUpdateBy())
                 .setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
-        saveMongoDb(3, updateParam);
+        saveMongoDb(updateParam);
         return HttpResult.ok();
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public HttpResult updateOrderAmount(UpdateOrderAmountParam param) {
-        if (Objects.isNull(param.getUpdateBy()) || StringUtils.isBlank(param.getUpdateByName())) {
+        return HttpResult.ok();
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult createOrCancelLogisticsOrder(CreateOrCancelLogisticsOrderParam param) {
+        Long id = param.getTOrderId();
+        BigDecimal entrustAmount = param.getEntrustAmount();
+        Long updateBy = param.getUpdateBy();
+        String updateByName = param.getUpdateByName();
+        if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
             return HttpResult.error("操作人信息不能为空!");
         }
+        if (Objects.isNull(entrustAmount)) {
+            return HttpResult.error("任务量不能为空!");
+        }
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+            return HttpResult.error("业务繁忙,请稍后再试!");
+        }
+        try {
+            KwoTradeOrder order = kwoTradeOrderService.getById(id);
+            if (Objects.isNull(order)) {
+                return HttpResult.error("订单不存在!");
+            }
+            if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
+                return HttpResult.error("执行中的订单才可物流托运!");
+            }
+            BigDecimal totalEntrustAmount = Objects.isNull(order.getEntrustAmount()) ? entrustAmount : entrustAmount.add(order.getEntrustAmount());
+            if (order.getAmount().compareTo(totalEntrustAmount) < 0) {
+                return HttpResult.error("物流已委托总量不可大于订单总量!");
+            }
+            order.setEntrustAmount(totalEntrustAmount).setUpdateBy(param.getUpdateBy());
+            kwoTradeOrderService.updateById(order);
+            //更新mongodb
+            SckwTradeOrder updateParam = new SckwTradeOrder();
+            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount)
+                    .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
+            saveMongoDb(updateParam);
+            return HttpResult.ok();
+        } finally {
+            RedissonUtils.unlock(lockKey);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult completeLogisticsOrder(CompleteLogisticsOrderParam param) {
         Long id = param.getTOrderId();
+        BigDecimal entrustAmount = param.getEntrustAmount();
+        BigDecimal actualLoadAmount = param.getActualLoadAmount();
+        BigDecimal actualUnloadAmount = param.getActualUnloadAmount();
         Long updateBy = param.getUpdateBy();
-        String lockKey = String.format(RedisConstant.GOODS_UPDATE_AMOUNT_KEY, id);
+        String updateByName = param.getUpdateByName();
+        if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
+            return HttpResult.error("操作人信息不能为空!");
+        }
+        if (Objects.isNull(entrustAmount) || Objects.isNull(actualLoadAmount) || Objects.isNull(actualUnloadAmount)) {
+            return HttpResult.error("任务量或装卸量不能为空!");
+        }
+        if (Objects.isNull(param.getIsAllComplete())) {
+            return HttpResult.error("物流订单是否已全部完结不能为空!");
+        }
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
         if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
             return HttpResult.error("业务繁忙,请稍后再试!");
         }
@@ -116,24 +171,15 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
                 return HttpResult.error("执行中的订单才可物流托运!");
             }
-            BigDecimal amount = order.getAmount();
-            BigDecimal addEntrustAmount = order.getEntrustAmount();
-            if (Objects.nonNull(param.getEntrustAmount())) {
-                addEntrustAmount = addEntrustAmount.add(param.getActualAmount());
-                if (amount.compareTo(addEntrustAmount) < 0) {
-                    return HttpResult.error("物流已委托总量不可大于订单总量!");
-                }
-            }
-            BigDecimal addActualAmount = order.getActualAmount();
-            if (Objects.nonNull(param.getActualAmount())) {
-                addActualAmount = addActualAmount.add(param.getActualAmount());
-                if (amount.compareTo(addActualAmount) < 0) {
-                    return HttpResult.error("物流实际交付总量不可大于订单总量!");
-                }
+            BigDecimal totalEntrustAmount = Objects.isNull(order.getEntrustAmount()) ? entrustAmount : order.getEntrustAmount().add(entrustAmount);
+            BigDecimal totalActualAmount;
+            if (Objects.equals(order.getDeliveryType(), DictEnum.DELIVERY_TYPE_0.getValue())) {
+                totalActualAmount = Objects.isNull(order.getActualAmount()) ? actualLoadAmount : order.getActualAmount().add(actualLoadAmount);
+            } else {
+                totalActualAmount = Objects.isNull(order.getActualAmount()) ? actualUnloadAmount : order.getActualAmount().add(actualUnloadAmount);
             }
-            order.setEntrustAmount(addEntrustAmount).setActualAmount(addActualAmount).setUpdateBy(param.getUpdateBy());
-            //已履约量等于订单总量自动完结订单
-            if (amount.compareTo(addActualAmount) == 0) {
+            order.setEntrustAmount(totalEntrustAmount).setActualAmount(totalActualAmount).setUpdateBy(param.getUpdateBy());
+            if (param.getIsAllComplete() && totalActualAmount.compareTo(order.getAmount()) >= 0) {
                 order.setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
                 KwoTradeOrderTrack track = new KwoTradeOrderTrack();
                 track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setStatus(order.getStatus())
@@ -143,13 +189,13 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             kwoTradeOrderService.updateById(order);
             //更新mongodb
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setEntrustAmount(addEntrustAmount).setActualAmount(addActualAmount)
+            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount).setActualAmount(totalActualAmount)
                     .setStatus(order.getStatus()).setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
-            saveMongoDb(3, updateParam);
+            saveMongoDb(updateParam);
+            return HttpResult.ok();
         } finally {
             RedissonUtils.unlock(lockKey);
         }
-        return HttpResult.ok();
     }
 
     @Override
@@ -186,23 +232,20 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             tradeOrders.add(updateParam);
         });
         kwoTradeOrderTrackService.insertBatch(tracks);
-        tradeOrders.forEach(e -> {
-            saveMongoDb(3, e);
-        });
+        tradeOrders.forEach(this::saveMongoDb);
     }
 
     /**
      * @desc: mq保存mongodb
      * @author: yzc
      * @date: 2023-07-17 8:43
-     * @Param method:
      * @Param order:
      * @return: void
      */
-    private void saveMongoDb(Integer method, Object order) {
+    private void saveMongoDb(Object order) {
         SckwBusSum busSum = new SckwBusSum();
         busSum.setBusSumType("tradeOrder");
-        busSum.setMethod(method);
+        busSum.setMethod(3);
         busSum.setObject(order);
         streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
     }

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

@@ -44,6 +44,9 @@ public class GoodsInfoServiceImpl implements GoodsInfoService {
 
     @Override
     public Map<Long, KwpGoods> getGoodsByIds(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return Collections.emptyMap();
+        }
         List<KwpGoods> list = BeanUtils.copyToList(kwpGoodsService.selectByIds(ids), KwpGoods.class);
         if (CollectionUtils.isEmpty(list)) {
             return Collections.emptyMap();

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

@@ -9,6 +9,7 @@ import com.sckw.report.service.KwConsignService;
 import com.sckw.report.service.KwTransportService;
 import com.sckw.report.service.param.AcceptCarriageOrderQuery;
 import com.sckw.report.service.param.ConsignOrderQuery;
+import com.sckw.report.service.param.ContractParam;
 import com.sckw.report.service.param.WaybillOrderQuery;
 import com.sckw.report.service.vo.AcceptCarriageOrderExcelVo;
 import com.sckw.report.service.vo.ConsignOrderExcelVo;
@@ -220,21 +221,16 @@ public class KwTransportController {
     }
 
     /**
-     * 托运合同-根据合同id获取托运订单列表
-     *
-     * @param contractId 合同id
-     * @param page  当前页
-     * @param pageSize  每页条数
+     * 承运合同/托运合同-根据合同id获取托运订单列表
+     * @param contractParam 请求参数
      * @return
      */
-    @RequestMapping(value = "/getLogisticsOrderContract", method = RequestMethod.GET)
-    public HttpResult getLogisticsOrderContract(@RequestParam("contractId") @NotBlank(message = "合同id不能为空") String contractId,
-                                                @RequestParam("page") @NotBlank(message = "分页不能为空") int page,
-                                                @RequestParam("pageSize") @NotBlank(message = "分页条数不能为空") int pageSize) {
+    @RequestMapping(value = "/getLogisticsOrderContract", method = RequestMethod.POST)
+    public HttpResult getLogisticsOrderContract(@Validated @RequestBody ContractParam contractParam) {
         try {
-            return transportService.getLogisticsOrderByContractId(contractId, page, pageSize);
+            return transportService.getLogisticsOrderByContractId(contractParam);
         } catch (Exception e) {
-            log.error("托运合同-根据合同id获取托运订单列表 error:{}", e.getMessage(), e);
+            log.error("承运合同/托运合同-根据合同id获取托运订单列表 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }

+ 46 - 15
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -1,7 +1,6 @@
 package com.sckw.report.service;
 
 import com.sckw.core.common.enums.NumberConstant;
-import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
@@ -16,6 +15,7 @@ import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.report.dao.SckwLogisticsOrderRepository;
+import com.sckw.report.service.param.ContractParam;
 import com.sckw.report.service.param.WaybillOrderQuery;
 import com.sckw.report.service.vo.CarWaybillVo;
 import com.sckw.report.service.vo.WaybillsCountVo;
@@ -447,27 +447,47 @@ public class KwTransportService {
     }
 
     /**
-     * 托运合同-根据合同id获取托运订单列表
+     * 承运合同/托运合同-根据合同id获取托运订单列表
      *
-     * @param contractId 合同id
-     * @param page       当前页
-     * @param pageSize   每页条数
+     * @param contractParam
      * @return
      */
-    public HttpResult getLogisticsOrderByContractId(String contractId, int page, int pageSize) {
+    public HttpResult getLogisticsOrderByContractId(ContractParam contractParam) {
+        HttpResult result = new HttpResult();
+        if (String.valueOf(NumberConstant.ONE).equals(contractParam.getContractType())) {
+            result = getLogisticsOrderContract(contractParam);
+        } else if (String.valueOf(NumberConstant.ONE).equals(contractParam.getContractType())) {
+            result = getLogisticsOrderContract(contractParam);
+        } else {
+            return HttpResult.error("合同类型错误");
+        }
+        return result;
+    }
+
+    private HttpResult getLogisticsOrderContract(ContractParam contractParam) {
+        String contractIds = contractParam.getContractIds();
+        int page = contractParam.getPage();
+        int pageSize = contractParam.getPageSize();
         //模糊匹配
         //根据条件查询所有并排序,且分页
         //设置模糊查询匹配规则  忽略大小写
         // 创建条件对象
         Criteria criteria = new Criteria();
-        // 1. 全等于
-        if (StringUtils.isBlank(contractId)) {
-            return HttpResult.error("合同id为空");
-        } else {
-            criteria.and("contractId").is(contractId);
-        }
+        List<String> stringList = StringUtils.splitStrToList(contractIds, String.class);
         criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
         Query query1 = new Query(criteria);
+        // 1. 模糊查询
+        if (CollectionUtils.isNotEmpty(stringList)) {
+            query1.addCriteria(Criteria.where("contractId").in(stringList));
+        } else {
+            PageResult build = PageResult.build(page, pageSize, 0L, null);
+            return HttpResult.ok(build);
+        }
+//        if (StringUtils.isBlank(contractIds)) {
+//            return HttpResult.error("合同id为空");
+//        } else {
+//            criteria.and("contractId").is(contractIds);
+//        }
         // 12. 总记录数
         long total = mongoTemplate.count(query1, SckwLogisticsOrder.class);
         // 10. 分页
@@ -491,13 +511,24 @@ public class KwTransportService {
                 logisticsOrder.setBillingModeLabel(sysDictResDto1.getLabel());
             }
             logisticsOrder.setStatusLabel(LogisticsOrderEnum.getDestination(logisticsOrder.getStatus()));
+//            logisticsOrder.setCreateTime(DateUtil.offsetDay(logisticsOrder.getCreateTime()))
         }
-        PageResult build = PageResult.build(page, pageSize, total, list);
+//        Map<String, List<SckwLogisticsOrder>> atomMap = list.stream().collect(Collectors.groupingBy(SckwLogisticsOrder::getContractId,Collectors.(
+//                        Comparator.comparing(SckwLogisticsOrder::getContractId).reversed())));
+
+        Map<String, List<SckwLogisticsOrder>> collect = list.stream().collect(Collectors.groupingBy(SckwLogisticsOrder::getContractId, Collectors.toList()));
+        List<SckwLogisticsOrder> returnList = new ArrayList<>();
+        for (List<SckwLogisticsOrder> value : collect.values()) {
+            returnList.addAll(value);
+        }
+//        PageResult build = PageResult.build(page, pageSize, total, list);
+        PageResult build = PageResult.build(page, pageSize, total, returnList);
         return HttpResult.ok(build);
     }
 
     /**
      * 运单管理-运单列表 运单地址查询接口
+     *
      * @param type
      * @return
      */
@@ -507,12 +538,12 @@ public class KwTransportService {
         criteria.and("delFlag").is(NumberConstant.ZERO);
         Query query = new Query(criteria);
         String field;
-        if(type == NumberConstant.ONE) {
+        if (type == NumberConstant.ONE) {
             field = "loadCityCode";
         } else {
             field = "unloadCityCode";
         }
-        List<Integer> list  = mongoTemplate.findDistinct(query, field ,SckwWaybillOrder.class, Integer.class);
+        List<Integer> list = mongoTemplate.findDistinct(query, field, SckwWaybillOrder.class, Integer.class);
         List<AreaTreeFrontResDto> areaTreeFrontResDtos = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list)) {
             areaTreeFrontResDtos = remoteSystemService.queryAreaTreeFrontByCodeList(list);

+ 26 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/ContractParam.java

@@ -0,0 +1,26 @@
+package com.sckw.report.service.param;
+
+import com.sckw.core.model.page.PageRequest;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * @author lfdc
+ * @description 合同查询列表param
+ * @date 2023-08-03 13:08:51
+ */
+@Data
+public class ContractParam extends PageRequest {
+
+    /**
+     * 合同id  “,”隔开
+     */
+    @NotBlank(message = "合同ids不能为空")
+    private String contractIds;
+    /**
+     * 类型 1 托运合同 2 承运合同
+     */
+    @NotBlank(message = "托运合同不能为空")
+    private String contractType;
+
+}

+ 2 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

@@ -165,9 +165,9 @@ public class OrderListRes {
      */
     private String remark;
     /**
-     * 创建人
+     * 创建人e
      */
-    private String creatByName;
+    private String createByName;
     /**
      * 创建时间
      */