From b268fd73f060108b8214ed1afcbbf03480435f3a Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期五, 15 十二月 2023 17:27:41 +0800
Subject: [PATCH] 1.出库手续回显 2.调拨申请时库存查询更换接口 3.调拨出库时从已有物品所在的仓库中选择

---
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryServiceImpl.java |    5 
 consum-base/src/main/java/com/consum/base/core/type/InAndOutPutType.java                |   93 +++++++
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryCoreService.java |    7 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputCoreService.java    |  111 ++++----
 consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java       |    7 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedCoreService.java  |    7 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java  |   11 
 consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java     |    7 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java  |   74 ++++--
 consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java         |   23 +
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java        |  135 +++++-----
 consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java     |   67 +++-
 /dev/null                                                                               |    7 
 consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java      |    4 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferCoreService.java  |    7 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java    |   66 +++--
 consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java  |    2 
 consum-base/src/main/java/com/consum/base/core/type/WareHouseType.java                  |   44 +++
 consum-base/src/main/java/com/consum/base/pojo/dto/GoodsInfoDTO.java                    |   17 +
 admin-web/src/views/departmentitem/itemdis/distribution/edit.vue                        |    5 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java   |    3 
 consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java                  |   11 
 22 files changed, 486 insertions(+), 227 deletions(-)

diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue
index 48eb5fe..6aaf721 100644
--- a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue
+++ b/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,
           });
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java b/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java
index a0716a9..3cad491 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java
+++ b/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);
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
index a6d8f21..6508add 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
+++ b/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 涓嶅悓搴撳鐞�
+            // 閫氳繃璋冩嫧鍗曚腑鐨勫瀷鍙穒d鏌ヨ鍑鸿鍨嬪彿鐗╁搧鎵�鍦ㄧ殑浠撳簱浣嶇疆
+            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 = "璋冩嫧鍗昳d", 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 涓嶅悓搴撳鐞�
+        // 閫氳繃璋冩嫧鍗曚腑鐨勫瀷鍙穒d鏌ヨ鍑鸿鍨嬪彿鐗╁搧鎵�鍦ㄧ殑浠撳簱浣嶇疆
+        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);
diff --git a/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
index 2d0c206..192da2b 100644
--- a/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
+++ b/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");
diff --git a/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
index c0c25fd..39cbf33 100644
--- a/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
+++ b/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"));
                     }
diff --git a/consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam.java b/consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam.java
deleted file mode 100644
index ec5f900..0000000
--- a/consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.consum.base.core.param;
-
-import com.consum.model.po.DepFormBackGoods;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 鍑哄叆搴撳弬鏁�
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Slf4j
-public class BaseWarehouseParam {
-
-    /**
-     * 鏄惁鍏ュ簱  true 鏄� false 鍚︼紙鍑哄簱锛�
-     */
-    private Boolean isCheckIn;
-
-    /**
-     * 浠撳簱id
-     */
-    private Long warehouseId;
-
-    /**
-     * 瑙勬牸鍨嬪彿id
-     */
-    private Long modelId;
-
-    /**
-     * 鏁伴噺
-     */
-    private Integer count;
-
-    /**
-     * 棣栨鍏ュ簱鎵规鍙凤紝鏁版嵁搴撳瓧娈�
-     * 閲囪喘鍏ュ簱鏃讹紝閲囪喘鍗曞瀷鍙枫�怶H_FORM_PROCURE_MODEL銆�.ID
-     */
-    private String firstInputCode;
-
-    /**
-     * 浠撳簱鐗╁搧缂栧彿锛堝叆搴撶被鍨嬩负0鏃讹紝浣跨敤锛�
-     */
-    private Long wh_goods_id;
-
-    /**
-     * 鏀跺叆鍏ュ簱绫诲瀷锛�0=姝e父鍏ュ簱锛�1=閲囪喘鍏ュ簱锛�2=闆舵槦鍏ュ簱锛�3=鐩樼偣鍏ュ簱;4=杩斿簱鍏ュ簱
-     */
-    private int first_input_type;
-
-    /**
-     * 鍏ュ簱绫诲瀷涓�4=杩斿簱鍏ュ簱鏃朵娇鐢�
-     */
-    private String depFormBackGoods_id;
-
-    /**
-     * 鍑哄簱绫诲瀷
-     * 2=璋冩嫧锛屽鏋滄槸璋冩嫧鍒欓渶瑕佽浆涓鸿皟鎷ㄥ湪閫�
-     * 3=鎶ュ簾
-     */
-    private int output_type;
-}
diff --git a/consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam1.java b/consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam1.java
deleted file mode 100644
index fb96208..0000000
--- a/consum-base/src/main/java/com/consum/base/core/param/BaseWarehouseParam1.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package com.consum.base.core.param;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.List;
-
-/**
- * 鍑哄叆搴撳弬鏁�
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Slf4j
-public class BaseWarehouseParam1 {
-
-    /**
-     * 鏄惁鍏ュ簱  true 鏄� false 鍚︼紙鍑哄簱锛�
-     */
-    private Boolean isCheckIn;
-
-    /**
-     * 涓氬姟琛ㄥ崟ID
-     */
-    private Long business_form_id;
-    /**
-     * 涓氬姟琛ㄥ崟Code
-     */
-    private String  business_form_code;
-
-    /**
-     * 涓氬姟琛ㄥ崟鍚嶇О
-     */
-    private String  business_form_name;
-    /**
-     * 鎿嶄綔浜虹紪鍙�
-     */
-    private Long operator_id;
-    /**
-     * 鎿嶄綔浜哄鍚�
-     */
-    private String operator_name;
-
-    /**
-     * 鎿嶄綔鏃堕棿
-     */
-    private Long deal_time;
-
-    /**
-     * 浠撳簱id
-     */
-    private Long warehouseId;
-
-    /**
-     * 鍑哄叆搴撳弬鏁�
-     */
-    private List<CheckWhEntity> list;
-
-    /**
-     * 鍏ュ簱绫诲瀷
-     */
-    private In_OutPutTypeEnum inOutPutTypeEnum;
-
-
-    public enum In_OutPutTypeEnum {
-
-        /**
-         * 姝e父鍏ュ簱锛�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;
-
-        In_OutPutTypeEnum(int value) {
-            this.value = value;
-        }
-
-        public int getValue() {
-            return value;
-        }
-
-        /**
-         * 鏍规嵁缂栫爜鑾峰彇瀵瑰簲鏋氫妇
-         *
-         * @param key 缂栫爜
-         * @return
-         */
-        public static In_OutPutTypeEnum getValueByKey(String key) {
-            for (In_OutPutTypeEnum myEnum : In_OutPutTypeEnum.values()) {
-                if (myEnum.name().equals(key)) {
-                    return myEnum;
-                }
-            }
-            return null;
-        }
-    }
-
-
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/core/param/CheckInWhParam.java b/consum-base/src/main/java/com/consum/base/core/param/CheckInWhParam.java
deleted file mode 100644
index 8482186..0000000
--- a/consum-base/src/main/java/com/consum/base/core/param/CheckInWhParam.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.consum.base.core.param;
-
-import com.consum.model.po.WhFormProcureModel;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.List;
-
-/**
- * 鍏ュ簱鍙傛暟
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Slf4j
-public class CheckInWhParam extends BaseWarehouseParam{
-
-    /**
-     * 閲囪喘鐗╁搧鍒楄〃锛岄噰璐叆搴撴椂浣跨敤
-     */
-    private List<WhFormProcureModel> modelList;
-}
diff --git a/consum-base/src/main/java/com/consum/base/core/param/CheckOutWhParam.java b/consum-base/src/main/java/com/consum/base/core/param/CheckOutWhParam.java
deleted file mode 100644
index 287d353..0000000
--- a/consum-base/src/main/java/com/consum/base/core/param/CheckOutWhParam.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.consum.base.core.param;
-
-import com.consum.model.po.WhFormTransferGoods;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class CheckOutWhParam extends BaseWarehouseParam {
-
-    /**
-     * 璋冩嫧鍑哄簱鐗╁搧鍒楄〃
-     */
-    private  List<WhFormTransferGoods> trqansferGoodsList;
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/core/param/CheckWhEntity.java b/consum-base/src/main/java/com/consum/base/core/param/CheckWhEntity.java
deleted file mode 100644
index ef5f7ee..0000000
--- a/consum-base/src/main/java/com/consum/base/core/param/CheckWhEntity.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.consum.base.core.param;
-
-public class CheckWhEntity {
-
-    /**
-     * 鍑哄叆搴撴暟閲�
-     */
-    private Integer count;
-
-    /**
-     * 瑙勬牸鍨嬪彿id
-     */
-    private Long modelId;
-
-
-    public Integer getCount() {
-        return count;
-    }
-
-    public void setCount(Integer count) {
-        this.count = count;
-    }
-
-    public Long getModelId() {
-        return modelId;
-    }
-
-    public void setModelId(Long modelId) {
-        this.modelId = modelId;
-    }
-
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/core/param/DepBackWarehouseParam.java b/consum-base/src/main/java/com/consum/base/core/param/DepBackWarehouseParam.java
deleted file mode 100644
index b24ac2f..0000000
--- a/consum-base/src/main/java/com/consum/base/core/param/DepBackWarehouseParam.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.consum.base.core.param;
-
-public class DepBackWarehouseParam extends BaseWarehouseParam {
-
-
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/core/type/InAndOutPutType.java b/consum-base/src/main/java/com/consum/base/core/type/InAndOutPutType.java
new file mode 100644
index 0000000..8bcdcf4
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/type/InAndOutPutType.java
@@ -0,0 +1,93 @@
+package com.consum.base.core.type;
+
+public enum InAndOutPutType {
+
+    /**
+     * 姝e父鍏ュ簱锛�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;
+    }
+}
\ No newline at end of file
diff --git a/consum-base/src/main/java/com/consum/base/core/type/WareHouseType.java b/consum-base/src/main/java/com/consum/base/core/type/WareHouseType.java
new file mode 100644
index 0000000..41150c7
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/type/WareHouseType.java
@@ -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;
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/dto/GoodsInfoDTO.java b/consum-base/src/main/java/com/consum/base/pojo/dto/GoodsInfoDTO.java
new file mode 100644
index 0000000..9eac26e
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/dto/GoodsInfoDTO.java
@@ -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;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
index 74df6dc..f0777aa 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
+++ b/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;
@@ -85,9 +90,9 @@
         Long dealTime = warehouseFlow.getDealTime();
         BaseWarehouse baseWarehouses = lWarehouseFlowService.get(new BaseWarehouse(warehouseId));
         String warehouseName = baseWarehouses.getWarehouseName();
-        //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+        // 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         short buyType = lWhFormProcure.getBuyType().shortValue();
-        //閲囪喘鏃堕棿
+        // 閲囪喘鏃堕棿
         Long procureTime2 = lWhFormProcure.getProcureTime();
         Long procureTime = procureTime2 == null ? dealTime : procureTime2;
         // 鎻掑叆娴佹按鎬昏〃
@@ -96,27 +101,26 @@
             return 0;
         }
 
-        //缁熻鍚勫瀷鍙锋暟閲�
-        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));
+            // 鎸夊瀷鍙峰垎
+            .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId));
         countsSumByBaseGoodsModelsId.forEach((baseGoodsModelsId, modelCount) -> {
-            //鏌ヨ鍨嬪彿淇℃伅
+            // 鏌ヨ鍨嬪彿淇℃伅
             Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId);
-            //浠峰�肩被鍨�
-            String classificationObj = (String) tempGoodsInfo.get("classification");
+            // 浠峰�肩被鍨�
+            String classificationObj = (String)tempGoodsInfo.get("classification");
             Short classificationT = 3;
             if (classificationObj != null) {
-                classificationT = (short) ((classificationObj).charAt(0) - 64);
+                classificationT = (short)((classificationObj).charAt(0) - 64);
             }
             short classification = classificationT;
-            Long tempGoodsId = (Long) tempGoodsInfo.get("goodsid");
-            String goodsName = (String) tempGoodsInfo.get("goodsname");
-            String modelName = (String) tempGoodsInfo.get("modelname");
-            String goodsUnit = (String) tempGoodsInfo.get("unit");
+            Long tempGoodsId = (Long)tempGoodsInfo.get("goodsid");
+            String goodsName = (String)tempGoodsInfo.get("goodsname");
+            String modelName = (String)tempGoodsInfo.get("modelname");
+            String goodsUnit = (String)tempGoodsInfo.get("unit");
 
             // 鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撹褰� L_WH_GOODS_RECORD
             long whGoodsRecordId = IdUtil.generateId();
@@ -130,34 +134,35 @@
             whGoodsRecord.setBaseGoodsModelsId(baseGoodsModelsId);
             whGoodsRecord.setBaseGoodsModelsName(modelName);
             whGoodsRecord.setDealTime(dealTime);
-            //鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺
+            // 鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺
             whGoodsRecord.setThisType(1);
 
-            //閫氳繃LockManage鑾峰緱閿�
+            // 閫氳繃LockManage鑾峰緱閿�
             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);
 
                 long totalPrice = 0;
-                //灏嗗悓鍨嬪彿鐨勭墿鍝佹彃鍏� 搴撳瓨鐗╁搧璇︽儏
+                // 灏嗗悓鍨嬪彿鐨勭墿鍝佹彃鍏� 搴撳瓨鐗╁搧璇︽儏
                 List<LWhProcureModel> lWhProcureModels = sameModelList.get(baseGoodsModelsId);
                 for (LWhProcureModel item : lWhProcureModels) {
-                    //渚涘簲鍟�
+                    // 渚涘簲鍟�
                     String supplier = item.getSupplier();
-                    //浠锋牸
+                    // 浠锋牸
                     Long price = item.getPrice();
-                    //鐗╁搧涓暟
+                    // 鐗╁搧涓暟
                     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);
@@ -166,51 +171,39 @@
         return 1;
     }
 
-
     /**
      * 鍚屾牱瑙勬牸鐨勭墿鍝� 鎻掑叆澶氭锛� 鍚屾椂灏嗕富閿褰曞湪 杩涘嚭搴撴祦姘存槑缁嗐�怢_WH_GOODS_RECORD_DETAILS銆�, 鏇存柊 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆�
      *
-     * @param pWarehouseId         浠撳簱id
-     * @param pWarehouseName       浠撳簱鍚嶇О
-     * @param pCostType            鐗╁搧浠峰�肩被鍨�
+     * @param pWarehouseId 浠撳簱id
+     * @param pWarehouseName 浠撳簱鍚嶇О
+     * @param pCostType 鐗╁搧浠峰�肩被鍨�
      * @param pBaseGoodsTemplateId 鐗╁搧妯℃澘ID
-     * @param pGoodsTemplateName   鐗╁搧妯℃澘鍚嶇О
-     * @param pBaseGoodsModelsId   鐗╁搧鍨嬪彿ID
+     * @param pGoodsTemplateName 鐗╁搧妯℃澘鍚嶇О
+     * @param pBaseGoodsModelsId 鐗╁搧鍨嬪彿ID
      * @param pBaseGoodsModelsName 鐗╁搧鍨嬪彿鍚嶇О
-     * @param pUnit                鐗╁搧鍗曚綅
-     * @param pSupplier            鐗╁搧渚涘簲鍟�
-     * @param pBuyType             鐗╁搧璐拱绫诲瀷
-     * @param pPrice               鐗╁搧浠锋牸
-     * @param pProcureDate         閲囪喘鏃ユ湡
-     * @param pStates              鐘舵��
-     * @param pTimes               鎻掑叆鏉℃暟
+     * @param pUnit 鐗╁搧鍗曚綅
+     * @param pSupplier 鐗╁搧渚涘簲鍟�
+     * @param pBuyType 鐗╁搧璐拱绫诲瀷
+     * @param pPrice 鐗╁搧浠锋牸
+     * @param pProcureDate 閲囪喘鏃ユ湡
+     * @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)
-                .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_times", 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)
+            .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_times", pTimes);
         Map<String, Object> out = simpleJdbcCall.execute(in);
         System.out.println("Procedure result: " + out);
     }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java b/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
index c405c34..38083c5 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
+++ b/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);
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryCoreService.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryCoreService.java
index b3e992c..84157bf 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryCoreService.java
+++ b/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());
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryServiceImpl.java
index d04ee57..4cf8ab6 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormInventoryServiceImpl.java
+++ b/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);
         });
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputCoreService.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputCoreService.java
index 624d04b..c9cc506 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputCoreService.java
+++ b/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,15 +59,11 @@
     private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
 
     @Autowired
-    public LWhFormOutputCoreService(BaseGoodsTemplateService baseGoodsTemplateService,
-                                    LWhGoodsService lWhGoodsService,
-                                    CodeGeneratorService codeGeneratorService,
-                                    LWhProcureModelService lWhProcureModelService,
-                                    LWhFormOutputService lWhFormOutputService,
-                                    LWarehouseFlowService lWarehouseFlowService,
-                                    LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
-                                    LWhGoodsRecordService lWhGoodsRecordServiceImpl,
-                                    LWhWarningCoreServiceImpl lWhWarningCoreService) {
+    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;
         this.codeGeneratorService = codeGeneratorService;
@@ -77,7 +75,6 @@
         this.lWhWarningCoreService = lWhWarningCoreService;
     }
 
-
     /**
      * 鏍规嵁 璋冩嫧鍗� 鐢熸垚 鍑哄簱鍗�
      *
@@ -85,7 +82,8 @@
      * @return 鍑哄簱鍗旾d
      */
     @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;
         }
@@ -101,12 +99,12 @@
             return outWarehouseFormIdT;
         }
 
-        //鐢宠璋冩嫧鐨勭墿鍝�
+        // 鐢宠璋冩嫧鐨勭墿鍝�
         List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(businessEnum, whFormTransferId);
         if (CollectionUtils.isEmpty(goodsModelNumList)) {
             log.error("娌℃湁瑕佸叆搴撶殑鐗╁搧");
             throw new RuntimeException("娌℃湁瑕佸叆搴撶殑鐗╁搧");
-//            return null;
+            // return null;
         }
         Long outWarehouseId = lWhFormTransfer.getOutWarehouseId();
         String outWarehouseName = lWhFormTransfer.getOutWarehouseName();
@@ -133,12 +131,13 @@
         whFormOutput.setId(outWarehouseFormId);
         // 姝ゆ椂骞舵病鏈夊嚭搴�
         whFormOutput.setWarehouseFlowId(null);
-        whFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
-        //杩涘嚭搴撴祦姘存�昏〃 鍏ュ簱鍗旾D
+        whFormOutput
+            .setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
+        // 杩涘嚭搴撴祦姘存�昏〃 鍏ュ簱鍗旾D
         whFormOutput.setInWarehouseFlowId(null);
-//        璋冩嫧鍗旾D(璋冩嫧鏃堕渶瑕�)
+        // 璋冩嫧鍗旾D(璋冩嫧鏃堕渶瑕�)
         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;
         }
@@ -177,8 +176,9 @@
             log.error("鍑哄簱澶辫触锛佽妫�鏌ュ嚭搴撳崟鐘舵��");
             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;
@@ -196,32 +196,32 @@
 
         // 娴佹按璁板綍鎬昏〃ID
         long lWarehouseFlowId = NumberGenerator.getLongSequenceNumberNano();
-        // 娴佹按璁板綍鎬昏〃涓� 涓氬姟ID 銆傝皟鎷ㄥ崟鏃�  淇濆瓨璋冩嫧鍗昳d  鍑哄簱鍗曟椂 淇濆瓨鍑哄簱鍗昳d
+        // 娴佹按璁板綍鎬昏〃涓� 涓氬姟ID 銆傝皟鎷ㄥ崟鏃� 淇濆瓨璋冩嫧鍗昳d 鍑哄簱鍗曟椂 淇濆瓨鍑哄簱鍗昳d
         long lWarehouseFlowBusinessId = outWarehouseFormId;
 
         // 鐗╁搧鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
         Integer queryModelStatusT = 1;
-        //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+        // 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         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) {
-            //  閮ㄩ棬浠撳簱 鍒嗗彂鍑哄簱
-//            queryModelStatusT = 2;
+        } 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;
             modGoodsTransferingStatusT = 4;
@@ -235,26 +235,26 @@
             // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鐨勬煇涓瀷鍙�
             Long baseGoodsModelsId = itemModelInfo.getBaseGoodsModelsId();
 
-            //TODO 涓虹┖鏃朵笉鍔犲叆鏇存柊鍒楄〃
+            // TODO 涓虹┖鏃朵笉鍔犲叆鏇存柊鍒楄〃
             if (baseGoodsModelsId != null) {
                 allChangModelList.add(baseGoodsModelsId);
             }
             // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鏌愪釜鍨嬪彿鐨勬暟閲�
             Integer counts = itemModelInfo.getCounts();
 
-            //鏌ヨ鍨嬪彿淇℃伅
+            // 鏌ヨ鍨嬪彿淇℃伅
             Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId);
-            //浠峰�肩被鍨�
-            String classificationObj = (String) tempGoodsInfo.get("classification");
+            // 浠峰�肩被鍨�
+            String classificationObj = (String)tempGoodsInfo.get("classification");
             Short classificationT = 3;
             if (classificationObj != null) {
-                classificationT = (short) ((classificationObj).charAt(0) - 64);
+                classificationT = (short)((classificationObj).charAt(0) - 64);
             }
             short classification = classificationT;
-            Long tempGoodsId = (Long) tempGoodsInfo.get("goodsid");
-            String goodsName = (String) tempGoodsInfo.get("goodsname");
-            String modelName = (String) tempGoodsInfo.get("modelname");
-            String goodsUnit = (String) tempGoodsInfo.get("unit");
+            Long tempGoodsId = (Long)tempGoodsInfo.get("goodsid");
+            String goodsName = (String)tempGoodsInfo.get("goodsname");
+            String modelName = (String)tempGoodsInfo.get("modelname");
+            String goodsUnit = (String)tempGoodsInfo.get("unit");
 
             // 鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撹褰� L_WH_GOODS_RECORD
             long whGoodsRecordId = NumberGenerator.getLongSequenceNumberNano();
@@ -267,16 +267,18 @@
             whGoodsRecord.setBaseGoodsModelsId(baseGoodsModelsId);
             whGoodsRecord.setBaseGoodsModelsName(modelName);
             whGoodsRecord.setDealTime(dealTime);
-            //鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺
+            // 鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺
             whGoodsRecord.setThisType(2);
             whGoodsRecord.setThisCount(counts);
 
-            //閫氳繃LockManage鑾峰緱閿�
+            // 閫氳繃LockManage鑾峰緱閿�
             Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseType, outWarehouseId, baseGoodsModelsId);
             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);
                     // 鎵嬪姩鍥炴粴
@@ -286,12 +288,13 @@
                 whGoodsRecord.setInitialCount(goodsModelNum);
                 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);
+                lWhGoodsRecordDetailsService.sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short)0);
             }
             long totalAmount = lWhGoodsService.queryGoodsPriceById(outGoodsId);
             LWhProcureModel lWhProcureModel = new LWhProcureModel(itemModelInfo.getId());
@@ -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;
     }
-
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java
index dc1b633..6d7034a 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java
+++ b/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;
@@ -139,9 +155,9 @@
             return 0;
         }
         // 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;
     }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java
index be2933a..c4cc34e 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java
+++ b/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);
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedCoreService.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedCoreService.java
index 0588f87..1888682 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedCoreService.java
+++ b/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) {
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java
index 83aa02f..b2b22bf 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java
+++ b/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();
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferCoreService.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferCoreService.java
index 2eccb93..3722c5b 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferCoreService.java
+++ b/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);
 
                 // 搴撳瓨鐗╁搧璇︽儏锛圠_WH_GOODS锛変腑 鐘舵�佽缃负1
                 lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName,
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java
index 0d2a6c6..87450ce 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java
+++ b/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);
+                    // 璋冩嫧鐢宠鏃舵病鏈変粨搴搃d 鏌ヨ涓婄骇鏈烘瀯鐨勬墍鏈変粨搴�
+                    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()) {
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java
index caeb70c..ca7e7f4 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java
+++ b/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;
+    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java
index 906d9f7..809348f 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java
+++ b/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);

--
Gitblit v1.9.1