1098226878@qq.com
2021-12-28 745d27feae34022ccb708aba034123e08e4e9e14
service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java
@@ -50,6 +50,8 @@
                String giveQuantity = paramIn.getString("giveQuantity");
                //获取物品id
                String resId = paramIn.getString("resId");
                //获取物品id
                String resCode = paramIn.getString("resCode");
                //获取物品名称
                String resName = paramIn.getString("resName");
                //获取当前用户id
@@ -63,6 +65,7 @@
                JSONObject allocationUserStorehouseJson = new JSONObject();
                allocationUserStorehouseJson.put("ausId", "-1");
                allocationUserStorehouseJson.put("resId", resId);
                allocationUserStorehouseJson.put("resCode", resCode);
                allocationUserStorehouseJson.put("resName", resName);
                allocationUserStorehouseJson.put("storeId", storeId);
                allocationUserStorehouseJson.put("stock", stock);
@@ -95,25 +98,22 @@
                UserStorehousePo userStorehousePo = new UserStorehousePo();
                userStorehousePo.setUsId(usId);
                //转赠后个人物品最小计量总数
                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));
                BigDecimal num1 = new BigDecimal(miniStock);
                BigDecimal num2 = new BigDecimal(giveQuantity);
                BigDecimal quantity = num1.subtract(num2);
                if (quantity.doubleValue() == 0.0) {
                    userStorehousePo.setMiniStock("0");
                    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));
                        userStorehousePo.setStock(String.valueOf(reduceNum));
                    } else { //如果物品最小计量单位与物品单位不同,就向上取整
                        //用转赠后最小计量总数除以最小计量单位数量,并向上取整,获取转赠后的库存数
                        BigDecimal num3 = new BigDecimal(Double.parseDouble(miniUnitStock));
                        double unitStock = reduceNum.divide(num3, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
                        double stockNumber = Math.ceil(unitStock);
                        BigDecimal num3 = new BigDecimal(miniUnitStock);
                        BigDecimal unitStock = reduceNum.divide(num3, 2, BigDecimal.ROUND_HALF_UP);
                        Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
                        userStorehousePo.setStock(String.valueOf(stockNumber));
                    }
                }
@@ -121,16 +121,16 @@
                super.update(dataFlowContext, userStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
                UserStorehouseDto userStorehouse = new UserStorehouseDto();
                userStorehouse.setUserId(acceptUserId);
                userStorehouse.setResId(resId);
                userStorehouse.setResCode(resCode);
                //查询接受转赠人的个人物品信息
                List<UserStorehouseDto> userStorehouses = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouse);
                if (userStorehouses != null && userStorehouses.size() == 1) {
                    UserStorehousePo userStorePo = new UserStorehousePo();
                    //计算接受用户的最小计量总数
                    BigDecimal num4 = new BigDecimal(Double.parseDouble(userStorehouses.get(0).getMiniStock()));
                    BigDecimal num5 = new BigDecimal(Double.parseDouble(giveQuantity));
                    BigDecimal num4 = new BigDecimal(userStorehouses.get(0).getMiniStock());
                    BigDecimal num5 = new BigDecimal(giveQuantity);
                    BigDecimal addNum = num4.add(num5);
                    double acceptMiniStock = num4.add(num5).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();;
                    BigDecimal acceptMiniStock = num4.add(num5);
                    userStorePo.setMiniStock(String.valueOf(acceptMiniStock));
                    //获取物品单位
                    if (StringUtil.isEmpty(userStorehouses.get(0).getUnitCode())) {
@@ -143,12 +143,13 @@
                    }
                    String miniUnitCode1 = userStorehouses.get(0).getMiniUnitCode();
                    //计算接受用户的库存数量
                    BigDecimal num6 = new BigDecimal(Double.parseDouble(miniUnitStock));
                    double unitStock = addNum.divide(num6, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
                    BigDecimal num6 = new BigDecimal(miniUnitStock);
                    BigDecimal unitStock = addNum.divide(num6, 2, BigDecimal.ROUND_HALF_UP);
                    if (unitCode1.equals(miniUnitCode1)) { //如果物品单位与物品最小计量单位相同,就不向上取整
                        userStorePo.setStock(String.valueOf(unitStock));
                        //如果物品单位与最小计量单位相同,物品库存就等于最小计量总数
                        userStorePo.setStock(String.valueOf(acceptMiniStock));
                    } else { //如果物品单位与物品最小计量单位不同,就向上取整
                        double stockNumber = Math.ceil(unitStock);
                        Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
                        userStorePo.setStock(String.valueOf(stockNumber));
                    }
                    userStorePo.setUsId(userStorehouses.get(0).getUsId());
@@ -158,18 +159,19 @@
                    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();
                    BigDecimal num7 = new BigDecimal(giveQuantity);
                    BigDecimal num8 = new BigDecimal(miniUnitStock);
                    BigDecimal unitStock = num7.divide(num8, 2, BigDecimal.ROUND_HALF_UP);
                    UserStorehousePo userStorePo = new UserStorehousePo();
                    userStorePo.setUsId("-1");
                    userStorePo.setResId(resId);
                    userStorePo.setResName(resName);
                    userStorePo.setStoreId(storeId);
                    userStorePo.setResCode(resCode);
                    if (unitCode.equals(miniUnitCode)) { //如果物品单位与物品最小计量单位相同,就不向上取整
                        userStorePo.setStock(String.valueOf(unitStock));
                        userStorePo.setStock(String.valueOf(num7));
                    } else { //如果物品单位与物品最小计量单位不同,就向上取整
                        double stockNumber = Math.ceil(unitStock);
                        Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
                        userStorePo.setStock(String.valueOf(stockNumber));
                    }
                    userStorePo.setMiniStock(giveQuantity);