Sfoglia il codice sorgente

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

zk 2 anni fa
parent
commit
66d033cf8d
21 ha cambiato i file con 358 aggiunte e 292 eliminazioni
  1. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  2. 95 2
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java
  3. 4 0
      sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/constant/RedisConstant.java
  4. 1 1
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwSmsHandlerService.java
  5. 43 29
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java
  6. 5 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderGoods.java
  7. 0 5
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/CompleteOrderParam.java
  8. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  9. 2 2
      sckw-modules/sckw-order/src/main/resources/bootstrap-dev.yml
  10. 2 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java
  11. 22 19
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/GoodsListExport.java
  12. 39 75
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  13. 57 67
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  14. 3 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExport.java
  15. 3 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  16. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  17. 4 12
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddOrderDTO.java
  18. 6 9
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsConsignmentParam.java
  19. 48 41
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  20. 14 23
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  21. 3 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java

@@ -16,7 +16,7 @@ public enum DictTypeEnum {
     UNIT_TYPE("unit_type", "商品单位类型"),
     TAX_RATE("tax_rate", "商品税率"),
     PRICE_TYPE("price_type", "运价方式"),
-    TRADE_TYPE("trade_type", "交易方式"),
+    TRADE_TYPE("trade_type", "支付方式"),
     PICKUP_TYPE("pickup_type", "提货方式"),
     DELIVERY_TYPE("delivery_type", "交付类型"),
     TORDER_SOURCE("tOrder_source", "交易订单来源"),

+ 95 - 2
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java

@@ -1,6 +1,7 @@
 package com.sckw.excel.utils;
 
 
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.StringUtils;
 
 import java.text.ParseException;
@@ -42,6 +43,7 @@ public class DateUtil {
 
     /**
      * 2023-07-14T09:43:40.511+00:00 -> 2023-07-14 09:13:40
+     *
      * @param date
      * @return
      */
@@ -54,11 +56,12 @@ public class DateUtil {
 
     /**
      * data
-     * @param date  Date 时间
+     *
+     * @param date Date 时间
      * @return
      * @throws ParseException
      */
-    public static String dateTimeFormatter(Date date){
+    public static String dateTimeFormatter(Date date) {
         String format = new SimpleDateFormat(DEFAULT_DATE_PATTERN).format(date);
         return format;
     }
@@ -120,6 +123,80 @@ public class DateUtil {
         return LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyyMMdd"));
     }
 
+
+    /**
+     * @param time yyyy-MM-dd
+     * @return String yyyy-MM-dd HH:mm:ss
+     * @throws RuntimeException
+     */
+    public static String fillStart(String time) {
+        formatCheck(time);
+        return time + " 00:00:00";
+    }
+
+    @SuppressWarnings("all")
+    private static void formatCheck(String time) {
+        try {
+            LocalDate.parse(time, YYYY_MM_DD);
+        } catch (Exception e) {
+            throw new BusinessException("时间格式化错误!");
+        }
+    }
+
+    /**
+     * yyyy-MM-dd 转换成 Date
+     *
+     * @param str
+     * @return
+     */
+    public static Date stringToDateTime(String str) {
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
+        Date date = null;
+        try {
+            date = simpleDateFormat1.parse(str);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        return date;
+    }
+
+    /**
+     * yyyy-MM-dd 转换成 Date
+     *
+     * @param str
+     * @return
+     */
+    public static Date stringPatchingStartToDateTime(String str) {
+        str = str + " 00:00:00";
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
+        Date date = null;
+        try {
+            date = simpleDateFormat1.parse(str);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        return date;
+    }
+
+    /**
+     * yyyy-MM-dd 转换成 Date
+     *
+     * @param str
+     * @return
+     */
+    public static Date stringPatchingEndToDateTime(String str) {
+        str = str + " 23:59:59";
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
+        Date date = null;
+        try {
+            date = simpleDateFormat1.parse(str);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        return date;
+    }
+
+
     /**
      * 日期字符串转换为LocalDateTime方法
      *
@@ -266,6 +343,14 @@ public class DateUtil {
         return Duration.between(startDateLocalDateTime, endDateLocalDateTime);
     }
 
+    /**
+     * 自定义 字符串转date
+     *
+     * @param dateStr
+     * @param pattern
+     * @return
+     * @throws ParseException
+     */
     public static Date strToDate(String dateStr, String pattern) throws ParseException {
         SimpleDateFormat dateFormat = new SimpleDateFormat();
         if (pattern != null && !pattern.isEmpty()) {
@@ -276,6 +361,14 @@ public class DateUtil {
         return date;
     }
 
+    public static void main(String[] args) {
+        String s = "2023-12-12";
+        Date date = DateUtil.stringPatchingStartToDateTime(s);
+        Date date1 = DateUtil.stringPatchingEndToDateTime(s);
+        System.out.println(date);
+        System.out.println(date1);
+    }
+
     public static int getCurrentMonthDays() {
         Calendar calendar = Calendar.getInstance();
         calendar.set(5, 1);

+ 4 - 0
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/constant/RedisConstant.java

@@ -33,6 +33,10 @@ public class RedisConstant {
      * 更新贸易订单委托量、已履约量锁key
      */
     public static final String TORDER_UPDATE_AMOUNT_KEY = "sckw:trade:order:update:amount:%s";
+    /**
+     * 合同签约完成更新贸易订单状态锁key
+     */
+    public static final String TORDER_CONTRACT_UPDATE_KEY = "sckw:trade:order:contract:update:%s";
 
     /**
      * 消费请求有效时间(秒)

+ 1 - 1
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwSmsHandlerService.java

@@ -35,7 +35,7 @@ public class SckwSmsHandlerService {
         String type = sckwSms.getType();
         String phone = sckwSms.getPhone();
         String requestKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY, type, phone);
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(requestKey, 10L, 30L))) {
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(requestKey, 5L, 10L))) {
             log.info("获取发送短信锁失败,不处理");
             return;
         }

+ 43 - 29
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -58,6 +58,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult updateOrderStatus(UpdateOrderStatusParam param) {
+        log.info("更新订单状态入参:{}", JSON.toJSONString(param));
         if (Objects.isNull(param.getUpdateBy()) || StringUtils.isBlank(param.getUpdateByName())) {
             return HttpResult.error("操作人信息不能为空!");
         }
@@ -102,6 +103,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult createOrCancelLogisticsOrder(CreateOrCancelLogisticsOrderParam param) {
+        log.info("生成或撤销物流订单入参:{}", JSON.toJSONString(param));
         Long id = param.getTOrderId();
         BigDecimal entrustAmount = param.getEntrustAmount();
         Long updateBy = param.getUpdateBy();
@@ -113,7 +115,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             return HttpResult.error("任务量不能为空!");
         }
         String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
             return HttpResult.error("业务繁忙,请稍后再试!");
         }
         try {
@@ -135,15 +137,16 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount)
                     .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
             saveMongoDb(updateParam);
-            return HttpResult.ok();
         } finally {
             RedissonUtils.unlock(lockKey);
         }
+        return HttpResult.ok();
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult completeLogisticsOrder(CompleteLogisticsOrderParam param) {
+        log.info("物流订单完结入参:{}", JSON.toJSONString(param));
         Long id = param.getTOrderId();
         BigDecimal entrustAmount = param.getEntrustAmount();
         BigDecimal actualLoadAmount = param.getActualLoadAmount();
@@ -160,7 +163,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             return HttpResult.error("物流订单是否已全部完结不能为空!");
         }
         String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
             return HttpResult.error("业务繁忙,请稍后再试!");
         }
         try {
@@ -192,47 +195,58 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount).setActualAmount(totalActualAmount)
                     .setStatus(order.getStatus()).setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
             saveMongoDb(updateParam);
-            return HttpResult.ok();
         } finally {
             RedissonUtils.unlock(lockKey);
         }
+        return HttpResult.ok();
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void contractSignCompleted(ContractSignCompletedParam param) {
+        log.info("合同签约完成入参:{}", JSON.toJSONString(param));
         if (Objects.isNull(param.getUpdateBy()) || StringUtils.isBlank(param.getUpdateByName())) {
             throw new BusinessException("操作人信息不能为空!");
         }
         Long contractId = param.getContractId();
         Long updateBy = param.getUpdateBy();
-        List<KwoTradeOrderContract> contracts = kwoTradeOrderContractService.getByContractId(contractId);
-        if (CollectionUtils.isEmpty(contracts)) {
-            log.info("合同:{}无相关联待签约的贸易订单", contractId);
-            return;
+
+        String lockKey = String.format(RedisConstant.TORDER_CONTRACT_UPDATE_KEY, param.getContractId());
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
+            throw new BusinessException("业务繁忙,请稍后再试!");
         }
-        List<Long> tOrderIds = contracts.stream().map(KwoTradeOrderContract::getTOrderId).toList();
-        List<KwoTradeOrder> orders = kwoTradeOrderService.getWaitSignByIds(tOrderIds);
-        if (CollectionUtils.isEmpty(orders)) {
-            log.info("合同:{}无相关联待签约的贸易订单", contractId);
-            return;
+        try {
+            List<KwoTradeOrderContract> contracts = kwoTradeOrderContractService.getByContractId(contractId);
+            if (CollectionUtils.isEmpty(contracts)) {
+                log.info("合同:{}无相关联待签约的贸易订单", contractId);
+                return;
+            }
+            List<Long> tOrderIds = contracts.stream().map(KwoTradeOrderContract::getTOrderId).toList();
+            List<KwoTradeOrder> orders = kwoTradeOrderService.getWaitSignByIds(tOrderIds);
+            if (CollectionUtils.isEmpty(orders)) {
+                log.info("合同:{}无相关联待签约的贸易订单", contractId);
+                return;
+            }
+            List<KwoTradeOrderTrack> tracks = Lists.newArrayList();
+            List<SckwTradeOrder> tradeOrders = Lists.newArrayList();
+            List<Long> ids = orders.stream().map(KwoTradeOrder::getId).toList();
+
+            kwoTradeOrderService.contractCompletedUpdate(ids, updateBy);
+            orders.forEach(e -> {
+                KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+                track.setTOrderId(e.getId()).setTOrderNo(e.getTOrderNo()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
+                        .setCreateBy(updateBy).setUpdateBy(updateBy);
+                tracks.add(track);
+                SckwTradeOrder updateParam = new SckwTradeOrder();
+                updateParam.setTOrderId(e.getId()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
+                        .setUpdateBy(updateBy).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
+                tradeOrders.add(updateParam);
+            });
+            kwoTradeOrderTrackService.insertBatch(tracks);
+            tradeOrders.forEach(this::saveMongoDb);
+        } finally {
+            RedissonUtils.unlock(lockKey);
         }
-        List<KwoTradeOrderTrack> tracks = Lists.newArrayList();
-        List<SckwTradeOrder> tradeOrders = Lists.newArrayList();
-        List<Long> ids = orders.stream().map(KwoTradeOrder::getId).toList();
-        kwoTradeOrderService.contractCompletedUpdate(ids, updateBy);
-        orders.forEach(e -> {
-            KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-            track.setTOrderId(e.getId()).setTOrderNo(e.getTOrderNo()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
-                    .setCreateBy(updateBy).setUpdateBy(updateBy);
-            tracks.add(track);
-            SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(e.getId()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_4.getValue()))
-                    .setUpdateBy(updateBy).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
-            tradeOrders.add(updateParam);
-        });
-        kwoTradeOrderTrackService.insertBatch(tracks);
-        tradeOrders.forEach(this::saveMongoDb);
     }
 
     /**

+ 5 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderGoods.java

@@ -40,6 +40,11 @@ public class KwoTradeOrderGoods extends BaseModel implements Serializable {
      */
     private Long goodsId;
 
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+
     /**
      * sku
      */

+ 0 - 5
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/CompleteOrderParam.java

@@ -26,11 +26,6 @@ public class CompleteOrderParam {
     @DecimalMin(value = "0.00",message = "实际交付量最小为零")
     private BigDecimal actualAmount;
 
-    /**
-     * 已委托量
-     */
-    private BigDecimal entrustAmount;
-
     @Length(max = 200, message = "备注最多200字")
     private String remark;
 

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

@@ -779,7 +779,7 @@ public class KwoTradeOrderService {
             throw new BusinessException("无订单操作权限!");
         }
         String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, param.getId());
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
             throw new BusinessException("业务繁忙,请稍后再试!");
         }
         try {

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

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

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

@@ -44,6 +44,7 @@ public class GoodsInfoServiceImpl implements GoodsInfoService {
 
     @Override
     public Map<Long, KwpGoods> getGoodsByIds(List<Long> ids) {
+        log.info("批量获取商品基本信息,ids:{}", ids);
         if (CollectionUtils.isEmpty(ids)) {
             return Collections.emptyMap();
         }
@@ -56,6 +57,7 @@ public class GoodsInfoServiceImpl implements GoodsInfoService {
 
     @Override
     public HttpResult updateGoodsAmount(Long id, BigDecimal amount) {
+        log.info("更新商品库存id:{},amount:{}", id, amount);
         String lockKey = String.format(RedisConstant.GOODS_UPDATE_AMOUNT_KEY, id);
         if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
             return HttpResult.error("业务繁忙,请稍后再试!");

+ 22 - 19
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/GoodsListExport.java

@@ -21,61 +21,64 @@ public class GoodsListExport implements Serializable {
     @Serial
     private static final long serialVersionUID = 6833195135537265912L;
 
-    @ExcelProperty(value = "上架状态", index = 0)
+    @ExcelProperty(value = "序号" )
+    private String serialNumber;
+
+    @ExcelProperty(value = "上架状态")
     private String statusLabel;
 
-    @ExcelProperty(value = "商品名称", index = 1)
+    @ExcelProperty(value = "商品名称")
     private String name;
 
-    @ExcelProperty(value = "商品类别", index = 2)
+    @ExcelProperty(value = "商品类别")
     private String goodsTypeLabel;
 
-    @ExcelProperty(value = "计量单位", index = 3)
+    @ExcelProperty(value = "计量单位")
     private String unitLabel;
 
-    @ExcelProperty(value = "规格尺寸", index = 4)
+    @ExcelProperty(value = "规格尺寸")
     private String spec;
 
-    @ExcelProperty(value = "发票税率", index = 5)
+    @ExcelProperty(value = "发票税率")
     private String taxRateLabel;
 
-    @ExcelProperty(value = "库存数量", index = 6)
+    @ExcelProperty(value = "库存数量")
     private String amount;
 
-    @ExcelProperty(value = "交易方式", index = 7)
+    @ExcelProperty(value = "交易方式")
     private String tradingLabel;
 
-    @ExcelProperty(value = "最低单价", index = 8)
+    @ExcelProperty(value = "最低单价")
     private String highestPrice;
 
-    @ExcelProperty(value = "最高单价", index = 9)
+    @ExcelProperty(value = "最高单价")
     private String lowestPrice;
 
-    @ExcelProperty(value = "仓储地址", index = 10)
+    @ExcelProperty(value = "仓储地址")
     private String address;
 
-    @ExcelProperty(value = "客户经理", index = 11)
+    @ExcelProperty(value = "客户经理")
     private String manageName;
 
-    @ExcelProperty(value = "联系电话", index = 12)
+    @ExcelProperty(value = "联系电话")
     private String phone;
 
-    @ExcelProperty(value = "上架时间", index = 13)
+    @ExcelProperty(value = "上架时间")
     private String addedTime;
 
-    @ExcelProperty(value = "下架时间", index = 14)
+    @ExcelProperty(value = "下架时间")
     private String shelfTime;
 
-    @ExcelProperty(value = "供应企业", index = 15)
+    @ExcelProperty(value = "供应企业")
     private String supplyEnt;
 
-    @ExcelProperty(value = "创建人", index = 16)
+    @ExcelProperty(value = "创建人")
     private String createByName;
 
-    @ExcelProperty(value = "创建时间", index = 17)
+    @ExcelProperty(value = "创建时间")
     private String createTime;
 
-    @ExcelProperty(value = "备注", index = 18)
+    @ExcelProperty(value = "备注")
     private String remark;
 
 }

+ 39 - 75
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -42,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -105,8 +106,7 @@ public class KwpGoodsService {
         //添加商品信息
         KwpGoods goods = BeanUtils.copyProperties(addGoodsParam, KwpGoods.class);
         Integer cityCode = addGoodsParam.getAddressInfo().getCityCode();
-        goods.setCode(NumberUtils.createRandomVcode()).setAreaCode(cityCode).setEntId(entId)
-                .setAddedTime(new Date()).setStatus(GoodsStatusEnum.PUT_ON_SHELVES.getCode());
+        goods.setCode(NumberUtils.createRandomVcode()).setAreaCode(cityCode).setEntId(entId).setAddedTime(new Date()).setStatus(GoodsStatusEnum.PUT_ON_SHELVES.getCode());
         kwpGoodsMapper.insert(goods);
         addGoodsOtherInfo(goods.getId(), addGoodsParam);
     }
@@ -189,11 +189,7 @@ public class KwpGoodsService {
         if (Objects.nonNull(managerInfo)) {
             detail.setManagerName(managerInfo.getName()).setManagerPhone(managerInfo.getPhone());
         }
-        detail.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), detail.getGoodsType()))
-                .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), detail.getTrading()))
-                .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), detail.getUnit()))
-                .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), detail.getTaxRate()))
-                .setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(detail.getStatus())));
+        detail.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), detail.getGoodsType())).setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), detail.getTrading())).setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), detail.getUnit())).setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), detail.getTaxRate())).setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(detail.getStatus())));
         //商品图片信息
         List<KwpGoodsImage> goodsImages = kwpGoodsImageService.getByGoodsId(id);
         List<GoodsImagesDetail> images = BeanUtils.copyToList(goodsImages, GoodsImagesDetail.class);
@@ -228,11 +224,9 @@ public class KwpGoodsService {
         if (Objects.isNull(goods)) {
             throw new BusinessException("当前商品不存在!");
         }
-        if (Objects.equals(goods.getStatus(), GoodsStatusEnum.PUT_ON_SHELVES.getCode())
-                || Objects.equals(goods.getStatus(), GoodsStatusEnum.TAKE_OFF_SHELVES.getCode())) {
+        if (Objects.equals(goods.getStatus(), GoodsStatusEnum.PUT_ON_SHELVES.getCode()) || Objects.equals(goods.getStatus(), GoodsStatusEnum.TAKE_OFF_SHELVES.getCode())) {
             judgeParameters(param);
-            if (Objects.equals(goods.getStatus(), GoodsStatusEnum.PUT_ON_SHELVES.getCode()) &&
-            goods.getAmount().compareTo(param.getAmount()) != 0) {
+            if (Objects.equals(goods.getStatus(), GoodsStatusEnum.PUT_ON_SHELVES.getCode()) && goods.getAmount().compareTo(param.getAmount()) != 0) {
                 throw new BusinessException("上架商品不可修改库存数量!");
             }
         }
@@ -435,11 +429,9 @@ public class KwpGoodsService {
             }
         });
         //地址信息
-        Map<Long, KwpGoodsAddress> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds)
-                .stream().collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, e -> e, (k1, k2) -> k1));
+        Map<Long, KwpGoodsAddress> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds).stream().collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, e -> e, (k1, k2) -> k1));
         //价格梯度信息
-        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds)
-                .stream().collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
+        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds).stream().collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
         //用户信息
         List<UserCacheResDto> userList = remoteSystemService.queryUserCacheByIds(userIds);
         Map<Long, UserCacheResDto> userMap = userList.stream().collect(Collectors.toMap(UserCacheResDto::getId, e -> e, (k1, k2) -> k1));
@@ -454,19 +446,9 @@ public class KwpGoodsService {
             GoodsList goodsList = BeanUtils.copyProperties(e, GoodsList.class);
             UserCacheResDto manager = userMap.get(e.getManager());
             UserCacheResDto createUser = userMap.get(e.getCreateBy());
-            goodsList.setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(goodsList.getStatus())))
-                    .setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), goodsList.getGoodsType()))
-                    .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), goodsList.getUnit()))
-                    .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), goodsList.getTrading()))
-                    .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), goodsList.getTaxRate()))
-                    .setManageName(Objects.nonNull(manager) ? manager.getName() : null)
-                    .setPhone(Objects.nonNull(manager) ? manager.getPhone() : null)
-                    .setSupplyEnt(Objects.nonNull(entMap.get(e.getSupplyEntId())) ? entMap.get(e.getSupplyEntId()) : null)
-                    .setAddress(Objects.isNull(addressMap.get(id)) ? null : addressMap.get(id).getName())
-                    .setCreateByName(Objects.nonNull(createUser) ? createUser.getName() : null);
+            goodsList.setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(goodsList.getStatus()))).setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), goodsList.getGoodsType())).setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), goodsList.getUnit())).setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), goodsList.getTrading())).setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), goodsList.getTaxRate())).setManageName(Objects.nonNull(manager) ? manager.getName() : null).setPhone(Objects.nonNull(manager) ? manager.getPhone() : null).setSupplyEnt(Objects.nonNull(entMap.get(e.getSupplyEntId())) ? entMap.get(e.getSupplyEntId()) : null).setAddress(Objects.isNull(addressMap.get(id)) ? null : addressMap.get(id).getName()).setCreateByName(Objects.nonNull(createUser) ? createUser.getName() : null);
             List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(id);
-            goodsList.setHighestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(priceRanges.size() - 1).getPrice())
-                    .setLowestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice());
+            goodsList.setHighestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(priceRanges.size() - 1).getPrice()).setLowestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice());
             result.add(goodsList);
         });
         return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), result);
@@ -488,9 +470,7 @@ public class KwpGoodsService {
             if (Objects.nonNull(params.getEndCreateTime())) {
                 wrapper.le(KwpGoods::getCreateTime, DateUtil.offsetDay(params.getEndCreateTime(), 1));
             }
-            wrapper.ge(Objects.nonNull(params.getStartCreateTime()), KwpGoods::getCreateTime, params.getStartCreateTime())
-                    .eq(StringUtils.isNotBlank(params.getTrading()), KwpGoods::getTrading, params.getTrading())
-                    .eq(Objects.nonNull(params.getStatus()) && isPage, KwpGoods::getStatus, params.getStatus());
+            wrapper.ge(Objects.nonNull(params.getStartCreateTime()), KwpGoods::getCreateTime, params.getStartCreateTime()).eq(StringUtils.isNotBlank(params.getTrading()), KwpGoods::getTrading, params.getTrading()).eq(Objects.nonNull(params.getStatus()) && isPage, KwpGoods::getStatus, params.getStatus());
             if (StringUtils.isNotBlank(params.getGoodsType()) && StringUtils.isNotBlank(params.getGoodsTypeValue())) {
                 List<SysDictResDto> goodsTypeList = remoteSystemService.queryDictBottom(params.getGoodsType(), params.getGoodsTypeValue());
                 if (CollectionUtils.isNotEmpty(goodsTypeList)) {
@@ -565,9 +545,12 @@ public class KwpGoodsService {
             return Collections.emptyList();
         }
         List<GoodsListExport> list = new ArrayList<>();
+        AtomicInteger i = new AtomicInteger(1);
         goodsLists.forEach(e -> {
             GoodsListExport export = BeanUtils.copyProperties(e, GoodsListExport.class);
-            export.setHighestPrice(Objects.isNull(e.getHighestPrice()) ? null : String.valueOf(e.getHighestPrice()))
+            export.setSerialNumber(String.valueOf(i.getAndIncrement()))
+                    .setAmount(Objects.isNull(e.getAmount()) ? null : String.valueOf(e.getAmount()))
+                    .setHighestPrice(Objects.isNull(e.getHighestPrice()) ? null : String.valueOf(e.getHighestPrice()))
                     .setLowestPrice(Objects.isNull(e.getLowestPrice()) ? null : String.valueOf(e.getLowestPrice()))
                     .setAddedTime(Objects.isNull(e.getAddedTime()) ? null : DateUtil.getDateTime(e.getAddedTime()))
                     .setShelfTime(Objects.isNull(e.getShelfTime()) ? null : DateUtil.getDateTime(e.getShelfTime()))
@@ -587,8 +570,7 @@ public class KwpGoodsService {
      */
     public void batchPutOnShelves(Long id) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getEntId, LoginUserHolder.getEntId())
-                .eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
+        wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
         KwpGoods goods = kwpGoodsMapper.selectOne(wrapper);
         if (Objects.isNull(goods)) {
             throw new BusinessException("商品不存在!");
@@ -605,8 +587,7 @@ public class KwpGoodsService {
             judgeParameters(updateParam);
         }
         LambdaUpdateWrapper<KwpGoods> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.set(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).set(KwpGoods::getAddedTime, new Date())
-                .eq(KwpGoods::getId, id);
+        updateWrapper.set(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).set(KwpGoods::getAddedTime, new Date()).eq(KwpGoods::getId, id);
         kwpGoodsMapper.update(null, updateWrapper);
     }
 
@@ -620,15 +601,13 @@ public class KwpGoodsService {
      */
     public void batchTakeOffShelves(List<Long> ids) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(KwpGoods::getId, ids).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode())
-                .eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO);
+        wrapper.in(KwpGoods::getId, ids).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO);
         List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
         if (!Objects.equals(ids.size(), list.size())) {
             throw new BusinessException("下架操作仅针对“已上架”状态的单据");
         }
         LambdaUpdateWrapper<KwpGoods> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.set(KwpGoods::getStatus, GoodsStatusEnum.TAKE_OFF_SHELVES.getCode()).set(KwpGoods::getShelfTime, new Date())
-                .in(KwpGoods::getId, ids);
+        updateWrapper.set(KwpGoods::getStatus, GoodsStatusEnum.TAKE_OFF_SHELVES.getCode()).set(KwpGoods::getShelfTime, new Date()).in(KwpGoods::getId, ids);
         kwpGoodsMapper.update(null, updateWrapper);
     }
 
@@ -642,8 +621,7 @@ public class KwpGoodsService {
     @Transactional(rollbackFor = Exception.class)
     public void batchDelete(List<Long> ids) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(KwpGoods::getId, ids).in(KwpGoods::getStatus, 0, 2)
-                .eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO);
+        wrapper.in(KwpGoods::getId, ids).in(KwpGoods::getStatus, 0, 2).eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO);
         List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
         if (!Objects.equals(ids.size(), list.size())) {
             throw new BusinessException("删除操作仅针对“已下架”“草稿”状态的单据");
@@ -676,8 +654,7 @@ public class KwpGoodsService {
                 wrapper.in(KwpGoods::getGoodsType, goodsTypes);
             }
         }
-        wrapper.in(CollectionUtils.isNotEmpty(params.getTradings()), KwpGoods::getTrading, params.getTradings())
-                .eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).eq(KwpGoods::getDelFlag, Global.NO);
+        wrapper.in(CollectionUtils.isNotEmpty(params.getTradings()), KwpGoods::getTrading, params.getTradings()).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).eq(KwpGoods::getDelFlag, Global.NO);
         if (Objects.nonNull(params.getAreaCode()) && Objects.nonNull(params.getAreaLevel())) {
             switch (params.getAreaLevel()) {
                 case 1 ->
@@ -710,11 +687,9 @@ public class KwpGoodsService {
             supplyEntIds.add(e.getSupplyEntId());
         });
         //地址信息
-        Map<Long, KwpGoodsAddress> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds)
-                .stream().collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, e -> e, (k1, k2) -> k1));
+        Map<Long, KwpGoodsAddress> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds).stream().collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, e -> e, (k1, k2) -> k1));
         //价格梯度信息
-        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds)
-                .stream().collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
+        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds).stream().collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
         //供应企业信息
         List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
         Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
@@ -723,13 +698,7 @@ public class KwpGoodsService {
             BuildingMaterialsMarketList materials = BeanUtils.copyProperties(e, BuildingMaterialsMarketList.class);
             KwpGoodsAddress address = addressMap.get(e.getId());
             List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(e.getId());
-            materials.setAddressName(Objects.isNull(address) ? null : address.getCityName())
-                    .setDetailAddress(Objects.isNull(address) ? null : address.getDetailAddress())
-                    .setPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice())
-                    .setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType()))
-                    .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
-                    .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), e.getUnit()))
-                    .setSupplyEnt(entMap.get(e.getSupplyEntId()));
+            materials.setAddressName(Objects.isNull(address) ? null : address.getCityName()).setDetailAddress(Objects.isNull(address) ? null : address.getDetailAddress()).setPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice()).setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType())).setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading())).setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), e.getUnit())).setSupplyEnt(entMap.get(e.getSupplyEntId()));
             result.add(materials);
         });
         return PageResult.build(params.getPage(), params.getPageSize(), kwpGoodsPage.getTotal(), result);
@@ -751,9 +720,7 @@ public class KwpGoodsService {
             }
             wrapper.eq(KwpGoods::getSupplyEntId, params.getSupplyEntId());
         }
-        wrapper.like(StringUtils.isNotBlank(params.getName()), KwpGoods::getName, params.getName())
-                .eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode())
-                .eq(KwpGoods::getDelFlag, Global.NO).orderByDesc(KwpGoods::getAddedTime);
+        wrapper.like(StringUtils.isNotBlank(params.getName()), KwpGoods::getName, params.getName()).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).eq(KwpGoods::getDelFlag, Global.NO).orderByDesc(KwpGoods::getAddedTime);
         List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
         if (CollectionUtils.isEmpty(list)) {
             return Collections.emptyList();
@@ -779,8 +746,7 @@ public class KwpGoodsService {
      */
     public KwpGoods getGoodsById(Long id) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        LambdaQueryWrapper<KwpGoods> last = wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getEntId, LoginUserHolder.getEntId())
-                .eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
+        LambdaQueryWrapper<KwpGoods> last = wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
         return kwpGoodsMapper.selectOne(last);
     }
 
@@ -841,8 +807,7 @@ public class KwpGoodsService {
      */
     public BigDecimal maxPurchaseNum(MaxPurchaseNumParam param) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        LambdaQueryWrapper<KwpGoods> last = wrapper.eq(KwpGoods::getId, param.getGoodsId()).eq(KwpGoods::getDelFlag, Global.NO)
-                .eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).last("LIMIT 1");
+        LambdaQueryWrapper<KwpGoods> last = wrapper.eq(KwpGoods::getId, param.getGoodsId()).eq(KwpGoods::getDelFlag, Global.NO).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).last("LIMIT 1");
         KwpGoods goods = kwpGoodsMapper.selectOne(last);
         if (Objects.isNull(goods)) {
             throw new BusinessException("商品不存在或已下架!");
@@ -889,22 +854,21 @@ public class KwpGoodsService {
     public void updateAmount(UpdateAmountParam param) {
         Long id = param.getId();
         BigDecimal updateAmount = param.getUpdateAmount();
-        LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode())
-                .eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
-        KwpGoods goods = kwpGoodsMapper.selectOne(wrapper);
-        if (Objects.isNull(goods)) {
-            throw new BusinessException("商品不存在或已下架!");
-        }
-        BigDecimal amount = goods.getAmount();
-        BigDecimal finalAmount = Objects.equals(param.getUpdateType(), 0) ? amount.add(updateAmount) : amount.subtract(updateAmount);
-        if (finalAmount.compareTo(BigDecimal.ZERO) <= 0) {
-            throw new BusinessException("库存数量更新后不能小于等于零!");
-        }
         String lockKey = String.format(RedisConstant.GOODS_UPDATE_AMOUNT_KEY, id);
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
+            throw new BusinessException("业务繁忙,请稍后再试!");
+        }
         try {
-            if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
-                throw new BusinessException("业务繁忙,请稍后再试!");
+            LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
+            KwpGoods goods = kwpGoodsMapper.selectOne(wrapper);
+            if (Objects.isNull(goods)) {
+                throw new BusinessException("商品不存在或已下架!");
+            }
+            BigDecimal amount = goods.getAmount();
+            BigDecimal finalAmount = Objects.equals(param.getUpdateType(), 0) ? amount.add(updateAmount) : amount.subtract(updateAmount);
+            if (finalAmount.compareTo(BigDecimal.ZERO) <= 0) {
+                throw new BusinessException("库存数量更新后不能小于等于零!");
             }
             goods.setAmount(finalAmount);
             kwpGoodsMapper.updateById(goods);

+ 57 - 67
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -24,6 +24,7 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -111,88 +112,75 @@ public class KwOrderService {
      */
     private Query getQuery(TradeOrderListStatisticParam params, Boolean isStatistic) {
         Long entId = LoginUserHolder.getEntId();
+        Long userId = LoginUserHolder.getUserId();
         Query query = new Query();
-        Criteria andCriteria = new Criteria();
-        andCriteria.and("delFlag").is(0);
-        if (Objects.equals(params.getOrderType(), 1)) {
-            //采购订单
-            andCriteria.and("procureTopEntId").is(entId);
-        } else {
-            //销售订单
-            andCriteria.and("supplyTopEntId").is(entId);
-        }
+        Criteria criteria = new Criteria();
+        criteria.and("delFlag").is(0);
+        String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
+        criteria.and(topEnt).is(entId);
         //日期范围
         if (Objects.nonNull(params.getStartCreateTime()) && Objects.nonNull(params.getEndCreateTime())) {
-            andCriteria.and("createTime").gte(params.getStartCreateTime()).lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
+            criteria.and("createTime").gte(params.getStartCreateTime()).lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
         } else if (Objects.nonNull(params.getStartCreateTime())) {
-            andCriteria.and("createTime").gte(params.getStartCreateTime());
+            criteria.and("createTime").gte(params.getStartCreateTime());
         } else if (Objects.nonNull(params.getEndCreateTime())) {
-            andCriteria.and("createTime").lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
+            criteria.and("createTime").lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
         }
         //装卸货地址
         String loadCode = params.getShippingAddressCode();
         if (StringUtils.isNotBlank(loadCode)) {
             switch (params.getShippingAddressLevel()) {
-                case 1 -> andCriteria.and("loadCityCode")
+                case 1 -> criteria.and("loadCityCode")
                         .regex(Pattern.compile("^" + loadCode.substring(0, 2) + ".*$", Pattern.CASE_INSENSITIVE));
-                case 2 -> andCriteria.and("loadCityCode")
+                case 2 -> criteria.and("loadCityCode")
                         .regex(Pattern.compile("^" + loadCode.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE));
-                case 3 -> andCriteria.and("loadCityCode").is(loadCode);
+                case 3 -> criteria.and("loadCityCode").is(loadCode);
             }
         }
         String unloadCode = params.getUnloadingAddressCode();
         if (StringUtils.isNotBlank(unloadCode)) {
             switch (params.getUnloadingAddressLevel()) {
-                case 1 -> andCriteria.and("unloadCityCode")
+                case 1 -> criteria.and("unloadCityCode")
                         .regex(Pattern.compile("^" + unloadCode.substring(0, 2) + ".*$", Pattern.CASE_INSENSITIVE));
-                case 2 -> andCriteria.and("unloadCityCode")
+                case 2 -> criteria.and("unloadCityCode")
                         .regex(Pattern.compile("^" + unloadCode.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE));
-                case 3 -> andCriteria.and("unloadCityCode").is(unloadCode);
+                case 3 -> criteria.and("unloadCityCode").is(unloadCode);
             }
         }
         //提货方式
         if (StringUtils.isNotBlank(params.getPickupType())) {
-            andCriteria.and("pickupType").is(params.getPickupType());
+            criteria.and("pickupType").is(params.getPickupType());
         }
         //交易方式
         if (StringUtils.isNotBlank(params.getTrading())) {
-            andCriteria.and("trading").is(params.getTrading());
+            criteria.and("trading").is(params.getTrading());
         }
         //交付类型
         if (StringUtils.isNotBlank(params.getDeliveryType())) {
-            andCriteria.and("deliveryType").is(params.getDeliveryType());
+            criteria.and("deliveryType").is(params.getDeliveryType());
         }
         //下单方式
         if (StringUtils.isNotBlank(params.getSource())) {
-            andCriteria.and("source").is(params.getSource());
+            criteria.and("source").is(params.getSource());
         }
-        List<Criteria> orCriteriaList = new ArrayList<>();
         //订单状态
         if (Objects.nonNull(params.getStatus()) && !isStatistic) {
-            andCriteria.and("status").is(params.getStatus());
-            if (Objects.equals(params.getStatus(), Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()))) {
-                //草稿状态只能创建订单的企业能看
-                andCriteria.and("entId").is(entId);
+            criteria.and("status").is(params.getStatus());
+            if (Objects.equals(params.getStatus(), 0)) {
+                //草稿状态只能创建订单的能看
+                criteria.and("createBy").is(userId);
             }
         } else {
-            //非草稿状态
-            andCriteria.and("status").ne(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
-            //or草稿状态且是当前企业
-            orCriteriaList.add(Criteria.where("entId").is(entId).and("status")
-                    .is(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue())).and("delFlag").is(0));
+            //非草稿状态or草稿状态且是当前人且一级企业匹配
+            criteria.orOperator(Criteria.where("status").ne(0),
+                    Criteria.where("status").is(0).and("createBy").is(userId));
+
         }
-        orCriteriaList.add(andCriteria);
         //关键字模糊匹配
         if (StringUtils.isNotBlank(params.getKeywords())) {
             Pattern pattern = Pattern.compile("^.*" + params.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            orCriteriaList.add(Criteria.where("tOrderNo").regex(pattern).and("delFlag").is(0));
-            orCriteriaList.add(Criteria.where("procureFirmName").regex(pattern).and("delFlag").is(0));
-            orCriteriaList.add(Criteria.where("supplyFirmName").regex(pattern).and("delFlag").is(0));
-            orCriteriaList.add(Criteria.where("goodsName").regex(pattern).and("delFlag").is(0));
-        }
-        Criteria criteria = new Criteria();
-        if (CollectionUtils.isNotEmpty(orCriteriaList)) {
-            criteria.orOperator(orCriteriaList);
+            criteria.orOperator(Criteria.where("tOrderNo").regex(pattern), Criteria.where("procureFirmName").regex(pattern),
+                    Criteria.where("supplyFirmName").regex(pattern), Criteria.where("goodsName").regex(pattern));
         }
         return query.addCriteria(criteria);
     }
@@ -242,14 +230,8 @@ public class KwOrderService {
             List<Long> ids = StringUtils.splitStrToList(params.getIds(), ",", Long.class);
             Long entId = LoginUserHolder.getEntId();
             Criteria criteria = new Criteria();
-            criteria.and("tOrderId").in(ids).and("delFlag").is(0);
-            if (Objects.equals(params.getOrderType(), 1)) {
-                //采购订单
-                criteria.and("procureTopEntId").is(entId);
-            } else {
-                //销售订单
-                criteria.and("supplyTopEntId").is(entId);
-            }
+            String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
+            criteria.and("tOrderId").in(ids).and(topEnt).is(entId).and("delFlag").is(0);
             query.addCriteria(criteria);
         } else {
             query = getQuery(params, false);
@@ -260,9 +242,11 @@ public class KwOrderService {
             return Collections.emptyList();
         }
         List<TradeOrderListExport> list = new ArrayList<>();
+        AtomicInteger i = new AtomicInteger(1);
         orders.forEach(e -> {
             TradeOrderListExport export = BeanUtils.copyProperties(e, TradeOrderListExport.class);
-            export.setStatus(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
+            export.setSerialNumber(String.valueOf(i.getAndIncrement()))
+                    .setStatus(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
                     .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
                     .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
                     .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
@@ -291,14 +275,8 @@ public class KwOrderService {
         Query query = new Query();
         Long entId = LoginUserHolder.getEntId();
         Criteria criteria = new Criteria();
-        criteria.and("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue())).and("delFlag").is(0);
-        if (Objects.equals(params.getOrderType(), 1)) {
-            //采购订单
-            criteria.and("procureTopEntId").is(entId);
-        } else {
-            //销售订单
-            criteria.and("supplyTopEntId").is(entId);
-        }
+        String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
+        criteria.and(topEnt).is(entId).and("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue())).and("delFlag").is(0);
         //采购企业
         if (Objects.nonNull(params.getProcureEntId())) {
             criteria.and("procureEntId").is(params.getProcureEntId());
@@ -335,16 +313,28 @@ public class KwOrderService {
         Long entId = LoginUserHolder.getEntId();
         Query query = new Query();
         Criteria criteria = new Criteria();
-        if (Objects.equals(params.getOrderType(), 1)) {
-            //采购订单
-            criteria.and("procureTopEntId").is(entId);
-        } else {
-            //销售订单
-            criteria.and("supplyTopEntId").is(entId);
-        }
+        String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
         List<Long> ids = StringUtils.splitStrToList(params.getContractIds(), ",", Long.class);
-        criteria.and("contractId").in(ids).and("delFlag").is(0);
+        criteria.and("contractId").in(ids).and(topEnt).is(entId).and("delFlag").is(0);
         query.addCriteria(criteria);
-        return getResult(query, params.getPage(), params.getPageSize());
+        long count = mongoTemplate.count(query, SckwTradeOrder.class);
+        Sort sort = Sort.by(Sort.Direction.DESC, "contractId", "createTime");
+        SpringDataPageAble pageAble = new SpringDataPageAble(params.getPage(), params.getPageSize(), sort);
+        query.with(pageAble);
+        List<SckwTradeOrder> list = mongoTemplate.find(query, SckwTradeOrder.class);
+        List<OrderListRes> result = new ArrayList<>();
+        list.forEach(e -> {
+            OrderListRes order = BeanUtils.copyProperties(e, OrderListRes.class);
+            order.setStatusLabel(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
+                    .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                    .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
+                    .setPickupTypeLabel(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
+                    .setLoadDetailAddressInfo(e.getLoadCityName() + e.getUnloadDetailAddress())
+                    .setUnloadDetailAddressInfo(e.getUnloadCityName() + e.getUnloadDetailAddress())
+                    .setConsignmentStatus(Objects.isNull(e.getEntrustAmount()) || e.getEntrustAmount().compareTo(e.getAmount()) < 0 ? "待托运" : "已托运")
+                    .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
+            result.add(order);
+        });
+        return PageResult.build(params.getPage(), params.getPageSize(), count, result);
     }
 }

+ 3 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExport.java

@@ -20,6 +20,9 @@ public class TradeOrderListExport implements Serializable {
     @Serial
     private static final long serialVersionUID = -5895230502149598364L;
 
+    @ExcelProperty(value = "序号" )
+    private String serialNumber;
+
     @ExcelProperty(value = "上架状态" )
     private String status;
 

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

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

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

@@ -107,6 +107,11 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      */
     List<SubcontractConsignmentVO> getSubcontractConsignmentNotPage(@Param("lOrderId") String lOrderId);
 
+    /**
+     *
+     * @param lOrderId
+     * @return
+     */
     List<Map> countSubcontractConsignmentById(@Param("lOrderId") String lOrderId);
 
     /**

+ 4 - 12
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddOrderDTO.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.model.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.constraints.*;
 import lombok.Data;
 import org.hibernate.validator.constraints.Length;
@@ -66,17 +67,6 @@ public class AddOrderDTO {
     @NotNull(message = "货物名称不能为空")
     private String goodsName;
 
-    /**
-     * 货物id
-     */
-    @NotNull(message = "货物id不能为空")
-    private String goodsId;
-
-    /**
-     * skuId
-     */
-    private String skuId;
-
     /**
      * 计费方式
      */
@@ -102,7 +92,7 @@ public class AddOrderDTO {
      */
     @NotNull(message = "运价方式不能为空")
     @Min(value = 0, message = "必须大于等于{value}")
-    @Max(value = 4, message = "必须小于等于{value}")
+    @Max(value = 6, message = "必须小于等于{value}")
     private Long priceType;
 
     /**
@@ -162,12 +152,14 @@ public class AddOrderDTO {
      * 计划卸货时间
      */
     @NotBlank(message = "计划卸货时间不能为空")
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private String endTime;
 
     /**
      * 计划发货时间
      */
     @NotBlank(message = "计划发货时间不能为空")
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private String startTime;
 
     /**

+ 6 - 9
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsConsignmentParam.java

@@ -8,9 +8,6 @@ import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import org.hibernate.validator.constraints.Length;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
 
 /**
  * @author lfdc
@@ -187,16 +184,16 @@ public class LogisticsConsignmentParam {
      * 计划卸货时间
      */
     @NotNull(message = "计划卸货时间不能为空")
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date receiveGoodsDateTime;
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String receiveGoodsDateTime;
     /**
      * 计划发货时间
      */
     @NotNull(message = "计划发货时间不能为空")
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date shipmentsDateTime;
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String shipmentsDateTime;
     /**
      * 税率
      */

+ 48 - 41
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -657,7 +657,7 @@ public class AcceptCarriageOrderService {
             orderTrack.setUpdateBy(LoginUserHolder.getUserId());
             orderTrack.setUpdateTime(new Date());
             logisticsOrderTrackMapper.insert(orderTrack);
-        }else {
+        } else {
             track.setRemark(orderDTO.getRemark());
             track.setUpdateTime(new Date());
             track.setUpdateBy(LoginUserHolder.getUserId());
@@ -699,15 +699,16 @@ public class AcceptCarriageOrderService {
     /**
      * 获取承运订单-分包托运列表数据
      *
-     * @param lOrderId
-     * @param page
-     * @param pageSize
+     * @param lOrderIds 物流订单主键id
+     * @param page      当前页
+     * @param pageSize  每页条数
      * @return
      */
-    public HttpResult getSubcontractConsignment(String lOrderId, Integer page, Integer pageSize) {
-        Integer newPage = page - 1;
-        List<SubcontractConsignmentVO> list = logisticsOrderMapper.getSubcontractConsignment(lOrderId, newPage, pageSize);
-        //联查数据
+    public HttpResult getSubcontractConsignment(String lOrderIds, Integer page, Integer pageSize) {
+        List<String> stringList = StringUtils.splitStrToList(lOrderIds, String.class);
+        if (CollectionUtils.isEmpty(stringList)) {
+            return HttpResult.ok();
+        }
         /**运价方式*/
         Map<String, String> priceDictData = getDictData(DictTypeEnum.PRICE_TYPE.getType());
         /**车载计算方式*/
@@ -718,19 +719,26 @@ public class AcceptCarriageOrderService {
         Map<String, String> chargingDictData = getDictData(DictTypeEnum.CHARGING_TYPE.getType());
         /**结算周期*/
         Map<String, String> settlementDictData = getDictData(DictTypeEnum.SETTLEMENT_CYCLE.getType());
-        if (CollectionUtils.isNotEmpty(list)) {
-            for (SubcontractConsignmentVO subcontractConsignmentVO : list) {
-                subcontractConsignmentVO.setStatusLabel(CarWaybillEnum.getWaybillOrderDestination(subcontractConsignmentVO.getStatus()));
-                subcontractConsignmentVO.setPriceType(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
-                subcontractConsignmentVO.setLossUnit(weightDictData == null ? null : weightDictData.get(subcontractConsignmentVO.getLossUnit()));
-                subcontractConsignmentVO.setGoodsPriceUnit(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getGoodsPriceUnit()));
-                //分包托运不需要展示签约方式
+        List<SubcontractConsignmentVO> allList = new ArrayList<>();
+        for (String lOrderId : stringList) {
+            List<SubcontractConsignmentVO> list = logisticsOrderMapper.getSubcontractConsignmentNotPage(lOrderId);
+            //联查数据
+            if (CollectionUtils.isNotEmpty(list)) {
+                for (SubcontractConsignmentVO subcontractConsignmentVO : list) {
+                    subcontractConsignmentVO.setStatusLabel(CarWaybillEnum.getWaybillOrderDestination(subcontractConsignmentVO.getStatus()));
+                    subcontractConsignmentVO.setPriceType(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
+                    subcontractConsignmentVO.setLossUnit(weightDictData == null ? null : weightDictData.get(subcontractConsignmentVO.getLossUnit()));
+                    subcontractConsignmentVO.setGoodsPriceUnit(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getGoodsPriceUnit()));
+                    //分包托运不需要展示签约方式
 //                subcontractConsignmentVO.setContractSigningWay(singDictData == null ? null : singDictData.get(subcontractConsignmentVO.getContractSigningWay()));
-                subcontractConsignmentVO.setBillingMode(chargingDictData == null ? null : chargingDictData.get(subcontractConsignmentVO.getBillingMode()));
-                subcontractConsignmentVO.setSettlementCycle(settlementDictData == null ? null : settlementDictData.get(subcontractConsignmentVO.getSettlementCycle()));
+                    subcontractConsignmentVO.setBillingMode(chargingDictData == null ? null : chargingDictData.get(subcontractConsignmentVO.getBillingMode()));
+                    subcontractConsignmentVO.setSettlementCycle(settlementDictData == null ? null : settlementDictData.get(subcontractConsignmentVO.getSettlementCycle()));
+                }
+                allList.addAll(list);
             }
         }
-        PageResult build = PageResult.build(page, pageSize, list.stream().count(), 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);
     }
 
@@ -1230,19 +1238,20 @@ public class AcceptCarriageOrderService {
             log.info("承运订单创建订单异常");
             throw new RuntimeException("自建订单异常");
         }
-        /**获取商品信息*/
-        KwpGoods goods = goodsInfoService.getGoodsById(Long.parseLong(orderDTO.getGoodsId()));
-        if (goods == null) {
-            log.info("自建订单获取商品信息失败 商品id:{},商品名称:{}", orderDTO.getGoodsId(), orderDTO.getGoodsName());
-            throw new BusinessException("商品信息获取失败");
-        }
+        /**2023-08-04 自建订单商品可以不需要关联查询*/
+//        /**获取商品信息*/
+//        KwpGoods goods = goodsInfoService.getGoodsById(Long.parseLong(orderDTO.getGoodsId()));
+//        if (goods == null) {
+//            log.info("自建订单获取商品信息失败 商品id:{},商品名称:{}", orderDTO.getGoodsId(), orderDTO.getGoodsName());
+//            throw new BusinessException("商品信息获取失败");
+//        }
         saveLogisticsOrder(orderDTO, lOrderId, orderStatus, lOrderNo);
         saveLogisticsOrderAddress(orderDTO, lOrderId);
-        saveLogisticsOrderGoods(orderDTO, lOrderId, lOrderNo, goods);
+        saveLogisticsOrderGoods(orderDTO, lOrderId, lOrderNo);
         saveLogisticsOrderContract(orderDTO, lOrderId);
         saveLogisticsOrderTrack(lOrderId, orderStatus);
         saveLogisticsOrderUnit(orderDTO, lOrderId);
-        saveMongoDb(orderDTO, orderStatus, lOrderId, lOrderNo, infoResDto, goods);
+        saveMongoDb(orderDTO, orderStatus, lOrderId, lOrderNo, infoResDto);
         return HttpResult.ok();
     }
 
@@ -1252,16 +1261,15 @@ public class AcceptCarriageOrderService {
      * @param orderDTO 页面参数
      * @param lOrderId 订单id
      * @param lOrderNo 订单编号
-     * @param kwpGoods 商品信息
      */
-    private void saveLogisticsOrderGoods(AddOrderDTO orderDTO, Long lOrderId, String lOrderNo, KwpGoods kwpGoods) {
+    private void saveLogisticsOrderGoods(AddOrderDTO orderDTO, Long lOrderId, String lOrderNo) {
         KwtLogisticsOrderGoods goods = new KwtLogisticsOrderGoods();
         goods.setId(new IdWorker(NumberConstant.ONE).nextId());
         goods.setLOrderId(lOrderId);
         goods.setLOrderNo(lOrderNo);
-        goods.setGoodsId(Long.parseLong(orderDTO.getGoodsId()));
-        goods.setGoodsName(kwpGoods.getName());
-        goods.setStatus(kwpGoods.getStatus());
+//        goods.setGoodsId();
+        goods.setGoodsName(orderDTO.getGoodsName());
+        goods.setStatus(NumberConstant.ZERO);
         goods.setCreateBy(LoginUserHolder.getUserId());
         goods.setCreateTime(new Date());
         goods.setUpdateBy(LoginUserHolder.getUserId());
@@ -1300,9 +1308,8 @@ public class AcceptCarriageOrderService {
      * @param lOrderId    主体订单id
      * @param lOrderNo    主体订单编号
      * @param infoResDto  合同信息
-     * @param goods       商品信息
      */
-    private void saveMongoDb(AddOrderDTO orderDTO, Integer orderStatus, Long lOrderId, String lOrderNo, ContractCommonInfoResDto infoResDto, KwpGoods goods) {
+    private void saveMongoDb(AddOrderDTO orderDTO, Integer orderStatus, Long lOrderId, String lOrderNo, ContractCommonInfoResDto infoResDto) {
         SckwLogisticsOrder order = new SckwLogisticsOrder();
         order.set_id(lOrderId);
         order.setLOrderId(lOrderId);
@@ -1333,12 +1340,12 @@ public class AcceptCarriageOrderService {
         order.setStatus(String.valueOf(orderStatus));
         order.setEntId(LoginUserHolder.getEntId());
         order.setFirmName(LoginUserHolder.getEntName());
-        order.setGoodsId(Long.parseLong(orderDTO.getGoodsId()));
-        order.setGoodsCode(goods == null ? null : goods.getCode());
-        order.setGoodsName(goods == null ? null : goods.getName());
-        order.setGoodsType(goods == null ? null : goods.getGoodsType());
-//        order.setGoodsIndustry(goods == null ? null : goods.get);
-        order.setGoodsSpec(goods == null ? null : goods.getSpec());
+//        order.setGoodsId(Long.parseLong(orderDTO.getGoodsId()));
+//        order.setGoodsCode(goods == null ? null : goods.getCode());
+        order.setGoodsName(orderDTO.getGoodsName());
+//        order.setGoodsType(goods == null ? null : goods.getGoodsType());
+////        order.setGoodsIndustry(goods == null ? null : goods.get);
+//        order.setGoodsSpec(goods == null ? null : goods.getSpec());
         order.setContractId(orderDTO.getContractId());
         order.setContractNo(infoResDto.getContractCode());
         order.setContractName(infoResDto.getContactName());
@@ -1541,9 +1548,9 @@ public class AcceptCarriageOrderService {
         order.setGoodsPrice(orderDTO.getGoodsPrice() == null ? null : orderDTO.getGoodsPrice());
         order.setGoodsPriceUnit(orderDTO.getGoodsPriceUnit());
         order.setStartTime(org.apache.commons.lang3.StringUtils.isBlank(orderDTO.getStartTime()) ?
-                null : DateUtil.strToDate(StringTimeUtil.fillStart(orderDTO.getStartTime()), StringConstant.DEFAULT_DATE_PATTERN));
+                null : DateUtil.stringPatchingStartToDateTime(orderDTO.getStartTime()));
         order.setEndTime(org.apache.commons.lang3.StringUtils.isBlank(orderDTO.getEndTime()) ?
-                null : DateUtil.strToDate(StringTimeUtil.fillStart(orderDTO.getEndTime()), StringConstant.DEFAULT_DATE_PATTERN));
+                null : DateUtil.stringPatchingEndToDateTime(orderDTO.getEndTime()));
         BigDecimal decimal = new BigDecimal(NumberConstant.ZERO);
         order.setSubcontractAmount(decimal);
         order.setEntrustAmount(decimal);

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

@@ -12,7 +12,6 @@ import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.StringTimeUtil;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
@@ -23,7 +22,6 @@ import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.product.api.dubbo.GoodsInfoService;
-import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
@@ -729,19 +727,13 @@ public class ConsignOrderService {
             log.info("托运订单创建订单异常");
             throw new RuntimeException("自建订单异常");
         }
-        /**获取商品信息*/
-        KwpGoods goods = goodsInfoService.getGoodsById(Long.parseLong(addOrderDTO.getGoodsId()));
-        if (goods == null) {
-            log.info("自建订单获取商品信息失败 商品id:{},商品名称:{}", addOrderDTO.getGoodsId(), addOrderDTO.getGoodsName());
-            throw new BusinessException("商品信息获取失败");
-        }
         saveConsignLogisticsOrder(addOrderDTO, lOrderId, orderStatus, lOrderNo);
         saveConsignLogisticsOrderAddress(addOrderDTO, lOrderId);
-        saveConsignLogisticsOrderGoods(addOrderDTO, lOrderId, lOrderNo, goods);
+        saveConsignLogisticsOrderGoods(addOrderDTO, lOrderId, lOrderNo);
         saveConsignLogisticsOrderContract(addOrderDTO, lOrderId);
         saveConsignLogisticsOrderTrack(lOrderId, orderStatus);
         saveConsignLogisticsOrderUnit(addOrderDTO, lOrderId);
-        saveMongoDb(addOrderDTO, orderStatus, lOrderId, lOrderNo, infoResDto, goods);
+        saveMongoDb(addOrderDTO, orderStatus, lOrderId, lOrderNo, infoResDto);
         return HttpResult.ok();
     }
 
@@ -775,14 +767,14 @@ public class ConsignOrderService {
      * @param lOrderId    订单id
      * @param lOrderNo    订单编号
      */
-    private void saveConsignLogisticsOrderGoods(AddOrderDTO addOrderDTO, Long lOrderId, String lOrderNo, KwpGoods kwpGoods) {
+    private void saveConsignLogisticsOrderGoods(AddOrderDTO addOrderDTO, Long lOrderId, String lOrderNo) {
         KwtLogisticsOrderGoods goods = new KwtLogisticsOrderGoods();
         goods.setId(new IdWorker(NumberConstant.ONE).nextId());
         goods.setLOrderId(lOrderId);
         goods.setLOrderNo(lOrderNo);
-        goods.setGoodsId(Long.parseLong(addOrderDTO.getGoodsId()));
-        goods.setGoodsName(kwpGoods.getName());
-        goods.setStatus(kwpGoods.getStatus());
+//        goods.setGoodsId(Long.parseLong(addOrderDTO.getGoodsId()));
+        goods.setGoodsName(addOrderDTO.getGoodsName());
+        goods.setStatus(NumberConstant.ZERO);
         goods.setCreateBy(LoginUserHolder.getUserId());
         goods.setCreateTime(new Date());
         goods.setUpdateBy(LoginUserHolder.getUserId());
@@ -817,9 +809,9 @@ public class ConsignOrderService {
         order.setGoodsPrice(addOrderDTO.getGoodsPrice() == null ? null : addOrderDTO.getGoodsPrice());
         order.setGoodsPriceUnit(addOrderDTO.getGoodsPriceUnit());
         order.setStartTime(org.apache.commons.lang3.StringUtils.isBlank(addOrderDTO.getStartTime()) ?
-                null : DateUtil.strToDate(StringTimeUtil.fillStart(addOrderDTO.getStartTime()), StringConstant.DEFAULT_DATE_PATTERN));
+                null : DateUtil.stringPatchingStartToDateTime(addOrderDTO.getStartTime()));
         order.setEndTime(org.apache.commons.lang3.StringUtils.isBlank(addOrderDTO.getEndTime()) ?
-                null : DateUtil.strToDate(StringTimeUtil.fillStart(addOrderDTO.getEndTime()), StringConstant.DEFAULT_DATE_PATTERN));
+                null : DateUtil.stringPatchingEndToDateTime(addOrderDTO.getEndTime()));
         BigDecimal decimal = new BigDecimal(NumberConstant.ZERO);
         order.setSubcontractAmount(decimal);
         order.setEntrustAmount(decimal);
@@ -976,9 +968,8 @@ public class ConsignOrderService {
      * @param lOrderId    主体订单id
      * @param lOrderNo    主体订单编号
      * @param infoResDto  合同信息
-     * @param goods       商品信息
      */
-    private void saveMongoDb(AddOrderDTO addOrderDTO, Integer orderStatus, Long lOrderId, String lOrderNo, ContractCommonInfoResDto infoResDto, KwpGoods goods) {
+    private void saveMongoDb(AddOrderDTO addOrderDTO, Integer orderStatus, Long lOrderId, String lOrderNo, ContractCommonInfoResDto infoResDto) {
         SckwLogisticsOrder order = new SckwLogisticsOrder();
         order.set_id(lOrderId);
         order.setLOrderId(lOrderId);
@@ -1009,12 +1000,12 @@ public class ConsignOrderService {
         order.setStatus(String.valueOf(orderStatus));
         order.setEntId(LoginUserHolder.getEntId());
         order.setFirmName(LoginUserHolder.getEntName());
-        order.setGoodsId(Long.parseLong(addOrderDTO.getGoodsId()));
-        order.setGoodsCode(goods == null ? null : goods.getCode());
-        order.setGoodsName(goods == null ? null : goods.getName());
-        order.setGoodsType(goods == null ? null : goods.getGoodsType());
+//        order.setGoodsId(Long.parseLong(addOrderDTO.getGoodsId()));
+//        order.setGoodsCode(goods == null ? null : goods.getCode());
+        order.setGoodsName(addOrderDTO.getGoodsName());
+//        order.setGoodsType(goods == null ? null : goods.getGoodsType());
 //        order.setGoodsIndustry(goods == null ? null : goods.get);
-        order.setGoodsSpec(goods == null ? null : goods.getSpec());
+//        order.setGoodsSpec(goods == null ? null : goods.getSpec());
         order.setContractId(addOrderDTO.getContractId());
         order.setContractNo(infoResDto.getContractCode());
         order.setContractName(infoResDto.getContactName());

+ 3 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -19,6 +19,7 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.DateUtil;
 import com.sckw.excel.utils.ValidUtil;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RTruckVo;
@@ -408,8 +409,8 @@ public class LogisticsConsignmentService {
         order.setGoodsPriceUnit(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getGoodsPriceUnit()) == null ?
                 null : remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getGoodsPriceUnit()).getValue());
         order.setGoodsPriceUnit(bo.getGoodsPriceUnit());
-        order.setStartTime(bo.getShipmentsDateTime());
-        order.setEndTime(bo.getReceiveGoodsDateTime());
+        order.setStartTime(DateUtil.stringPatchingStartToDateTime(bo.getShipmentsDateTime()));
+        order.setEndTime(DateUtil.stringPatchingStartToDateTime(bo.getReceiveGoodsDateTime()));
         order.setRemark(bo.getRemark());
         order.setPayment(Long.parseLong(bo.getPayment()));
         order.setTaxRate(new BigDecimal(bo.getTaxRate()));