From d8d7058d6245d33685ddf6ced109ec171423febc Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期四, 19 一月 2023 06:31:03 +0800
Subject: [PATCH] 优化 物品领用 bug

---
 service-store/src/main/java/com/java110/store/cmd/collection/ResourceOutCmd.java |   54 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/service-store/src/main/java/com/java110/store/cmd/collection/ResourceOutCmd.java b/service-store/src/main/java/com/java110/store/cmd/collection/ResourceOutCmd.java
index 664ebde..989ef2e 100644
--- a/service-store/src/main/java/com/java110/store/cmd/collection/ResourceOutCmd.java
+++ b/service-store/src/main/java/com/java110/store/cmd/collection/ResourceOutCmd.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
@@ -47,10 +48,10 @@
 
 @Java110ParamsDoc(params = {
         @Java110ParamDoc(name = "applyOrderId", length = 30, remark = "閲囪喘鐢宠鍗曡鍗旾D"),
-        @Java110ParamDoc(name = "purchaseApplyDetailVo", type = "Array",length = 30, remark = "閲囪喘鐗╁搧淇℃伅"),
-        @Java110ParamDoc(parentNodeName = "purchaseApplyDetailVo", name = "purchaseQuantity", type = "Int",length = 30, remark = "鏁伴噺"),
-        @Java110ParamDoc(parentNodeName = "purchaseApplyDetailVo", name = "id", type = "String",length = 30, remark = "閲囪喘鏄庣粏ID"),
-        @Java110ParamDoc(parentNodeName = "purchaseApplyDetailVo", name = "resId", type = "String",length = 30, remark = "鐗╁搧ID"),
+        @Java110ParamDoc(name = "purchaseApplyDetailVo", type = "Array", length = 30, remark = "閲囪喘鐗╁搧淇℃伅"),
+        @Java110ParamDoc(parentNodeName = "purchaseApplyDetailVo", name = "purchaseQuantity", type = "Int", length = 30, remark = "鏁伴噺"),
+        @Java110ParamDoc(parentNodeName = "purchaseApplyDetailVo", name = "id", type = "String", length = 30, remark = "閲囪喘鏄庣粏ID"),
+        @Java110ParamDoc(parentNodeName = "purchaseApplyDetailVo", name = "resId", type = "String", length = 30, remark = "鐗╁搧ID"),
 })
 
 @Java110ResponseDoc(
@@ -61,8 +62,8 @@
 )
 
 @Java110ExampleDoc(
-        reqBody="{'applyOrderId':'123123','purchaseApplyDetailVo':[{'purchaseQuantity':'10','id':'123123','resId':'343434'}]}",
-        resBody="{'code':0,'msg':'鎴愬姛'}"
+        reqBody = "{'applyOrderId':'123123','purchaseApplyDetailVo':[{'purchaseQuantity':'10','id':'123123','resId':'343434'}]}",
+        resBody = "{'code':0,'msg':'鎴愬姛'}"
 )
 
 /**
@@ -100,6 +101,7 @@
     }
 
     @Override
+    @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
         JSONArray purchaseApplyDetails = reqJson.getJSONArray("purchaseApplyDetailVo");
@@ -151,7 +153,7 @@
             resourceStoreInnerServiceSMOImpl.updateResourceStore(resourceStorePo);
 
             //鍔犲叆 浠庡簱瀛樹腑鎵e噺
-            subResourceStoreTimesStock(resourceStores.get(0).getResCode(), purchaseApplyDetailPo.getPurchaseQuantity());
+            subResourceStoreTimesStock(resourceStores.get(0).getResCode(), purchaseApplyDetailPo);
 
             ResourceStoreDto resourceStoreDto = new ResourceStoreDto();
             resourceStoreDto.setResId(purchaseApplyDetailPo.getResId());
@@ -220,7 +222,10 @@
                 }
                 userStorehouseInnerServiceSMOImpl.updateUserStorehouses(userStorehousePo);
             }
+
         }
+
+        //
         //鑾峰彇璁㈠崟鍙�
         String applyOrderId = purchaseApplyPo.getApplyOrderId();
         PurchaseApplyPo purchaseApply = new PurchaseApplyPo();
@@ -233,14 +238,16 @@
 
     /**
      * 浠巘imes涓墸鍑�
+     *
      * @param resCode
-     * @param applyQuantity
+     * @param purchaseApplyDetailPo
      */
-    private void subResourceStoreTimesStock(String resCode, String applyQuantity) {
-
+    private void subResourceStoreTimesStock(String resCode, PurchaseApplyDetailPo purchaseApplyDetailPo) {
+        String applyQuantity = purchaseApplyDetailPo.getPurchaseQuantity();
         ResourceStoreTimesDto resourceStoreTimesDto = new ResourceStoreTimesDto();
         resourceStoreTimesDto.setResCode(resCode);
-        resourceStoreTimesDto.setHasStock("Y");
+        resourceStoreTimesDto.setTimesId(purchaseApplyDetailPo.getTimesId());
+        //resourceStoreTimesDto.setHasStock("Y");
         List<ResourceStoreTimesDto> resourceStoreTimesDtos = resourceStoreTimesV1InnerServiceSMOImpl.queryResourceStoreTimess(resourceStoreTimesDto);
 
         if (resourceStoreTimesDtos == null || resourceStoreTimesDtos.size() < 1) {
@@ -249,21 +256,16 @@
         int stock = 0;
         int quantity = Integer.parseInt(applyQuantity);
         ResourceStoreTimesPo resourceStoreTimesPo = null;
-        for (ResourceStoreTimesDto resourceStoreTimesDto1 : resourceStoreTimesDtos) {
-            stock = Integer.parseInt(resourceStoreTimesDto1.getStock());
-            if (stock > quantity) {
-                stock = stock - quantity;
-                resourceStoreTimesPo = new ResourceStoreTimesPo();
-                resourceStoreTimesPo.setTimesId(resourceStoreTimesDto1.getTimesId());
-                resourceStoreTimesPo.setStock(stock + "");
-                resourceStoreTimesV1InnerServiceSMOImpl.updateResourceStoreTimes(resourceStoreTimesPo);
-                break;
-            }
-            quantity = quantity - stock;
-            resourceStoreTimesPo = new ResourceStoreTimesPo();
-            resourceStoreTimesPo.setTimesId(resourceStoreTimesDto1.getTimesId());
-            resourceStoreTimesPo.setStock("0");
-            resourceStoreTimesV1InnerServiceSMOImpl.updateResourceStoreTimes(resourceStoreTimesPo);
+
+        stock = Integer.parseInt(resourceStoreTimesDtos.get(0).getStock());
+        if (stock < quantity) {
+            throw new CmdException(resourceStoreTimesDtos.get(0).getResCode() + "浠锋牸涓猴細" + resourceStoreTimesDtos.get(0).getPrice() + "鐨勫簱瀛�" + resourceStoreTimesDtos.get(0).getStock() + ",搴撳瓨涓嶈冻");
         }
+
+        stock = stock - quantity;
+        resourceStoreTimesPo = new ResourceStoreTimesPo();
+        resourceStoreTimesPo.setTimesId(resourceStoreTimesDtos.get(0).getTimesId());
+        resourceStoreTimesPo.setStock((stock - quantity) + "");
+        resourceStoreTimesV1InnerServiceSMOImpl.updateResourceStoreTimes(resourceStoreTimesPo);
     }
 }

--
Gitblit v1.8.0