From 3836720e3b0fc9ab884d178e0ac27e942b175da2 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期二, 05 十二月 2023 15:23:01 +0800
Subject: [PATCH] 报废单添加金额字段

---
 consum-base/src/main/java/com/consum/base/pojo/dto/GoodsModelCountDTO.java             |   16 
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java     |    4 
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputService.java            |   48 +-
 consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java     |   42 
 consum-base/src/main/java/com/consum/base/core/type/GoodsStatesType.java               |   56 ++
 consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java      |    4 
 consum-base/src/main/java/com/consum/base/controller/BaseWarehouseController.java      |   19 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java |   11 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java |    9 
 consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java        |  324 ++++++++++++++
 consum-base/src/main/java/com/consum/base/core/type/GoodsModelType.java                |   52 ++
 consum-base/src/main/java/com/consum/base/core/type/OutPutStatesType.java              |   45 ++
 consum-base/src/main/java/com/consum/base/core/type/InventoryStatesType.java           |   49 ++
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java   |   43 +
 consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java  |   53 +-
 consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods_mapper.java   |   33 +
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java     |  149 +++---
 consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java                 |  320 +------------
 consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods.java          |   22 +
 consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java  |   19 
 20 files changed, 845 insertions(+), 473 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
index f2fb5c7..d37cff6 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
@@ -1,5 +1,18 @@
 package com.consum.base.controller;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.MapUtils;
@@ -18,20 +31,10 @@
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.web.ResponseValue;
+
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @Description 鐗╁搧妯℃澘
@@ -73,8 +76,9 @@
         if (StringUtils.isEmpty(param.getGoodsName())) {
             return ResponseValue.error("鐗╁搧鍚嶇О涓虹┖");
         }
-        //鍒ゆ柇鍚屼竴鍒嗙被涓嬬殑鐗╁搧鍚嶇О鏄惁閲嶅
-        BaseGoodsTemplate goodsTemplate = this.baseGoodsTemplateService.getByGoodsNameAndCategoryId(param.getGoodsName(), param.getCategoryId());
+        // 鍒ゆ柇鍚屼竴鍒嗙被涓嬬殑鐗╁搧鍚嶇О鏄惁閲嶅
+        BaseGoodsTemplate goodsTemplate =
+            this.baseGoodsTemplateService.getByGoodsNameAndCategoryId(param.getGoodsName(), param.getCategoryId());
         if (goodsTemplate != null) {
             return ResponseValue.error("鐗╁搧鍚嶇О宸插瓨鍦�");
         }
@@ -155,7 +159,7 @@
      * @author 鍗㈠簡闃�
      * @date 2023/10/25
      */
-    //TODO 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
+    // TODO 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
     @PostMapping("/updStatus")
     public ResponseValue updateStatus() {
         BaseGoodsTemplate goodsTemplate = CommonUtil.getObjFromReqBody(BaseGoodsTemplate.class);
@@ -176,7 +180,7 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/25
      */
-    //TODO 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
+    // TODO 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
     @DeleteMapping("/del")
     public ResponseValue updateById() {
         BaseGoodsTemplate goodsTemplate = CommonUtil.getObjFromReqBody(BaseGoodsTemplate.class);
@@ -216,19 +220,20 @@
 
     @GetMapping("/query/goodsTemplate")
     public ResponseValue queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId) {
-        List<BaseGoodsTemplate> list = this.baseGoodsTemplateService.queryGoodsTemplateByCategoryId(agencyId, categoryId, null, null);
+        List<BaseGoodsTemplate> list =
+            this.baseGoodsTemplateService.queryGoodsTemplateByCategoryId(agencyId, categoryId, null, null);
         if (list == null) {
             return ResponseValue.error("鏌ヨ澶辫触锛�");
         }
         return ResponseValue.success("鏌ヨ鎴愬姛!", list);
     }
 
-
     @ApiOperation(value = "鏌ヨ鏈烘瀯涓嬮粯璁や粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�", notes = "鏌ヨ鏈烘瀯涓嬮粯璁や粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "agencyId", value = "鐖剁骇鏈烘瀯id", required = true, dataType = "java.lang.Long", paramType = "query"),
-        @ApiImplicitParam(name = "categoryId", value = "鍒嗙被id", required = true, dataType = "Long", paramType = "query")
-    })
+        @ApiImplicitParam(name = "agencyId", value = "鐖剁骇鏈烘瀯id", required = true, dataType = "java.lang.Long",
+            paramType = "query"),
+        @ApiImplicitParam(name = "categoryId", value = "鍒嗙被id", required = true, dataType = "Long",
+            paramType = "query")})
     @GetMapping("/query/warehouse/goods")
     public ResponseValue queryWarehouseGoods(Long agencyId, Long categoryId) {
 
@@ -236,7 +241,7 @@
         Map<String, Object> map = new HashMap<>();
         map.put("categoryId", categoryId);
 
-        List<BaseWarehouse> baseWarehouseList = baseWarehouseService.getByAgencyId(agencyId, (short) 1, (short) 1);
+        List<BaseWarehouse> baseWarehouseList = baseWarehouseService.getByAgencyId(agencyId, (short)1, (short)1);
         if (CollectionUtils.isEmpty(baseWarehouseList)) {
             return ResponseValue.error("鏈烘瀯鏃犻粯璁や粨搴擄紒");
 
@@ -245,9 +250,7 @@
 
         String sql =
             "SELECT DISTINCT bgt.id,bgt.GOODS_NAME, CLASSIFICATION type FROM l_wh_goods g LEFT JOIN base_goods_template bgt ON g.BASE_GOODS_TEMPLATE_ID = bgt.id "
-                + "WHERE WAREHOUSE_TYPE = 0 "
-                + "AND WAREHOUSE_ID = :warehouseId "
-                + "AND CATEGORY_ID = :categoryId "
+                + "WHERE WAREHOUSE_TYPE = 0 " + "AND WAREHOUSE_ID = :warehouseId " + "AND CATEGORY_ID = :categoryId "
                 // 1:闆嗛噰,2:鑷噰
                 + "AND BUY_TYPE =1";
 
@@ -260,6 +263,4 @@
         return ResponseValue.success("鏌ヨ鎴愬姛!", resultList);
     }
 
-
 }
-
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 e0bf1e5..9e95db5 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,5 +1,15 @@
 package com.consum.base.controller;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.pojo.BaseWarehouseParam;
@@ -11,17 +21,10 @@
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.web.ResponseValue;
+
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.util.ArrayList;
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @Description 浠撳簱绠$悊
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java
index d38acba..1de90ad 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java
@@ -35,7 +35,7 @@
 import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.consum.base.pojo.response.LWhFormOutputExtendVO;
 import com.consum.base.service.LWarehouseFlowService;
-import com.consum.base.service.LWhFormOutputServiceImpl;
+import com.consum.base.service.LWhFormOutputService;
 import com.consum.base.service.LWhProcureModelService;
 import com.consum.model.po.FinSysTenantUser;
 import com.consum.model.po.LWhFormOutput;
@@ -64,7 +64,7 @@
 public class LWhFormOutputController extends BaseController {
 
     @Autowired
-    private LWhFormOutputServiceImpl lWhFormOutputService;
+    private LWhFormOutputService lWhFormOutputService;
     @Autowired
     private LWhProcureModelService lWhProcureModelService;
     @Resource
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java b/consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java
index 8393fb5..afdc8a7 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhHomeStatisticsController.java
@@ -1,19 +1,22 @@
 package com.consum.base.controller;
 
-import cn.hutool.core.convert.Convert;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.consum.base.BaseController;
 import com.consum.base.service.LWhGoodsService;
 import com.consum.model.po.FinSysTenantUser;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.web.ResponseValue;
-import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
+import cn.hutool.core.convert.Convert;
+import io.swagger.annotations.Api;
 
 /**
  * @ClassName LWhHomeStatisticsController
diff --git a/consum-base/src/main/java/com/consum/base/core/type/GoodsModelType.java b/consum-base/src/main/java/com/consum/base/core/type/GoodsModelType.java
new file mode 100644
index 0000000..111c382
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/type/GoodsModelType.java
@@ -0,0 +1,52 @@
+package com.consum.base.core.type;
+
+/**
+ * 鐗╁搧鍨嬪彿涓氬姟绫诲瀷
+ *
+ * @author asus
+ * @version 2023/12/05 10:40
+ **/
+public enum GoodsModelType {
+    /**
+     * 閲囪喘
+     */
+    PROCURE(1, "閲囪喘"),
+    /**
+     * 璋冩嫧
+     */
+    TRANSFER(2, "璋冩嫧"),
+    /**
+     * 鍑哄簱
+     */
+    OUT_PUT(3, "鍑哄簱"),
+    /**
+     * 閮ㄩ棬鍒嗗彂
+     */
+    DEPARTMENT_DISTRIBUTION(4, "閮ㄩ棬鍒嗗彂");
+
+    private Integer value;
+
+    private String desc;
+
+    GoodsModelType(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/core/type/GoodsStatesType.java b/consum-base/src/main/java/com/consum/base/core/type/GoodsStatesType.java
new file mode 100644
index 0000000..faf7e75
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/type/GoodsStatesType.java
@@ -0,0 +1,56 @@
+package com.consum.base.core.type;
+
+/**
+ * 鎵�鏈夌墿鍝佺姸鎬佹灇涓�
+ *
+ * @author asus
+ * @version 2023/12/05 14:01
+ **/
+public enum GoodsStatesType {
+
+    /**
+     * 鍦ㄩ�旇皟鎷�
+     */
+    ON_ROAD_TRANSFER(0, "鍦ㄩ�旇皟鎷�"),
+    /**
+     * 鍏ュ簱鏈垎鍙�
+     */
+    IN_STOCK_UN_DISTRIBUTION(1, "鍏ュ簱鏈垎鍙�"),
+    /**
+     * 宸蹭笅鍙�
+     */
+    DISTRIBUTION_DONE(2, "宸蹭笅鍙�"),
+    /**
+     * 鎶ュ簾
+     */
+    SCRAP(3, "鎶ュ簾"),
+    /**
+     * 闆舵槦鍑哄簱
+     */
+    SINGLE_OUT(4, "闆舵槦鍑哄簱");
+
+    private Integer value;
+
+    private String desc;
+
+    GoodsStatesType(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/core/type/InventoryStatesType.java b/consum-base/src/main/java/com/consum/base/core/type/InventoryStatesType.java
new file mode 100644
index 0000000..2058aa3
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/type/InventoryStatesType.java
@@ -0,0 +1,49 @@
+package com.consum.base.core.type;
+
+/**
+ * 鐩樼偣鍗曠姸鎬佹灇涓�
+ *
+ * @author asus
+ * @version 2023/12/05 10:40
+ **/
+public enum InventoryStatesType {
+    /**
+     * 鏈紑濮�
+     */
+    NEW(0, "鏈紑濮�"),
+    /**
+     * 杩涜涓�
+     */
+    PENDING(1, "杩涜涓�"),
+
+    /**
+     * 宸插畬鎴�
+     */
+    SUCCESS(2, "宸插畬鎴�");
+
+    private Integer value;
+
+    private String desc;
+
+    InventoryStatesType(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/core/type/OutPutStatesType.java b/consum-base/src/main/java/com/consum/base/core/type/OutPutStatesType.java
new file mode 100644
index 0000000..3cdb2f6
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/type/OutPutStatesType.java
@@ -0,0 +1,45 @@
+package com.consum.base.core.type;
+
+/**
+ * 鍑哄簱鍗曠姸鎬佹灇涓�
+ *
+ * @author asus
+ * @version 2023/12/05 10:40
+ **/
+public enum OutPutStatesType {
+    /**
+     * 寰呭嚭搴�
+     */
+    OUT_PENDING(1, "寰呭嚭搴�"),
+
+    /**
+     * 宸插嚭搴�
+     */
+    OUT_SUCCESS(2, "宸插嚭搴�");
+
+    private Integer value;
+
+    private String desc;
+
+    OutPutStatesType(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/GoodsModelCountDTO.java b/consum-base/src/main/java/com/consum/base/pojo/dto/GoodsModelCountDTO.java
new file mode 100644
index 0000000..a7f5572
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/dto/GoodsModelCountDTO.java
@@ -0,0 +1,16 @@
+package com.consum.base.pojo.dto;
+
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 鍨嬪彿缁熻
+ * @date 2023/12/5 13:43
+ */
+@Data
+public class GoodsModelCountDTO {
+
+    private Long baseModelId;
+    private Integer amount;
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
index 1a62973..84cc278 100644
--- a/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LGoodsUserRecordCoreService.java
@@ -1,21 +1,22 @@
 package com.consum.base.service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
+
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.LockManage;
 import com.consum.model.po.LGoodsUserRecord;
 import com.consum.model.po.LWhFormTransfer;
 import com.consum.model.po.LWhProcureModelUser;
 import com.consum.model.po.LWhProcureModelUserRecord;
-import com.walker.infrastructure.utils.NumberGenerator;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
 
 /**
  * @ClassName LGoodsUserRecordCoreService
@@ -42,7 +43,8 @@
      * @return
      */
     public boolean modifyGoodsUser(Long oldProcureModelUserRecordId, Long newProcureModelUserRecordId) {
-        LWhProcureModelUserRecord lWhProcureModelUserRecord = goodsBaseService.get(new LWhProcureModelUserRecord(newProcureModelUserRecordId));
+        LWhProcureModelUserRecord lWhProcureModelUserRecord =
+            goodsBaseService.get(new LWhProcureModelUserRecord(newProcureModelUserRecordId));
         if (lWhProcureModelUserRecord == null) {
             return false;
         }
@@ -56,13 +58,15 @@
         Integer inWarehouseType = whFormTransfer.getInWarehouseType();
         Long inWarehouseId = whFormTransfer.getInWarehouseId();
         // 灏嗘墍鏈夌墿鍝佽缃负鏈垎鍙�
-        List<Long> srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId, transBusinessId, null, null, null, null);
+        List<Long> srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId,
+            transBusinessId, null, null, null, null);
         lWhGoodsService.modGoodsTransfering(srappedGoodsIds, null, null, null, 3);
         // 鍒犻櫎璇ヨ皟鎷ㄥ崟鏃ф湁浣跨敤璁板綍
-        lGoodsUserRecordService.delete(new LGoodsUserRecord(), "where TRANS_BUSINESS_ID =" + transBusinessId, new HashMap<>());
+        lGoodsUserRecordService.delete(new LGoodsUserRecord(), "where TRANS_BUSINESS_ID =" + transBusinessId,
+            new HashMap<>());
         // 璁剧疆鏃х殑LAST_RECORD= 0
         lGoodsUserRecordService.updSetNotLast(srappedGoodsIds);
-        //鎻掑叆鏂扮殑
+        // 鎻掑叆鏂扮殑
         LWhProcureModelUser modelUser = new LWhProcureModelUser();
         modelUser.setProcureModelUserRecordId(newProcureModelUserRecordId);
         List<LWhProcureModelUser> modelUserList = goodsBaseService.select(modelUser);
@@ -73,11 +77,11 @@
         for (LWhProcureModelUser lWhProcureModelUser : modelUserList) {
             Long baseGoodsModelsId = lWhProcureModelUser.getBaseGoodsModelsId();
             Integer goodsNum = lWhProcureModelUser.getGoodsNum();
-            //閫氳繃LockManage鑾峰緱閿�
+            // 閫氳繃LockManage鑾峰緱閿�
             Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId);
             synchronized (warehouseModelLockObj) {
-                List<Long> toUserGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId, transBusinessId, null, baseGoodsModelsId,
-                    (short) 1, goodsNum);
+                List<Long> toUserGoodsIds = lWhGoodsService.queryScrappedGoodsIds(inWarehouseType, inWarehouseId,
+                    transBusinessId, null, baseGoodsModelsId, (short)1, goodsNum);
                 if (CollectionUtils.isEmpty(toUserGoodsIds)) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     throw new RuntimeException("鎿嶄綔澶辫触!鍨嬪彿鏁伴噺涓嶈冻");
@@ -103,8 +107,4 @@
         return true;
     }
 
-    public static void main(String[] args) {
-        System.out.println(IdUtil.generateId());
-        System.out.println(NumberGenerator.getLongSequenceNumber() );
-    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
index 479aae5..f0b40e6 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java
@@ -52,7 +52,7 @@
     private LWhGoodsService lWhGoodsService;
     private LWhFormInventoryService lWhFormInventoryService;
     private LWhFormProcureCoreService lWhFormProcureCoreService;
-    private LWhFormOutputServiceImpl lWhFormOutputService;
+    private LWhFormOutputService lWhFormOutputService;
 
     @Autowired
     public LWhFormInventoryCoreService(LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods,
@@ -66,7 +66,7 @@
                                        LWhGoodsService lWhGoodsService,
                                        LWhFormInventoryService lWhFormInventoryService,
                                        LWhFormProcureCoreService lWhFormProcureCoreService,
-                                       LWhFormOutputServiceImpl lWhFormOutputService
+                                       LWhFormOutputService lWhFormOutputService
 
     ) {
         this.lWhFormInventoryGoods = lWhFormInventoryGoods;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
index e0c1238..b828350 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
@@ -1,7 +1,20 @@
 package com.consum.base.service;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
+import com.consum.base.core.type.InventoryStatesType;
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.MapUtils;
 import com.consum.base.core.utils.MapperUtil;
@@ -22,17 +35,8 @@
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 
 /**
  * @Description 鐩樼偣
@@ -57,15 +61,7 @@
     @Lazy
     private LWhFormInventoryCoreService lWhFormInventoryCoreService;
 
-
     private static final String QUERY_LIST = "select * from l_wh_form_inventory where 1=1 ";
-
-    private static final String QUERY_PD_List = "SELECT bgt.GOODS_NAME goodsName,model.MODEL_NAME modelName,bgt.CLASSIFICATION,model.UNIT,\n"
-        + "       record.endCount,bgt.ID goodsTemplateId,model.ID modelsId\n" + "FROM BASE_GOODS_MODELS model\n"
-        + "         LEFT JOIN (SELECT COUNT(1) endCount, BASE_GOODS_MODELS_ID\n" + "                    FROM L_WH_GOODS\n"
-        + "                    WHERE WAREHOUSE_TYPE = 0\n" + "                      AND WAREHOUSE_ID = 1\n" + "                      AND STATES = ?\n"
-        + "                    GROUP BY BASE_GOODS_MODELS_ID) record ON record.BASE_GOODS_MODELS_ID = model.id\n"
-        + "left join base_goods_template bgt on bgt.ID = model.GOODS_TEMPLATES_ID; ";
 
     private static final String QUERY_PD_DETAIL_LIST =
         "SELECT fig.id,fi.WAREHOUSE_NAME,fig.GOODS_TEMPLATE_NAME,fig.BASE_GOODS_MODELS_NAME,fig.INVENTORY_RESULT,fig.INIT_COUNTS,fig.INVENTORY_COUNTS,"
@@ -75,24 +71,25 @@
 
     /**
      * @param param
-     * @param currentUser  褰撳墠鐧诲綍鐢ㄦ埛
+     * @param currentUser 褰撳墠鐧诲綍鐢ㄦ埛
      * @param operatorUser 鐩樼偣浜�
-     * @param monitorUser  鐩戠洏浜�
+     * @param monitorUser 鐩戠洏浜�
      * @return
      * @Description 鏂板
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/31
      */
     @Override
-    public int add(FormInventoryParam param, FinSysTenantUser currentUser, FinSysTenantUser operatorUser, FinSysTenantUser monitorUser) {
-        //鏂板鐩樼偣鍗�
+    public int add(FormInventoryParam param, FinSysTenantUser currentUser, FinSysTenantUser operatorUser,
+        FinSysTenantUser monitorUser) {
+        // 鏂板鐩樼偣鍗�
         LWhFormInventory lWhFormInventory = new LWhFormInventory();
         BeanUtils.copyProperties(param, lWhFormInventory);
         lWhFormInventory.setId(IdUtil.generateId());
-        //鐩樼偣鍗曠紪鐮�
+        // 鐩樼偣鍗曠紪鐮�
         String businessFormCode = codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Inventory);
         lWhFormInventory.setBusinessFormCode(businessFormCode);
-        //鏍规嵁浠撳簱id鏌ヨ浠撳簱
+        // 鏍规嵁浠撳簱id鏌ヨ浠撳簱
         BaseWarehouse baseWarehouse = this.baseWarehouseService.getById(param.getWarehouseId());
         if (baseWarehouse != null) {
             lWhFormInventory.setWarehouseName(baseWarehouse.getWarehouseName());
@@ -106,7 +103,7 @@
             lWhFormInventory.setOperatorName2(monitorUser.getUserName());
         }
 
-        lWhFormInventory.setStates(0);
+        lWhFormInventory.setStates(InventoryStatesType.NEW.getValue());
         lWhFormInventory.setAgencyId(Long.valueOf(currentUser.getTenantId()));
         FinSysTenant finSysTenant = finSysTenantService.selectById(Long.valueOf(currentUser.getTenantId()));
         lWhFormInventory.setAgencyName(finSysTenant.getName());
@@ -127,22 +124,23 @@
         StringBuilder sql = new StringBuilder(QUERY_LIST);
         HashMap<String, Object> paramts = new HashMap<>();
 
-        //鐩樼偣鍗曞彿
+        // 鐩樼偣鍗曞彿
         if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
             sql.append("and BUSINESS_FORM_CODE =:BUSINESS_FORM_CODE ");
             paramts.put("BUSINESS_FORM_CODE", param.getBusinessFormCode());
         }
-        //鐩樼偣鍗曞悕绉�
+        // 鐩樼偣鍗曞悕绉�
         if (!StringUtils.isEmpty(param.getBusinessFormName())) {
             sql.append("and BUSINESS_FORM_NAME like :BUSINESS_FORM_NAME ");
-            paramts.put("BUSINESS_FORM_NAME", StringUtils.CHAR_PERCENT + param.getBusinessFormName() + StringUtils.CHAR_PERCENT);
+            paramts.put("BUSINESS_FORM_NAME",
+                StringUtils.CHAR_PERCENT + param.getBusinessFormName() + StringUtils.CHAR_PERCENT);
         }
-        //浠撳簱缂栧彿
+        // 浠撳簱缂栧彿
         if (param.getWarehouseId() != null) {
             sql.append("and WAREHOUSE_ID =:WAREHOUSE_ID ");
             paramts.put("WAREHOUSE_ID", param.getWarehouseId());
         }
-        //鐩樼偣鏃堕棿
+        // 鐩樼偣鏃堕棿
         if (param.getStartTime() != null) {
             sql.append("and INVENTORY_DATE >=:inventoryDateStart ");
             paramts.put("inventoryDateStart", param.getStartTime() * 1000000);
@@ -151,7 +149,7 @@
             sql.append("and INVENTORY_DATE <:inventoryDateEnd ");
             paramts.put("inventoryDateEnd", param.getEndTime() * 1000000 + 240000);
         }
-        //鏈烘瀯
+        // 鏈烘瀯
         sql.append("and AGENCY_ID =:AGENCY_ID ");
         paramts.put("AGENCY_ID", sysInfo.getTenantId());
 
@@ -159,22 +157,21 @@
         return selectSplit(sql.toString(), paramts, new LWhFormInventory());
     }
 
-
     @Override
     public FormInventoryVO saveInventory(FormInventoryVO dto, Long id) {
-        //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
+        // 1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
         LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(id));
         if (lWhFormInventory == null) {
             log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曞け璐�");
         }
-        //2.淇敼鐩樼偣鍗�
-        lWhFormInventory.setStates(1);
+        // 2.淇敼鐩樼偣鍗�
+        lWhFormInventory.setStates(InventoryStatesType.PENDING.getValue());
         lWhFormInventory.setInventoryDate(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
         int flag1 = this.update(lWhFormInventory);
         if (flag1 == 0) {
             log.error("淇敼鐩樼偣鍗曞け璐�");
         }
-        //3.娣诲姞鐩樼偣鍗曠墿鍝�
+        // 3.娣诲姞鐩樼偣鍗曠墿鍝�
         List<FormInventoryGoodsVO> formInventoryGoodsList = dto.getFormInventoryGoodsList();
         if (CollectionUtils.isEmpty(formInventoryGoodsList)) {
             log.error("鐩樼偣鍗曠墿鍝佷负绌�");
@@ -184,7 +181,6 @@
         return dto;
     }
 
-
     /**
      * 淇濆瓨鐩樼偣淇℃伅
      *
@@ -193,27 +189,29 @@
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public int updateInventoryInfo(LWhFormInventoryParam dto, Integer state, S_user_core currentUser, FinSysTenantUser sysInfo) {
-        //1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
+    public int updateInventoryInfo(LWhFormInventoryParam dto, Integer state, S_user_core currentUser,
+        FinSysTenantUser sysInfo) {
+        // 1.鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗�
         LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
         if (lWhFormInventory == null) {
             log.error("鏍规嵁鐩樼偣鍗昳d鏌ヨ鐩樼偣鍗曞け璐�");
             return 0;
         }
-        //娣诲姞鐩樼偣鍗曠墿鍝�
+        // 娣诲姞鐩樼偣鍗曠墿鍝�
         List<FormInventoryGoodsVO> inventoryGoodsList = dto.getInventoryGoodsList();
         if (CollectionUtils.isEmpty(inventoryGoodsList)) {
             log.error("鐩樼偣鍗曠墿鍝佷负绌�");
             return 0;
         }
         this.inventoryGoodsService.updateInventoryGoods(inventoryGoodsList);
-        //淇敼鐩樼偣鍗�
+        // 淇敼鐩樼偣鍗�
         if (state == 2) {
-            //瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
+            // 瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
             lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
 
-            //瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
-            String inOutFormByInventoryId = lWhFormInventoryCoreService.createInOutFormByInventoryId(dto.getId(), currentUser, sysInfo);
+            // 瀹屾垚鐩樼偣鏃惰缃畬鎴愮洏鐐规椂闂�
+            String inOutFormByInventoryId =
+                lWhFormInventoryCoreService.createInOutFormByInventoryId(dto.getId(), currentUser, sysInfo);
             if (!StringUtils.isEmpty(inOutFormByInventoryId)) {
                 log.error(inOutFormByInventoryId);
                 return 0;
@@ -230,7 +228,6 @@
         return 1;
     }
 
-
     /**
      * @return
      * @Description 寮傚父鏄庣粏鍒楄〃鏌ヨ
@@ -242,46 +239,47 @@
         StringBuilder sql = new StringBuilder(QUERY_PD_DETAIL_LIST);
         HashMap<String, Object> paramts = new HashMap<>();
 
-        //鏈烘瀯
+        // 鏈烘瀯
         sql.append(" and AGENCY_ID like:AGENCY_ID ");
         if (param.getAgencyId() != null) {
             paramts.put("AGENCY_ID", param.getAgencyId() + StringUtils.CHAR_PERCENT);
         } else {
             paramts.put("AGENCY_ID", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT);
         }
-        //浠撳簱缂栧彿
+        // 浠撳簱缂栧彿
         if (param.getWarehouseId() != null) {
             sql.append("and WAREHOUSE_ID =:WAREHOUSE_ID ");
             paramts.put("WAREHOUSE_ID", param.getWarehouseId());
         }
-        //鐗╁搧鍚嶇О
+        // 鐗╁搧鍚嶇О
         if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
             sql.append("and GOODS_TEMPLATE_NAME =:GOODS_TEMPLATE_NAME ");
-            paramts.put("GOODS_TEMPLATE_NAME", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+            paramts.put("GOODS_TEMPLATE_NAME",
+                StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
         }
-        //瑙勬牸鍨嬪彿
+        // 瑙勬牸鍨嬪彿
         if (param.getBaseGoodsModelsId() != null) {
             sql.append("and BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID ");
             paramts.put("BASE_GOODS_MODELS_ID", param.getBaseGoodsModelsId());
         }
-        //绫诲瀷(鍑哄叆搴撶被鍨�)
+        // 绫诲瀷(鍑哄叆搴撶被鍨�)
         Integer inventoryResult = param.getInventoryResult();
         if (inventoryResult != null) {
             sql.append("and INVENTORY_RESULT =:INVENTORY_RESULT ");
             paramts.put("INVENTORY_RESULT", inventoryResult);
         }
-        //鍑哄叆搴撳崟鍙�
+        // 鍑哄叆搴撳崟鍙�
         if (param.getWarehouseFormCode() != null) {
             sql.append(
                 " and CASE WHEN fig.INVENTORY_RESULT = 2 THEN fi.IN_BUSINESS_FORM_CODE =:warehouseFormCode WHEN fig.INVENTORY_RESULT = 3 THEN fi.OUT_BUSINESS_FORM_CODE =:warehouseFormCode END ");
             paramts.put("warehouseFormCode", param.getWarehouseFormCode());
         }
-        //鎿嶄綔浜�
+        // 鎿嶄綔浜�
         if (!StringUtils.isEmpty(param.getOperatorName())) {
             sql.append("and OPERATOR_NAME =:OPERATOR_NAME ");
             paramts.put("OPERATOR_NAME", StringUtils.CHAR_PERCENT + param.getOperatorName() + StringUtils.CHAR_PERCENT);
         }
-        //缁撴潫鏃堕棿
+        // 缁撴潫鏃堕棿
         if (param.getStartTime() != null) {
             sql.append("and STOP_TIME >=:stopTimeStart ");
             paramts.put("stopTimeStart", param.getStartTime() * 1000000);
@@ -292,15 +290,16 @@
         }
         sql.append("AND fig.INVENTORY_RESULT in(2,3) ");
         sql.append("ORDER BY CREATE_TIME DESC ");
-        GenericPager<Map<String, Object>> mapGenericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+        GenericPager<Map<String, Object>> mapGenericPager =
+            selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
         PageUtil<FormInventoryDetailVO> pageUtil = new PageUtil<>(mapGenericPager);
         List<FormInventoryDetailVO> result = Lists.newArrayList();
         mapGenericPager.getDatas().forEach(item -> {
             FormInventoryDetailVO formInventoryDetailVO = MapUtils.convertMapToObj(item, FormInventoryDetailVO.class);
-            formInventoryDetailVO.setInventoryResultType(
-                formInventoryDetailVO.getInventoryResult() == null ? null : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩" : "鐩樹簭"));
-            formInventoryDetailVO.setInventoryType(
-                formInventoryDetailVO.getInventoryResult() == null ? null : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩鍏ュ簱" : "鐩樹簭鍑哄簱"));
+            formInventoryDetailVO.setInventoryResultType(formInventoryDetailVO.getInventoryResult() == null ? null
+                : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩" : "鐩樹簭"));
+            formInventoryDetailVO.setInventoryType(formInventoryDetailVO.getInventoryResult() == null ? null
+                : (formInventoryDetailVO.getInventoryResult() == 2 ? "鐩樼泩鍏ュ簱" : "鐩樹簭鍑哄簱"));
             formInventoryDetailVO.setWarehouseFormCode(formInventoryDetailVO.getWarehouseFormCode());
             result.add(formInventoryDetailVO);
         });
@@ -353,7 +352,8 @@
         List<FormInventoryGoodsVO> goodsVOList = Lists.newArrayList();
         result.forEach(item -> {
             FormInventoryGoodsVO baseGoodsModels = MapUtils.convertMapToObj(item, FormInventoryGoodsVO.class);
-            int inventoryCount = this.lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModels.getId(), 1, null);
+            int inventoryCount =
+                this.lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModels.getId(), 1, null);
             baseGoodsModels.setInventoryCount(inventoryCount);
             goodsVOList.add(baseGoodsModels);
         });
@@ -363,22 +363,12 @@
 
     @Override
     public List<InventoryExcelTemplate> getExportList(Long id) {
-        String sql = "SELECT\n"
-            + "\tfi.INVENTORY_DATE createTime,\n"
-            + "\tfi.STOP_TIME endTime,\n"
-            + "\tfi.OPERATOR_NAME,\n"
-            + "\tfi.OPERATOR_NAME2 monitorName,\n"
-            + "\tfi.AGENCY_NAME tenantName,\n"
-            + "\tfig.GOODS_TEMPLATE_NAME templateName,\n"
-            + "\tfig.BASE_GOODS_MODELS_NAME baseModelName,\n"
-            + "\tfig.INVENTORY_COUNTS num,\n"
-            + "\tfig.INIT_COUNTS stockNum,\n"
-            + "\tfig.INVENTORY_RESULT,\n"
-            + "\tBEIZ1 remark\n"
-            + "FROM\n"
-            + "\tl_wh_form_inventory fi\n"
-            + "\tLEFT JOIN l_wh_form_inventory_goods fig ON fi.ID = fig.WH_FORM_INVENTORY_ID\n"
-            + "WHERE\n"
+        String sql = "SELECT\n" + "\tfi.INVENTORY_DATE createTime,\n" + "\tfi.STOP_TIME endTime,\n"
+            + "\tfi.OPERATOR_NAME,\n" + "\tfi.OPERATOR_NAME2 monitorName,\n" + "\tfi.AGENCY_NAME tenantName,\n"
+            + "\tfig.GOODS_TEMPLATE_NAME templateName,\n" + "\tfig.BASE_GOODS_MODELS_NAME baseModelName,\n"
+            + "\tfig.INVENTORY_COUNTS num,\n" + "\tfig.INIT_COUNTS stockNum,\n" + "\tfig.INVENTORY_RESULT,\n"
+            + "\tBEIZ1 remark\n" + "FROM\n" + "\tl_wh_form_inventory fi\n"
+            + "\tLEFT JOIN l_wh_form_inventory_goods fig ON fi.ID = fig.WH_FORM_INVENTORY_ID\n" + "WHERE\n"
             + "\tfi.ID = :id";
         HashMap<String, Object> param = new HashMap<>();
         param.put("id", id);
@@ -388,10 +378,11 @@
         }
         List<InventoryExcelTemplate> list = Lists.newArrayList();
         select.forEach(item -> {
-            InventoryExcelTemplate inventoryExcelTemplate = MapUtils.convertMapToObj(item, InventoryExcelTemplate.class);
+            InventoryExcelTemplate inventoryExcelTemplate =
+                MapUtils.convertMapToObj(item, InventoryExcelTemplate.class);
             inventoryExcelTemplate.setInventoryDeception(inventoryExcelTemplate.getInventoryResult() == 1 ? "鏄�" : "鍚�");
-            inventoryExcelTemplate.setDeception(
-                inventoryExcelTemplate.getInventoryResult() == 1 ? "姝e父" : (inventoryExcelTemplate.getInventoryResult() == 2 ? "鐩樼泩" : "鐩樹簭"));
+            inventoryExcelTemplate.setDeception(inventoryExcelTemplate.getInventoryResult() == 1 ? "姝e父"
+                : (inventoryExcelTemplate.getInventoryResult() == 2 ? "鐩樼泩" : "鐩樹簭"));
             list.add(inventoryExcelTemplate);
         });
         return list;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputService.java
index 9372121..6093da1 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputService.java
@@ -1,24 +1,38 @@
 package com.consum.base.service;
 
-import com.consum.model.po.WhFormOutput;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.jdbc.service.BaseServiceImpl;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
+import com.consum.base.pojo.LWhFormOutputParam;
+import com.consum.base.pojo.excel.OutputExcelTemplate;
+import com.consum.base.pojo.query.LWhFormOutputQry;
+import com.consum.model.po.FinSysTenantUser;
+import com.iplatform.model.po.S_user_core;
+import com.walker.db.page.GenericPager;
+import com.walker.jdbc.service.BaseService;
 
 /**
  * @ClassName WhFormOutputService
-
+ * 
  * @Date 2023/10/26
  * @Description
  * @Version 1.0
  **/
-@Slf4j
-@Service
-public class LWhFormOutputService extends BaseServiceImpl {
+public interface LWhFormOutputService extends BaseService {
+
+    int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo);
+
+    GenericPager queryFormOutputList(LWhFormOutputQry param);
+
+    GenericPager<Map<String, Object>> queryFormOutputDetailList(LWhFormOutputQry param);
+
+    /**
+     * 瀵煎嚭鍑哄簱鍗�
+     *
+     * @param id
+     * @return
+     */
+    List<OutputExcelTemplate> getExportList(Long id);
 
     /**
      * 閫氳繃璋冩嫧鍗曟煡璇㈠嚭搴撳崟id
@@ -26,15 +40,5 @@
      * @param transBusinessId
      * @return
      */
-    private static String QUEYR_ID_BY_TRANSFERID = "select id from L_WH_FORM_OUTPUT where TRANS_BUSINESS_ID =:transBusinessId limit 1";
-
-    public Long queyrIdByTransferId(Long transBusinessId) {
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("transBusinessId", transBusinessId);
-        List<WhFormOutput> whFormOutputs = select(QUEYR_ID_BY_TRANSFERID, map, new WhFormOutput());
-        if (CollectionUtils.isEmpty(whFormOutputs)) {
-            return null;
-        }
-        return whFormOutputs.get(0).getId();
-    }
+    Long queyrIdByTransferId(Long transBusinessId);
 }
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 ffd249e..81a48ef 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,295 +1,51 @@
 package com.consum.base.service;
 
-import com.consum.base.core.utils.MapperUtil;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.jdbc.service.BaseServiceImpl;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-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.pojo.dto.GoodsModelCountDTO;
+import com.walker.jdbc.service.BaseService;
 
 /**
- * @ClassName LWhGoodsService
- * @Date 2023/10/24
- * @Description
- * @Version 1.0
+ * LWhGoodsService
+ *
+ * @author asus
+ * @version 2023/12/05 13:52
  **/
-@Service
-public class LWhGoodsService extends BaseServiceImpl {
+public interface LWhGoodsService extends BaseService {
+    int queryGoodsModelNum(Integer warehouseType, 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);
+
+    List<Long> queryOutGoodsId(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states,
+        Integer buyType, Integer goodsModelNum);
+
+    long queryGoodsPriceById(List<Long> goodsIds);
+
+    List<Map<String, Object>> queryScrappedGoods(Integer warehouseType, Long warehouseId, Long transBusinessId,
+        String nowUserName, Long baseGoodsModelsId, Short states, Integer goodsModelNum);
+
+    List<Long> queryScrappedGoodsIds(Integer warehouseType, Long warehouseId, Long transBusinessId, String nowUserName,
+        Long baseGoodsModelsId, Short states, Integer goodsModelNum);
+
+    int modGoodsTransfering(List<Long> whGoods, Integer warehouseType, Long toWarehouseId, String toWarehouseName,
+        Integer states);
+
+    // 鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛�
+    List<Map<String, Object>> getGoodsNumPrice(Long agencyId);
+
+    // 鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛�
+    List<Map<String, Object>> getGoodsNumByMonth(Long agencyId);
 
     /**
-     * @param warehouseType       浠撳簱绫诲瀷0鏈烘瀯1閮ㄩ棬
-     * @param warehouseId       鎵�灞炰粨搴撲粨搴撶紪鍙�
-     * @param baseGoodsModelsId 瑙勬牸鍨嬪彿缂栧彿
-     * @param states            锛�0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
-     * @param buyType 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
-     * @return 鏌ヨ鏌愪釜鍨嬪彿鍦ㄤ粨搴撲腑鐨勬暟閲�
-     */
-    private static String query_Goods_Model_Num = "SELECT COUNT(1) from L_WH_GOODS where 1=1";
-
-    public int queryGoodsModelNum(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states, Integer buyType) {
-        StringBuilder sql = new StringBuilder(query_Goods_Model_Num);
-        Map<String, Object> paramts = new HashMap<>();
-
-        if (warehouseType != null) {
-            sql.append(" and WAREHOUSE_TYPE=:warehouseType");
-            paramts.put("warehouseType", warehouseType);
-        }
-        if (warehouseId != null) {
-            sql.append(" and WAREHOUSE_ID=:warehouseId");
-            paramts.put("warehouseId", warehouseId);
-        }
-        if (baseGoodsModelsId != null) {
-            sql.append(" and BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
-            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
-        }
-        if (states != null) {
-            sql.append(" and STATES=:states");
-            paramts.put("states", states);
-        }
-        if (buyType != null) {
-            sql.append(" and BUY_TYPE=:buyType");
-            paramts.put("buyType", buyType);
-        }
-        return queryForInt(sql.toString(), paramts);
-    }
-
-
-    /**
-     * 鍑哄簱鏃跺�欙紝鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱
-     *
-     * @param warehouseId       鎵�灞炰粨搴撲粨搴撶紪鍙�
-     * @param baseGoodsModelsId 瑙勬牸鍨嬪彿缂栧彿
-     * @param states            鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
-     * @param buyType           閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
-     * @param goodsModelNum 鍙栧嚭鐨勬暟閲�
+     * 鏍规嵁鍨嬪彿鏌ヨ鍟嗗搧鎬讳环
+     * 
+     * @param baseGoodsModelsId
+     * @param type <br>
+     *            鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱
      * @return
      */
-    private static String QUERY_OUT_GOODS_ID = "SELECT * FROM L_WH_GOODS WHERE 1=1";
-
-    public List<Map<String, Object>> queryOutGoods(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states, Integer buyType,
-                                                   Integer goodsModelNum) {
-        StringBuilder sql = new StringBuilder(QUERY_OUT_GOODS_ID);
-        Map<String, Object> paramts = new HashMap<>();
-        if (warehouseType != null) {
-            sql.append(" and WAREHOUSE_TYPE=:warehouseType");
-            paramts.put("warehouseType", warehouseType);
-        }
-        if (warehouseId != null) {
-            sql.append(" and WAREHOUSE_ID=:warehouseId");
-            paramts.put("warehouseId", warehouseId);
-        }
-        if (baseGoodsModelsId != null) {
-            sql.append(" and BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
-            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
-        }
-        if (states != null) {
-            sql.append(" and STATES=:states");
-            paramts.put("states", states);
-        }
-        if (buyType != null) {
-            sql.append(" and BUY_TYPE=:buyType");
-            paramts.put("buyType", buyType);
-        }
-        return select(sql.append(" limit ").append(goodsModelNum).toString(), paramts);
-    }
-
-
-    /**
-     * 鍑哄簱鏃跺�欙紝鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱
-     *
-     * @param warehouseId       鎵�灞炰粨搴撲粨搴撶紪鍙�
-     * @param baseGoodsModelsId 瑙勬牸鍨嬪彿缂栧彿
-     * @param states            鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
-     * @param buyType           閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
-     * @param goodsModelNum     鍙栧嚭鐨勬暟閲�
-     * @return
-     */
-    public List<Long> queryOutGoodsId(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states, Integer buyType, Integer goodsModelNum) {
-        List<Map<String, Object>> outGoods = queryOutGoods(warehouseType, warehouseId, baseGoodsModelsId, states, buyType, goodsModelNum);
-        if (CollectionUtils.isEmpty(outGoods)) {
-            return null;
-        }
-        List<Long> whGoodsIds = outGoods.stream().map(map -> (Long) map.get("id")).collect(Collectors.toList());
-        return whGoodsIds;
-    }
-
-    private static String QUERY_GOODS_PRICE_BY_ID = "SELECT sum(PRICE)totalPrice from L_WH_GOODS goods where 1=1";
-
-    public long queryGoodsPriceById(List<Long> goodsIds) {
-        StringBuilder sql = new StringBuilder(QUERY_GOODS_PRICE_BY_ID);
-        Map<String, Object> paramts = new HashMap<>();
-        if (!CollectionUtils.isEmpty(goodsIds)) {
-            sql.append(" and id in(:goodsIds)");
-            paramts.put("goodsIds", goodsIds);
-        }
-        List<Map<String, Object>> map = this.select(sql.toString(), paramts);
-        if (CollectionUtils.isEmpty(map)) {
-            return 0;
-        }
-        BigDecimal totalPrice = (BigDecimal) map.get(0).get("totalPrice");
-        return totalPrice.longValue();
-    }
-
-
-    /**
-     * 鏌ヨ鎶ュ簾鐗╁搧 榛樿浼樺厛鎶ュ簾鏈�楂樹环鐨勭墿鍝�
-     *
-     * @param warehouseType
-     * @param warehouseId
-     * @param transBusinessId 璋冩嫧鍗曞彿
-     * @param nowUserName 浣跨敤浜哄鍚�
-     * @param baseGoodsModelsId 鐗╁搧鍨嬪彿
-     * @param states 鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛�
-     * @param goodsModelNum     鍙栧嚭鐨勬暟閲�
-     * @return
-     */
-
-    private static String QUERY_SCRAPPED_GOODS_PREFIX_1 = "SELECT goods.id, goods.PRICE FROM L_WH_GOODS goods LEFT JOIN L_GOODS_USER_RECORD useRecord ON goods.id=useRecord.WH_GOODS_ID AND useRecord.LAST_RECORD=1 WHERE 1=1 ";
-    private static String QUERY_SCRAPPED_GOODS_PREFIX_2 = " AND goods.id IN (SELECT lwgrd.WH_GOODS_ID FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD lwgr ON lwgr.WAREHOUSE_FLOW_ID=flow.id LEFT JOIN L_WH_GOODS_RECORD_DETAILS lwgrd ON lwgrd.WH_GOODS_RECORD_ID=lwgr.id WHERE flow.THIS_TYPE=1 AND flow.BUSINESS_FORM_ID=:transBusinessId)";
-    private static String QUERY_SCRAPPED_GOODS_PREFIX_2_MODEL_NOT_NULL = " AND goods.id IN (SELECT lwgrd.WH_GOODS_ID FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD lwgr ON lwgr.WAREHOUSE_FLOW_ID=flow.id LEFT JOIN L_WH_GOODS_RECORD_DETAILS lwgrd ON lwgrd.WH_GOODS_RECORD_ID=lwgr.id WHERE flow.THIS_TYPE=1 AND flow.BUSINESS_FORM_ID=:transBusinessId AND lwgr.BASE_GOODS_MODELS_ID = :lwgrGoodsModelId)";
-    private static String QUERY_SCRAPPED_GOODS_END = " ORDER BY goods.PRICE DESC,goods.PROCURE_DATE ASC,goods.id";
-
-    public List<Map<String, Object>> queryScrappedGoods(Integer warehouseType,
-                                                        Long warehouseId,
-                                                        Long transBusinessId,
-                                                        String nowUserName,
-                                                        Long baseGoodsModelsId,
-                                                        Short states,
-                                                        Integer goodsModelNum) {
-        if (warehouseType == null) {
-            warehouseType = 0;
-        }
-        StringBuilder sql = new StringBuilder(QUERY_SCRAPPED_GOODS_PREFIX_1);
-        Map<String, Object> paramts = new HashMap<>();
-        if (warehouseType != null) {
-            sql.append(" AND goods.WAREHOUSE_TYPE=:warehouseType");
-            paramts.put("warehouseType", warehouseType);
-        }
-        if (warehouseId != null) {
-            sql.append(" AND goods.WAREHOUSE_ID=:warehouseId");
-            paramts.put("warehouseId", warehouseId);
-        }
-        if (StringUtils.isNotEmpty(nowUserName)) {
-            sql.append(" AND useRecord.NOW_USER_NAME=:nowUserName");
-            paramts.put("nowUserName", nowUserName);
-        }
-        if (baseGoodsModelsId != null) {
-            sql.append(" AND goods.BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
-            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
-        }
-        if (states != null) {
-            sql.append(" AND goods.STATES=:states");
-            paramts.put("states", states);
-        }
-        if (transBusinessId != null) {
-            if (baseGoodsModelsId != null) {
-                sql.append(QUERY_SCRAPPED_GOODS_PREFIX_2_MODEL_NOT_NULL);
-                paramts.put("transBusinessId", transBusinessId);
-                paramts.put("lwgrGoodsModelId", baseGoodsModelsId);
-            } else {
-                sql.append(QUERY_SCRAPPED_GOODS_PREFIX_2);
-                paramts.put("transBusinessId", transBusinessId);
-            }
-        }
-        sql.append(QUERY_SCRAPPED_GOODS_END);
-        if (goodsModelNum != null) {
-            sql.append(" limit ").append(goodsModelNum);
-        }
-        return select(sql.toString(), paramts);
-    }
-
-    /**
-     * 鏌ヨ鎶ュ簾鐗╁搧 榛樿浼樺厛鎶ュ簾鏈�楂樹环鐨勭墿鍝�
-     *
-     * @param warehouseType
-     * @param warehouseId
-     * @param transBusinessId   璋冩嫧鍗曞彿
-     * @param nowUserName       浣跨敤浜哄鍚�
-     * @param baseGoodsModelsId 鐗╁搧鍨嬪彿
-     * @param states            鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛�
-     * @param goodsModelNum     鍙栧嚭鐨勬暟閲�
-     * @return
-     */
-    public List<Long> queryScrappedGoodsIds(Integer warehouseType,
-                                            Long warehouseId,
-                                            Long transBusinessId,
-                                            String nowUserName,
-                                            Long baseGoodsModelsId,
-                                            Short states,
-                                            Integer goodsModelNum) {
-        List<Map<String, Object>> outGoods = queryScrappedGoods(warehouseType, warehouseId, transBusinessId, nowUserName, baseGoodsModelsId, states,
-                goodsModelNum);
-        if (CollectionUtils.isEmpty(outGoods)) {
-            return null;
-        }
-        List<Long> whGoodsIds = outGoods.stream().map(map -> (Long) map.get("id")).collect(Collectors.toList());
-        return whGoodsIds;
-    }
-
-
-    /**
-     * 璁剧疆鐗╁搧鐘舵�佷负璋冩嫧涓�
-     *
-     * @param whGoods
-     * @param toWarehouseId
-     * @param toWarehouseName
-     * @return
-     */
-    private static String MOD_GOODS_TRANSFERING_PREFIX = "update L_WH_GOODS set ";
-
-    public int modGoodsTransfering(List<Long> whGoods, Integer warehouseType, Long toWarehouseId, String toWarehouseName, Integer states) {
-        StringBuilder sql = new StringBuilder(MOD_GOODS_TRANSFERING_PREFIX);
-        ArrayList<Object> params = new ArrayList<>();
-        if (warehouseType != null) {
-            sql.append(", WAREHOUSE_TYPE=?");
-            params.add(warehouseType);
-        }
-        if (toWarehouseId != null) {
-            sql.append(", WAREHOUSE_ID=?");
-            params.add(toWarehouseId);
-        }
-        if (toWarehouseName != null) {
-            sql.append(", WAREHOUSE_NAME=?");
-            params.add(toWarehouseName);
-        }
-        if (states != null) {
-            sql.append(", STATES=?");
-            params.add(states);
-        }
-        sql.deleteCharAt(22);
-        sql.append(" where id in(").append(StringUtils.join(whGoods, ",")).append(")");
-        return update(sql.toString(), params.toArray());
-    }
-
-    private static String GOODS_NUM_PRICE = "SELECT t.tenantId,count(id) total_Num,count(CASE WHEN STATES=2 THEN 1 END) xia_fa_num,IFNULL(round(sum(PRICE)/1000000,2),0) total_price,IFNULL(ROUND(count(CASE WHEN STATES=2 THEN 1 END)/count(id),4),0)*100 AS zhan_you_percent,count(CASE COST_TYPE WHEN 1 THEN 1 END) a_total_Num,count(CASE COST_TYPE WHEN 2 THEN 1 END) b_total_Num,count(CASE COST_TYPE WHEN 3 THEN 1 END) c_total_Num,IFNULL( round( sum( CASE COST_TYPE WHEN 1 THEN PRICE END  )/ 1000000, 2 ), 0 )  a_total_price,IFNULL( round( sum( CASE COST_TYPE WHEN 2 THEN PRICE END  )/ 1000000, 2 ), 0 ) b_total_price,IFNULL( round( sum( CASE COST_TYPE WHEN 3 THEN PRICE END  )/ 1000000, 2 ), 0 ) c_total_price FROM (SELECT tCangKu.tenantId,tKuCun.id,tKuCun.STATES,tKuCun.COST_TYPE,tKuCun.price FROM (SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant RIGHT JOIN ( SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID WHERE 1=1 ";
-    private static String GOODS_NUM_PRICE_END = ") tCangKu LEFT JOIN L_WH_GOODS tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE AND tCangKu.id=tKuCun.WAREHOUSE_ID AND tKuCun.STATES BETWEEN 1 AND 2 where tKuCun.id is not null) t GROUP BY t.tenantId";
-
-    //鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛�
-    public List<Map<String, Object>> getGoodsNumPrice(Long agencyId) {
-        StringBuilder sql = new StringBuilder(GOODS_NUM_PRICE);
-        Map<String, Object> paramts = new HashMap<>();
-        sql.append(" and tenant.id=:agencyId");
-        paramts.put("agencyId", agencyId);
-        return select(sql.append(GOODS_NUM_PRICE_END).toString(), paramts, new MapperUtil());
-    }
-
-
-    private static String GET_GOODS_NUM_BY_MONTH = "SELECT monthT.month_Num,IFNULL(datat.total_Num,0) total_Num,IFNULL(datat.add_total_Num,0) add_total_Num,IFNULL(datat.reduce_total_Num,0) reduce_total_Num FROM (SELECT monthT.month_Num FROM (SELECT ( SELECT 1) month_Num UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) monthT) monthT LEFT JOIN ( SELECT t.tenantId,count(t.THIS_COUNT) total_Num,count(CASE t.THIS_TYPE WHEN 1 THEN t.THIS_COUNT END) add_total_Num,count(CASE t.THIS_TYPE WHEN 2 THEN t.THIS_COUNT END) reduce_total_Num,SUBSTR(DEAL_TIME,5,2) data_month FROM ( SELECT tCangKu.tenantId,tKuCun.id,tKuCun.THIS_TYPE,tKuCun.THIS_COUNT,tKuCun.DEAL_TIME FROM (SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant RIGHT JOIN ( SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID WHERE 1=1 ";
-    private static String GET_GOODS_NUM_BY_MONTH_END = ")tCangKu LEFT JOIN L_WH_GOODS_RECORD tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE AND tCangKu.id=tKuCun.WAREHOUSE_ID and tKuCun.DEAL_TIME between cast(CONCAT(DATE_FORMAT(NOW(), '%Y'),'1231240000') as UNSIGNED) and  cast(CONCAT(DATE_FORMAT(NOW(), '%Y'),'0101000000') as UNSIGNED)) t GROUP BY t.tenantId,SUBSTR(DEAL_TIME,5,2)) datat ON datat.data_month=monthT.month_Num ORDER BY monthT.month_Num ASC";
-
-    //鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛�
-    public List<Map<String, Object>> getGoodsNumByMonth(Long agencyId) {
-        StringBuilder sql = new StringBuilder(GET_GOODS_NUM_BY_MONTH);
-        Map<String, Object> paramts = new HashMap<>();
-        sql.append(" and tenant.id=:agencyId");
-        paramts.put("agencyId", agencyId);
-        return select(sql.append(GET_GOODS_NUM_BY_MONTH_END).toString(), paramts, new MapperUtil());
-    }
+    GoodsModelCountDTO queryGoodsAmount(Long baseGoodsModelsId, Integer type);
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java
similarity index 88%
rename from consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
rename to consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java
index 40b28e2..f686ae5 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormOutputServiceImpl.java
@@ -1,4 +1,4 @@
-package com.consum.base.service;
+package com.consum.base.service.impl;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -7,6 +7,7 @@
 
 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;
 
@@ -14,6 +15,8 @@
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.WhBusinessEnum;
 import com.consum.base.core.param.BaseWarehouseParam1;
+import com.consum.base.core.type.GoodsModelType;
+import com.consum.base.core.type.OutPutStatesType;
 import com.consum.base.core.utils.CurrencyUtil;
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.MapUtils;
@@ -23,11 +26,18 @@
 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.BaseGoodsModelsService;
+import com.consum.base.service.BaseWarehouseService;
+import com.consum.base.service.LWhFormOutputCoreService;
+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;
@@ -43,7 +53,7 @@
  */
 @Slf4j
 @Service
-public class LWhFormOutputServiceImpl extends BaseServiceImpl {
+public class LWhFormOutputServiceImpl extends BaseServiceImpl implements LWhFormOutputService {
 
     @Autowired
     private CodeGeneratorService codeGeneratorService;
@@ -54,6 +64,7 @@
     @Autowired
     private LWhProcureModelService lWhProcureModelService;
     @Autowired
+    @Lazy
     private LWhFormOutputCoreService lWhFormOutputCoreService;
     @Autowired
     private BaseGoodsModelsService baseGoodsModelsService;
@@ -65,6 +76,7 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/27
      */
+    @Override
     public int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
         // 1.鏂板鍑哄簱鍗曡褰�
         LWhFormOutput lWhFormOutput = new LWhFormOutput();
@@ -89,7 +101,7 @@
         lWhFormOutput.setOperatorId(sysInfo.getId());
         lWhFormOutput.setOperatorName(sysInfo.getUserName());
         lWhFormOutput.setDealTime(param.getDealTime());
-        lWhFormOutput.setStates(1);
+        lWhFormOutput.setStates(OutPutStatesType.OUT_PENDING.getValue());
         lWhFormOutput.setOutputDoc(param.getProcureDoc());
         int flag1 = this.insert(lWhFormOutput);
         if (flag1 == 0) {
@@ -104,7 +116,7 @@
             for (LWFormsOutputGoodsModelParam model : models) {
                 LWhProcureModel lWhProcureModel = new LWhProcureModel();
                 lWhProcureModel.setId(IdUtil.generateId());
-                lWhProcureModel.setBusinessType(3);
+                lWhProcureModel.setBusinessType(GoodsModelType.OUT_PUT.getValue());
                 lWhProcureModel.setBusinessId(lWhFormOutputId);
                 lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
                 // 鏍规嵁鍨嬪彿id鏌ヨ鍨嬪彿
@@ -145,6 +157,7 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
      */
+    @Override
     public GenericPager queryFormOutputList(LWhFormOutputQry param) {
         HashMap<String, Object> paramts = new HashMap<>();
         StringBuilder sql = new StringBuilder(QUERY_FORM_OUTPUT_LIST);
@@ -190,6 +203,7 @@
         return genericPager;
     }
 
+    @Override
     public GenericPager<Map<String, Object>> queryFormOutputDetailList(LWhFormOutputQry param) {
         HashMap<String, Object> paramts = new HashMap<>();
         StringBuilder sql =
@@ -240,6 +254,7 @@
 
     }
 
+    @Override
     public List<OutputExcelTemplate> getExportList(Long id) {
         String sql = "SELECT\n" + "\tfo.BUSINESS_FORM_CODE,\n" + "\tfo.AGENCY_NAME tenantName,\n"
             + "\tGOODS_NAME templateName,\n" + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n" + "\tcounts num,\n"
@@ -265,4 +280,24 @@
 
     }
 
+    /**
+     * 閫氳繃璋冩嫧鍗曟煡璇㈠嚭搴撳崟id
+     *
+     * @param transBusinessId
+     * @return
+     */
+    private static String QUEYR_ID_BY_TRANSFERID =
+        "select id from L_WH_FORM_OUTPUT where TRANS_BUSINESS_ID =:transBusinessId limit 1";
+
+    @Override
+    public Long queyrIdByTransferId(Long transBusinessId) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("transBusinessId", transBusinessId);
+        List<WhFormOutput> whFormOutputs = select(QUEYR_ID_BY_TRANSFERID, map, new WhFormOutput());
+        if (CollectionUtils.isEmpty(whFormOutputs)) {
+            return null;
+        }
+        return whFormOutputs.get(0).getId();
+    }
+
 }
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 9a3e556..0e75cae 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
@@ -175,8 +175,8 @@
                 LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods();
                 scrappedGoods.setId(IdUtil.generateId());
                 // 鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId,
-                    scrappedGoods.getBaseGoodsModelsId(), 1, null);
+                int goodsNum =
+                    lWhGoodsService.queryGoodsModelNum(0, warehouseId, scrappedGoods.getBaseGoodsModelsId(), 1, null);
                 if (params.getCounts() > goodsNum) {
                     log.error("鎶ュ簾鏁伴噺澶т簬搴撳瓨鏁伴噺");
                     return 0;
@@ -197,7 +197,10 @@
                     scrappedGoods.setBaseGoodsModelsName(baseGoodsModels.getModelName());
                     scrappedGoods.setUnit(baseGoodsModels.getUnit());
                 }
-
+                // 閫氳繃鍨嬪彿id鏌ヨ璇ュ瀷鍙锋墍鏈夊晢鍝佺殑鎬婚噾棰�
+                // GoodsModelCountDTO goodsModelCountDTO =
+                // lWhGoodsService.queryGoodsAmount(baseGoodsModelsId, GoodsStatesType.SCRAP.getValue());
+                // scrappedGoods.setTotalAmount(goodsModelCountDTO.getAmount());
                 scrappedGoodsList.add(scrappedGoods);
             }
             int flag2 = this.scrappedGoodsService.insertBatch(scrappedGoodsList);
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 24988ac..103126f 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
@@ -32,7 +32,7 @@
 import com.consum.base.service.BaseWarehouseManagerService;
 import com.consum.base.service.BaseWarehouseService;
 import com.consum.base.service.FinSysTenantServiceImpl;
-import com.consum.base.service.LWhFormOutputServiceImpl;
+import com.consum.base.service.LWhFormOutputService;
 import com.consum.base.service.LWhFormTransferService;
 import com.consum.base.service.LWhGoodsService;
 import com.consum.base.service.LWhProcureModelService;
@@ -68,8 +68,6 @@
     private LWhGoodsService lWhGoodsService;
     @Autowired
     private LWhProcureModelService lWhProcureModelService;
-    @Autowired
-    private LWhFormOutputServiceImpl lWhFormOutputService;
     @Autowired
     private BaseGoodsModelsServiceImpl baseGoodsModelsService;
     @Autowired
@@ -198,7 +196,7 @@
                 if (businessType == 0) {
                     lWhProcureModel.setBusinessType(2);
                     // 鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-                    int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
+                    int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
                     lWhProcureModel.setWorehouseCount(goodsNum);
                 }
                 if (businessType == 1) {
@@ -356,7 +354,7 @@
             + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id ";
         Map<String, Object> paramMap = new HashMap<>();
         paramMap.put("id", result.getId());
-        List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap, new MapperUtil());
+        List<Map<String, Object>> procureModelList = this.select(sql, paramMap, new MapperUtil());
 
         String queryRecord =
             "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1";
@@ -375,8 +373,7 @@
             Map<String, Object> goodsModelParamMap = new HashMap<>();
             goodsModelParamMap.put("id", result.getId());
             goodsModelParamMap.put("baseGoodsTemplateId", baseGoodsTemplateId);
-            List<Map<String, Object>> modelList =
-                lWhFormOutputService.select(sql2, goodsModelParamMap, new MapperUtil());
+            List<Map<String, Object>> modelList = this.select(sql2, goodsModelParamMap, new MapperUtil());
             modelList.forEach(item -> {
                 GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                 Integer businessType = result.getBusinessType();
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
new file mode 100644
index 0000000..cab1558
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsServiceImpl.java
@@ -0,0 +1,324 @@
+package com.consum.base.service.impl;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+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.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import com.consum.base.core.utils.MapUtils;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.pojo.dto.GoodsModelCountDTO;
+import com.consum.base.service.LWhGoodsService;
+import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.jdbc.service.BaseServiceImpl;
+
+/**
+ * @ClassName LWhGoodsService
+ * @Date 2023/10/24
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+public class LWhGoodsServiceImpl extends BaseServiceImpl implements LWhGoodsService {
+
+    /**
+     * @param warehouseType 浠撳簱绫诲瀷0鏈烘瀯1閮ㄩ棬
+     * @param warehouseId 鎵�灞炰粨搴撲粨搴撶紪鍙�
+     * @param baseGoodsModelsId 瑙勬牸鍨嬪彿缂栧彿
+     * @param states 锛�0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
+     * @param buyType 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+     * @return 鏌ヨ鏌愪釜鍨嬪彿鍦ㄤ粨搴撲腑鐨勬暟閲�
+     */
+    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,
+        Integer buyType) {
+        StringBuilder sql = new StringBuilder(query_Goods_Model_Num);
+        Map<String, Object> paramts = new HashMap<>();
+
+        if (warehouseType != null) {
+            sql.append(" and WAREHOUSE_TYPE=:warehouseType");
+            paramts.put("warehouseType", warehouseType);
+        }
+        if (warehouseId != null) {
+            sql.append(" and WAREHOUSE_ID=:warehouseId");
+            paramts.put("warehouseId", warehouseId);
+        }
+        if (baseGoodsModelsId != null) {
+            sql.append(" and BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
+            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
+        }
+        if (states != null) {
+            sql.append(" and STATES=:states");
+            paramts.put("states", states);
+        }
+        if (buyType != null) {
+            sql.append(" and BUY_TYPE=:buyType");
+            paramts.put("buyType", buyType);
+        }
+        return queryForInt(sql.toString(), paramts);
+    }
+
+    /**
+     * 鍑哄簱鏃跺�欙紝鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱
+     *
+     * @param warehouseId 鎵�灞炰粨搴撲粨搴撶紪鍙�
+     * @param baseGoodsModelsId 瑙勬牸鍨嬪彿缂栧彿
+     * @param states 鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
+     * @param buyType 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+     * @param goodsModelNum 鍙栧嚭鐨勬暟閲�
+     * @return
+     */
+    private static String QUERY_OUT_GOODS_ID = "SELECT * FROM L_WH_GOODS WHERE 1=1";
+
+    @Override
+    public List<Map<String, Object>> queryOutGoods(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId,
+        Integer states, Integer buyType, Integer goodsModelNum) {
+        StringBuilder sql = new StringBuilder(QUERY_OUT_GOODS_ID);
+        Map<String, Object> paramts = new HashMap<>();
+        if (warehouseType != null) {
+            sql.append(" and WAREHOUSE_TYPE=:warehouseType");
+            paramts.put("warehouseType", warehouseType);
+        }
+        if (warehouseId != null) {
+            sql.append(" and WAREHOUSE_ID=:warehouseId");
+            paramts.put("warehouseId", warehouseId);
+        }
+        if (baseGoodsModelsId != null) {
+            sql.append(" and BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
+            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
+        }
+        if (states != null) {
+            sql.append(" and STATES=:states");
+            paramts.put("states", states);
+        }
+        if (buyType != null) {
+            sql.append(" and BUY_TYPE=:buyType");
+            paramts.put("buyType", buyType);
+        }
+        return select(sql.append(" limit ").append(goodsModelNum).toString(), paramts);
+    }
+
+    /**
+     * 鍑哄簱鏃跺�欙紝鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱
+     *
+     * @param warehouseId 鎵�灞炰粨搴撲粨搴撶紪鍙�
+     * @param baseGoodsModelsId 瑙勬牸鍨嬪彿缂栧彿
+     * @param states 鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛�
+     * @param buyType 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+     * @param goodsModelNum 鍙栧嚭鐨勬暟閲�
+     * @return
+     */
+    @Override
+    public List<Long> queryOutGoodsId(Integer warehouseType, Long warehouseId, Long baseGoodsModelsId, Integer states,
+        Integer buyType, Integer goodsModelNum) {
+        List<Map<String, Object>> outGoods =
+            queryOutGoods(warehouseType, warehouseId, baseGoodsModelsId, states, buyType, goodsModelNum);
+        if (CollectionUtils.isEmpty(outGoods)) {
+            return null;
+        }
+        List<Long> whGoodsIds = outGoods.stream().map(map -> (Long)map.get("id")).collect(Collectors.toList());
+        return whGoodsIds;
+    }
+
+    private static String QUERY_GOODS_PRICE_BY_ID = "SELECT sum(PRICE)totalPrice from L_WH_GOODS goods where 1=1";
+
+    @Override
+    public long queryGoodsPriceById(List<Long> goodsIds) {
+        StringBuilder sql = new StringBuilder(QUERY_GOODS_PRICE_BY_ID);
+        Map<String, Object> paramts = new HashMap<>();
+        if (!CollectionUtils.isEmpty(goodsIds)) {
+            sql.append(" and id in(:goodsIds)");
+            paramts.put("goodsIds", goodsIds);
+        }
+        List<Map<String, Object>> map = this.select(sql.toString(), paramts);
+        if (CollectionUtils.isEmpty(map)) {
+            return 0;
+        }
+        BigDecimal totalPrice = (BigDecimal)map.get(0).get("totalPrice");
+        return totalPrice.longValue();
+    }
+
+    /**
+     * 鏌ヨ鎶ュ簾鐗╁搧 榛樿浼樺厛鎶ュ簾鏈�楂樹环鐨勭墿鍝�
+     *
+     * @param warehouseType
+     * @param warehouseId
+     * @param transBusinessId 璋冩嫧鍗曞彿
+     * @param nowUserName 浣跨敤浜哄鍚�
+     * @param baseGoodsModelsId 鐗╁搧鍨嬪彿
+     * @param states 鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛�
+     * @param goodsModelNum 鍙栧嚭鐨勬暟閲�
+     * @return
+     */
+
+    private static String QUERY_SCRAPPED_GOODS_PREFIX_1 =
+        "SELECT goods.id, goods.PRICE FROM L_WH_GOODS goods LEFT JOIN L_GOODS_USER_RECORD useRecord ON goods.id=useRecord.WH_GOODS_ID AND useRecord.LAST_RECORD=1 WHERE 1=1 ";
+    private static String QUERY_SCRAPPED_GOODS_PREFIX_2 =
+        " AND goods.id IN (SELECT lwgrd.WH_GOODS_ID FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD lwgr ON lwgr.WAREHOUSE_FLOW_ID=flow.id LEFT JOIN L_WH_GOODS_RECORD_DETAILS lwgrd ON lwgrd.WH_GOODS_RECORD_ID=lwgr.id WHERE flow.THIS_TYPE=1 AND flow.BUSINESS_FORM_ID=:transBusinessId)";
+    private static String QUERY_SCRAPPED_GOODS_PREFIX_2_MODEL_NOT_NULL =
+        " AND goods.id IN (SELECT lwgrd.WH_GOODS_ID FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD lwgr ON lwgr.WAREHOUSE_FLOW_ID=flow.id LEFT JOIN L_WH_GOODS_RECORD_DETAILS lwgrd ON lwgrd.WH_GOODS_RECORD_ID=lwgr.id WHERE flow.THIS_TYPE=1 AND flow.BUSINESS_FORM_ID=:transBusinessId AND lwgr.BASE_GOODS_MODELS_ID = :lwgrGoodsModelId)";
+    private static String QUERY_SCRAPPED_GOODS_END = " ORDER BY goods.PRICE DESC,goods.PROCURE_DATE ASC,goods.id";
+
+    @Override
+    public List<Map<String, Object>> queryScrappedGoods(Integer warehouseType, Long warehouseId, Long transBusinessId,
+        String nowUserName, Long baseGoodsModelsId, Short states, Integer goodsModelNum) {
+        if (warehouseType == null) {
+            warehouseType = 0;
+        }
+        StringBuilder sql = new StringBuilder(QUERY_SCRAPPED_GOODS_PREFIX_1);
+        Map<String, Object> paramts = new HashMap<>();
+        if (warehouseType != null) {
+            sql.append(" AND goods.WAREHOUSE_TYPE=:warehouseType");
+            paramts.put("warehouseType", warehouseType);
+        }
+        if (warehouseId != null) {
+            sql.append(" AND goods.WAREHOUSE_ID=:warehouseId");
+            paramts.put("warehouseId", warehouseId);
+        }
+        if (StringUtils.isNotEmpty(nowUserName)) {
+            sql.append(" AND useRecord.NOW_USER_NAME=:nowUserName");
+            paramts.put("nowUserName", nowUserName);
+        }
+        if (baseGoodsModelsId != null) {
+            sql.append(" AND goods.BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
+            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
+        }
+        if (states != null) {
+            sql.append(" AND goods.STATES=:states");
+            paramts.put("states", states);
+        }
+        if (transBusinessId != null) {
+            if (baseGoodsModelsId != null) {
+                sql.append(QUERY_SCRAPPED_GOODS_PREFIX_2_MODEL_NOT_NULL);
+                paramts.put("transBusinessId", transBusinessId);
+                paramts.put("lwgrGoodsModelId", baseGoodsModelsId);
+            } else {
+                sql.append(QUERY_SCRAPPED_GOODS_PREFIX_2);
+                paramts.put("transBusinessId", transBusinessId);
+            }
+        }
+        sql.append(QUERY_SCRAPPED_GOODS_END);
+        if (goodsModelNum != null) {
+            sql.append(" limit ").append(goodsModelNum);
+        }
+        return select(sql.toString(), paramts);
+    }
+
+    /**
+     * 鏌ヨ鎶ュ簾鐗╁搧 榛樿浼樺厛鎶ュ簾鏈�楂樹环鐨勭墿鍝�
+     *
+     * @param warehouseType
+     * @param warehouseId
+     * @param transBusinessId 璋冩嫧鍗曞彿
+     * @param nowUserName 浣跨敤浜哄鍚�
+     * @param baseGoodsModelsId 鐗╁搧鍨嬪彿
+     * @param states 鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛�
+     * @param goodsModelNum 鍙栧嚭鐨勬暟閲�
+     * @return
+     */
+    @Override
+    public List<Long> queryScrappedGoodsIds(Integer warehouseType, Long warehouseId, Long transBusinessId,
+        String nowUserName, Long baseGoodsModelsId, Short states, Integer goodsModelNum) {
+        List<Map<String, Object>> outGoods = queryScrappedGoods(warehouseType, warehouseId, transBusinessId,
+            nowUserName, baseGoodsModelsId, states, goodsModelNum);
+        if (CollectionUtils.isEmpty(outGoods)) {
+            return null;
+        }
+        List<Long> whGoodsIds = outGoods.stream().map(map -> (Long)map.get("id")).collect(Collectors.toList());
+        return whGoodsIds;
+    }
+
+    /**
+     * 璁剧疆鐗╁搧鐘舵�佷负璋冩嫧涓�
+     *
+     * @param whGoods
+     * @param toWarehouseId
+     * @param toWarehouseName
+     * @return
+     */
+    private static String MOD_GOODS_TRANSFERING_PREFIX = "update L_WH_GOODS set ";
+
+    @Override
+    public int modGoodsTransfering(List<Long> whGoods, Integer warehouseType, Long toWarehouseId,
+        String toWarehouseName, Integer states) {
+        StringBuilder sql = new StringBuilder(MOD_GOODS_TRANSFERING_PREFIX);
+        ArrayList<Object> params = new ArrayList<>();
+        if (warehouseType != null) {
+            sql.append(", WAREHOUSE_TYPE=?");
+            params.add(warehouseType);
+        }
+        if (toWarehouseId != null) {
+            sql.append(", WAREHOUSE_ID=?");
+            params.add(toWarehouseId);
+        }
+        if (toWarehouseName != null) {
+            sql.append(", WAREHOUSE_NAME=?");
+            params.add(toWarehouseName);
+        }
+        if (states != null) {
+            sql.append(", STATES=?");
+            params.add(states);
+        }
+        sql.deleteCharAt(22);
+        sql.append(" where id in(").append(StringUtils.join(whGoods, ",")).append(")");
+        return update(sql.toString(), params.toArray());
+    }
+
+    private static String GOODS_NUM_PRICE =
+        "SELECT t.tenantId,count(id) total_Num,count(CASE WHEN STATES=2 THEN 1 END) xia_fa_num,IFNULL(round(sum(PRICE)/1000000,2),0) total_price,IFNULL(ROUND(count(CASE WHEN STATES=2 THEN 1 END)/count(id),4),0)*100 AS zhan_you_percent,count(CASE COST_TYPE WHEN 1 THEN 1 END) a_total_Num,count(CASE COST_TYPE WHEN 2 THEN 1 END) b_total_Num,count(CASE COST_TYPE WHEN 3 THEN 1 END) c_total_Num,IFNULL( round( sum( CASE COST_TYPE WHEN 1 THEN PRICE END  )/ 1000000, 2 ), 0 )  a_total_price,IFNULL( round( sum( CASE COST_TYPE WHEN 2 THEN PRICE END  )/ 1000000, 2 ), 0 ) b_total_price,IFNULL( round( sum( CASE COST_TYPE WHEN 3 THEN PRICE END  )/ 1000000, 2 ), 0 ) c_total_price FROM (SELECT tCangKu.tenantId,tKuCun.id,tKuCun.STATES,tKuCun.COST_TYPE,tKuCun.price FROM (SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant RIGHT JOIN ( SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID WHERE 1=1 ";
+    private static String GOODS_NUM_PRICE_END =
+        ") tCangKu LEFT JOIN L_WH_GOODS tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE AND tCangKu.id=tKuCun.WAREHOUSE_ID AND tKuCun.STATES BETWEEN 1 AND 2 where tKuCun.id is not null) t GROUP BY t.tenantId";
+
+    // 鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛�
+    @Override
+    public List<Map<String, Object>> getGoodsNumPrice(Long agencyId) {
+        StringBuilder sql = new StringBuilder(GOODS_NUM_PRICE);
+        Map<String, Object> paramts = new HashMap<>();
+        sql.append(" and tenant.id=:agencyId");
+        paramts.put("agencyId", agencyId);
+        return select(sql.append(GOODS_NUM_PRICE_END).toString(), paramts, new MapperUtil());
+    }
+
+    private static String GET_GOODS_NUM_BY_MONTH =
+        "SELECT monthT.month_Num,IFNULL(datat.total_Num,0) total_Num,IFNULL(datat.add_total_Num,0) add_total_Num,IFNULL(datat.reduce_total_Num,0) reduce_total_Num FROM (SELECT monthT.month_Num FROM (SELECT ( SELECT 1) month_Num UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) monthT) monthT LEFT JOIN ( SELECT t.tenantId,count(t.THIS_COUNT) total_Num,count(CASE t.THIS_TYPE WHEN 1 THEN t.THIS_COUNT END) add_total_Num,count(CASE t.THIS_TYPE WHEN 2 THEN t.THIS_COUNT END) reduce_total_Num,SUBSTR(DEAL_TIME,5,2) data_month FROM ( SELECT tCangKu.tenantId,tKuCun.id,tKuCun.THIS_TYPE,tKuCun.THIS_COUNT,tKuCun.DEAL_TIME FROM (SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant RIGHT JOIN ( SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID WHERE 1=1 ";
+    private static String GET_GOODS_NUM_BY_MONTH_END =
+        ")tCangKu LEFT JOIN L_WH_GOODS_RECORD tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE AND tCangKu.id=tKuCun.WAREHOUSE_ID and tKuCun.DEAL_TIME between cast(CONCAT(DATE_FORMAT(NOW(), '%Y'),'1231240000') as UNSIGNED) and  cast(CONCAT(DATE_FORMAT(NOW(), '%Y'),'0101000000') as UNSIGNED)) t GROUP BY t.tenantId,SUBSTR(DEAL_TIME,5,2)) datat ON datat.data_month=monthT.month_Num ORDER BY monthT.month_Num ASC";
+
+    // 鎸夋満鏋勭粺璁$墿鍝佷环鍊笺�佹暟閲�/閲戦绛�
+    @Override
+    public List<Map<String, Object>> getGoodsNumByMonth(Long agencyId) {
+        StringBuilder sql = new StringBuilder(GET_GOODS_NUM_BY_MONTH);
+        Map<String, Object> paramts = new HashMap<>();
+        sql.append(" and tenant.id=:agencyId");
+        paramts.put("agencyId", agencyId);
+        return select(sql.append(GET_GOODS_NUM_BY_MONTH_END).toString(), paramts, new MapperUtil());
+    }
+
+    @Override
+    public GoodsModelCountDTO queryGoodsAmount(Long baseGoodsModelsId, Integer type) {
+        StringBuilder sql = new StringBuilder(
+            "SELECT sum(PRICE) amount from L_WH_GOODS where base_goods_models_id =:baseGoodsModelsId and states =:type");
+        Map<String, Object> param = new HashMap<>();
+        param.put("baseGoodsModelsId", baseGoodsModelsId);
+        param.put("type", type);
+        List<Map<String, Object>> result = this.select(sql.toString(), param);
+        if (!CollectionUtils.isEmpty(result)) {
+            List<GoodsModelCountDTO> goodsModelCount = Lists.newArrayList();
+            for (Map<String, Object> item : result) {
+                GoodsModelCountDTO goodsModelCountDTO = MapUtils.convertMapToObj(item, GoodsModelCountDTO.class);
+                goodsModelCount.add(goodsModelCountDTO);
+            }
+            return goodsModelCount.get(0);
+        }
+
+        return null;
+    }
+}
diff --git a/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods.java b/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods.java
index 66b1fd6..5f3da43 100644
--- a/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods.java
+++ b/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods.java
@@ -72,6 +72,10 @@
     @JsonIgnore
     protected boolean isset_sort = false;
 
+    private Integer totalAmount;
+    @JsonIgnore
+    protected boolean isset_totalAmount = false;
+
     /**
      * 榛樿鏋勯�犲嚱鏁�
      */
@@ -289,6 +293,20 @@
         return this.sort == null;
     }
 
+    public Integer getTotalAmount() {
+        return this.totalAmount;
+    }
+
+    public void setTotalAmount(Integer totalAmount) {
+        this.totalAmount = totalAmount;
+        this.isset_totalAmount = true;
+    }
+
+    @JsonIgnore
+    public boolean isEmptyTotalAmount() {
+        return this.totalAmount == null;
+    }
+
     /**
      * 閲嶅啓 toString() 鏂规硶
      */
@@ -309,6 +327,7 @@
                 .append("transBusinessId=").append(this.transBusinessId)
                 .append("userName=").append(this.userName)
                 .append("sort=").append(this.sort)
+                .append("totalAmount=").append(this.totalAmount)
                 .toString();
     }
 
@@ -365,6 +384,9 @@
         if (this.isset_sort) {
             l_wh_form_scrapped_goods.setSort(this.getSort());
         }
+        if (this.isset_totalAmount) {
+            l_wh_form_scrapped_goods.setTotalAmount(this.getTotalAmount());
+        }
         return l_wh_form_scrapped_goods;
     }
 }
diff --git a/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods_mapper.java b/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods_mapper.java
index e877fcc..f177d47 100644
--- a/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods_mapper.java
+++ b/consum-model-pojo/src/main/java/com/consum/model/po/LWhFormScrappedGoods_mapper.java
@@ -1,5 +1,11 @@
 package com.consum.model.po;
 
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Map;
+
+import org.springframework.jdbc.core.RowMapper;
+
 import com.walker.jdbc.BaseMapper;
 import com.walker.jdbc.ResultSetUtils;
 import com.walker.jdbc.SqlAndParameters;
@@ -7,13 +13,6 @@
 import com.walker.jdbc.sqlgen.InsertBuilder;
 import com.walker.jdbc.sqlgen.SelectBuilder;
 import com.walker.jdbc.sqlgen.UpdateBuilder;
-import com.walker.jdbc.util.StringUtils;
-
-import org.springframework.jdbc.core.RowMapper;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Map;
 
 /**
  * 琛ㄥ悕:L_WH_FORM_SCRAPPED_GOODS *
@@ -41,6 +40,7 @@
     public static final String TransBusinessId = "trans_business_id";
     public static final String UserName = "user_name";
     public static final String Sort = "sort";
+    public static final String TotalAmount = "total_amount";
 
     /**
      * 榛樿鏋勯�犲嚱鏁�
@@ -92,6 +92,9 @@
         }
         if (lWhFormScrappedGoods.isset_sort) {
             this.setSort(lWhFormScrappedGoods.getSort());
+        }
+        if (lWhFormScrappedGoods.isset_totalAmount) {
+            this.setTotalAmount(lWhFormScrappedGoods.getTotalAmount());
         }
         // 鍘绘帀锛�2022-09-07
         // this.setDatabaseName_(l_wh_form_scrapped_goods.getDatabaseName_());
@@ -149,6 +152,7 @@
         ib.set(TransBusinessId, this.getTransBusinessId(), this.isset_transBusinessId);
         ib.set(UserName, this.getUserName(), this.isset_userName);
         ib.set(Sort, this.getSort(), this.isset_sort);
+        ib.set(TotalAmount, this.getTotalAmount(), this.isset_totalAmount);
         return ib.genMapSql();
     }
 
@@ -171,6 +175,7 @@
         ub.set(TransBusinessId, this.getTransBusinessId(), this.isset_transBusinessId);
         ub.set(UserName, this.getUserName(), this.isset_userName);
         ub.set(Sort, this.getSort(), this.isset_sort);
+        ub.set(TotalAmount, this.getTotalAmount(), this.isset_totalAmount);
         ub.where(this.getPkName_(), this.getPkValue_());
         return ub.genMapSql();
     }
@@ -194,6 +199,7 @@
         ub.set(TransBusinessId, this.getTransBusinessId(), this.isset_transBusinessId);
         ub.set(UserName, this.getUserName(), this.isset_userName);
         ub.set(Sort, this.getSort(), this.isset_sort);
+        ub.set(TotalAmount, this.getTotalAmount(), this.isset_totalAmount);
         return ub.genMapSql(where, parameters);
     }
 
@@ -216,6 +222,7 @@
         ub.set(TransBusinessId, this.getTransBusinessId(), this.isset_transBusinessId);
         ub.set(UserName, this.getUserName(), this.isset_userName);
         ub.set(Sort, this.getSort(), this.isset_sort);
+        ub.set(TotalAmount, this.getTotalAmount(), this.isset_totalAmount);
         return ub.genArraySql(where, parameters);
     }
 
@@ -263,7 +270,7 @@
      */
     @Override
     public SqlAndParameters<Map<String, Object>> getSelectSql_(String where, Map<String, Object> parameters) {
-        return new SqlAndParameters<>("select id, counts, scrapped_code, scrapped_name, beiz, form_scrapped_id, base_goods_template_id, goods_template_name, unit, base_goods_models_id, base_goods_models_name, trans_business_id, user_name, sort from " + this.getTableName_() + " " + where, parameters);
+        return new SqlAndParameters<>("select id, counts, scrapped_code, scrapped_name, beiz, form_scrapped_id, base_goods_template_id, goods_template_name, unit, base_goods_models_id, base_goods_models_name, trans_business_id, user_name, sort, total_amount from " + this.getTableName_() + " " + where, parameters);
     }
 
     /**
@@ -271,7 +278,7 @@
      */
     @Override
     public SqlAndParameters<Object[]> getSelectSql_(String where, Object[] parameters) {
-        return new SqlAndParameters<>("select id, counts, scrapped_code, scrapped_name, beiz, form_scrapped_id, base_goods_template_id, goods_template_name, unit, base_goods_models_id, base_goods_models_name, trans_business_id, user_name, sort from " + this.getTableName_() + " " + where, parameters);
+        return new SqlAndParameters<>("select id, counts, scrapped_code, scrapped_name, beiz, form_scrapped_id, base_goods_template_id, goods_template_name, unit, base_goods_models_id, base_goods_models_name, trans_business_id, user_name, sort, total_amount from " + this.getTableName_() + " " + where, parameters);
     }
 
     /**
@@ -384,6 +391,14 @@
                 l_wh_form_scrapped_goods.setSort(rs.getLong(columnIndex));
             }
         }
+        columnIndex = resultSetUtils.findColumn(rs, LWhFormScrappedGoods_mapper.TotalAmount);
+        if (columnIndex > 0) {
+            if (rs.getBigDecimal(columnIndex) == null) {
+                l_wh_form_scrapped_goods.setTotalAmount(null);
+            } else {
+                l_wh_form_scrapped_goods.setTotalAmount(rs.getInt(columnIndex));
+            }
+        }
         return l_wh_form_scrapped_goods;
     }
 }

--
Gitblit v1.9.1