1.出库手续回显
2.调拨申请时库存查询更换接口
3.调拨出库时从已有物品所在的仓库中选择
3个文件已添加
6个文件已删除
18个文件已修改
889 ■■■■ 已修改文件
admin-web/src/views/departmentitem/itemdis/distribution/edit.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam1.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/param/CheckInWhParam.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/param/CheckOutWhParam.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/param/CheckWhEntity.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/param/DepBackWarehouseParam.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/type/InAndOutPutType.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/type/WareHouseType.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/dto/GoodsInfoDTO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryCoreService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputCoreService.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedCoreService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferCoreService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-web/src/views/departmentitem/itemdis/distribution/edit.vue
@@ -238,7 +238,7 @@
import {getUploadUrl} from '@/utils/base';
import {mapGetters} from 'vuex';
import * as DateFormatter from '@/utils/DateFormatter';
import {warehouseSelectNumber} from "@/api/baseSetting/finsystenant";
import {warehouseAllSelectNumber,warehouseSelectNumber} from "@/api/baseSetting/finsystenant";
export default {
  components: {MyButton, winMd, upload},
@@ -477,9 +477,8 @@
      let str = JSON.stringify(arr);
      for (const item of e) {
        if (str.indexOf(item) === -1) {
          let num = await warehouseSelectNumber({
          let num = await warehouseAllSelectNumber({
            baseGoodsModelsId: item,
            warehouseType: 0,
            states: 1,
            agencyId: this.userInfo.tenantId,
          });
consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java
@@ -1,6 +1,7 @@
package com.consum.base.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -188,7 +189,9 @@
        Integer states = warehouseQry.getStates();
        Integer buyType = warehouseQry.getBuyType();
        int num = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 1, buyType);
        // TODO 其他类型的库存查询是否要查部门类型的库存
        List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
        int num = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModelsId, 1, buyType);
        return ResponseValue.success(num);
    }
@@ -211,6 +214,8 @@
        Integer states = warehouseQry.getStates();
        Integer buyType = warehouseQry.getBuyType();
        // 调拨时只查机构类型的集采仓库库存
        // 部门分发时不分机构和部门,因为调拨进来的物品也算在库存里只是类型为部门,同样检视所有仓库该型号的数量
        int num = lWhGoodsService.queryGoodsModelInWareHouseNum(warehouseType, warehouseIdList, baseGoodsModelsId,
            states, buyType);
        return ResponseValue.success(num);
consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
@@ -7,6 +7,7 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
@@ -21,12 +22,14 @@
import org.springframework.web.bind.annotation.RestController;
import com.consum.base.BaseController;
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.utils.CommonUtil;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.pojo.GoodsUseRecordVO;
import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
import com.consum.base.pojo.RecordUserInfoVO;
import com.consum.base.pojo.UseRecordSkuVO;
import com.consum.base.pojo.dto.GoodsInfoDTO;
import com.consum.base.pojo.dto.UseRecordDTO;
import com.consum.base.pojo.excel.TransferExcelTemplate;
import com.consum.base.pojo.query.TransferQry;
@@ -40,13 +43,14 @@
import com.consum.base.service.BaseWarehouseService;
import com.consum.base.service.LGoodsUserRecordCoreService;
import com.consum.base.service.LWhFormTransferService;
import com.consum.base.service.LWhGoodsService;
import com.consum.base.service.LWhProcureModelService;
import com.consum.base.service.LWhProcureModelUserRecordService;
import com.consum.base.service.LWhProcureModelUserService;
import com.consum.base.service.impl.LWhFormTransferCoreService;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LWhFormTransfer;
import com.consum.model.po.LWhProcureModel;
import com.consum.model.po.LWhProcureModelUser;
import com.consum.model.po.LWhProcureModelUserRecord;
import com.iplatform.model.po.S_user_core;
@@ -87,6 +91,8 @@
    private BaseWarehouseService baseWarehouseService;
    @Autowired
    private LGoodsUserRecordCoreService lGoodsUserRecordCoreService;
    @Autowired
    private LWhGoodsService lWhGoodsService;
    /**
     * @Description 新增
@@ -115,16 +121,26 @@
        if (transferBusinessType == 1) {
            // 先出库,再入库
            // 出库前 设置出库仓库
            FinSysTenantUser sysTenantUser = this.getSysInfo();
            String agencyId = sysTenantUser.getTenantId();
            List<BaseWarehouse> baseWarehouseList =
                baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), (short)1, (short)1);
            if (CollectionUtils.isEmpty(baseWarehouseList)) {
                return ResponseValue.error("机构无默认仓库!");
            }
            BaseWarehouse baseWarehouse = baseWarehouseList.get(0);
            Long wareHouseId = baseWarehouse.getId();
            String warehouseName = baseWarehouse.getWarehouseName();
            List<LWhProcureModel> modelByForm = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, id);
            Set<Long> baseModelIds =
                modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet());
            // TODO 不同库处理
            // 通过调拨单中的型号id查询出该型号物品所在的仓库位置
            List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds);
            GoodsInfoDTO goodsInfoDTO = goodsInfoDTOS.stream().findFirst().orElse(null);
            // FinSysTenantUser sysTenantUser = this.getSysInfo();
            // String agencyId = sysTenantUser.getTenantId();
            // List<BaseWarehouse> baseWarehouseList =
            // baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), (short)1, (short)1);
            // if (CollectionUtils.isEmpty(baseWarehouseList)) {
            // return ResponseValue.error("机构无默认仓库!");
            // }
            // BaseWarehouse baseWarehouse = baseWarehouseList.get(0);
            Long wareHouseId = goodsInfoDTO.getWarehouseId();
            String warehouseName = goodsInfoDTO.getWarehouseName();
            LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id);
            lWhFormTransfer.setOutWarehouseId(wareHouseId);
            lWhFormTransfer.setOutWarehouseName(warehouseName);
@@ -264,17 +280,26 @@
    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "调拨单id", required = true, dataType = "Long"),})
    @PostMapping("/output")
    public ResponseValue output(Long id) {
        List<LWhProcureModel> modelByForm = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, id);
        Set<Long> baseModelIds =
            modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet());
        // TODO 不同库处理
        // 通过调拨单中的型号id查询出该型号物品所在的仓库位置
        List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds);
        GoodsInfoDTO goodsInfoDTO = goodsInfoDTOS.stream().findFirst().orElse(null);
        // 出库前 设置出库仓库
        FinSysTenantUser sysTenantUser = this.getSysInfo();
        String agencyId = sysTenantUser.getTenantId();
        List<BaseWarehouse> baseWarehouseList =
            baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), (short)1, (short)1);
        if (CollectionUtils.isEmpty(baseWarehouseList)) {
            return ResponseValue.error("机构无默认仓库!");
        }
        BaseWarehouse baseWarehouse = baseWarehouseList.get(0);
        Long wareHouseId = baseWarehouse.getId();
        String warehouseName = baseWarehouse.getWarehouseName();
        // FinSysTenantUser sysTenantUser = this.getSysInfo();
        // String agencyId = sysTenantUser.getTenantId();
        // List<BaseWarehouse> baseWarehouseList =
        // baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), (short)1, (short)1);
        // if (CollectionUtils.isEmpty(baseWarehouseList)) {
        // return ResponseValue.error("机构无默认仓库!");
        // }
        Long wareHouseId = goodsInfoDTO.getWarehouseId();
        String warehouseName = goodsInfoDTO.getWarehouseName();
        LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id);
        lWhFormTransfer.setOutWarehouseId(wareHouseId);
        lWhFormTransfer.setOutWarehouseName(warehouseName);
consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
@@ -14,6 +14,7 @@
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.web.ResponseValue;
import java.util.Arrays;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -118,7 +119,8 @@
            Object warehouseModelLockObj = LockManage.acquireLock(warehouseType, warehouseId, baseGoodsModelsId);
            int goodsModelNum = 0;
            synchronized (warehouseModelLockObj) {
                goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 2, null);
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModelsId, 2, null);
                for (Map<String, Object> depFormScrappedModel : eachFfModelList) {
                    // 调拨单信息
                    Long transBusinessId = (Long) depFormScrappedModel.get("TRANS_BUSINESS_ID");
consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
@@ -16,6 +16,7 @@
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.web.ResponseValue;
import java.util.Arrays;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -122,7 +123,8 @@
            Object warehouseModelLockObj = LockManage.acquireLock(warehouseType, warehouseId, baseGoodsModelsId);
            int goodsModelNum = 0;
            synchronized (warehouseModelLockObj) {
                goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 2, null);
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModelsId, 2, null);
                for (Map<String, Object> depFormScrappedModel : eachFfModelList) {
                    // 调拨单信息
                    Long transBusinessId = (Long) depFormScrappedModel.get("TRANS_BUSINESS_ID");
@@ -324,7 +326,8 @@
                List<Map<String, Object>> scrappedAllGoodsList = new ArrayList<>();
                synchronized (warehouseModelLockObj) {
                    //查询期初数量
                    goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, inWarehouseId, baseGoodsModelsId, 1, null);
                    List<Long> warehouseIds = new ArrayList<>(Arrays.asList(inWarehouseId));
                    goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseIds, baseGoodsModelsId, 1, null);
                    for (Map<String, Object> depFormScrappedModel : eachFfModelList) {
                        scrappedAllGoodsList.addAll((List<Map<String, Object>>) depFormScrappedModel.get("scrappedGoodsList"));
                    }
consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam.java
File was deleted
consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam1.java
File was deleted
consum-base/src/main/java/com/consum/base/core/param/CheckInWhParam.java
File was deleted
consum-base/src/main/java/com/consum/base/core/param/CheckOutWhParam.java
File was deleted
consum-base/src/main/java/com/consum/base/core/param/CheckWhEntity.java
File was deleted
consum-base/src/main/java/com/consum/base/core/param/DepBackWarehouseParam.java
File was deleted
consum-base/src/main/java/com/consum/base/core/type/InAndOutPutType.java
New file
@@ -0,0 +1,93 @@
package com.consum.base.core.type;
public enum InAndOutPutType {
    /**
     * 正常入库:0
     */
    Common(0),
    /**
     * 采购入库:1
     */
    Procure_Input(1),
    /**
     * 零星入库 2
     */
    Fragmentary_Input(2),
    /**
     * 零星出库 3
     */
    Fragmentary_Output(3),
    /**
     * 调拨入库 4
     */
    Transfer_Input(4),
    /**
     * 调拨出库 5
     */
    Transfer_Output(5),
    /**
     * 盘点入库 6
     */
    Inventory_Input(6),
    /**
     * 盘点出库 7
     */
    Inventory_Output(7),
    /**
     * 仓库物品报废
     */
    Scrapped_Warehouse(8),
    /**
     * 在用物品报废
     */
    Scrapped_Using(9),
    /**
     * 机构仓库 分发出库
     */
    Lending_Out(10),
    /**
     * 机构仓库 分发返库
     */
    Lending_Back(11),
    /**
     * 部门仓库 分发出库
     */
    Dept_Lending_Out(12),
    /**
     * 部门仓库 分发返库
     */
    Dept_Lending_Back(13);
    private int value;
    InAndOutPutType(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    /**
     * 根据编码获取对应枚举
     *
     * @param key 编码
     * @return
     */
    public static InAndOutPutType getValueByKey(String key) {
        for (InAndOutPutType myEnum : InAndOutPutType.values()) {
            if (myEnum.name().equals(key)) {
                return myEnum;
            }
        }
        return null;
    }
}
consum-base/src/main/java/com/consum/base/core/type/WareHouseType.java
New file
@@ -0,0 +1,44 @@
package com.consum.base.core.type;
/**
 * 仓库类型
 *
 * @author asus
 * @version 2023/12/15 14:20
 **/
public enum WareHouseType {
    /**
     * 机构
     */
    TENANT(0, "机构"),
    /**
     * 部门
     */
    DEPARTMENT(1, "部门");
    private Integer value;
    private String desc;
    WareHouseType(Integer value, String desc) {
        this.value = value;
        this.desc = desc;
    }
    public Integer getValue() {
        return value;
    }
    public void setValue(Integer value) {
        this.value = value;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
}
consum-base/src/main/java/com/consum/base/pojo/dto/GoodsInfoDTO.java
New file
@@ -0,0 +1,17 @@
package com.consum.base.pojo.dto;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: 型号所在仓库信息
 * @date 2023/12/15 17:06
 */
@Data
public class GoodsInfoDTO {
    private Long warehouseId;
    private String warehouseName;
}
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);
consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
@@ -1,10 +1,12 @@
package com.consum.base.service;
import com.consum.base.pojo.dto.GoodsInfoDTO;
import java.util.List;
import java.util.Map;
import com.consum.base.pojo.dto.GoodsModelCountDTO;
import com.walker.jdbc.service.BaseService;
import java.util.Set;
/**
 * LWhGoodsService
@@ -13,11 +15,12 @@
 * @version 2023/12/05 13:52
 **/
public interface LWhGoodsService extends BaseService {
    int queryGoodsModelNum(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states,
    int queryGoodsModelNum(Integer warehouseType, List<Long> warehouseId, Long baseGoodsModelsId, Integer states,
        Integer buyType);
    int queryGoodsModelInWareHouseNum(Integer warehouseType, List<Long> warehouseId, Long baseGoodsModelsId, Integer states,
        Integer buyType);
    int queryGoodsModelInWareHouseNum(Integer warehouseType, List<Long> warehouseId, Long baseGoodsModelsId,
        Integer states, Integer buyType);
    List<Map<String, Object>> queryOutGoods(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId,
        Integer states, Integer buyType, Integer goodsModelNum);
@@ -51,4 +54,6 @@
     * @return
     */
    GoodsModelCountDTO queryGoodsAmount(Long baseGoodsModelsId, Integer type);
    List<GoodsInfoDTO> queryGoodsInfo(Set<Long> baseModelIds);
}
consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryCoreService.java
@@ -1,6 +1,7 @@
package com.consum.base.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -251,7 +252,8 @@
                continue;
            }
            // 查询型号库存
            int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
            List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
            int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseIds, baseGoodsModelsId, 1, null);
            LWhProcureModel model = new LWhProcureModel();
            model.setId(IdUtil.generateId());
            model.setFromProcureGoodsId(fromProcureGoodsId);
@@ -324,7 +326,8 @@
                continue;
            }
            //根据物品型号查询物品库存
            int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
            List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
            int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseIds, baseGoodsModelsId, 1, null);
            //新增L_WH_PROCURE_MODEL记录
            LWhProcureModel lWhProcureModel = new LWhProcureModel();
            lWhProcureModel.setId(IdUtil.generateId());
consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryServiceImpl.java
@@ -1,5 +1,7 @@
package com.consum.base.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -357,8 +359,9 @@
        List<FormInventoryGoodsVO> goodsVOList = Lists.newArrayList();
        result.forEach(item -> {
            FormInventoryGoodsVO baseGoodsModels = MapUtils.convertMapToObj(item, FormInventoryGoodsVO.class);
            List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
            int inventoryCount =
                this.lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModels.getId(), 1, null);
                this.lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModels.getId(), 1, null);
            baseGoodsModels.setInventoryCount(inventoryCount);
            goodsVOList.add(baseGoodsModels);
        });
consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputCoreService.java
@@ -1,6 +1,7 @@
package com.consum.base.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -13,8 +14,9 @@
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.param.BaseWarehouseParam1;
import com.consum.base.core.service.LWhWarningCoreServiceImpl;
import com.consum.base.core.type.InAndOutPutType;
import com.consum.base.core.type.OutPutStatesType;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.LockManage;
import com.consum.base.service.BaseGoodsTemplateService;
@@ -57,14 +59,10 @@
    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
    @Autowired
    public LWhFormOutputCoreService(BaseGoodsTemplateService baseGoodsTemplateService,
                                    LWhGoodsService lWhGoodsService,
                                    CodeGeneratorService codeGeneratorService,
                                    LWhProcureModelService lWhProcureModelService,
                                    LWhFormOutputService lWhFormOutputService,
                                    LWarehouseFlowService lWarehouseFlowService,
                                    LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
                                    LWhGoodsRecordService lWhGoodsRecordServiceImpl,
    public LWhFormOutputCoreService(BaseGoodsTemplateService baseGoodsTemplateService, LWhGoodsService lWhGoodsService,
        CodeGeneratorService codeGeneratorService, LWhProcureModelService lWhProcureModelService,
        LWhFormOutputService lWhFormOutputService, LWarehouseFlowService lWarehouseFlowService,
        LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService, LWhGoodsRecordService lWhGoodsRecordServiceImpl,
                                    LWhWarningCoreServiceImpl lWhWarningCoreService) {
        this.baseGoodsTemplateService = baseGoodsTemplateService;
        this.lWhGoodsService = lWhGoodsService;
@@ -77,7 +75,6 @@
        this.lWhWarningCoreService = lWhWarningCoreService;
    }
    /**
     * 根据 调拨单 生成 出库单
     *
@@ -85,7 +82,8 @@
     * @return 出库单Id
     */
    @Transactional(rollbackFor = Exception.class)
    public Long createOutFormByTransId(Long whFormTransferId, WhBusinessEnum businessEnum, S_user_core currentUser, Long dealTime) {
    public Long createOutFormByTransId(Long whFormTransferId, WhBusinessEnum businessEnum, S_user_core currentUser,
        Long dealTime) {
        if (whFormTransferId == null) {
            return null;
        }
@@ -133,12 +131,13 @@
        whFormOutput.setId(outWarehouseFormId);
        // 此时并没有出库
        whFormOutput.setWarehouseFlowId(null);
        whFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
        whFormOutput
            .setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
        //进出库流水总表 入库单ID
        whFormOutput.setInWarehouseFlowId(null);
//        调拨单ID(调拨时需要)
        whFormOutput.setTransBusinessId(whFormTransferId);
        whFormOutput.setOutputCode(BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() + "");
        whFormOutput.setOutputCode(InAndOutPutType.Transfer_Output.getValue() + "");
        whFormOutput.setOutputName("调拨出库");
        whFormOutput.setWarehouseId(outWarehouseId);
        whFormOutput.setWarehouseName(outWarehouseName);
@@ -159,7 +158,6 @@
        return outWarehouseFormId;
    }
    /**
     * 根据 出库单 出库
     *
@@ -167,7 +165,8 @@
     * @return 流水记录总表ID
     */
    @Transactional(rollbackFor = Exception.class)
    public Long outFormByTransId(Long outWarehouseFormId, WhBusinessEnum businessType, S_user_core currentUser, Long dealTime, Long whFormTransferId) {
    public Long outFormByTransId(Long outWarehouseFormId, WhBusinessEnum businessType, S_user_core currentUser,
        Long dealTime, Long whFormTransferId) {
        if (outWarehouseFormId == null) {
            return null;
        }
@@ -178,7 +177,8 @@
            return null;
        }
        //申请调拨的物品
        List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(WhBusinessEnum.CHUKU, outWarehouseFormId);
        List<LWhProcureModel> goodsModelNumList =
            lWhProcureModelService.getModelByForm(WhBusinessEnum.CHUKU, outWarehouseFormId);
        if (CollectionUtils.isEmpty(goodsModelNumList)) {
            log.error("没有要出库的物品");
            return null;
@@ -205,22 +205,22 @@
        Integer buyTypeT = null;
        Integer modGoodsTransferingStatusT = null;
        short businessTypeValue = businessType.getValue();
        if (BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() == businessTypeValue) {
        if (InAndOutPutType.Transfer_Output.getValue() == businessTypeValue) {
            //调拨出库
            queryModelStatusT = 1;
            buyTypeT = 1;
            lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
            modGoodsTransferingStatusT = 0;
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue() == businessTypeValue) {
        } else if (InAndOutPutType.Dept_Lending_Out.getValue() == businessTypeValue) {
            //  部门仓库 分发出库
//            queryModelStatusT = 2;
            lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() == businessTypeValue) {
        } else if (InAndOutPutType.Fragmentary_Output.getValue() == businessTypeValue) {
            //  零星出库
            queryModelStatusT = 1;
            buyTypeT = null;
            modGoodsTransferingStatusT = 4;
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Inventory_Output.getValue() == businessTypeValue) {
        } else if (InAndOutPutType.Inventory_Output.getValue() == businessTypeValue) {
            //  盘点出库
            queryModelStatusT = 1;
            buyTypeT = null;
@@ -276,7 +276,9 @@
            List<Long> outGoodsId = null;
            synchronized (warehouseModelLockObj) {
                // 获得锁后查询该型号的期初数量
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType);
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(outWarehouseId));
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseType, warehouseIds,
                    baseGoodsModelsId, queryModelStatus, buyType);
                if (goodsModelNum < counts) {
                    log.error("出库失败!型号{} 的数量不足,需要调拨{}个,仓库中现存{}个", baseGoodsModelsId, counts, goodsModelNum);
                    // 手动回滚
@@ -287,9 +289,10 @@
                whGoodsRecord.setEndCount(goodsModelNum - counts);
                //出库时候,按 先入库的先出库,同时入库的,按价格高的先出库
                outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType,
                        counts);
                lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseType, inWarehouseId, inWarehouseName, modGoodsTransferingStatus);
                outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId,
                    queryModelStatus, buyType, counts);
                lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseType, inWarehouseId, inWarehouseName,
                    modGoodsTransferingStatus);
                // 批量插入 进出库流水明细[L_WH_GOODS_RECORD_DETAILS]
                lWhGoodsRecordDetailsService.sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0);
            }
@@ -318,16 +321,16 @@
        }
        // 向出库单 插入 进出库流水总表ID
        lWhFormOutput = new LWhFormOutput(outWarehouseFormId);
        lWhFormOutput.setStates(2);
        lWhFormOutput.setStates(OutPutStatesType.OUT_SUCCESS.getValue());
        lWhFormOutput.setWarehouseFlowId(lWarehouseFlowId);
        lWhFormOutputService.update(lWhFormOutput);
        //当库存变动时调用该方法
        if (outWarehouseType == 0) {
            lWhWarningCoreService.updateKuCun(Convert.toShort(outWarehouseType, (short) 0), outWarehouseId, allChangModelList, null, dealTime);
            lWhWarningCoreService.updateKuCun(Convert.toShort(outWarehouseType, (short)0), outWarehouseId,
                allChangModelList, null, dealTime);
        }
        return lWarehouseFlowId;
    }
}
consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java
@@ -1,12 +1,26 @@
package com.consum.base.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.param.BaseWarehouseParam1;
import com.consum.base.core.service.LWhWarningCoreServiceImpl;
import com.consum.base.core.type.GoodsModelType;
import com.consum.base.core.type.InAndOutPutType;
import com.consum.base.core.type.OutPutStatesType;
import com.consum.base.core.type.WareHouseType;
import com.consum.base.core.utils.CurrencyUtil;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.MapUtils;
@@ -16,22 +30,24 @@
import com.consum.base.pojo.LWhFormOutputParam;
import com.consum.base.pojo.excel.OutputExcelTemplate;
import com.consum.base.pojo.query.LWhFormOutputQry;
import com.consum.base.service.*;
import com.consum.model.po.*;
import com.consum.base.service.BaseGoodsModelsService;
import com.consum.base.service.BaseWarehouseService;
import com.consum.base.service.LWhFormOutputService;
import com.consum.base.service.LWhGoodsService;
import com.consum.base.service.LWhProcureModelService;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LWhFormOutput;
import com.consum.model.po.LWhProcureModel;
import com.consum.model.po.WhFormOutput;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.*;
import lombok.extern.slf4j.Slf4j;
/**
 * @Description 出库单
@@ -55,8 +71,7 @@
    private LWhFormOutputCoreService lWhFormOutputCoreService;
    @Autowired
    private BaseGoodsModelsService baseGoodsModelsService;
    @Resource
    private LWhWarningCoreServiceImpl lWhWarningCoreService;
    private static String QUERY_FORM_OUTPUT_LIST = "SELECT * FROM l_wh_form_output WHERE 1 = 1";
    /**
@@ -82,7 +97,7 @@
            return 0;
        }
        lWhFormOutput.setWarehouseName(warehouse.getWarehouseName());
        lWhFormOutput.setOutputCode(BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() + "");
        lWhFormOutput.setOutputCode(InAndOutPutType.Fragmentary_Output.getValue() + "");
        lWhFormOutput.setOutputName("零星出库");
        lWhFormOutput.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
        lWhFormOutput.setAgencyName(sysInfo.getTenantName());
@@ -91,9 +106,9 @@
        lWhFormOutput.setDealTime(param.getDealTime());
        lWhFormOutput.setStates(OutPutStatesType.OUT_PENDING.getValue());
        lWhFormOutput.setOutputDoc(param.getDoc());
        int flag1 = this.insert(lWhFormOutput);
        if (flag1 == 0) {
            log.error("新增出库单记录");
        int outputInsertNum = this.insert(lWhFormOutput);
        if (outputInsertNum == 0) {
            log.error("新增出库单记录失败");
            return 0;
        }
        // 2.新增物品型号记录
@@ -117,14 +132,15 @@
                }
                lWhProcureModel.setCounts(model.getCounts());
                // 根据物品型号查询物品库存
                int goodsNum =
                    this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), 1, null);
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(WareHouseType.TENANT.getValue(), warehouseIds,
                    model.getBaseGoodsModelsId(), 1, null);
                lWhProcureModel.setWorehouseCount(goodsNum);
                modelList.add(lWhProcureModel);
            }
        }
        int flag2 = this.lWhProcureModelService.insert(modelList);
        if (flag2 != modelList.size()) {
        int modelInsertNum = this.lWhProcureModelService.insert(modelList);
        if (modelInsertNum != modelList.size()) {
            log.error("新增物品型号失败");
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return 0;
@@ -140,8 +156,8 @@
        }
        // 4 预警
        //当库存变动时调用该方法
//        lWhWarningCoreService.updateKuCun((short) 0, warehouseId, new ArrayList<>(allChangModelList), null, DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        // lWhWarningCoreService.updateKuCun((short) 0, warehouseId, new ArrayList<>(allChangModelList), null,
        // DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        return 1;
    }
consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java
@@ -244,7 +244,8 @@
                }
                String modelName = (String)tempGoodsInfo.get("modelname");
                // 查询型号库存
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseIds, baseGoodsModelsId, 1, null);
                LWhProcureModel model = new LWhProcureModel();
                model.setId(IdUtil.generateId());
                model.setFromProcureGoodsId(fromProcureGoodsId);
consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedCoreService.java
@@ -12,6 +12,7 @@
import com.consum.model.po.LWhGoodsRecord;
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.CollectionUtils;
import java.util.Arrays;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -144,7 +145,8 @@
                    int goodsModelNum = 0;
                    List<Long> srappedGoodsIds = null;
                    if (warehouseType == null || warehouseType == 0) {
                        goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 1, null);
                        List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                        goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModelsId, 1, null);
                        srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(warehouseType, warehouseId, null, null,
                            baseGoodsModelsId, (short)1, counts);
                    } else {
@@ -153,7 +155,8 @@
                        // 根据分发单、规格型号编号、使用人员名称,进行报废
                        srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(warehouseType, warehouseId,
                            transBusinessId, userName, baseGoodsModelsId, (short)2, counts);
                        goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 2, null);
                        List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                        goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModelsId, 2, null);
                    }
                    if (goodsModelNum < counts) {
consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java
@@ -1,22 +1,12 @@
package com.consum.base.service.impl;
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.utils.*;
import com.consum.base.pojo.LWhFormScrappedGoodsInfoParam;
import com.consum.base.pojo.LWhFormScrappedGoodsModelParams;
import com.consum.base.pojo.LWhFormScrappedParam;
import com.consum.base.pojo.dto.GoodModelInfoDTO;
import com.consum.base.pojo.excel.ScrappedInfoExcelTemplate;
import com.consum.base.pojo.query.LWhFormScrappedQry;
import com.consum.base.pojo.response.*;
import com.consum.base.service.*;
import com.consum.model.po.*;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,11 +14,45 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.utils.CurrencyUtil;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.MapUtils;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.core.utils.PageUtil;
import com.consum.base.pojo.LWhFormScrappedGoodsInfoParam;
import com.consum.base.pojo.LWhFormScrappedGoodsModelParams;
import com.consum.base.pojo.LWhFormScrappedParam;
import com.consum.base.pojo.dto.GoodModelInfoDTO;
import com.consum.base.pojo.excel.ScrappedInfoExcelTemplate;
import com.consum.base.pojo.query.LWhFormScrappedQry;
import com.consum.base.pojo.response.FormScrappedGoodsDetailVO;
import com.consum.base.pojo.response.GoodsModelVO;
import com.consum.base.pojo.response.GoodsTemplateCountVO;
import com.consum.base.pojo.response.GoodsTemplateInfoVO;
import com.consum.base.pojo.response.LWhFormScrappedExtendVO;
import com.consum.base.service.BaseGoodsModelsService;
import com.consum.base.service.BaseGoodsTemplateService;
import com.consum.base.service.BaseWarehouseService;
import com.consum.base.service.FinSysTenantDepartmentService;
import com.consum.base.service.LWhFormScrappedGoodsService;
import com.consum.base.service.LWhFormScrappedService;
import com.consum.base.service.LWhGoodsService;
import com.consum.base.service.SDictDataServiceImpl;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseGoodsTemplate;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.FinSysTenantDepartment;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LWhFormScrapped;
import com.consum.model.po.LWhFormScrappedGoods;
import com.consum.model.po.SDictData;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
/**
 * @Description 报废单
@@ -154,8 +178,9 @@
                LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods();
                scrappedGoods.setId(IdUtil.generateId());
                // 根据物品型号查询物品库存
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId));
                int goodsNum =
                    lWhGoodsService.queryGoodsModelNum(0, warehouseId, scrappedGoods.getBaseGoodsModelsId(), 1, null);
                    lWhGoodsService.queryGoodsModelNum(0, warehouseIds, scrappedGoods.getBaseGoodsModelsId(), 1, null);
                if (params.getCounts() > goodsNum) {
                    log.error("报废数量大于库存数量");
                    return 0;
@@ -186,7 +211,8 @@
            }
        }
        // 3.根据报废单报废物品
        Long lWarehouseFlowId = this.lWhFormScrappedCoreService.outFormByTransId(lWhFormScrappedId, currentUser, param.getDealTime());
        Long lWarehouseFlowId =
            this.lWhFormScrappedCoreService.outFormByTransId(lWhFormScrappedId, currentUser, param.getDealTime());
        if (lWarehouseFlowId == null) {
            log.error("根据出库单出库 失败");
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferCoreService.java
@@ -1,6 +1,7 @@
package com.consum.base.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -227,7 +228,8 @@
            List<Long> outGoodsId = null;
            synchronized (warehouseModelLockObj) {
                // 获得锁后查询该型号的期初数量
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseType, outWarehouseId,
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(outWarehouseId));
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseType, warehouseIds,
                    baseGoodsModelsId, queryModelStatus, buyType);
                if (goodsModelNum < counts) {
                    log.error("出库失败!型号{} 的数量不足,需要调拨{}个,仓库中现存{}个", baseGoodsModelsId, counts, goodsModelNum);
@@ -380,8 +382,9 @@
                    throw new RuntimeException("入库单失败,未查询到物品!");
                }
                // 获得锁后查询该型号的期初数量
                List<Long> warehouseIds = new ArrayList<>(Arrays.asList(inWarehouseId));
                int goodsModelNum =
                    lWhGoodsService.queryGoodsModelNum(inWarehouseType, inWarehouseId, baseGoodsModelsId, 1, null);
                    lWhGoodsService.queryGoodsModelNum(inWarehouseType, warehouseIds, baseGoodsModelsId, 1, null);
                // 库存物品详情(L_WH_GOODS)中 状态设置为1
                lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName,
consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java
@@ -112,7 +112,6 @@
        lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(codeGeneratorEnum));
        Long warehouseId = param.getInWarehouseId();
        // 调拨类型单据
        if (businessType == TransferBusinessType.STOCK_TRANSFER.getValue()) {
            // 入库仓库为当前用户的默认仓库
@@ -170,7 +169,8 @@
        if (finSysTenant == null) {
            log.error("调拨机构不存在");
        }
        lWhFormTransfer.setOutAgencyId(finSysTenant.getId());
        Long outAgencyId = finSysTenant.getId();
        lWhFormTransfer.setOutAgencyId(outAgencyId);
        lWhFormTransfer.setOutAgencyName(finSysTenant.getName());
        lWhFormTransfer.setOperatorId(sysInfo.getId());
        lWhFormTransfer.setOperatorName(sysInfo.getUserName());
@@ -214,7 +214,12 @@
                if (businessType == TransferBusinessType.STOCK_TRANSFER.getValue()) {
                    lWhProcureModel.setBusinessType(2);
                    // 根据物品型号查询物品库存
                    int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
                    // 调拨申请时没有仓库id 查询上级机构的所有仓库
                    List<BaseWarehouse> baseWareHouseList =
                        baseWarehouseService.getBaseWareHouseList(outAgencyId, null, (short)1);
                    List<Long> warehouseIdList =
                        baseWareHouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toList());
                    int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseIdList, baseGoodsModelsId, 1, null);
                    lWhProcureModel.setWorehouseCount(goodsNum);
                }
                if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()) {
consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java
@@ -5,6 +5,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.compress.utils.Lists;
@@ -13,6 +14,7 @@
import com.consum.base.core.utils.MapUtils;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.pojo.dto.GoodsInfoDTO;
import com.consum.base.pojo.dto.GoodsModelCountDTO;
import com.consum.base.service.LWhGoodsService;
import com.walker.infrastructure.utils.CollectionUtils;
@@ -38,7 +40,7 @@
    private static String query_Goods_Model_Num = "SELECT COUNT(1) from L_WH_GOODS where 1=1";
    @Override
    public int queryGoodsModelNum(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states,
    public int queryGoodsModelNum(Integer warehouseType, List<Long> warehouseId, Long baseGoodsModelsId, Integer states,
        Integer buyType) {
        StringBuilder sql = new StringBuilder(query_Goods_Model_Num);
        Map<String, Object> paramts = new HashMap<>();
@@ -48,7 +50,7 @@
            paramts.put("warehouseType", warehouseType);
        }
        if (warehouseId != null) {
            sql.append(" and WAREHOUSE_ID=:warehouseId");
            sql.append(" and WAREHOUSE_ID in (:warehouseId)");
            paramts.put("warehouseId", warehouseId);
        }
        if (baseGoodsModelsId != null) {
@@ -350,4 +352,21 @@
        return null;
    }
    @Override
    public List<GoodsInfoDTO> queryGoodsInfo(Set<Long> baseModelIds) {
        List<GoodsInfoDTO> goodsInfoDTOS = Lists.newArrayList();
        StringBuilder sql = new StringBuilder(
            "SELECT distinct WAREHOUSE_ID,WAREHOUSE_NAME from L_WH_GOODS where base_goods_models_id in (:baseGoodsModelsIds) "
                + "and WAREHOUSE_TYPE =0 and BUY_TYPE =1 and states =1");
        Map<String, Object> param = new HashMap<>();
        param.put("baseGoodsModelsIds", baseModelIds);
        List<Map<String, Object>> result = this.select(sql.toString(), param, new MapperUtil());
        result.forEach(item -> {
            GoodsInfoDTO goodsInfoDTO = MapUtils.convertMapToObj(item, GoodsInfoDTO.class);
            goodsInfoDTOS.add(goodsInfoDTO);
        });
        return goodsInfoDTOS;
    }
}
consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java
@@ -36,7 +36,6 @@
    public List<LWhProcureModel> getModelByForm(WhBusinessEnum businessType, Long businessId) {
        StringBuilder sql = new StringBuilder(GET_MODEL_BY_FORM);
        HashMap<String, Object> paramts = new HashMap<>();
        // 项目阶段id
        if (businessType != null) {
            sql.append(" and BUSINESS_TYPE=:businessType ");
            paramts.put("businessType", businessType.getValue());
@@ -64,7 +63,6 @@
    public List<Map<String, Object>> getFfOrderByGoodsIdAndDept(Long goodsTemplateId, Long departmentId) {
        StringBuilder sql = new StringBuilder(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT);
        HashMap<String, Object> paramts = new HashMap<>();
        // 项目阶段id
        if (goodsTemplateId != null) {
            sql.append(" AND baseTemp.ID=:goodsTemplateId ");
            paramts.put("goodsTemplateId", goodsTemplateId);