Преглед на файлове

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

czh преди 2 години
родител
ревизия
745ac23af6

+ 9 - 0
sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/dubbo/GoodsInfoService.java

@@ -60,4 +60,13 @@ public interface GoodsInfoService {
      * @return: java.lang.Boolean
      */
     Boolean associateManager(Long userId);
+
+    /**
+     * @desc: 是否有关联供应企业 true是,false否
+     * @author: yzc
+     * @date: 2023-08-29 9:48
+     * @Param entId:  企业id
+     * @return: java.lang.Boolean
+     */
+    Boolean associateSupplyEnt(Long entId);
 }

+ 16 - 8
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -38,11 +38,13 @@ public class KwoTradeOrderController {
     @PostMapping(value = "/addPurchaseOrderDraft", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addPurchaseOrderDraft(@RequestBody @Validated PurchaseOrderDraftParam param) {
         try {
-            kwoTradeOrderService.addPurchaseOrderDraft(param);
-            return HttpResult.ok("采购下单草稿保存成功");
+            return kwoTradeOrderService.addPurchaseOrderDraft(param);
         } catch (Exception e) {
             OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
             log.error("采购下单草稿 error:{}", e.getMessage(), e);
+            if (e instanceof BusinessException){
+                throw new BusinessException(e.getMessage());
+            }
             throw new BusinessException("采购下单草稿提交失败!");
         }
     }
@@ -58,11 +60,13 @@ public class KwoTradeOrderController {
     @PostMapping(value = "/addPurchaseOrderSubmit", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addPurchaseOrderSubmit(@RequestBody @Validated PurchaseOrderParam purchaseOrderParam) {
         try {
-            kwoTradeOrderService.addPurchaseOrderSubmit(purchaseOrderParam);
-            return HttpResult.ok("采购下单提交成功");
+            return kwoTradeOrderService.addPurchaseOrderSubmit(purchaseOrderParam);
         } catch (Exception e) {
             OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
             log.error("采购下单提交 error:{}", e.getMessage(), e);
+            if (e instanceof BusinessException){
+                throw new BusinessException(e.getMessage());
+            }
             throw new BusinessException("采购下单提交失败!");
         }
     }
@@ -78,11 +82,13 @@ public class KwoTradeOrderController {
     @PostMapping(value = "/addValetOrderDraft", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addValetOrderDraft(@RequestBody @Validated ValetOrderDraftParam param) {
         try {
-            kwoTradeOrderService.addValetOrderDraft(param);
-            return HttpResult.ok("代客下单草稿保存成功");
+            return kwoTradeOrderService.addValetOrderDraft(param);
         } catch (Exception e) {
             OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
             log.error("代客下单草稿 error:{}", e.getMessage(), e);
+            if (e instanceof BusinessException){
+                throw new BusinessException(e.getMessage());
+            }
             throw new BusinessException("代客下单草稿提交失败!");
         }
     }
@@ -99,11 +105,13 @@ public class KwoTradeOrderController {
     @PostMapping(value = "/addValetOrderSubmit", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addValetOrderSubmit(@RequestBody @Validated ValetOrderParam valetOrderParam) {
         try {
-            kwoTradeOrderService.addValetOrderSubmit(valetOrderParam);
-            return HttpResult.ok("代客下单提交成功");
+            return kwoTradeOrderService.addValetOrderSubmit(valetOrderParam);
         } catch (Exception e) {
             OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
             log.error("代客下单提交 error:{}", e.getMessage(), e);
+            if (e instanceof BusinessException){
+                throw new BusinessException(e.getMessage());
+            }
             throw new BusinessException("代客下单提交失败!");
         }
     }

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/GoodsInfo.java

@@ -44,7 +44,7 @@ public class GoodsInfo {
      * 订单成交单价
      */
     @NotNull(message = "订单成交单价不能为空")
-    @DecimalMin(value = "0.00",message = "订单成交单价最小为零")
+    @DecimalMin(value = "0.01",message = "订单成交单价必须大于零")
     private BigDecimal unitPrice;
 
 }

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderDraftParam.java

@@ -32,12 +32,12 @@ public class PurchaseOrderDraftParam {
     /**
      * 订单总量
      */
-    @DecimalMin(value = "0.00",message = "订单总量最小为零")
+    @DecimalMin(value = "0.01",message = "订单总量必须大于零")
     private BigDecimal amount;
     /**
      * 订单金额
      */
-    @DecimalMin(value = "0.00",message = "订单金额最小为零")
+    @DecimalMin(value = "0.01",message = "订单金额必须大于零")
     private BigDecimal price;
 
     /**

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/PurchaseOrderParam.java

@@ -33,13 +33,13 @@ public class PurchaseOrderParam {
      * 订单总量
      */
     @NotNull(message = "订单总量不能为空")
-    @DecimalMin(value = "0.00",message = "订单总量最小为零")
+    @DecimalMin(value = "0.01",message = "订单总量必须大于零")
     private BigDecimal amount;
     /**
      * 订单金额
      */
     @NotNull(message = "订单金额不能为空")
-    @DecimalMin(value = "0.00",message = "订单金额最小为零")
+    @DecimalMin(value = "0.01",message = "订单金额必须大于零")
     private BigDecimal price;
 
     /**

+ 6 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UpdateOrderParam.java

@@ -21,6 +21,10 @@ import java.util.List;
 @Setter
 @ToString
 public class UpdateOrderParam {
+    public UpdateOrderParam(){
+        this.amount = new BigDecimal("0.00");
+        this.price = new BigDecimal("0.00");
+    }
 
     @NotNull(message = "订单id不能为空")
     private Long id;
@@ -40,13 +44,13 @@ public class UpdateOrderParam {
     /**
      * 订单总量
      */
-    @DecimalMin(value = "0.00",message = "订单总量最小为零")
+    @DecimalMin(value = "0.01",message = "订单总量必须大于零")
     private BigDecimal amount;
 
     /**
      * 订单金额
      */
-    @DecimalMin(value = "0.00",message = "订单金额最小为零")
+    @DecimalMin(value = "0.01",message = "订单金额必须大于零")
     private BigDecimal price;
 
     /**

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

@@ -95,15 +95,18 @@ public class KwoTradeOrderService {
      * @Param param:
      * @return: void
      */
-    public void addPurchaseOrderDraft(PurchaseOrderDraftParam param) {
+    public HttpResult addPurchaseOrderDraft(PurchaseOrderDraftParam param) {
         String orderNo = getOrderNo();
+        if (StringUtils.isBlank(orderNo)) {
+            return HttpResult.error("采购下单草稿生成订单号异常!");
+        }
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
         order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
                 .setUnit(Objects.nonNull(param.getGoodsInfo()) ? param.getGoodsInfo().getUnit() : null)
                 .setSource(DictEnum.TORDER_SOURCE_1.getValue()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
         kwoTradeOrderMapper.insert(order);
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
-
+        return HttpResult.ok("采购下单草稿保存成功!");
     }
 
     /**
@@ -231,14 +234,18 @@ public class KwoTradeOrderService {
      * @Param param:
      * @return: void
      */
-    public void addValetOrderDraft(ValetOrderDraftParam param) {
+    public HttpResult addValetOrderDraft(ValetOrderDraftParam param) {
         String orderNo = getOrderNo();
+        if (StringUtils.isBlank(orderNo)) {
+            return HttpResult.error("代客下单草稿生成订单号异常!");
+        }
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
         order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
                 .setUnit(Objects.nonNull(param.getGoodsInfo()) ? param.getGoodsInfo().getUnit() : null)
                 .setSource(DictEnum.TORDER_SOURCE_2.getValue()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
         kwoTradeOrderMapper.insert(order);
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
+        return HttpResult.ok("代客下单草稿保存成功!");
     }
 
     /**
@@ -248,8 +255,11 @@ public class KwoTradeOrderService {
      * @Param param:
      * @return: void
      */
-    public void addPurchaseOrderSubmit(PurchaseOrderParam param) {
+    public HttpResult addPurchaseOrderSubmit(PurchaseOrderParam param) {
         String orderNo = getOrderNo();
+        if (StringUtils.isBlank(orderNo)) {
+            return HttpResult.error("采购下单提交生成订单号异常!");
+        }
         GoodsInfo goodsInfo = param.getGoodsInfo();
         if (Objects.isNull(goodsInfo.getPriceRangeId())) {
             throw new BusinessException("采购下单价格梯度信息不能为空!");
@@ -270,6 +280,7 @@ public class KwoTradeOrderService {
             throw new BusinessException(updateResult.getMsg());
         }
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
+        return HttpResult.ok("采购下单提交成功!");
     }
 
     /**
@@ -364,8 +375,11 @@ public class KwoTradeOrderService {
      * @Param param:
      * @return: void
      */
-    public void addValetOrderSubmit(ValetOrderParam param) {
+    public HttpResult addValetOrderSubmit(ValetOrderParam param) {
         String orderNo = getOrderNo();
+        if (StringUtils.isBlank(orderNo)) {
+            return HttpResult.error("代客下单提交生成订单号异常!");
+        }
         OrderCheckDTO orderCheck = BeanUtils.copyProperties(param, OrderCheckDTO.class);
         getTopEnt(orderCheck, param.getUnitInfo());
         orderCheck.setGoodsId(param.getGoodsInfo().getGoodsId()).setUnitPrice(param.getGoodsInfo().getUnitPrice())
@@ -392,6 +406,7 @@ public class KwoTradeOrderService {
             throw new BusinessException(updateResult.getMsg());
         }
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
+        return HttpResult.ok("代客下单提交成功!");
     }
 
 
@@ -402,9 +417,9 @@ public class KwoTradeOrderService {
      */
     private String getOrderNo() {
         Date date = new Date();
-        String key = OrderGenerateSeqNoUtils.getKey(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER, date);
         String lockKey = String.format(RedisConstant.TORDER_NO_GENERATE_KEY, DateUtils.formatDateToYYMMDD(date));
         try {
+            String key = OrderGenerateSeqNoUtils.getKey(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER, date);
             if (Boolean.FALSE.equals(RedissonUtils.exists(key))) {
                 if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
                     throw new BusinessException("业务繁忙,请稍后再试!");
@@ -417,6 +432,10 @@ public class KwoTradeOrderService {
                 }
             }
             return OrderGenerateSeqNoUtils.getOtherSeqNo(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
+
+        } catch (Exception e) {
+            log.error("生成贸易订单号异常:{}",e.getMessage(),e);
+            return null;
         } finally {
             RedissonUtils.unlock(lockKey);
         }
@@ -575,7 +594,8 @@ public class KwoTradeOrderService {
         if (Objects.equals(source, DictEnum.TORDER_SOURCE_2.getValue()) && !Objects.equals(status, DictEnum.TORDER_STATUS_0.getValue())) {
             throw new BusinessException("代客下单只能修改已保存状态的订单!");
         }
-        if (kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), source)) {
+        if (!Objects.equals(0, order.getStatus())
+                && kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), source)) {
             throw new BusinessException("无权限修改此订单!");
         }
         if (Objects.equals(param.getOperateType(), 1)) {
@@ -619,10 +639,10 @@ public class KwoTradeOrderService {
 
     private void checkParams(UpdateOrderParam param, String source) {
         if (Objects.isNull(param.getAmount())) {
-            throw new BusinessException("订单总量不能为空!");
+            throw new BusinessException("订单总量不能为空!");
         }
         if (Objects.isNull(param.getPrice())) {
-            throw new BusinessException("订单金额不能为空!");
+            throw new BusinessException("订单金额不能为空!");
         }
         if (StringUtils.isBlank(param.getTrading())) {
             throw new BusinessException("交易方式不能为空!");
@@ -673,8 +693,8 @@ public class KwoTradeOrderService {
         if (Objects.isNull(goodsInfo.getPriceRangeId()) && Objects.equals(source, DictEnum.TORDER_SOURCE_1.getValue())) {
             throw new BusinessException("价格段id不能为空!");
         }
-        if (Objects.isNull(goodsInfo.getUnitPrice()) || goodsInfo.getUnitPrice().compareTo(BigDecimal.ZERO) < 0) {
-            throw new BusinessException("订单成交单价不能为空且不能为负数!");
+        if (Objects.isNull(goodsInfo.getUnitPrice()) || goodsInfo.getUnitPrice().compareTo(BigDecimal.ZERO) <= 0) {
+            throw new BusinessException("订单成交单价不能为空且必须大于零!");
         }
 
         List<UnitInfo> unitInfos = param.getUnitInfo();
@@ -939,7 +959,9 @@ public class KwoTradeOrderService {
         if (CollectionUtils.isNotEmpty(list)) {
             throw new BusinessException("删除操作仅针对“已保存”状态的订单");
         }
-        if (kwoTradeOrderUnitService.entBatchMatch(ids, LoginUserHolder.getEntId(), String.valueOf(param.getOrderType()))) {
+        //排除草稿状态权限匹配
+        List<Long> filterIds = list.stream().filter(e -> !(Objects.equals(e.getStatus(), 0))).map(KwoTradeOrder::getId).toList();
+        if (kwoTradeOrderUnitService.entBatchMatch(filterIds, LoginUserHolder.getEntId(), String.valueOf(param.getOrderType()))) {
             throw new BusinessException("无订单操作权限!");
         }
         LambdaUpdateWrapper<KwoTradeOrder> updateWrapper = new LambdaUpdateWrapper<>();

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

@@ -82,4 +82,10 @@ public class GoodsInfoServiceImpl implements GoodsInfoService {
         Long count = kwpGoodsService.getCountByManager(userId);
         return Objects.nonNull(count) && count > 0L;
     }
+
+    @Override
+    public Boolean associateSupplyEnt(Long entId) {
+        Long count = kwpGoodsService.getCountBySupplyEnt(entId);
+        return Objects.nonNull(count) && count > 0L;
+    }
 }

+ 2 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsDraftParam.java

@@ -49,7 +49,7 @@ public class AddGoodsDraftParam {
     /**
      * 库存数量
      */
-    @DecimalMin(value = "0.00", message = "库存数量最小为零")
+    @DecimalMin(value = "0.01", message = "库存数量必须大于零")
     private BigDecimal amount;
 
     /**
@@ -73,7 +73,7 @@ public class AddGoodsDraftParam {
     /**
      * 预付款最低限额(万元)
      */
-    @DecimalMin(value = "0.00", message = "预付款最低限额最小为零")
+    @DecimalMin(value = "0.01", message = "预付款最低限额必须大于零")
     private BigDecimal advancePrice;
 
     /**

+ 2 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsParam.java

@@ -54,7 +54,7 @@ public class AddGoodsParam {
      * 库存数量
      */
     @NotNull(message = "库存数量不能为空")
-    @DecimalMin(value = "0.00", message = "库存数量最小为零")
+    @DecimalMin(value = "0.01", message = "库存数量必须大于零")
     private BigDecimal amount;
 
     /**
@@ -80,7 +80,7 @@ public class AddGoodsParam {
     /**
      * 预付款最低限额(万元)
      */
-    @DecimalMin(value = "0.00", message = "预付款最低限额最小为零")
+    @DecimalMin(value = "0.01", message = "预付款最低限额必须大于零")
     private BigDecimal advancePrice;
 
     /**

+ 2 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsPriceRanges.java

@@ -21,7 +21,7 @@ public class GoodsPriceRanges {
      * 起售量
      */
     @NotNull(message = "起售量不能为空")
-    @DecimalMin(value = "0.00",message = "起售量最小为零")
+    @DecimalMin(value = "0.01", message = "起售量必须大于零")
     private BigDecimal startAmount;
 
     /**
@@ -40,7 +40,7 @@ public class GoodsPriceRanges {
      * 含税价
      */
     @NotNull(message = "含税价不能为空")
-    @DecimalMin(value = "0.00", message = "含税价最低为零")
+    @DecimalMin(value = "0.01", message = "含税价必须大于零")
     private BigDecimal price;
 
     /**

+ 2 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateGoodsParam.java

@@ -56,7 +56,7 @@ public class UpdateGoodsParam {
     /**
      * 库存数量
      */
-    @DecimalMin(value = "0.00", message = "库存数量最小为零")
+    @DecimalMin(value = "0.01", message = "库存数量必须大于零")
     private BigDecimal amount;
 
     /**
@@ -80,7 +80,7 @@ public class UpdateGoodsParam {
     /**
      * 预付款最低限额(万元)
      */
-    @DecimalMin(value = "0.00", message = "预付款最低限额最小为零")
+    @DecimalMin(value = "0.01", message = "预付款最低限额必须大于零")
     private BigDecimal advancePrice;
 
     /**

+ 19 - 5
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -406,14 +406,14 @@ public class KwpGoodsService {
             return "价格梯度不能为空!";
         }
         for (GoodsPriceRanges e : priceRanges) {
-            if (Objects.isNull(e.getStartAmount()) || e.getStartAmount().compareTo(BigDecimal.ZERO) < 0) {
-                return "起售量不能为空且最小为零!";
+            if (Objects.isNull(e.getStartAmount()) || e.getStartAmount().compareTo(BigDecimal.ZERO) <= 0) {
+                return "起售量不能为空且必须大于零!";
             }
             if (Objects.isNull(e.getEndAmount()) || e.getEndAmount().compareTo(new BigDecimal("-1.00")) < 0) {
-                return "上限售量不能为空且最小为零!";
+                return "上限售量不能为空且必须大于零!";
             }
-            if (Objects.isNull(e.getPrice()) || e.getStartAmount().compareTo(BigDecimal.ZERO) < 0) {
-                return "含税价不能为空且最低为零!";
+            if (Objects.isNull(e.getPrice()) || e.getStartAmount().compareTo(BigDecimal.ZERO) <= 0) {
+                return "含税价不能为空且必须大于零!";
             }
             if (Objects.isNull(e.getSort())) {
                 return "价格梯度顺序不能为空!";
@@ -1008,4 +1008,18 @@ public class KwpGoodsService {
         Long count = kwpGoodsMapper.selectCount(wrapper);
         return Objects.nonNull(count) && count > 0L;
     }
+
+    /**
+     * @desc: 根据供应企业id获取未删除非草稿的商品数量
+     * @author: yzc
+     * @date: 2023-08-29 9:51
+     * @Param supplyEntId:  供应企业id
+     * @return: java.lang.Long
+     */
+    public Long getCountBySupplyEnt(Long supplyEntId) {
+        LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpGoods::getSupplyEntId,supplyEntId).eq(KwpGoods::getDelFlag, Global.NO).
+                ne(KwpGoods::getStatus, GoodsStatusEnum.SAVED.getCode());
+        return kwpGoodsMapper.selectCount(wrapper);
+    }
 }