Parcourir la source

订单列表地址信息回显,订单完结加锁

yzc il y a 2 ans
Parent
commit
3d04c11b7f

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

@@ -28,6 +28,8 @@ import com.sckw.payment.api.model.dto.WalletDto;
 import com.sckw.payment.api.model.dto.common.R;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
+import com.sckw.redis.constant.RedisConstant;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
@@ -776,29 +778,37 @@ public class KwoTradeOrderService {
         if (kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), DictEnum.TORDER_UNIT_TYPE_2.getValue())) {
             throw new BusinessException("无订单操作权限!");
         }
-        order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
-        kwoTradeOrderMapper.updateById(order);
-        //订单状态记录
-        KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
-        kwoTradeOrderTrackService.insert(track);
-        if (param.getActualAmount().compareTo(order.getAmount()) != 0) {
-            KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
-            if (Objects.isNull(goods)) {
-                throw new BusinessException("商品信息异常!");
-            }
-            //更新库存
-            BigDecimal amount = param.getActualAmount().subtract(order.getAmount());
-            HttpResult updateResult = goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
-            if (!Objects.equals(HttpStatus.SUCCESS_CODE, updateResult.getCode())) {
-                throw new BusinessException(updateResult.getMsg());
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, param.getId());
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+            throw new BusinessException("业务繁忙,请稍后再试!");
+        }
+        try {
+            order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
+            kwoTradeOrderMapper.updateById(order);
+            //订单状态记录
+            KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+            track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
+            kwoTradeOrderTrackService.insert(track);
+            if (param.getActualAmount().compareTo(order.getAmount()) != 0) {
+                KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
+                if (Objects.isNull(goods)) {
+                    throw new BusinessException("商品信息异常!");
+                }
+                //更新库存
+                BigDecimal amount = param.getActualAmount().subtract(order.getAmount());
+                HttpResult updateResult = goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
+                if (!Objects.equals(HttpStatus.SUCCESS_CODE, updateResult.getCode())) {
+                    throw new BusinessException(updateResult.getMsg());
+                }
             }
+            //mongodb更新订单状态
+            SckwTradeOrder updateParam = new SckwTradeOrder();
+            updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
+                    .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+            saveMongoDb(3, updateParam);
+        } finally {
+            RedissonUtils.unlock(lockKey);
         }
-        //mongodb更新订单状态
-        SckwTradeOrder updateParam = new SckwTradeOrder();
-        updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
-                .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
-        saveMongoDb(3, updateParam);
 
     }
 

+ 3 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -91,7 +91,7 @@ public class KwOrderService {
             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()))
-                    .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
+                    .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 ? "待托运" : "已托运")
@@ -270,9 +270,10 @@ public class KwOrderService {
                     .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()))
                     .setUnitPrice(String.valueOf(e.getUnitPrice())).setPrice(String.valueOf(e.getPrice()))
                     .setAmount(String.valueOf(e.getAmount())).setActualAmount(String.valueOf(e.getActualAmount()))
+                    .setLoadDetailAddressInfo(e.getLoadCityName() + e.getUnloadDetailAddress())
+                    .setUnloadDetailAddressInfo(e.getUnloadCityName() + e.getUnloadDetailAddress())
                     .setActualAmount(Objects.isNull(e.getActualAmount()) ? "0.00" : String.valueOf(e.getActualAmount()))
                     .setStartTime(Objects.isNull(e.getStartTime()) ? null : DateUtil.dateToStr(e.getStartTime()))
-                    .setAddedTime(Objects.isNull(e.getEndTime()) ? null : DateUtil.dateToStr(e.getEndTime()))
                     .setCreateTime(DateUtil.getDateTime(e.getCreateTime()));
             list.add(export);
         });

+ 17 - 14
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExport.java

@@ -32,25 +32,25 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "销售单位")
     private String supplyFirmName;
 
-    @ExcelProperty(value = "交付类型" )
-    private String deliveryType;
-
     @ExcelProperty(value = "提货方式" )
     private String pickupType;
 
     @ExcelProperty(value = "托运状态")
     private String consignmentStatus;
 
+    @ExcelProperty(value = "交付类型" )
+    private String deliveryType;
+
     @ExcelProperty(value = "下单方式" )
     private String source;
 
-    @ExcelProperty(value = "付款类型")
+    @ExcelProperty(value = "支付方式")
     private String trading;
 
     @ExcelProperty(value = "关联合同")
     private String contractNo;
 
-    @ExcelProperty(value = "承包方式")
+    @ExcelProperty(value = "签约方式")
     private String contractSigningWay;
 
     @ExcelProperty(value = "商品名称")
@@ -59,16 +59,13 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "规格")
     private String goodsSpec;
 
-    @ExcelProperty(value = "上架时间")
-    private String addedTime;
-
     @ExcelProperty(value = "单价/元")
     private String unitPrice;
 
     @ExcelProperty(value = "订单金额")
     private String price;
 
-    @ExcelProperty(value = "订单目标")
+    @ExcelProperty(value = "订单总量")
     private String amount;
 
     @ExcelProperty(value = "已履约量")
@@ -77,11 +74,17 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "归属项目")
     private String projectName;
 
-    @ExcelProperty(value = "装货地点")
-    private String loadCityName;
+    @ExcelProperty(value = "装货地址名称")
+    private String loadName;
+
+    @ExcelProperty(value = "装货地址明细")
+    private String loadDetailAddressInfo;
+
+    @ExcelProperty(value = "卸货地址名称")
+    private String unloadName;
 
-    @ExcelProperty(value = "卸货地点")
-    private String unloadCityName;
+    @ExcelProperty(value = "卸货地址明细")
+    private String unloadDetailAddressInfo;
 
     @ExcelProperty(value = "计划开始时间")
     private String startTime;
@@ -92,7 +95,7 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
-    @ExcelProperty(value = "创人")
+    @ExcelProperty(value = "创人")
     private String createByName;
 
     @ExcelProperty(value = "创建时间")

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

@@ -67,6 +67,10 @@ public class OrderListRes {
      * 提货方式(采方自提、供应配送)
      */
     private String pickupType;
+    /**
+     * 提货方式label
+     */
+    private String pickupTypeLabel;
     /**
      * 托运状态
      */