From 18d1f4bc4f4f77c8883702a00896dd99469db648 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期五, 25 八月 2023 16:06:37 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

---
 service-store/src/main/java/com/java110/store/bmo/collection/impl/ResourceOutBMOImpl.java |   45 +++++++++++++++++++++++++++------------------
 1 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/service-store/src/main/java/com/java110/store/bmo/collection/impl/ResourceOutBMOImpl.java b/service-store/src/main/java/com/java110/store/bmo/collection/impl/ResourceOutBMOImpl.java
index 2ae8b2d..5128397 100755
--- a/service-store/src/main/java/com/java110/store/bmo/collection/impl/ResourceOutBMOImpl.java
+++ b/service-store/src/main/java/com/java110/store/bmo/collection/impl/ResourceOutBMOImpl.java
@@ -2,9 +2,9 @@
 
 import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.dto.purchaseApply.PurchaseApplyDto;
-import com.java110.dto.resourceStore.ResourceStoreDto;
-import com.java110.dto.userStorehouse.UserStorehouseDto;
+import com.java110.dto.purchase.PurchaseApplyDto;
+import com.java110.dto.resource.ResourceStoreDto;
+import com.java110.dto.user.UserStorehouseDto;
 import com.java110.intf.store.IPurchaseApplyDetailInnerServiceSMO;
 import com.java110.intf.store.IPurchaseApplyInnerServiceSMO;
 import com.java110.intf.store.IResourceStoreInnerServiceSMO;
@@ -12,7 +12,7 @@
 import com.java110.po.purchase.PurchaseApplyDetailPo;
 import com.java110.po.purchase.PurchaseApplyPo;
 import com.java110.po.purchase.ResourceStorePo;
-import com.java110.po.userStorehouse.UserStorehousePo;
+import com.java110.po.user.UserStorehousePo;
 import com.java110.store.bmo.collection.IResourceOutBMO;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.StringUtil;
@@ -21,6 +21,7 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Service("resourceOutBMOImpl")
@@ -62,16 +63,20 @@
             if (StringUtil.isEmpty(resourceStores.get(0).getMiniStock())) {
                 throw new IllegalArgumentException("鏈�灏忚閲忔�绘暟涓嶈兘涓虹┖锛�");
             }
-            String miniStock1 = resourceStores.get(0).getMiniStock();
+            BigDecimal miniStock1 = new BigDecimal(resourceStores.get(0).getMiniStock());
+            BigDecimal purchaseQuantity = new BigDecimal(purchaseApplyDetailPo.getPurchaseQuantity());
             if (StringUtil.isEmpty(resourceStores.get(0).getMiniUnitStock())) {
                 throw new IllegalArgumentException("鏈�灏忚閲忓崟浣嶆暟閲忎笉鑳戒负绌猴紒");
             }
             //鑾峰彇鐗╁搧鏈�灏忚閲忓崟浣嶆暟閲�
-            String miniUnitStock1 = resourceStores.get(0).getMiniUnitStock();
+            BigDecimal miniUnitStock1 = new BigDecimal(resourceStores.get(0).getMiniUnitStock());
             //璁$畻棰嗙敤鐗╁搧鐨勬渶灏忚閲忔�绘暟
-            double applyQuantity = Double.parseDouble(purchaseApplyDetailPo.getPurchaseQuantity()) * Double.parseDouble(miniUnitStock1);
+            BigDecimal applyQuantity = purchaseQuantity.multiply(miniUnitStock1);
             //璁$畻鐗╁搧棰嗙敤鍚庡墿浣欑殑鏈�灏忚閲忔�绘暟
-            double newMiniStock = Double.parseDouble(miniStock1) - applyQuantity;
+            BigDecimal newMiniStock = miniStock1.subtract(applyQuantity);
+            if (newMiniStock.compareTo(BigDecimal.ZERO) == -1) {
+                throw new IllegalArgumentException("鐗╁搧搴撳瓨宸茬粡涓嶈冻锛岃纭鐗╁搧搴撳瓨锛�");
+            }
             resourceStorePo.setMiniStock(String.valueOf(newMiniStock));
             resourceStoreInnerServiceSMOImpl.updateResourceStore(resourceStorePo);
             ResourceStoreDto resourceStoreDto = new ResourceStoreDto();
@@ -91,12 +96,13 @@
             UserStorehousePo userStorehousePo = new UserStorehousePo();
             userStorehousePo.setUsId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_usId));
             userStorehousePo.setResId(resourceStoreDtos.get(0).getResId());
+            userStorehousePo.setResCode(resourceStoreDtos.get(0).getResCode());
             userStorehousePo.setResName(resourceStoreDtos.get(0).getResName());
             userStorehousePo.setStoreId(resourceStoreDtos.get(0).getStoreId());
             userStorehousePo.setUserId(purchaseApplyDtos.get(0).getUserId());
             //鏌ヨ鐗╁搧 鏄惁宸茬粡瀛樺湪
             UserStorehouseDto userStorehouseDto = new UserStorehouseDto();
-            userStorehouseDto.setResId(resourceStoreDtos.get(0).getResId());
+            userStorehouseDto.setResCode(resourceStoreDtos.get(0).getResCode());
             userStorehouseDto.setUserId(purchaseApplyDtos.get(0).getUserId());
             userStorehouseDto.setStoreId(resourceStoreDtos.get(0).getStoreId());
             List<UserStorehouseDto> userStorehouseDtos = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouseDto);
@@ -104,9 +110,10 @@
                 userStorehousePo.setStock(purchaseApplyDetailPo.getPurchaseQuantity());
                 if (!StringUtil.isEmpty(unitCode) && !StringUtil.isEmpty(miniUnitCode) && !StringUtil.isEmpty(miniUnitStock) && !unitCode.equals(miniUnitCode)) {
                     //鑾峰彇棰嗗彇鏁伴噺
-                    double purchaseQuantity = Double.parseDouble(purchaseApplyDetailPo.getPurchaseQuantity());
+                    BigDecimal purchaseQuantity2 = new BigDecimal(purchaseApplyDetailPo.getPurchaseQuantity());
+                    BigDecimal miniUnitStock2 = new BigDecimal(miniUnitStock);
                     //璁$畻涓汉鐗╁搧鏈�灏忚閲忔�绘暟
-                    double quantity = purchaseQuantity * Double.parseDouble(miniUnitStock);
+                    BigDecimal quantity = purchaseQuantity2.multiply(miniUnitStock2);
                     userStorehousePo.setMiniStock(String.valueOf(quantity));
                 } else {
                     userStorehousePo.setMiniStock(purchaseApplyDetailPo.getPurchaseQuantity());
@@ -114,23 +121,25 @@
                 userStorehouseInnerServiceSMOImpl.saveUserStorehouses(userStorehousePo);
             } else {
                 //鑾峰彇涓汉鐗╁搧棰嗙敤鍚庣殑搴撳瓨
-                double total = Double.parseDouble(purchaseApplyDetailPo.getPurchaseQuantity()) + Double.parseDouble(userStorehouseDtos.get(0).getStock());
-                userStorehousePo.setStock(total + "");
+                BigDecimal purchaseQuantity3 = new BigDecimal(purchaseApplyDetailPo.getPurchaseQuantity());
+                BigDecimal stock3 = new BigDecimal(userStorehouseDtos.get(0).getStock());
+                BigDecimal total = purchaseQuantity3.add(stock3);
+                userStorehousePo.setStock(total.toString());
                 userStorehousePo.setUsId(userStorehouseDtos.get(0).getUsId());
                 if (!StringUtil.isEmpty(unitCode) && !StringUtil.isEmpty(miniUnitCode) && !StringUtil.isEmpty(miniUnitStock) && !unitCode.equals(miniUnitCode)) {
                     //鑾峰彇鏈棰嗗彇鏁伴噺
-                    double purchaseQuantity = Double.parseDouble(purchaseApplyDetailPo.getPurchaseQuantity());
+                    BigDecimal miniUnitStock3 = new BigDecimal(miniUnitStock);
                     //璁$畻鏈棰嗗彇鐨勪釜浜虹墿鍝佹渶灏忚閲忔�绘暟
-                    double quantity = purchaseQuantity * Double.parseDouble(miniUnitStock);
-                    double miniStock = 0.0;
+                    BigDecimal quantity = purchaseQuantity3.multiply(miniUnitStock3);
+                    BigDecimal miniStock = new BigDecimal(0);
                     //鑾峰彇涓汉鐗╁搧鍘熷厛鐨勬渶灏忚閲忔�绘暟
                     if (StringUtil.isEmpty(userStorehouseDtos.get(0).getMiniStock())) {
                         throw new IllegalArgumentException("淇℃伅閿欒锛屼釜浜虹墿鍝佹渶灏忚閲忔�绘暟涓嶈兘涓虹┖锛�");
                     } else {
-                        miniStock = Double.parseDouble(userStorehouseDtos.get(0).getMiniStock());
+                        miniStock = new BigDecimal(userStorehouseDtos.get(0).getMiniStock());
                     }
                     //璁$畻棰嗙敤鍚庝釜浜虹墿鍝佹�荤殑鏈�灏忚閲忔�绘暟
-                    double miniQuantity = quantity + miniStock;
+                    BigDecimal miniQuantity = quantity.add(miniStock);
                     userStorehousePo.setMiniStock(String.valueOf(miniQuantity));
                 } else {
                     userStorehousePo.setMiniStock(String.valueOf(total));

--
Gitblit v1.8.0