java110
2021-08-12 4dbf61c9189796ec46d39ac4b839cfc064e70411
service-store/src/main/java/com/java110/store/api/PurchaseApi.java
@@ -23,6 +23,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.*;
@RestController
@@ -106,6 +107,13 @@
    @RequestMapping(value = "/resourceEnter", method = RequestMethod.POST)
    public ResponseEntity<String> resourceEnter(@RequestBody JSONObject reqJson) {
        Assert.hasKeyAndValue(reqJson, "applyOrderId", "订单ID为空");
        PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto();
        purchaseApplyDto.setApplyOrderId(reqJson.getString("applyOrderId"));
        purchaseApplyDto.setStatusCd("0");
        List<PurchaseApplyDto> purchaseApplyDtoList = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplys(purchaseApplyDto);
        if(purchaseApplyDtoList!=null && PurchaseApplyDto.STATE_AUDITED.equals(purchaseApplyDtoList.get(0).getState())){
            throw new IllegalArgumentException("该订单已经处理,请刷新确认订单状态!");
        }
        JSONArray purchaseApplyDetails = reqJson.getJSONArray("purchaseApplyDetailVo");
        List<PurchaseApplyDetailPo> purchaseApplyDetailPos = new ArrayList<>();
        for (int detailIndex = 0; detailIndex < purchaseApplyDetails.size(); detailIndex++) {
@@ -173,20 +181,20 @@
            resourceStorePo.setStock(purchaseApplyDetailPo.getPurchaseQuantity());
            resourceStorePo.setResOrderType(PurchaseApplyDto.RES_ORDER_TYPE_ENTER);
            //获取采购数量
            double purchaseQuantity = Double.parseDouble(purchaseApplyDetailPo.getPurchaseQuantity());
            BigDecimal purchaseQuantity = new BigDecimal(purchaseApplyDetailPo.getPurchaseQuantity());
            //获取原有最小计量总数
            double miniStock = Double.parseDouble(resourceStore.getString("miniStock"));
            BigDecimal miniStock = new BigDecimal(resourceStore.getString("miniStock"));
            //获取最小单位数量
            double newMiniStock = 0.0;
            BigDecimal newMiniStock = new BigDecimal(0);
            if (StringUtil.isEmpty(resourceStore.getString("miniUnitStock"))) {
                throw new IllegalArgumentException("最小计量单位数量不能为空!");
            }
            double miniUnitStock = Double.parseDouble(resourceStore.getString("miniUnitStock"));
            BigDecimal miniUnitStock = new BigDecimal(resourceStore.getString("miniUnitStock"));
            //计算最小计量总数
            if (StringUtil.isEmpty(resourceStore.getString("miniStock"))) {
                newMiniStock = purchaseQuantity * miniUnitStock;
                newMiniStock = purchaseQuantity.multiply(miniUnitStock);
            } else {
                newMiniStock = (purchaseQuantity * miniUnitStock) + miniStock;
                newMiniStock = (purchaseQuantity.multiply(miniUnitStock)).add(miniStock);
            }
            resourceStorePo.setMiniStock(String.valueOf(newMiniStock));
            resourceStoreInnerServiceSMOImpl.updateResourceStore(resourceStorePo);
@@ -225,7 +233,7 @@
            throw new IllegalArgumentException("映射值为空!");
        }
        int number = Integer.parseInt(value);
        if (count > number) {
        if (count >= number) {
            throw new IllegalArgumentException("本月紧急采购次数已超过" + number + "次,请下月再使用!");
        }
        PurchaseApplyPo purchaseApplyPo = new PurchaseApplyPo();
@@ -327,19 +335,19 @@
                resourceStorePo1.setResOrderType(PurchaseApplyDto.WAREHOUSING_TYPE_URGENT);
                resourceStorePo1.setOperationType(PurchaseApplyDto.WEIGHTED_MEAN_FALSE);
                //获取紧急采购数量
                double purchaseQuantity = Double.parseDouble(purchaseApplyDetailPo.getQuantity());
                BigDecimal purchaseQuantity = new BigDecimal(purchaseApplyDetailPo.getQuantity());
                //获取原有最小计量总数
                if(StringUtil.isEmpty(resourceStoreDtos.get(0).getMiniStock())){
                if (StringUtil.isEmpty(resourceStoreDtos.get(0).getMiniStock())) {
                    throw new IllegalArgumentException("最小计量总数不能为空!");
                }
                double miniStock = Double.parseDouble(resourceStoreDtos.get(0).getMiniStock());
                BigDecimal miniStock = new BigDecimal(resourceStoreDtos.get(0).getMiniStock());
                //获取最小计量单位数量
                if (StringUtil.isEmpty(resourceStoreDtos.get(0).getMiniUnitStock())) {
                    throw new IllegalArgumentException("最小计量单位数量不能为空!");
                }
                double miniUnitStock = Double.parseDouble(resourceStoreDtos.get(0).getMiniUnitStock());
                BigDecimal miniUnitStock = new BigDecimal(resourceStoreDtos.get(0).getMiniUnitStock());
                //计算最小计量总数
                double newMiniStock = (purchaseQuantity * miniUnitStock) + miniStock;
                BigDecimal newMiniStock = purchaseQuantity.multiply(miniUnitStock).add(miniStock);
                resourceStorePo1.setMiniStock(String.valueOf(newMiniStock));
                resourceStoreInnerServiceSMOImpl.updateResourceStore(resourceStorePo1);
            } else if (resourceStoreDtos != null && resourceStoreDtos.size() > 1) {
@@ -390,14 +398,14 @@
                resourceStoreDto1.setStock(purchaseApplyDetailPo.getQuantity());
                resourceStoreDto1.setCreateTime(new Date());
                //获取紧急采购数量
                double purchaseQuantity = Double.parseDouble(purchaseApplyDetailPo.getQuantity());
                BigDecimal purchaseQuantity = new BigDecimal(purchaseApplyDetailPo.getQuantity());
                //获取最小计量单位数量
                if (StringUtil.isEmpty(resourceStore.getString("miniUnitStock"))) {
                    throw new IllegalArgumentException("最小计量单位数量不能为空!");
                }
                double miniUnitStock = Double.parseDouble(resourceStore.getString("miniUnitStock"));
                BigDecimal miniUnitStock = new BigDecimal(resourceStore.getString("miniUnitStock"));
                //计算最小计量总数
                double miniStock = purchaseQuantity * miniUnitStock;
                BigDecimal miniStock = purchaseQuantity.multiply(miniUnitStock);
                resourceStoreDto1.setMiniStock(String.valueOf(miniStock));
                resourceStoreInnerServiceSMOImpl.saveResourceStore(resourceStoreDto1);
            }