consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
@@ -1,5 +1,7 @@
package com.consum.base.service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -50,12 +52,14 @@
    @PostConstruct
    public void init() {
        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withCatalogName(dataBaseName).withProcedureName("InsertL_WH_GOODS");
        this.simpleJdbcCall =
            new SimpleJdbcCall(jdbcTemplate).withCatalogName(dataBaseName).withProcedureName("InsertL_WH_GOODS");
    }
    @Autowired
    public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, LWhGoodsService lWhGoodsService,
                                     BaseGoodsTemplateService baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordServiceImpl) {
    public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService,
        LWhGoodsService lWhGoodsService, BaseGoodsTemplateService baseGoodsTemplateService,
        LWhGoodsRecordService lWhGoodsRecordServiceImpl) {
        this.jdbcTemplate = jdbcTemplate;
        this.lWarehouseFlowService = lWarehouseFlowService;
        this.baseGoodsTemplateService = baseGoodsTemplateService;
@@ -70,7 +74,8 @@
     * @param warehouseFlow
     * @return
     */
    public int buyInsertWareFlow(List<LWhProcureModel> goodsModelNumList, LWhFormProcure lWhFormProcure, LWarehouseFlow warehouseFlow) {
    public int buyInsertWareFlow(List<LWhProcureModel> goodsModelNumList, LWhFormProcure lWhFormProcure,
        LWarehouseFlow warehouseFlow) {
        if (CollectionUtils.isEmpty(goodsModelNumList)) {
            log.error("没有要入库的物品");
            return 0;
@@ -97,9 +102,8 @@
        }
        //统计各型号数量
        Map<Long, Integer> countsSumByBaseGoodsModelsId = goodsModelNumList.stream()
                .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId,
                        Collectors.summingInt(LWhProcureModel::getCounts)));
        Map<Long, Integer> countsSumByBaseGoodsModelsId = goodsModelNumList.stream().collect(Collectors
            .groupingBy(LWhProcureModel::getBaseGoodsModelsId, Collectors.summingInt(LWhProcureModel::getCounts)));
        Map<Long, List<LWhProcureModel>> sameModelList = goodsModelNumList.stream()
                // 按型号分
                .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId));
@@ -137,7 +141,9 @@
            Object warehouseModelLockObj = LockManage.acquireLock(warehouseType, warehouseId, baseGoodsModelsId);
            synchronized (warehouseModelLockObj) {
                // 获得锁后查询该型号的期初数量
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 1, null);
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                int goodsModelNum =
                    lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModelsId, 1, null);
                whGoodsRecord.setInitialCount(goodsModelNum);
                whGoodsRecord.setThisCount(modelCount);
                whGoodsRecord.setEndCount(goodsModelNum + modelCount);
@@ -153,11 +159,10 @@
                    //物品个数
                    Integer counts = item.getCounts();
                    totalPrice = totalPrice + counts * price;
                    sameGoodsInsertMore(warehouseFlowId, warehouseType, warehouseId, whGoodsRecordId, (short) 1, warehouseName,
                            classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName,
                            supplier, buyType, goodsUnit, price, procureTime, 1, dealTime, counts);
                }
                ;
                    sameGoodsInsertMore(warehouseFlowId, warehouseType, warehouseId, whGoodsRecordId, (short)1,
                        warehouseName, classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName, supplier,
                        buyType, goodsUnit, price, procureTime, 1, dealTime, counts);
                } ;
                whGoodsRecord.setTotalPrice(totalPrice);
            }
            lWhGoodsRecordServiceImpl.insert(whGoodsRecord);
@@ -165,7 +170,6 @@
        return 1;
    }
    /**
     * 同样规格的物品 插入多次, 同时将主键记录在 进出库流水明细【L_WH_GOODS_RECORD_DETAILS】, 更新 物品仓库保管记录【L_GOODS_WH_RECORD】
@@ -185,31 +189,20 @@
     * @param pStates              状态
     * @param pTimes               插入条数
     */
    public void sameGoodsInsertMore(long pWarehouseFlowId, Integer warehouseType, long pWarehouseId, long pWhGoodsRecordId, short pRecordType,
                                    String pWarehouseName, short pCostType,
                                    long pBaseGoodsTemplateId, String pGoodsTemplateName, long pBaseGoodsModelsId,
                                    String pBaseGoodsModelsName, String pSupplier, short pBuyType,
                                    String pUnit, long pPrice, long pProcureDate,
                                    int pStates, long pDealTime, int pTimes) {
        SqlParameterSource in = new MapSqlParameterSource()
                .addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId)
                .addValue("p_WAREHOUSE_TYPE", warehouseType)
                .addValue("p_WAREHOUSE_ID", pWarehouseId)
                .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId)
                .addValue("p_RECORD_TYPE", pRecordType)
                .addValue("p_WAREHOUSE_NAME", pWarehouseName)
                .addValue("p_COST_TYPE", pCostType)
    public void sameGoodsInsertMore(long pWarehouseFlowId, Integer warehouseType, long pWarehouseId,
        long pWhGoodsRecordId, short pRecordType, String pWarehouseName, short pCostType, long pBaseGoodsTemplateId,
        String pGoodsTemplateName, long pBaseGoodsModelsId, String pBaseGoodsModelsName, String pSupplier,
        short pBuyType, String pUnit, long pPrice, long pProcureDate, int pStates, long pDealTime, int pTimes) {
        SqlParameterSource in = new MapSqlParameterSource().addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId)
            .addValue("p_WAREHOUSE_TYPE", warehouseType).addValue("p_WAREHOUSE_ID", pWarehouseId)
            .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId).addValue("p_RECORD_TYPE", pRecordType)
            .addValue("p_WAREHOUSE_NAME", pWarehouseName).addValue("p_COST_TYPE", pCostType)
                .addValue("p_BASE_GOODS_TEMPLATE_ID", pBaseGoodsTemplateId)
                .addValue("p_GOODS_TEMPLATE_NAME", pGoodsTemplateName)
                .addValue("p_BASE_GOODS_MODELS_ID", pBaseGoodsModelsId)
                .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName)
                .addValue("p_SUPPLIER", pSupplier)
                .addValue("p_BUY_TYPE", pBuyType)
                .addValue("p_UNIT", pUnit)
                .addValue("p_PRICE", pPrice)
                .addValue("p_PROCURE_DATE", pProcureDate)
                .addValue("p_STATES", pStates)
                .addValue("p_DEAL_TIME", pDealTime)
            .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName).addValue("p_SUPPLIER", pSupplier)
            .addValue("p_BUY_TYPE", pBuyType).addValue("p_UNIT", pUnit).addValue("p_PRICE", pPrice)
            .addValue("p_PROCURE_DATE", pProcureDate).addValue("p_STATES", pStates).addValue("p_DEAL_TIME", pDealTime)
                .addValue("p_times", pTimes);
        Map<String, Object> out = simpleJdbcCall.execute(in);
        System.out.println("Procedure result: " + out);