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

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

xucaiqin 2 лет назад
Родитель
Сommit
f3b166b5a7

+ 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);
     }
 
     /**

+ 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 - 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;