فهرست منبع

订单号生成异常直接结束订单流程

yzc 2 سال پیش
والد
کامیت
8c89b1e950

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

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

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