From 1024666b99a24bd7d5e4dc442d6b0c0319fa2f29 Mon Sep 17 00:00:00 2001
From: xiaogang <905166056@qq.com>
Date: 星期六, 17 七月 2021 22:56:48 +0800
Subject: [PATCH] 1、优化细节性问题2、优化采购细节问题
---
service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java | 95 +++++++++++++++++++++++++++++++++++++++++------
1 files changed, 82 insertions(+), 13 deletions(-)
diff --git a/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java b/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java
index 0ab44b7..744f26e 100644
--- a/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java
+++ b/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java
@@ -12,9 +12,11 @@
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -39,18 +41,24 @@
for (int i = 0; i < objects.length; i++) {
Object object = objects[i];
JSONObject paramIn = JSONObject.parseObject(String.valueOf(object));
- //鑾峰彇搴撳瓨鏁伴噺
String stock = paramIn.getString("stock");
- //鑾峰彇杞鏁伴噺
+ //鑾峰彇鏈�灏忚閲忔�绘暟
+ String miniStock = paramIn.getString("miniStock");
+ //鑾峰彇鏈�灏忚閲忓崟浣嶆暟閲�
+ String miniUnitStock = paramIn.getString("miniUnitStock");
+ //鑾峰彇杞禒鏁伴噺
String giveQuantity = paramIn.getString("giveQuantity");
//鑾峰彇鐗╁搧id
String resId = paramIn.getString("resId");
+ //鑾峰彇鐗╁搧鍚嶇О
String resName = paramIn.getString("resName");
//鑾峰彇褰撳墠鐢ㄦ埛id
String userId = paramInJson.getString("userId");
- //鑾峰彇鎺ュ彈杞鐢ㄦ埛id
+ //鑾峰彇鎺ュ彈杞禒鐢ㄦ埛id
String acceptUserId = paramInJson.getString("acceptUserId");
+ //鑾峰彇鎺ュ彈杞禒鐢ㄦ埛鍚嶇О
String acceptUserName = paramInJson.getString("acceptUserName");
+ //鑾峰彇鍟嗘埛id
String storeId = paramInJson.getString("storeId");
JSONObject allocationUserStorehouseJson = new JSONObject();
allocationUserStorehouseJson.put("ausId", "-1");
@@ -74,38 +82,99 @@
Assert.listOnlyOne(userStorehouseDtos, "鏌ヨ涓汉鐗╁搧淇℃伅閿欒锛�");
//鑾峰彇涓汉鐗╁搧淇℃伅id
String usId = userStorehouseDtos.get(0).getUsId();
+ //鑾峰彇鐗╁搧鍗曚綅
+ if (StringUtil.isEmpty(userStorehouseDtos.get(0).getUnitCode())) {
+ throw new IllegalArgumentException("鐗╁搧鍗曚綅涓嶈兘涓虹┖");
+ }
+ String unitCode = userStorehouseDtos.get(0).getUnitCode();
+ //鑾峰彇鐗╁搧鏈�灏忚閲忓崟浣�
+ if (StringUtil.isEmpty(userStorehouseDtos.get(0).getMiniUnitCode())) {
+ throw new IllegalArgumentException("鐗╁搧鏈�灏忚閲忓崟浣嶄笉鑳戒负绌�");
+ }
+ String miniUnitCode = userStorehouseDtos.get(0).getMiniUnitCode();
UserStorehousePo userStorehousePo = new UserStorehousePo();
userStorehousePo.setUsId(usId);
- //鑾峰彇杞鍚庣殑搴撳瓨鏁伴噺
- int newStock = Integer.parseInt(stock) - Integer.parseInt(giveQuantity);
- userStorehousePo.setStock(String.valueOf(newStock));
+ //杞禒鍚庝釜浜虹墿鍝佹渶灏忚閲忔�绘暟
+ BigDecimal num1 = new BigDecimal(Double.parseDouble(miniStock));
+ BigDecimal num2 = new BigDecimal(Double.parseDouble(giveQuantity));
+ double quantity = num1.subtract(num2).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+ if (quantity == 0.0) {
+ userStorehousePo.setMiniStock(String.valueOf(quantity));
+ userStorehousePo.setStock("0");
+ } else {
+ userStorehousePo.setMiniStock(String.valueOf(quantity));
+ BigDecimal reduceNum = num1.subtract(num2);
+ if (unitCode.equals(miniUnitCode)) { //濡傛灉鐗╁搧鍗曚綅涓庢渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
+ //鐢ㄨ浆璧犲悗鏈�灏忚閲忔�绘暟闄や互鏈�灏忚閲忓崟浣嶆暟閲忥紝鑾峰彇杞禒鍚庣殑搴撳瓨鏁�
+ BigDecimal num3 = new BigDecimal(Double.parseDouble(miniUnitStock));
+ double unitStock = reduceNum.divide(num3, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
+ userStorehousePo.setStock(String.valueOf(unitStock));
+ } else { //濡傛灉鐗╁搧鏈�灏忚閲忓崟浣嶄笌鐗╁搧鍗曚綅涓嶅悓锛屽氨鍚戜笂鍙栨暣
+ //鐢ㄨ浆璧犲悗鏈�灏忚閲忔�绘暟闄や互鏈�灏忚閲忓崟浣嶆暟閲忥紝骞跺悜涓婂彇鏁达紝鑾峰彇杞禒鍚庣殑搴撳瓨鏁�
+ BigDecimal num3 = new BigDecimal(Double.parseDouble(miniUnitStock));
+ double unitStock = reduceNum.divide(num3, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
+ double stockNumber = Math.ceil(unitStock);
+ userStorehousePo.setStock(String.valueOf(stockNumber));
+ }
+ }
//鏇存柊褰撳墠鐢ㄦ埛搴撳瓨鏁�
super.update(dataFlowContext, userStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
UserStorehouseDto userStorehouse = new UserStorehouseDto();
userStorehouse.setUserId(acceptUserId);
userStorehouse.setResId(resId);
+ //鏌ヨ鎺ュ彈杞禒浜虹殑涓汉鐗╁搧淇℃伅
List<UserStorehouseDto> userStorehouses = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouse);
if (userStorehouses != null && userStorehouses.size() == 1) {
- //鑾峰彇鎺ュ彈鐢ㄦ埛搴撳瓨鏁�
- String userStock = userStorehouses.get(0).getStock();
- //鑾峰彇杞鍚庣殑搴撳瓨鏁伴噺
- int myStock = Integer.parseInt(userStock) + Integer.parseInt(giveQuantity);
UserStorehousePo userStorePo = new UserStorehousePo();
+ //璁$畻鎺ュ彈鐢ㄦ埛鐨勬渶灏忚閲忔�绘暟
+ BigDecimal num4 = new BigDecimal(Double.parseDouble(userStorehouses.get(0).getMiniStock()));
+ BigDecimal num5 = new BigDecimal(Double.parseDouble(giveQuantity));
+ BigDecimal addNum = num4.add(num5);
+ double acceptMiniStock = num4.add(num5).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();;
+ userStorePo.setMiniStock(String.valueOf(acceptMiniStock));
+ //鑾峰彇鐗╁搧鍗曚綅
+ if (StringUtil.isEmpty(userStorehouses.get(0).getUnitCode())) {
+ throw new IllegalArgumentException("鐗╁搧鍗曚綅涓嶈兘涓虹┖");
+ }
+ String unitCode1 = userStorehouses.get(0).getUnitCode();
+ //鑾峰彇鐗╁搧鏈�灏忚閲忓崟浣�
+ if (StringUtil.isEmpty(userStorehouses.get(0).getMiniUnitCode())) {
+ throw new IllegalArgumentException("鐗╁搧鏈�灏忚閲忓崟浣嶄笉鑳戒负绌�");
+ }
+ String miniUnitCode1 = userStorehouses.get(0).getMiniUnitCode();
+ //璁$畻鎺ュ彈鐢ㄦ埛鐨勫簱瀛樻暟閲�
+ BigDecimal num6 = new BigDecimal(Double.parseDouble(miniUnitStock));
+ double unitStock = addNum.divide(num6, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
+ if (unitCode1.equals(miniUnitCode1)) { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
+ userStorePo.setStock(String.valueOf(unitStock));
+ } else { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶄笉鍚岋紝灏卞悜涓婂彇鏁�
+ double stockNumber = Math.ceil(unitStock);
+ userStorePo.setStock(String.valueOf(stockNumber));
+ }
userStorePo.setUsId(userStorehouses.get(0).getUsId());
- userStorePo.setStock(String.valueOf(myStock));
//鏇存柊褰撳墠鐢ㄦ埛鐨勫簱瀛樻暟閲�
super.update(dataFlowContext, userStorePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
} else if (userStorehouses != null && userStorehouses.size() > 1) {
throw new IllegalArgumentException("鏌ヨ涓汉鐗╁搧淇℃伅閿欒锛�");
} else {
+ //璁$畻杞禒鍚庡簱瀛樻暟閲�
+ BigDecimal num7 = new BigDecimal(Double.parseDouble(giveQuantity));
+ BigDecimal num8 = new BigDecimal(Double.parseDouble(miniUnitStock));
+ double unitStock = num7.divide(num8, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
UserStorehousePo userStorePo = new UserStorehousePo();
userStorePo.setUsId("-1");
userStorePo.setResId(resId);
userStorePo.setResName(resName);
userStorePo.setStoreId(storeId);
- userStorePo.setStock(giveQuantity);
+ if (unitCode.equals(miniUnitCode)) { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
+ userStorePo.setStock(String.valueOf(unitStock));
+ } else { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶄笉鍚岋紝灏卞悜涓婂彇鏁�
+ double stockNumber = Math.ceil(unitStock);
+ userStorePo.setStock(String.valueOf(stockNumber));
+ }
+ userStorePo.setMiniStock(giveQuantity);
userStorePo.setUserId(acceptUserId);
- //淇濆瓨鎺ュ彈杞鐢ㄦ埛涓汉鐗╁搧淇℃伅
+ //淇濆瓨鎺ュ彈杞禒鐢ㄦ埛涓汉鐗╁搧淇℃伅
super.insert(dataFlowContext, userStorePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_USER_STOREHOUSE);
}
}
--
Gitblit v1.8.0