From ceecebe477faf5a45b19f3b258f7add8f93b4583 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期二, 05 十二月 2023 10:00:24 +0800
Subject: [PATCH] 代码优化 结构调整

---
 consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java             |  305 +++--
 consum-base/src/main/java/com/consum/base/pojo/response/FormOutputVO.java                        |    2 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureGoodsServiceImpl.java       |   18 
 consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java                       |   22 
 consum-base/src/main/java/com/consum/base/service/LWhFormTransferService.java                    |   29 
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java                  |   29 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java           |  194 +-
 consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java             |  182 +--
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java           |  198 ++-
 consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java                     |  182 --
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java                 |   31 
 consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java              |  167 +-
 consum-base/src/main/java/com/consum/base/pojo/response/FormTransferVO.java                      |   68 +
 consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelUserRecordServiceImpl.java |    9 
 consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserRecordService.java          |   13 
 consum-base/src/main/java/com/consum/base/service/LWhFormScrappedService.java                    |   47 
 consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java            |  316 ++++++
 consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsRecordServiceImpl.java            |   19 
 consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackModelServiceImpl.java        |   29 
 consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java               |   41 
 consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordService.java                     |   14 
 consum-base/src/main/java/com/consum/base/controller/LWhProcureModelController.java              |   17 
 consum-base/src/main/java/com/consum/base/service/UsingFormBackModelService.java                 |   10 
 consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java                |   48 
 consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java                |   31 
 consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java                |   98 -
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java                  |  108 +-
 consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java              |   48 
 consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java              |  108 -
 /dev/null                                                                                        |    8 
 consum-base/src/main/java/com/consum/base/pojo/response/UsingFormBackVO.java                     |    2 
 consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java               |   37 
 consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java           |  140 ++
 consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateCountVO.java                |   32 
 consum-base/src/main/java/com/consum/base/service/LWhProcureModelService.java                    |   93 -
 consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java               |  276 +---
 consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java                         |   42 
 consum-base/src/main/java/com/consum/base/pojo/response/BaseGoodsTemplateInfo.java               |    4 
 consum-base/src/main/java/com/consum/base/BaseController.java                                    |   19 
 consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java                 |   45 
 consum-base/src/main/java/com/consum/base/pojo/response/LWhFormScrappedVO.java                   |    7 
 consum-base/src/main/java/com/consum/base/service/LWhFormProcureGoodsService.java                |   13 
 42 files changed, 1,698 insertions(+), 1,403 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/BaseController.java b/consum-base/src/main/java/com/consum/base/BaseController.java
index 0ed10f4..f41965a 100644
--- a/consum-base/src/main/java/com/consum/base/BaseController.java
+++ b/consum-base/src/main/java/com/consum/base/BaseController.java
@@ -1,16 +1,19 @@
 package com.consum.base;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.poi.ss.usermodel.Workbook;
+
 import com.consum.model.po.FinSysTenantUser;
 import com.iplatform.base.PlatformAdapterController;
 import com.iplatform.base.util.UserUtils;
 import com.iplatform.core.BeanContextAware;
 import com.iplatform.model.po.S_user_core;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URLEncoder;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.poi.ss.usermodel.Workbook;
 
 public abstract class BaseController extends PlatformAdapterController {
 
@@ -49,7 +52,8 @@
         OutputStream out = response.getOutputStream();
         response.setCharacterEncoding("UTF-8");
         response.setHeader("content-Type", "application/vnd.ms-excel");
-        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xls", "UTF-8"));
+        response.setHeader("Content-Disposition",
+            "attachment;filename=" + URLEncoder.encode(fileName + ".xls", "UTF-8"));
         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         workbook.write(byteArrayOutputStream);
         response.setHeader("Content-Length", String.valueOf(byteArrayOutputStream.size()));
@@ -57,4 +61,5 @@
         workbook.close();
         out.close();
     }
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
index a29a688..ef81301 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
@@ -1,12 +1,36 @@
 package com.consum.base.controller;
 
-import cn.hutool.core.util.ReflectUtil;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.excel.exception.ExcelDataConvertException;
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.pojo.FinSysTenantUserSearchParam;
 import com.consum.base.pojo.FinSysTenantUserUpdParam;
@@ -35,32 +59,12 @@
 import com.walker.infrastructure.utils.PhoneNumberUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.web.ResponseValue;
+
+import cn.hutool.core.util.ReflectUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
 
 /**
  * @Description 绯荤粺鐢ㄦ埛
@@ -78,7 +82,6 @@
 
     private UserServiceImpl userService;
 
-
     private FinSysTenantServiceImpl finSysTenantService;
 
     private RoleServiceImpl roleService;
@@ -86,16 +89,14 @@
     @Autowired
     private FinSysTenantDepartmentService finSysTenantDepartmentService;
 
-
     @Autowired
     public void setUserService(UserServiceImpl userService) {
         this.userService = userService;
     }
 
-
     @Autowired
-    public FinSysTenantUserController(FinSysTenantServiceImpl finSysTenantService, FinSysTenantUserServiceImpl finSysTenantUserService,
-        RoleServiceImpl roleService) {
+    public FinSysTenantUserController(FinSysTenantServiceImpl finSysTenantService,
+        FinSysTenantUserServiceImpl finSysTenantUserService, RoleServiceImpl roleService) {
         this.finSysTenantUserService = finSysTenantUserService;
         this.finSysTenantService = finSysTenantService;
         this.roleService = roleService;
@@ -107,7 +108,11 @@
      * @Date 2023/7/11 13:59
      */
     @RequestMapping("/select/list")
-    public ResponseValue allocatedList(FinSysTenantUserSearchParam param) {
+    public ResponseValue allocatedList() {
+        FinSysTenantUserSearchParam param = CommonUtil.getObjFromReq(FinSysTenantUserSearchParam.class);
+        FinSysTenantUserSearchParam param2 = new FinSysTenantUserSearchParam();
+        CommonUtil.copyProperties(param, param2);
+        param = param2;
         if (param.getTenantCode() == 0) {
             FinSysTenantUser user = new FinSysTenantUser();
             Long id = this.getCurrentUser().getId();
@@ -153,7 +158,7 @@
                     finSysTenantUser.setRoleStr(roleStr);
                 }
 
-                //寰幆鏌ヨ杩愮淮鍟唅d
+                // 寰幆鏌ヨ杩愮淮鍟唅d
                 if (finSysTenantUser.getSupplierId() != null) {
                     finSysTenantUser.setIsSupplier("鏄�");
                 } else {
@@ -171,16 +176,15 @@
 
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-//            fieldDatas.setAccessible(true);
-//            fieldDatas.set(pager, resultList);
+            // fieldDatas.setAccessible(true);
+            // fieldDatas.set(pager, resultList);
             ReflectUtil.setFieldValue(pager, fieldDatas, resultList);
 
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鍒嗛〉鍒楄〃鏌ヨ澶辫触锛屽師鍥狅細" + e);
         }
         return ResponseValue.success(pager);
     }
-
 
     @ApiOperation(value = "鏍规嵁鏈烘瀯id鏌ヨ鐢ㄦ埛", notes = "鏍规嵁鏈烘瀯id鏌ヨ鐢ㄦ埛")
     @ApiImplicitParam(name = "tenantId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")
@@ -193,7 +197,6 @@
         return ResponseValue.success(result);
     }
 
-
     /**
      * @Description 鏂板
      * @Author wh
@@ -201,12 +204,17 @@
      */
     @PostMapping("/add")
     @Transactional(rollbackFor = Exception.class)
-    public ResponseValue add(@RequestBody FinSysTenantUser user) {
+    public ResponseValue add() {
+        FinSysTenantUser user = CommonUtil.getObjFromReqBody(FinSysTenantUser.class);
+        FinSysTenantUser formInventoryParam = new FinSysTenantUser();
+        CommonUtil.copyProperties(user, formInventoryParam);
+        user = formInventoryParam;
         if (user == null) {
             return ResponseValue.error("鍙傛暟涓虹┖");
         }
-        //鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
-        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
+        // 鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
+        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null
+            && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
             return ResponseValue.error("鍛樺伐缂栧彿閲嶅");
         }
         if (user.getTenantId() == null || "".equals(user.getTenantId()) || new Integer(user.getTenantId()) == 0) {
@@ -215,13 +223,13 @@
         if (user.getTenantCode() == null || "".equals(user.getTenantCode()) || new Integer(user.getTenantCode()) == 0) {
             return ResponseValue.error("娣诲姞鏃惰閫夋嫨鍖哄幙");
         }
-        //鎻掑叆绯荤粺鐢ㄦ埛
+        // 鎻掑叆绯荤粺鐢ㄦ埛
         user.setId(NumberGenerator.getLongSequenceNumber());
         user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
         user.setCreateBy(this.getCurrentUser().getUser_name());
         user.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
         user.setUpdateBy(this.getCurrentUser().getUser_name());
-        //user.setStatus(1);// 0绂佺敤 1鍚敤
+        // user.setStatus(1);// 0绂佺敤 1鍚敤
         user.setIsDelete(0);
         user.setSysUserId(NumberGenerator.getLongSequenceNumber());
         // 鍔犲瘑鎵嬫満鍙�
@@ -231,22 +239,22 @@
             encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
         }
         user.setUserPhone(encPhone);
-        //鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
-        user.setSysDeptId(3L); //瀵瑰簲骞冲彴鏈烘瀯id  榛樿涓哄钩鍙扮鐞�
+        // 鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
+        user.setSysDeptId(3L); // 瀵瑰簲骞冲彴鏈烘瀯id 榛樿涓哄钩鍙扮鐞�
         this.finSysTenantUserService.insert(user);
         // 鎻掑叆骞冲彴鐢ㄦ埛
         S_user_core userCore = new S_user_core();
         userCore.setId(user.getSysUserId());
-        userCore.setDept_id(3L); //閮ㄩ棬id锛岀洰鍓嶅啓姝�
-        userCore.setOrg_id(user.getSysDeptId()); //鏈烘瀯id
+        userCore.setDept_id(3L); // 閮ㄩ棬id锛岀洰鍓嶅啓姝�
+        userCore.setOrg_id(user.getSysDeptId()); // 鏈烘瀯id
         userCore.setOrg_id(1L);
-        userCore.setUser_name(user.getUserCode());  //鐢ㄦ埛璐﹀彿
+        userCore.setUser_name(user.getUserCode()); // 鐢ㄦ埛璐﹀彿
         userCore.setNick_name(user.getUserName());
-        //鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
+        // 鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
         userCore.setUser_type(2);
         userCore.setPhonenumber(encPhone);
         userCore.setSex(user.getSex().toString());
-        //鍒濆鍖栧瘑鐮� 123456
+        // 鍒濆鍖栧瘑鐮� 123456
         String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
         userCore.setPassword(pws);
         // 骞冲彴鐢ㄦ埛琛ㄥ拰绯荤粺鐢ㄦ埛 琛ㄧ姸鎬佺浉鍙�
@@ -274,22 +282,21 @@
         userCore.setIs_logoff(0);
         userCore.setLogoff_time(0L);
         userCore.setIs_sms(0);
-        //绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
+        // 绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
         userCore.setType(1);
-        //鍟嗘埛id锛�0-骞冲彴
+        // 鍟嗘埛id锛�0-骞冲彴
         userCore.setMer_id(0L);
         this.userService.insert(userCore);
         // 鎻掑叆骞冲彴鏈烘瀯
-        //灏戣鑹瞚d
-        List<Long> roleList = user.getRoleList(); //鏈烘瀯id  澶氫釜
+        // 灏戣鑹瞚d
+        List<Long> roleList = user.getRoleList(); // 鏈烘瀯id 澶氫釜
         if (!CollectionUtils.isEmpty(roleList)) {
-            Long sysUserId = user.getSysUserId();    //鐢ㄦ埛id
+            Long sysUserId = user.getSysUserId(); // 鐢ㄦ埛id
             this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId);
         }
-//        this.getFinCustomerCache().remove();
+        // this.getFinCustomerCache().remove();
         return ResponseValue.success(1);
     }
-
 
     public static class ImportUserParam {
 
@@ -371,7 +378,8 @@
      * @Date 2023/10/12 15:56
      */
     @PostMapping("/import")
-    public ResponseValue importUser(@RequestParam String tenantId, @RequestParam String tenantCode, MultipartFile file) throws IOException {
+    public ResponseValue importUser(@RequestParam String tenantId, @RequestParam String tenantCode, MultipartFile file)
+        throws IOException {
         String originalFilename = file.getOriginalFilename();
         if (!"xls".equals(originalFilename.substring(originalFilename.lastIndexOf(".") + 1))) {
             return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
@@ -391,11 +399,13 @@
         EasyExcel.read(file.getInputStream(), ImportUserParam.class, new AnalysisEventListener<ImportUserParam>() {
             @Override
             public void invoke(ImportUserParam data, AnalysisContext context) {
-                if (StringUtils.isEmpty(data.getUserName()) || StringUtils.isEmpty(data.getUserCode()) || StringUtils.isEmpty(data.getUserPhone())
-                    || null == data.getSex() || StringUtils.isEmpty(data.getEmail()) || null == data.getSeq() || StringUtils.isEmpty(data.getRoleName())) {
+                if (StringUtils.isEmpty(data.getUserName()) || StringUtils.isEmpty(data.getUserCode())
+                    || StringUtils.isEmpty(data.getUserPhone()) || null == data.getSex()
+                    || StringUtils.isEmpty(data.getEmail()) || null == data.getSeq()
+                    || StringUtils.isEmpty(data.getRoleName())) {
                     throw new ImportUserParamVerifyException("鍗曞厓鏍间笉鑳戒负绌�!");
                 }
-                //鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
+                // 鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
                 if (finSysTenantUserService.getByUserCode(data.getUserCode()) > 0) {
                     throw new ImportUserParamVerifyException("鍛樺伐缂栧彿涓虹┖鎴栧凡瀛樺湪!");
                 }
@@ -411,8 +421,9 @@
                 user.setSeq(data.getSeq());
                 user.setTenantId(tenantId);
                 user.setTenantCode(tenantCode);
-                //璁剧疆瑙掕壊
-                Optional<S_role> sRole = roles.stream().filter(role -> role.getRole_name().equals(data.getRoleName())).findFirst();
+                // 璁剧疆瑙掕壊
+                Optional<S_role> sRole =
+                    roles.stream().filter(role -> role.getRole_name().equals(data.getRoleName())).findFirst();
                 user.setRoleList(Arrays.asList(sRole.orElse(new S_role()).getRole_id()));
 
                 user.setId(NumberGenerator.getLongSequenceNumber());
@@ -430,8 +441,8 @@
                 user.setUserPhone(encPhone);
 
                 user.setIsDelete(1);
-                //鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
-                user.setSysDeptId(3L); //瀵瑰簲骞冲彴鏈烘瀯id  榛樿涓哄钩鍙扮鐞�
+                // 鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
+                user.setSysDeptId(3L); // 瀵瑰簲骞冲彴鏈烘瀯id 榛樿涓哄钩鍙扮鐞�
                 finSysTenantUsers.add(user);
             }
 
@@ -445,15 +456,17 @@
                 if (exception != null) {
                     // 濡傛灉鏄煇涓�涓崟鍏冩牸鐨勮浆鎹㈠紓甯� 鑳借幏鍙栧埌鍏蜂綋琛屽彿 灏佽鏃跺紓甯�
                     if (exception instanceof ExcelDataConvertException) {
-                        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
-                        logger.error("绗瑊}琛岋紝绗瑊}鍒楄В鏋愬紓甯革紝鏁版嵁涓�:{}", excelDataConvertException.getRowIndex(), excelDataConvertException.getColumnIndex() + 1,
+                        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
+                        logger.error("绗瑊}琛岋紝绗瑊}鍒楄В鏋愬紓甯革紝鏁版嵁涓�:{}", excelDataConvertException.getRowIndex(),
+                            excelDataConvertException.getColumnIndex() + 1,
                             excelDataConvertException.getCellData().getStringValue());
-                        throw new IllegalStateException(
-                            "绗�" + (excelDataConvertException.getRowIndex() + 1) + "琛岋紝绗�" + (excelDataConvertException.getColumnIndex() + 1) + "鍒楄В鏋愬紓甯革紝寮傚父鏁版嵁涓�:[ "
-                                + excelDataConvertException.getCellData().getStringValue() + " ]");
+                        throw new IllegalStateException("绗�" + (excelDataConvertException.getRowIndex() + 1) + "琛岋紝绗�"
+                            + (excelDataConvertException.getColumnIndex() + 1) + "鍒楄В鏋愬紓甯革紝寮傚父鏁版嵁涓�:[ "
+                            + excelDataConvertException.getCellData().getStringValue() + " ]");
                     }
                     if (exception instanceof ImportUserParamVerifyException) {
-                        throw new IllegalStateException("绗�" + context.readSheetHolder().getRowIndex() + "琛�, 瑙f瀽閿欒:[ " + exception.getMessage() + " ]");
+                        throw new IllegalStateException("绗�" + context.readSheetHolder().getRowIndex() + "琛�, 瑙f瀽閿欒:[ "
+                            + exception.getMessage() + " ]");
                     }
                     throw exception;
                 }
@@ -475,16 +488,16 @@
             // 鎻掑叆骞冲彴鐢ㄦ埛
             S_user_core userCore = new S_user_core();
             userCore.setId(user.getSysUserId());
-            userCore.setDept_id(3L); //閮ㄩ棬id锛岀洰鍓嶅啓姝�
-            userCore.setOrg_id(user.getSysDeptId()); //鏈烘瀯id
+            userCore.setDept_id(3L); // 閮ㄩ棬id锛岀洰鍓嶅啓姝�
+            userCore.setOrg_id(user.getSysDeptId()); // 鏈烘瀯id
             userCore.setOrg_id(1L);
-            userCore.setUser_name(user.getUserCode());  //鐢ㄦ埛璐﹀彿
+            userCore.setUser_name(user.getUserCode()); // 鐢ㄦ埛璐﹀彿
             userCore.setNick_name(user.getUserName());
-            //鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
+            // 鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
             userCore.setUser_type(2);
             userCore.setPhonenumber(user.getUserPhone());
             userCore.setSex(user.getSex().toString());
-            //鍒濆鍖栧瘑鐮� 123456
+            // 鍒濆鍖栧瘑鐮� 123456
             String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
             userCore.setPassword(pws);
             // 骞冲彴鐢ㄦ埛琛ㄥ拰绯荤粺鐢ㄦ埛 琛ㄧ姸鎬佺浉鍙�
@@ -512,17 +525,17 @@
             userCore.setIs_logoff(0);
             userCore.setLogoff_time(0L);
             userCore.setIs_sms(0);
-            //绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
+            // 绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
             userCore.setType(1);
-            //鍟嗘埛id锛�0-骞冲彴
+            // 鍟嗘埛id锛�0-骞冲彴
             userCore.setMer_id(0L);
             sUserCores.add(userCore);
         }
-        //淇濆瓨鐢ㄦ埛淇℃伅
+        // 淇濆瓨鐢ㄦ埛淇℃伅
         this.finSysTenantUserService.insertBatch(finSysTenantUsers);
-        //淇濆瓨骞冲彴鐢ㄦ埛淇℃伅
+        // 淇濆瓨骞冲彴鐢ㄦ埛淇℃伅
         this.userService.insertBatch(sUserCores);
-        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        // 淇濆瓨瑙掕壊鏉冮檺淇℃伅
         this.finSysTenantUserService.execInsertRoleUserList(finSysTenantUsers);
     }
 
@@ -536,7 +549,6 @@
             super(message);
         }
     }
-
 
     /**
      * @Description 缂栬緫
@@ -555,9 +567,9 @@
             encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
         }
         user.setUserPhone(encPhone);
-        // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER
+        // 1.鏇存柊绯荤粺鐢ㄦ埛 FIN_SYS_TENANT_USER
         finSysTenantUserService.update(user);
-        // 2.鏇存柊骞冲彴鐢ㄦ埛  S_USER_CORE
+        // 2.鏇存柊骞冲彴鐢ㄦ埛 S_USER_CORE
         S_user_core userCore = new S_user_core();
         userCore.setId(user.getSysUserId());
         userCore.setUpdate_by(this.getCurrentUser().getUser_name());
@@ -577,11 +589,11 @@
         // 鍔犲瘑鎵嬫満鍙�
         userCore.setPhonenumber(user.getUserPhone());
         this.userService.update(userCore);
-        // 3. 鏇存柊瑙掕壊閰嶇疆  S_ROLE_USER
-        // 1. 鏍规嵁  user.getSysUserId() 鏌ヨ
-        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId());  //宸叉湁鐨勬潈闄�
-        List<Long> roleList = user.getRoleList(); //閫夋嫨鐨勬潈闄�
-        //鍏堝垹闄ゅ啀娣诲姞
+        // 3. 鏇存柊瑙掕壊閰嶇疆 S_ROLE_USER
+        // 1. 鏍规嵁 user.getSysUserId() 鏌ヨ
+        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId()); // 宸叉湁鐨勬潈闄�
+        List<Long> roleList = user.getRoleList(); // 閫夋嫨鐨勬潈闄�
+        // 鍏堝垹闄ゅ啀娣诲姞
         if (list != null && list.size() > 0) {
             finSysTenantUserService.execDelRoleUserList(user.getSysUserId());
         }
@@ -603,7 +615,7 @@
         if (user == null) {
             return ResponseValue.error("鍙傛暟涓虹┖");
         }
-        // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER   搴旇鏄煡璇�  鐒跺悗鍙敼鐘舵��
+        // 1.鏇存柊绯荤粺鐢ㄦ埛 FIN_SYS_TENANT_USER 搴旇鏄煡璇� 鐒跺悗鍙敼鐘舵��
         List<FinSysTenantUser> select = finSysTenantUserService.select(new FinSysTenantUser(user.getId()));
         if (select == null || select.size() == 0) {
             return ResponseValue.error("鐢ㄦ埛涓嶅瓨鍦�");
@@ -611,7 +623,7 @@
         FinSysTenantUser finSysTenantUser = select.get(0);
         finSysTenantUser.setStatus(user.getStatus());
         finSysTenantUserService.update(finSysTenantUser);
-        // 2.鏇存柊骞冲彴鐢ㄦ埛  S_USER_CORE
+        // 2.鏇存柊骞冲彴鐢ㄦ埛 S_USER_CORE
         S_user_core userCore = new S_user_core();
         userCore.setId(user.getSysUserId());
         userCore.setUpdate_by(this.getCurrentUser().getUser_name());
@@ -637,10 +649,10 @@
         if (finSysTenantUser == null) {
             return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        //鍒濆鍖栧瘑鐮� 123456
+        // 鍒濆鍖栧瘑鐮� 123456
         String stringValue = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();// 瀵嗘枃
         // 1. 淇敼鐢ㄦ埛琛�
-        //鐢ㄦ埛琛╥d
+        // 鐢ㄦ埛琛╥d
         Long sysUserId = finSysTenantUser.getSysUserId();
         S_user_core userCore = new S_user_core();
         userCore.setId(sysUserId);
@@ -696,21 +708,23 @@
             }
 
             // 鏌ヨ 鐢ㄦ埛瑙掕壊 TODO 涓存椂瑙e喅 灏嗘潵鏀鹃厤缃枃浠朵腑
-            List<S_role> list = finSysTenantUserService.getByUserId(sysInfo.getSysUserId());  //宸叉湁鐨勬潈闄�
+            // 宸叉湁鐨勬潈闄�
+            List<S_role> list = finSysTenantUserService.getByUserId(sysInfo.getSysUserId());
             for (S_role s_role : list) {
                 if (s_role.getRole_id() != null && s_role.getRole_id().equals(1690961420053L)) {
                     sysInfo.setKfStatus(1);
                 }
             }
 
-            // 鏌ヨ鐖剁被鐨刼rgcode  闇�瑕佸皢鑷繁鐨刼rg鍏堟煡鍑烘潵  鍐嶆牴鎹畃arentid 鏌ョ埗绫�
+            // 鏌ヨ鐖剁被鐨刼rgcode 闇�瑕佸皢鑷繁鐨刼rg鍏堟煡鍑烘潵 鍐嶆牴鎹畃arentid 鏌ョ埗绫�
             String tenantId = sysInfo.getTenantId();
             if (tenantId != null && !tenantId.equals("")) {
                 List<FinSysTenant> select = finSysTenantService.select(new FinSysTenant(Long.valueOf(tenantId)));
                 if (select != null && select.size() > 0) {
                     FinSysTenant finSysTenant = select.get(0);
                     if (finSysTenant != null && finSysTenant.getParentId() != null) {
-                        List<FinSysTenant> parents = finSysTenantService.select(new FinSysTenant(finSysTenant.getParentId()));
+                        List<FinSysTenant> parents =
+                            finSysTenantService.select(new FinSysTenant(finSysTenant.getParentId()));
                         if (parents != null && parents.size() > 0) {
                             sysInfo.setParentCode(parents.get(0).getCode());
                         }
@@ -721,7 +735,6 @@
         }
         return ResponseValue.success(sysInfo);
     }
-
 
     /**
      * 鏇存柊瑙掕壊鏉冮檺
@@ -734,10 +747,10 @@
         if (user == null) {
             return ResponseValue.error("鍙傛暟涓虹┖");
         }
-        // 1. 鏍规嵁  user.getSysUserId() 鏌ヨ
-        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId());  //宸叉湁鐨勬潈闄�
-        List<Long> roleList = user.getRoleList(); //閫夋嫨鐨勬潈闄�
-        //鍏堝垹闄ゅ啀娣诲姞
+        // 1. 鏍规嵁 user.getSysUserId() 鏌ヨ
+        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId()); // 宸叉湁鐨勬潈闄�
+        List<Long> roleList = user.getRoleList(); // 閫夋嫨鐨勬潈闄�
+        // 鍏堝垹闄ゅ啀娣诲姞
         if (list != null && list.size() > 0) {
             finSysTenantUserService.execDelRoleUserList(user.getSysUserId());
         }
@@ -746,7 +759,6 @@
         }
         return ResponseValue.success(1);
     }
-
 
     /**
      * @Description 鏂板
@@ -764,12 +776,13 @@
         if (depts == null || depts.size() == 0) {
             return ResponseValue.error(roleName + "鐨勮鑹蹭笉瀛樺湪");
         }
-        //鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
-        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
+        // 鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
+        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null
+            && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
             return ResponseValue.error("鍛樺伐缂栧彿閲嶅");
         }
         FinSysTenantUser sysInfo = this.getSysInfo();
-        //鎻掑叆绯荤粺鐢ㄦ埛
+        // 鎻掑叆绯荤粺鐢ㄦ埛
         user.setId(NumberGenerator.getLongSequenceNumber());
         user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
         user.setCreateBy(this.getCurrentUser().getUser_name());
@@ -781,7 +794,7 @@
         user.setLv(sysInfo.getLv());
         user.setTenantCode(sysInfo.getTenantCode());
         user.setTenantId(sysInfo.getTenantId());
-        user.setSysDeptId(2l); //杩愮淮绠$悊
+        user.setSysDeptId(2l); // 杩愮淮绠$悊
         // 鍔犲瘑鎵嬫満鍙�
         String key = PlatformRSAUtils.AES_KEY;
         String userPhone = user.getUserPhone();
@@ -795,16 +808,16 @@
         // 鎻掑叆骞冲彴鐢ㄦ埛
         S_user_core userCore = new S_user_core();
         userCore.setId(user.getSysUserId());
-        userCore.setDept_id(depts.get(0).getId()); //閮ㄩ棬
+        userCore.setDept_id(depts.get(0).getId()); // 閮ㄩ棬
         userCore.setOrg_id(1L);
-        //userCore.setUser_name();  //鐢ㄦ埛璐﹀彿
-        userCore.setUser_name(user.getUserCode());  //鐢ㄦ埛璐﹀彿
+        // userCore.setUser_name(); //鐢ㄦ埛璐﹀彿
+        userCore.setUser_name(user.getUserCode()); // 鐢ㄦ埛璐﹀彿
         userCore.setNick_name(user.getUserName());
-        //鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
+        // 鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
         userCore.setUser_type(2);
 
         userCore.setPhonenumber(userPhone);
-        //鍒濆鍖栧瘑鐮� 123456
+        // 鍒濆鍖栧瘑鐮� 123456
         String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
         userCore.setPassword(pws);
         if (user.getStatus() == 0) {
@@ -830,37 +843,39 @@
         userCore.setIs_logoff(0);
         userCore.setLogoff_time(0L);
         userCore.setIs_sms(0);
-        //绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
+        // 绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
         userCore.setType(2);
-        //鍟嗘埛id锛�0-骞冲彴
+        // 鍟嗘埛id锛�0-骞冲彴
         userCore.setMer_id(0L);
         this.userService.insert(userCore);
         // 鎻掑叆骞冲彴鏈烘瀯
-        //灏戣鑹瞚d
-        List<Long> roleList = user.getRoleList(); //鏈烘瀯id  澶氫釜
-        Long sysUserId = user.getSysUserId();    //鐢ㄦ埛id
+        // 灏戣鑹瞚d
+        List<Long> roleList = user.getRoleList(); // 鏈烘瀯id 澶氫釜
+        Long sysUserId = user.getSysUserId(); // 鐢ㄦ埛id
         this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId);
         return ResponseValue.success(1);
     }
 
-    private Set<String> picFormatArr = new HashSet<String>() {{
-        add(".pjp");
-        add(".svgz");
-        add(".jxl");
-        add(".jpeg");
-        add(".ico");
-        add(".avif");
-        add(".tif");
-        add(".gif");
-        add(".jfif");
-        add(".jpg");
-        add(".svg");
-        add(".png");
-        add(".xbm");
-        add(".pjpeg");
-        add(".bmp");
-        add(".webp");
-    }};
+    private Set<String> picFormatArr = new HashSet<String>() {
+        {
+            add(".pjp");
+            add(".svgz");
+            add(".jxl");
+            add(".jpeg");
+            add(".ico");
+            add(".avif");
+            add(".tif");
+            add(".gif");
+            add(".jfif");
+            add(".jpg");
+            add(".svg");
+            add(".png");
+            add(".xbm");
+            add(".pjpeg");
+            add(".bmp");
+            add(".webp");
+        }
+    };
 
     @PostMapping("/updatePerson")
     @Transactional(rollbackFor = Exception.class)
@@ -888,9 +903,9 @@
             encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
         }
         updUser.setUserPhone(encPhone);
-        // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER
+        // 1.鏇存柊绯荤粺鐢ㄦ埛 FIN_SYS_TENANT_USER
         finSysTenantUserService.update(updUser);
-        // 2.鏇存柊骞冲彴鐢ㄦ埛  S_USER_CORE
+        // 2.鏇存柊骞冲彴鐢ㄦ埛 S_USER_CORE
         S_user_core userCore = new S_user_core();
         userCore.setId(sysInfo.getSysUserId());
         userCore.setUpdate_by(this.getCurrentUser().getUser_name());
@@ -913,7 +928,7 @@
         String oldMixPd = param.getOldMixPd();
         String newMixPd = param.getNewMixPd();
         String btnMixPd = param.getBtnMixPd();
-        //鏍¢獙鍙傛暟
+        // 鏍¢獙鍙傛暟
         if (StringUtils.isEmpty(oldMixPd) || StringUtils.isEmpty(newMixPd) || StringUtils.isEmpty(btnMixPd)) {
             return ResponseValue.error("淇℃伅涓嶈兘涓虹┖锛�");
         }
@@ -921,7 +936,7 @@
         if (sysInfo == null) {
             return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        //鏍¢獙淇╂杈撳叆鐨勫瘑鐮�
+        // 鏍¢獙淇╂杈撳叆鐨勫瘑鐮�
         btnMixPd = PlatformRSAUtils.getRsaDecryptValue(btnMixPd, PlatformRSAUtils.PRIK);
         newMixPd = PlatformRSAUtils.getRsaDecryptValue(newMixPd, PlatformRSAUtils.PRIK);
         if (!newMixPd.equals(btnMixPd)) {
@@ -935,7 +950,7 @@
         if (validatePasswordRule != null) {
             return ResponseValue.error(validatePasswordRule);
         }
-        //鐢ㄦ埛琛╥d
+        // 鐢ㄦ埛琛╥d
         Long sysUserId = sysInfo.getSysUserId();
         S_user_core queryU = new S_user_core();
         queryU.setId(sysUserId);
@@ -944,14 +959,14 @@
             return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
         oldMixPd = PlatformRSAUtils.getRsaDecryptValue(oldMixPd, PlatformRSAUtils.PRIK);
-        //鏍¢獙鑰佸瘑鐮�
+        // 鏍¢獙鑰佸瘑鐮�
         if (!this.matchesPassword(oldMixPd, queryUserInfo.getPassword())) {
             return ResponseValue.error("鏃у瘑鐮佽緭鍏ユ湁璇紒");
         }
         if (oldMixPd.equalsIgnoreCase(btnMixPd)) {
             return ResponseValue.error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚岋紒");
         }
-        //鏇存柊鏁版嵁搴�
+        // 鏇存柊鏁版嵁搴�
         // 1. 淇敼鐢ㄦ埛琛�
         queryU.setPassword(this.encryptPassword(btnMixPd));
         queryU.setModify_pwd(1);
@@ -962,8 +977,7 @@
 
     @ApiOperation(value = "鏍规嵁鏈烘瀯id鏌ヨ閮ㄩ棬涓殑鐢ㄦ埛", notes = "鏍规嵁鏈烘瀯id鏌ヨ閮ㄩ棬涓殑鐢ㄦ埛")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "agencyId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")
-    })
+        @ApiImplicitParam(name = "agencyId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")})
     @GetMapping("/select/department")
     public ResponseValue selectDepartment(Long agencyId) {
         FinSysTenantVO finSysTenantVO = new FinSysTenantVO();
@@ -977,18 +991,18 @@
         // 閮ㄩ棬
         FinSysTenantDepartment finSysTenantDepartment = new FinSysTenantDepartment();
         finSysTenantDepartment.setTenantId(agencyId);
-        List<FinSysTenantDepartment> tenantDepartmentList = finSysTenantDepartmentService.select(finSysTenantDepartment);
+        List<FinSysTenantDepartment> tenantDepartmentList =
+            finSysTenantDepartmentService.select(finSysTenantDepartment);
         List<DepartmentVO> departmentVOList = Lists.newArrayList();
         tenantDepartmentList.forEach(department -> {
             DepartmentVO departmentVO = new DepartmentVO();
-            //鐢ㄦ埛
+            // 鐢ㄦ埛
             Long id = department.getId();
             departmentVO.setId(id);
             departmentVO.setName(department.getName());
             departmentVO.setType("department");
 
-            String sql = "SELECT SYS_USER_ID,USER_NAME FROM "
-                + "fin_sys_tenant_user "
+            String sql = "SELECT SYS_USER_ID,USER_NAME FROM " + "fin_sys_tenant_user "
                 + "WHERE SYS_DEPT_ID =:deptId AND SYS_USER_ID NOT IN(SELECT MANAGER_ID FROM base_warehouse_manager)";
             Map<String, Object> param = new HashMap<>();
             param.put("deptId", id);
@@ -996,7 +1010,7 @@
             List<UserVO> userVOList = Lists.newArrayList();
             select.forEach(user -> {
                 UserVO userVO = new UserVO();
-                userVO.setId((Long) user.get("sysUserId"));
+                userVO.setId((Long)user.get("sysUserId"));
                 userVO.setName(user.get("userName").toString());
                 userVO.setType("user");
                 userVOList.add(userVO);
@@ -1008,6 +1022,5 @@
 
         return ResponseValue.success(finSysTenantVO);
     }
-
 
 }
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 5ff38e9..d38acba 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
@@ -1,8 +1,26 @@
 package com.consum.base.controller;
 
-import cn.afterturn.easypoi.excel.ExcelExportUtil;
-import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
-import cn.hutool.core.util.ReflectUtil;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.compress.utils.Lists;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+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;
@@ -12,9 +30,9 @@
 import com.consum.base.pojo.excel.OutputExcelTemplate;
 import com.consum.base.pojo.query.LWhFormOutputQry;
 import com.consum.base.pojo.response.FormOutputGoodsVO;
-import com.consum.base.pojo.response.FormOutputTemplateInfoVO;
 import com.consum.base.pojo.response.FormOutputVO;
 import com.consum.base.pojo.response.GoodsModelVO;
+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;
@@ -26,28 +44,14 @@
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.web.ResponseValue;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import cn.hutool.core.util.ReflectUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.compress.utils.Lists;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.ClassPathResource;
-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 鍑哄簱鍗�
@@ -72,9 +76,8 @@
      * @Date 2023/10/27
      */
     @ApiOperation(value = "鏂板鍑哄簱鍗�", notes = "鏂板鍑哄簱鍗�")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "鍑哄簱鍗曞疄浣�", dataType = "lWhFormOutputParam", dataTypeClass = LWhFormOutputParam.class, paramType = "body")
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "鍑哄簱鍗曞疄浣�", dataType = "lWhFormOutputParam",
+        dataTypeClass = LWhFormOutputParam.class, paramType = "body")})
     @PostMapping("/add")
     public ResponseValue add() {
         LWhFormOutputParam param = CommonUtil.getObjFromReqBody(LWhFormOutputParam.class);
@@ -93,7 +96,8 @@
      * @Description 鍒楄〃鏌ヨ
      */
     @ApiOperation(value = "鍒楄〃鏌ヨ", notes = "鍒楄〃鏌ヨ")
-    @ApiImplicitParam(name = "param", value = "鍑哄簱鍗曞疄浣�", required = true, dataType = "LWhFormOutputParam", paramType = "query")
+    @ApiImplicitParam(name = "param", value = "鍑哄簱鍗曞疄浣�", required = true, dataType = "LWhFormOutputParam",
+        paramType = "query")
     @GetMapping("/list")
     public ResponseValue queryFormOutputList() {
         LWhFormOutputQry param = CommonUtil.getObjFromReq(LWhFormOutputQry.class);
@@ -113,36 +117,24 @@
         List<FormOutputVO> resultList = Lists.newArrayList();
         if (!CollectionUtils.isEmpty(data)) {
             data.forEach(item -> {
-                // 鏌ヨ鍨嬪彿鏁伴噺
                 FormOutputVO formOutputVO = new FormOutputVO();
                 BeanUtils.copyProperties(item, formOutputVO);
 
-                List<FormOutputTemplateInfoVO> procureTemplateInfoList = Lists.newArrayList();
-
-                // 鏌ヨ鍨嬪彿鏁伴噺
-                String sql = "SELECT bgt.id,bgm.GOODS_TEMPLATES_ID,GOODS_NAME,sum( counts ) count FROM "
-                    + "l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id "
-                    + "LEFT JOIN base_goods_template bgt ON bgm.GOODS_TEMPLATES_ID = bgt.id "
-                    + "WHERE pm.BUSINESS_ID =:id GROUP BY bgm.GOODS_TEMPLATES_ID";
-                Map<String, Object> paramMap = new HashMap<>();
-                paramMap.put("id", item.getId());
-                List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
-                for (Map<String, Object> map : procureModelList) {
-                    FormOutputTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormOutputTemplateInfoVO.class);
-                    procureTemplateInfoList.add(procureTemplateInfoVO);
-                }
-                formOutputVO.setFormOutputTemplateInfoList(procureTemplateInfoList);
+                // 鏌ヨ鐗╁搧鍨嬪彿缁熻鏁伴噺
+                List<GoodsTemplateCountVO> goodsTemplateCount =
+                    lWhProcureModelService.getGoodsTemplateCountByBusinessId(item.getId());
+                formOutputVO.setFormOutputTemplateInfoList(goodsTemplateCount);
 
                 resultList.add(formOutputVO);
             });
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-//            fieldDatas.setAccessible(true);
-//            fieldDatas.set(genericPager, resultList);
+            // fieldDatas.setAccessible(true);
+            // fieldDatas.set(genericPager, resultList);
             ReflectUtil.setFieldValue(genericPager, fieldDatas, resultList);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏌ヨ鍑哄簱鍗曞垪琛ㄥけ璐�", e);
         }
         return ResponseValue.success(genericPager);
     }
@@ -177,8 +169,7 @@
             List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
             String sql2 = "SELECT pm.id,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount "
                 + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
-                + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
-                + "WHERE pm.BUSINESS_ID =:id";
+                + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id";
             List<Map<String, Object>> modelList = lWhFormOutputService.select(sql2, paramMap, new MapperUtil());
             modelList.forEach(item -> {
                 GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
@@ -192,9 +183,9 @@
         return ResponseValue.success("鏌ヨ鎴愬姛!", lWhFormOutputExtendVO);
     }
 
-
     @ApiOperation(value = "鏌ヨ鍑哄簱鍗曡鎯呮槑缁�", notes = "鏌ヨ鍑哄簱鍗曡鎯呮槑缁�")
-    @ApiImplicitParam(name = "formOutputQry", value = "鍑哄簱鍗曡鎯呮煡璇㈡潯浠�", required = true, dataType = "LWhFormOutputQry", paramType = "query")
+    @ApiImplicitParam(name = "formOutputQry", value = "鍑哄簱鍗曡鎯呮煡璇㈡潯浠�", required = true, dataType = "LWhFormOutputQry",
+        paramType = "query")
     @GetMapping("/detail/list")
     public ResponseValue queryFormOutputDetailList() {
         LWhFormOutputQry formOutputQry = CommonUtil.getObjFromReq(LWhFormOutputQry.class);
@@ -205,7 +196,6 @@
         PageUtil genericPager = lWarehouseFlowService.queryAllBusinessFlow(formOutputQry);
         return ResponseValue.success(genericPager);
     }
-
 
     @ApiOperation(value = "鍑哄簱鍗曞鍑�", notes = "鍑哄簱鍗曞鍑�")
     @ApiImplicitParam(name = "id", value = "鍑哄簱鍗昳d", required = true, dataType = "Long", paramType = "query")
@@ -228,8 +218,10 @@
         if (CollectionUtils.isEmpty(exportList)) {
             throw new RuntimeException("鏁版嵁涓虹┖");
         }
-        int countNum = exportList.stream().filter(item -> item.getNum() != null).mapToInt(OutputExcelTemplate::getNum).sum();
-        double totalAmount = exportList.stream().filter(item -> item.getTotalAmount() != null).mapToDouble(OutputExcelTemplate::getAmount).sum();
+        int countNum =
+            exportList.stream().filter(item -> item.getNum() != null).mapToInt(OutputExcelTemplate::getNum).sum();
+        double totalAmount = exportList.stream().filter(item -> item.getTotalAmount() != null)
+            .mapToDouble(OutputExcelTemplate::getAmount).sum();
         Optional<OutputExcelTemplate> first = exportList.stream().findFirst();
         OutputExcelTemplate templateExcelExport = first.get();
         String businessFormCode = templateExcelExport.getBusinessFormCode();
@@ -248,6 +240,4 @@
 
     }
 
-
 }
-
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
index 1984a5b..f5a6218 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
@@ -1,61 +1,15 @@
 package com.consum.base.controller;
 
-import cn.afterturn.easypoi.excel.ExcelExportUtil;
-import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
-import cn.hutool.core.util.ReflectUtil;
-import com.consum.base.BaseController;
-import com.consum.base.core.CodeGeneratorEnum;
-import com.consum.base.core.CodeGeneratorService;
-import com.consum.base.core.WhBusinessEnum;
-import com.consum.base.core.utils.CommonUtil;
-import com.consum.base.core.utils.IdUtil;
-import com.consum.base.core.utils.MapUtils;
-import com.consum.base.core.utils.MapperUtil;
-import com.consum.base.core.utils.PageUtil;
-import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
-import com.consum.base.pojo.LWhFormProcureParam;
-import com.consum.base.pojo.LWhProcureModelParam;
-import com.consum.base.pojo.excel.ProcureExcelTemplate;
-import com.consum.base.pojo.query.FormProcureQry;
-import com.consum.base.pojo.response.FormProcureVO;
-import com.consum.base.pojo.response.FromProcureTemplateInfoVO;
-import com.consum.base.pojo.response.GoodsModelVO;
-import com.consum.base.pojo.response.LWhFormProcureExtendVO;
-import com.consum.base.pojo.response.LWhFormProcureGoodsVO;
-import com.consum.base.service.BaseGoodsTemplateService;
-import com.consum.base.service.BaseWarehouseService;
-import com.consum.base.service.LOrgSupplierServiceImpl;
-import com.consum.base.service.LWhFormProcureCoreService;
-import com.consum.base.service.LWhFormProcureGoodsService;
-import com.consum.base.service.LWhFormProcureService;
-import com.consum.base.service.LWhGoodsService;
-import com.consum.base.service.LWhProcureModelService;
-import com.consum.model.po.BaseGoodsTemplate;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LOrgSupplier;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhFormProcureGoods;
-import com.consum.model.po.LWhProcureModel;
-import com.iplatform.model.po.S_user_core;
-import com.walker.db.page.GenericPager;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.DateUtils;
-import com.walker.web.ResponseValue;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.Set;
+
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.compress.utils.Lists;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
@@ -64,6 +18,43 @@
 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;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.core.utils.PageUtil;
+import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
+import com.consum.base.pojo.LWhFormProcureParam;
+import com.consum.base.pojo.excel.ProcureExcelTemplate;
+import com.consum.base.pojo.query.FormProcureQry;
+import com.consum.base.pojo.response.FormProcureVO;
+import com.consum.base.pojo.response.GoodsModelVO;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
+import com.consum.base.pojo.response.LWhFormProcureExtendVO;
+import com.consum.base.pojo.response.LWhFormProcureGoodsVO;
+import com.consum.base.service.BaseGoodsTemplateService;
+import com.consum.base.service.LWhFormProcureCoreService;
+import com.consum.base.service.LWhFormProcureGoodsService;
+import com.consum.base.service.LWhFormProcureService;
+import com.consum.base.service.LWhProcureModelService;
+import com.consum.model.po.BaseGoodsTemplate;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LWhFormProcure;
+import com.consum.model.po.LWhFormProcureGoods;
+import com.iplatform.model.po.S_user_core;
+import com.walker.db.page.GenericPager;
+import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.infrastructure.utils.DateUtils;
+import com.walker.web.ResponseValue;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import cn.hutool.core.util.ReflectUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 
 /**
  * @ClassName LWhFormProcureController
@@ -79,21 +70,13 @@
     @Resource
     private LWhFormProcureService lWhFormProcureService;
     @Resource
-    private BaseWarehouseService baseWarehouseService;
-    @Resource
-    private CodeGeneratorService codeGeneratorService;
-    @Resource
-    private LWhFormProcureGoodsService lWhFormProcureGoodsService;
+    private LWhFormProcureGoodsService lWhFormProcureGoodsServiceImpl;
     @Resource
     private LWhFormProcureCoreService lWhFormProcureCoreService;
-    @Resource
-    private LWhGoodsService lWhGoodsService;
     @Resource
     private BaseGoodsTemplateService baseGoodsTemplateService;
     @Resource
     private LWhProcureModelService lWhProcureModelService;
-    @Resource
-    private LOrgSupplierServiceImpl lOrgSupplierService;
 
     /**
      * @Description 鏂板
@@ -108,134 +91,26 @@
     }
 
     private ResponseValue add(LWhFormProcureParam param) {
-        Long warehouseId = param.getWarehouseId();
         if (param.getWarehouseId() == null) {
             return ResponseValue.error("浠撳簱ID涓嶈兘涓虹┖");
         }
-        BaseWarehouse baseWarehouse = baseWarehouseService.getById(warehouseId);
-        FinSysTenantUser sysTenantUser = this.getSysInfo();
-        String tenantId = sysTenantUser.getTenantId();
-        String tenantName = sysTenantUser.getTenantName();
 
         List<LWhFormProcureGoodsInfoParam> procureGoods = param.getProcureGoods();
         if (CollectionUtils.isEmpty(procureGoods)) {
             return ResponseValue.error("閲囪喘鍗曚笉鑳戒负绌�");
         }
-
+        FinSysTenantUser sysTenantUser = this.getSysInfo();
         S_user_core currentUser = this.getCurrentUser();
-        // 閲囪喘鍗昳d
-        Long whFormProcureId = param.getId();
-        if (whFormProcureId == null) {
-            whFormProcureId = IdUtil.generateId();
-        }
-        long procureTime = Long.valueOf(param.getProcureTime());
-
-        Set<String> supplierList = new HashSet<>();
-
-        ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>();
-        ArrayList<LWhProcureModel> procureModelList = new ArrayList<>();
-
-        for (int i = 0; i < procureGoods.size(); i++) {
-            LWhFormProcureGoodsInfoParam procureGoodT = procureGoods.get(i);
-            Long baseCategoryId = procureGoodT.getBaseCategoryId();
-            Long baseGoodsTemplateId = procureGoodT.getBaseGoodsTemplateId();
-            String supplier = procureGoodT.getSupplier();
-            // 鍒ゆ柇褰撳墠渚涘簲鍟嗘槸鍚﹀凡瀛樺湪
-            if (!supplierList.contains(supplier) && !lOrgSupplierService.supplierIsContain(tenantId, supplier)) {
-                supplierList.add(supplier);
-            }
-
-            List<LWhProcureModelParam> models = procureGoodT.getModels();
-            if (CollectionUtils.isEmpty(models)) {
-                return ResponseValue.error("閲囪喘鍗曚笉鑳戒负绌�");
-            }
-            LWhFormProcureGoods procureGood = new LWhFormProcureGoods();
-            long fromProcureGoodsId = IdUtil.generateId();
-            procureGood.setId(fromProcureGoodsId);
-            procureGood.setWhFormProcureId(whFormProcureId);
-            procureGood.setBaseCategoryId(baseCategoryId);
-            procureGood.setBaseGoodsTemplateId(baseGoodsTemplateId);
-            // TODO 鐗╁搧鍘嗗彶鐗堟湰
-            procureGood.setGoodsTemplateName(procureGoodT.getGoodsTemplateName());
-            procureGood.setSupplier(supplier);
-            procureGood.setSort(i);
-            for (LWhProcureModelParam modelT : models) {
-                Integer counts = modelT.getCounts();
-                if (counts == null || counts <= 0) {
-                    return ResponseValue.error("鍨嬪彿鐨勯噰璐暟閲忓彧鑳戒负姝f暣鏁�");
-                }
-                Long price = modelT.getPrice();
-                if (price == null || price <= 0) {
-                    return ResponseValue.error("鍨嬪彿鐨勯噰璐环鏍煎彧鑳戒负姝f暟");
-                }
-                Long baseGoodsModelsId = modelT.getBaseGoodsModelsId();
-                if (baseGoodsModelsId == null) {
-                    return ResponseValue.error("閲囪喘鐨勪环鍨嬪彿鏈壘鍒�");
-                }
-                //鏌ヨ鍨嬪彿淇℃伅
-                Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId);
-                if (tempGoodsInfo == null) {
-                    return ResponseValue.error("閲囪喘鐨勪环鍨嬪彿鏈壘鍒�");
-                }
-                String modelName = (String) tempGoodsInfo.get("modelname");
-                // 鏌ヨ鍨嬪彿搴撳瓨
-                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
-                LWhProcureModel model = new LWhProcureModel();
-                model.setId(IdUtil.generateId());
-                model.setFromProcureGoodsId(fromProcureGoodsId);
-                model.setBusinessType(WhBusinessEnum.CAIGOU.getValue() + 0);
-                model.setBusinessId(whFormProcureId);
-                model.setBaseGoodsModelsId(baseGoodsModelsId);
-                model.setBaseGoodsModelsName(modelName);
-                model.setPrice(price);
-                model.setCounts(counts);
-                model.setWorehouseCount(goodsModelNum);
-                model.setSupplier(supplier);
-                model.setTotalAmount(price * counts);
-                procureModelList.add(model);
-            }
-            procureGoodList.add(procureGood);
-        }
-        lWhFormProcureGoodsService.insertBatch(procureGoodList);
-        lWhProcureModelService.insertBatch(procureModelList);
-
-        // 鎻掑叆 閲囪喘鍗曠墿鍝併�怢_WH_FORM_PROCURE_GOODS銆�
-        LWhFormProcure lWhFormProcure = new LWhFormProcure();
-        lWhFormProcure.setId(whFormProcureId);
-        lWhFormProcure.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Procure_Warehouse));
-        lWhFormProcure.setWarehouseId(warehouseId);
-        lWhFormProcure.setWarehouseName(baseWarehouse.getWarehouseName());
-        lWhFormProcure.setBuyerId(currentUser.getId());
-        lWhFormProcure.setBuyerName(currentUser.getNick_name());
-        lWhFormProcure.setProcureTime(procureTime);
-        lWhFormProcure.setProcureDoc(param.getProcureDoc());
-        lWhFormProcure.setBuyType(param.getBuyType());
-        lWhFormProcure.setStates(1);
-        lWhFormProcure.setAgencyId(baseWarehouse.getAgencyId());
-        lWhFormProcure.setAgencyName(baseWarehouse.getAgencyName());
-        int result = lWhFormProcureService.insert(lWhFormProcure);
-
-        supplierList.forEach(supplier -> {
-            LOrgSupplier lOrgSupplier = new LOrgSupplier();
-            lOrgSupplier.setId(IdUtil.generateId());
-            lOrgSupplier.setAgencyId(tenantId);
-            lOrgSupplier.setAgencyName(tenantName);
-            lOrgSupplier.setSupplier(supplier);
-            lOrgSupplierService.insert(lOrgSupplier);
-        });
-        if (result > 0) {
-            return ResponseValue.success(1);
-        }
-        return ResponseValue.error("鏂板澶辫触锛�");
+        lWhFormProcureService.add(param, sysTenantUser, currentUser);
+        return ResponseValue.success();
     }
 
     /**
      * @Description 鍒楄〃鏌ヨ
      */
     @ApiOperation(value = "閲囪喘鍗曞垪琛ㄦ煡璇�", notes = "閲囪喘鍗曞垪琛ㄦ煡璇�")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "閲囪喘鏌ヨ鏉′欢", required = true, dataType = "FormProcureQryDto", paramType = "query")
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鏌ヨ鏉′欢", required = true,
+        dataType = "FormProcureQryDto", paramType = "query")})
     @GetMapping("/list")
     public ResponseValue queryFormProcureList() {
         FormProcureQry param = CommonUtil.getObjFromReq(FormProcureQry.class);
@@ -257,31 +132,21 @@
         ArrayList<FormProcureVO> result = new ArrayList<>();
         if (!CollectionUtils.isEmpty(data)) {
             data.forEach(item -> {
-
                 FormProcureVO fromProcureVO = new FormProcureVO();
                 BeanUtils.copyProperties(item, fromProcureVO);
-                List<FromProcureTemplateInfoVO> procureTemplateInfoList = Lists.newArrayList();
 
                 // 鏌ヨ鍨嬪彿鏁伴噺
-                String sql = "select fpg.id,BASE_CATEGORY_ID ,BASE_GOODS_TEMPLATE_ID ,GOODS_TEMPLATE_NAME ,sum(counts) count "
-                    + "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID "
-                    + "where fpg.WH_FORM_PROCURE_ID =:id group by pm.FROM_PROCURE_GOODS_ID";
-                Map<String, Object> paramMap = new HashMap<>();
-                paramMap.put("id", item.getId());
-                List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
-                for (Map<String, Object> map : procureModelList) {
-                    FromProcureTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FromProcureTemplateInfoVO.class);
-                    procureTemplateInfoList.add(procureTemplateInfoVO);
-                }
-                fromProcureVO.setFromProcureTemplateInfoList(procureTemplateInfoList);
+                List<GoodsTemplateCountVO> procureCount =
+                    lWhProcureModelService.getProcureCountByBusinessId(item.getId());
+                fromProcureVO.setFromProcureTemplateInfoList(procureCount);
 
                 result.add(fromProcureVO);
             });
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-//            fieldDatas.setAccessible(true);
-//            fieldDatas.set(genericPager, result);
+            // fieldDatas.setAccessible(true);
+            // fieldDatas.set(genericPager, result);
             ReflectUtil.setFieldValue(genericPager, fieldDatas, result);
         } catch (Exception e) {
             e.printStackTrace();
@@ -325,7 +190,7 @@
         if (num == 0) {
             return ResponseValue.error("鍒犻櫎澶辫触锛�");
         }
-        lWhFormProcureGoodsService.update("delete from L_WH_FORM_PROCURE_GOODS where WH_FORM_PROCURE_ID=" + id);
+        lWhFormProcureGoodsServiceImpl.update("delete from L_WH_FORM_PROCURE_GOODS where WH_FORM_PROCURE_ID=" + id);
 
         lWhProcureModelService.update("delete from L_WH_PROCURE_MODEL where BUSINESS_TYPE =1 and BUSINESS_ID=" + id);
         return ResponseValue.success(1);
@@ -361,15 +226,15 @@
         // 鐗╁搧
         LWhFormProcureGoods lWhFormProcureGoods = new LWhFormProcureGoods();
         lWhFormProcureGoods.setWhFormProcureId(id);
-        List<LWhFormProcureGoods> formProcureGoods = lWhFormProcureGoodsService.select(lWhFormProcureGoods);
+        List<LWhFormProcureGoods> formProcureGoods = lWhFormProcureGoodsServiceImpl.select(lWhFormProcureGoods);
 
-//        Field fieldModels = null;
-//        try {
-//            fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
-//        } catch (NoSuchFieldException e) {
-//            e.printStackTrace();
-//        }
-//        fieldModels.setAccessible(true);
+        // Field fieldModels = null;
+        // try {
+        // fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
+        // } catch (NoSuchFieldException e) {
+        // e.printStackTrace();
+        // }
+        // fieldModels.setAccessible(true);
         ArrayList<LWhFormProcureGoodsVO> procureGoodsVOList = new ArrayList<>();
         for (LWhFormProcureGoods formProcureGood : formProcureGoods) {
             LWhFormProcureGoodsVO lWhFormProcureGoodsVO = new LWhFormProcureGoodsVO();
@@ -383,8 +248,9 @@
             // 鏌ヨ鍨嬪彿鏁伴噺
             Map<String, Object> paramMap = new HashMap<>();
             paramMap.put("formProcureGoodId", formProcureGood.getId());
-            String sql = "SELECT\n" + "pm.BASE_GOODS_MODELS_ID,pm.BASE_GOODS_MODELS_NAME,pm.PRICE,pm.COUNTS,pm.WOREHOUSE_COUNT,bgm.unit " + "FROM\n"
-                + "\tl_wh_procure_model pm\n"
+            String sql = "SELECT\n"
+                + "pm.BASE_GOODS_MODELS_ID,pm.BASE_GOODS_MODELS_NAME,pm.PRICE,pm.COUNTS,pm.WOREHOUSE_COUNT,bgm.unit "
+                + "FROM\n" + "\tl_wh_procure_model pm\n"
                 + "\tLEFT JOIN base_goods_models bgm on pm.BASE_GOODS_MODELS_ID = bgm.id where pm.FROM_PROCURE_GOODS_ID =:formProcureGoodId";
             List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
             List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
@@ -392,7 +258,7 @@
                 GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                 goodsModelVOList.add(goodsModelVO);
             });
-//            fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList);
+            // fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList);
             ReflectUtil.setFieldValue(lWhFormProcureGoodsVO, "models", goodsModelVOList);
 
             procureGoodsVOList.add(lWhFormProcureGoodsVO);
@@ -401,9 +267,9 @@
         return ResponseValue.success("鏌ヨ鎴愬姛!", lWhFormProcureExtendVO);
     }
 
-
     @ApiOperation(value = "閲囪喘鍗曟槑缁嗘煡璇�", notes = "閲囪喘鍗曟槑缁嗘煡璇�")
-    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鍗曟槑缁嗘煡璇�", required = true, dataType = "FormProcureQryDto", paramType = "query")})
+    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鍗曟槑缁嗘煡璇�", required = true,
+        dataType = "FormProcureQryDto", paramType = "query")})
     @GetMapping("detail/list")
     public ResponseValue queryFormProcureDetailList() {
         FormProcureQry formProcureQry = CommonUtil.getObjFromReq(FormProcureQry.class);
@@ -422,12 +288,10 @@
 
     @ApiOperation(value = "閲囪喘鍗曞鍑�", notes = "閲囪喘鍗曞鍑�")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "閲囪喘鍗昳d", required = true, dataType = "Long", paramType = "query")
-    })
+        @ApiImplicitParam(name = "id", value = "閲囪喘鍗昳d", required = true, dataType = "Long", paramType = "query")})
     @GetMapping("/list/export")
     public void export(Long id, HttpServletResponse response) throws Exception {
-        TemplateExportParams params = new TemplateExportParams(
-            "import/閲囪喘鍏ュ簱鍗�.xls");
+        TemplateExportParams params = new TemplateExportParams("import/閲囪喘鍏ュ簱鍗�.xls");
         params.setHeadingStartRow(2);
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
@@ -439,8 +303,10 @@
             throw new RuntimeException("鏁版嵁涓虹┖");
         }
 
-        int countNum = exportList.stream().filter(item -> item.getNum() != null).mapToInt(ProcureExcelTemplate::getNum).sum();
-        double totalAmount = exportList.stream().filter(export -> export.getTotalAmount() != null).mapToDouble(ProcureExcelTemplate::getAmount).sum();
+        int countNum =
+            exportList.stream().filter(item -> item.getNum() != null).mapToInt(ProcureExcelTemplate::getNum).sum();
+        double totalAmount = exportList.stream().filter(export -> export.getTotalAmount() != null)
+            .mapToDouble(ProcureExcelTemplate::getAmount).sum();
         Optional<ProcureExcelTemplate> first = exportList.stream().findFirst();
         ProcureExcelTemplate templateExcelExport = first.get();
         String businessFormCode = templateExcelExport.getBusinessFormCode();
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java
index d37dd49..9c6a5da 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java
@@ -1,28 +1,12 @@
 package com.consum.base.controller;
 
-import cn.afterturn.easypoi.excel.ExcelExportUtil;
-import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
-import com.consum.base.BaseController;
-import com.consum.base.core.utils.CommonUtil;
-import com.consum.base.core.utils.MapUtils;
-import com.consum.base.core.utils.MapperUtil;
-import com.consum.base.core.utils.PageUtil;
-import com.consum.base.pojo.LWhFormScrappedParam;
-import com.consum.base.pojo.excel.ScrappedInfoExcelTemplate;
-import com.consum.base.pojo.query.LWhFormScrappedQry;
-import com.consum.base.pojo.response.FromTransferTemplateInfoVO;
-import com.consum.base.pojo.response.LWhFormScrappedExtendVO;
-import com.consum.base.pojo.response.LWhFormScrappedVO;
-import com.consum.base.service.LWhFormScrappedServiceImpl;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormScrapped;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.DateUtils;
-import com.walker.web.ResponseValue;
-import io.swagger.annotations.Api;
-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 java.util.Optional;
+
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.compress.utils.Lists;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
@@ -32,14 +16,28 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
+import com.consum.base.core.utils.PageUtil;
+import com.consum.base.pojo.LWhFormScrappedParam;
+import com.consum.base.pojo.excel.ScrappedInfoExcelTemplate;
+import com.consum.base.pojo.query.LWhFormScrappedQry;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
+import com.consum.base.pojo.response.LWhFormScrappedExtendVO;
+import com.consum.base.pojo.response.LWhFormScrappedVO;
+import com.consum.base.service.LWhFormScrappedService;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LWhFormScrapped;
+import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.infrastructure.utils.DateUtils;
+import com.walker.web.ResponseValue;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 
 /**
  * @Description 鎶ュ簾鍗�
@@ -52,8 +50,7 @@
 public class LWhFormScrappedController extends BaseController {
 
     @Autowired
-    private LWhFormScrappedServiceImpl lWhFormScrappedService;
-
+    private LWhFormScrappedService lWhFormScrappedService;
 
     /**
      * @Description 鏂板鎶ュ簾鍗�
@@ -61,9 +58,7 @@
      * @Date 2023/11/1
      */
     @ApiOperation(value = "鏂板鎶ュ簾鍗�", notes = "鏂板鎶ュ簾鍗�")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "param")
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "param")})
     @PostMapping("/add")
     public ResponseValue add() {
         LWhFormScrappedParam param = CommonUtil.getObjFromReqBody(LWhFormScrappedParam.class);
@@ -81,12 +76,13 @@
     /**
      * @Description 鍒楄〃鏌ヨ
      * @Author 鍗㈠簡闃�
-     * @Date 2023/11/02 1.鏌ヨ鎶ュ簾鍗� 2.鏌ヨ鎶ュ簾鍗曠墿鍝�
+     * @Date 2023/11/02
+     *       <p>
+     *       </>1.鏌ヨ鎶ュ簾鍗� 2.鏌ヨ鎶ュ簾鍗曠墿鍝�
      */
     @ApiOperation(value = "鍒楄〃鏌ヨ", notes = "鍒楄〃鏌ヨ")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")
-    })
+        @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")})
     @GetMapping("/list")
     public ResponseValue queryList() {
         LWhFormScrappedQry param = CommonUtil.getObjFromReq(LWhFormScrappedQry.class);
@@ -105,19 +101,10 @@
             data.forEach(item -> {
                 LWhFormScrappedVO lWhFormScrappedVO = new LWhFormScrappedVO();
                 BeanUtils.copyProperties(item, lWhFormScrappedVO);
-                List<FromTransferTemplateInfoVO> list = Lists.newArrayList();
                 // 鏌ヨ鍨嬪彿鏁伴噺
-                String sql =
-                    "SELECT fsg.id,fsg.BASE_GOODS_TEMPLATE_ID goodsTemplatesId,fsg.GOODS_TEMPLATE_NAME goodsName,sum(counts) count FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID "
-                        + "where fsg.FORM_SCRAPPED_ID =:id group by fsg.BASE_GOODS_TEMPLATE_ID";
-                Map<String, Object> paramMap = new HashMap<>();
-                paramMap.put("id", item.getId());
-                List<Map<String, Object>> procureModelList = lWhFormScrappedService.select(sql, paramMap, new MapperUtil());
-                for (Map<String, Object> map : procureModelList) {
-                    FromTransferTemplateInfoVO fromTransferTemplateInfoVO = MapUtils.convertMapToObj(map, FromTransferTemplateInfoVO.class);
-                    list.add(fromTransferTemplateInfoVO);
-                }
-                lWhFormScrappedVO.setGoodTemplateInfo(list);
+                List<GoodsTemplateCountVO> scrappedCount =
+                    lWhFormScrappedService.getScrappedCountByBusinessId(item.getId());
+                lWhFormScrappedVO.setGoodTemplateInfo(scrappedCount);
                 result.add(lWhFormScrappedVO);
             });
         }
@@ -131,9 +118,7 @@
      * @Date 2023/11/2
      */
     @ApiOperation(value = "鏍规嵁id鏌ヨ璇︽儏", notes = "鏍规嵁id鏌ヨ璇︽儏")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query")
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query")})
     @GetMapping("/detail")
     public ResponseValue getById(Long id) {
         if (id == null) {
@@ -151,8 +136,7 @@
      */
     @ApiOperation(value = "鎶ュ簾鏄庣粏", notes = "鎶ュ簾鏄庣粏")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")
-    })
+        @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")})
     @GetMapping("/list/detailList")
     public ResponseValue queryDetailList() {
         LWhFormScrappedQry param = CommonUtil.getObjFromReq(LWhFormScrappedQry.class);
@@ -169,9 +153,7 @@
     }
 
     @ApiOperation(value = "瀵煎嚭鎶ュ簾鍗�", notes = "瀵煎嚭鎶ュ簾鍗�")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query")
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query")})
     @GetMapping("/list/export")
     public void export(Long id, HttpServletResponse response) throws Exception {
         if (id == null) {
@@ -191,8 +173,10 @@
         String operatorName = scrappedInfoExcelTemplate.getOperatorName();
         String businessFormCode = scrappedInfoExcelTemplate.getBusinessFormCode();
 
-        int countNum = export.stream().filter(item -> item.getNum() != null).mapToInt(ScrappedInfoExcelTemplate::getNum).sum();
-        int totalAmount = export.stream().filter(item -> item.getTotalAmount() != null).mapToInt(ScrappedInfoExcelTemplate::getTotalAmount).sum();
+        int countNum =
+            export.stream().filter(item -> item.getNum() != null).mapToInt(ScrappedInfoExcelTemplate::getNum).sum();
+        int totalAmount = export.stream().filter(item -> item.getTotalAmount() != null)
+            .mapToInt(ScrappedInfoExcelTemplate::getTotalAmount).sum();
 
         Map<String, Object> map = new HashMap<>();
         map.put("code", businessFormCode);
@@ -206,6 +190,4 @@
 
     }
 
-
 }
-
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
index 8659f28..b60f2c7 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
@@ -1,13 +1,28 @@
 package com.consum.base.controller;
 
-import cn.afterturn.easypoi.excel.ExcelExportUtil;
-import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
-import cn.hutool.core.util.ReflectUtil;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.compress.utils.Lists;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+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.IdUtil;
-import com.consum.base.core.utils.MapUtils;
-import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.pojo.GoodsUseRecordVO;
 import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
 import com.consum.base.pojo.RecordUserInfoVO;
@@ -19,14 +34,14 @@
 import com.consum.base.pojo.request.ProcureModelInfoParam;
 import com.consum.base.pojo.request.RecordInfoParam;
 import com.consum.base.pojo.response.FormTransferVO;
-import com.consum.base.pojo.response.FromTransferTemplateInfoVO;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.consum.base.pojo.response.LWHFromTransferExtendVO;
 import com.consum.base.pojo.response.TransferInfoVO;
 import com.consum.base.service.BaseWarehouseService;
 import com.consum.base.service.LWhFormTransferCoreService;
 import com.consum.base.service.LWhFormTransferService;
 import com.consum.base.service.LWhProcureModelService;
-import com.consum.base.service.LWhProcureModelUserRecordServiceImpl;
+import com.consum.base.service.LWhProcureModelUserRecordService;
 import com.consum.base.service.LWhProcureModelUserServiceImpl;
 import com.consum.model.po.BaseWarehouse;
 import com.consum.model.po.FinSysTenantUser;
@@ -38,27 +53,14 @@
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.web.ResponseValue;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import cn.hutool.core.util.ReflectUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.compress.utils.Lists;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-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 璋冩嫧绠$悊
@@ -79,7 +81,7 @@
     @Autowired
     private LWhProcureModelUserServiceImpl lWhProcureModelUserService;
     @Autowired
-    private LWhProcureModelUserRecordServiceImpl lWhProcureModelUserRecordService;
+    private LWhProcureModelUserRecordService lWhProcureModelUserRecordService;
     @Autowired
     private BaseWarehouseService baseWarehouseService;
 
@@ -106,13 +108,14 @@
         long id = this.lWhFormTransferService.add(param, this.getSysInfo());
 
         Integer transferBusinessType = param.getTransferBusinessType();
-        //閮ㄩ棬鍒嗗彂涓氬姟闇�瑕佸鐞�
+        // 閮ㄩ棬鍒嗗彂涓氬姟闇�瑕佸鐞�
         if (transferBusinessType == 1) {
             // 鍏堝嚭搴擄紝鍐嶅叆搴�
             // 鍑哄簱鍓� 璁剧疆鍑哄簱浠撳簱
             FinSysTenantUser sysTenantUser = this.getSysInfo();
             String agencyId = sysTenantUser.getTenantId();
-            List<BaseWarehouse> baseWarehouseList = baseWarehouseService.getByAgencyId(Long.valueOf(agencyId), (short) 1, (short) 1);
+            List<BaseWarehouse> baseWarehouseList =
+                baseWarehouseService.getByAgencyId(Long.valueOf(agencyId), (short)1, (short)1);
             if (CollectionUtils.isEmpty(baseWarehouseList)) {
                 return ResponseValue.error("鏈烘瀯鏃犻粯璁や粨搴擄紒");
             }
@@ -135,17 +138,15 @@
      * @Description 鍒楄〃鏌ヨ(璋冩嫧鏄庣粏)
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
-     * <p>
-     * 1.鏌ヨ璋冩嫧鍗�
-     * <p>
-     * 2.鏌ヨ鐗╁搧鍨嬪彿
+     *       <p>
+     *       1.鏌ヨ璋冩嫧鍗�
+     *       <p>
+     *       2.鏌ヨ鐗╁搧鍨嬪彿
      */
     @ApiOperation(value = "鍗曟嵁鍒楄〃鏌ヨ", notes = "鍗曟嵁鍒楄〃鏌ヨ")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "page", value = "椤电爜", required = true, dataType = "int"),
+    @ApiImplicitParams({@ApiImplicitParam(name = "page", value = "椤电爜", required = true, dataType = "int"),
         @ApiImplicitParam(name = "size", value = "姣忛〉鏉℃暟", required = true, dataType = "int"),
-        @ApiImplicitParam(name = "param", value = "鏉′欢鍙傛暟", required = true, dataType = "TransferQry"),
-    })
+        @ApiImplicitParam(name = "param", value = "鏉′欢鍙傛暟", required = true, dataType = "TransferQry"),})
     @GetMapping("/list")
     public ResponseValue queryFormTransferList() {
         TransferQry param = CommonUtil.getObjFromReq(TransferQry.class);
@@ -166,29 +167,18 @@
                 FormTransferVO formTransferVO = new FormTransferVO();
                 BeanUtils.copyProperties(item, formTransferVO);
 
-                List<FromTransferTemplateInfoVO> templateInfoList = Lists.newArrayList();
-
                 // 鏌ヨ鍨嬪彿鏁伴噺
-                String sql = "SELECT bgt.id,bgm.GOODS_TEMPLATES_ID,GOODS_NAME,sum( counts ) count FROM "
-                    + "l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id "
-                    + "LEFT JOIN base_goods_template bgt ON bgm.GOODS_TEMPLATES_ID = bgt.id "
-                    + "WHERE pm.BUSINESS_ID =:id GROUP BY bgm.GOODS_TEMPLATES_ID";
-                Map<String, Object> paramMap = new HashMap<>();
-                paramMap.put("id", item.getId());
-                List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
-                for (Map<String, Object> map : procureModelList) {
-                    FromTransferTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FromTransferTemplateInfoVO.class);
-                    templateInfoList.add(procureTemplateInfoVO);
-                }
-                formTransferVO.setFromTransferTemplateInfoList(templateInfoList);
+                List<GoodsTemplateCountVO> goodsTemplateCount =
+                    lWhProcureModelService.getGoodsTemplateCountByBusinessId(item.getId());
+                formTransferVO.setFromTransferTemplateInfoList(goodsTemplateCount);
 
                 result.add(formTransferVO);
             });
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-//            fieldDatas.setAccessible(true);
-//            fieldDatas.set(genericPager, result);
+            // fieldDatas.setAccessible(true);
+            // fieldDatas.set(genericPager, result);
             ReflectUtil.setFieldValue(genericPager, fieldDatas, result);
 
         } catch (Exception e) {
@@ -203,9 +193,7 @@
      * @Date 2023/10/30
      */
     @ApiOperation(value = "鏍规嵁id鏌ヨ璇︽儏", notes = "鏍规嵁id鏌ヨ璇︽儏")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),})
     @GetMapping("/detail")
     public ResponseValue getById(Long id) {
         if (id == null) {
@@ -216,9 +204,7 @@
     }
 
     @ApiOperation(value = "璋冩嫧鏄庣粏鍒楄〃", notes = "璋冩嫧鏄庣粏鍒楄〃")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "param", value = "鏉′欢", required = true, dataType = "TransferQry"),
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "鏉′欢", required = true, dataType = "TransferQry"),})
     @GetMapping("/detail/list")
     public ResponseValue queryFormTransferDetailList() {
         TransferQry param = CommonUtil.getObjFromReq(TransferQry.class);
@@ -242,9 +228,7 @@
      * @date 2023/10/31
      */
     @ApiOperation(value = "鎾ら攢", notes = "鎾ら攢")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),})
     @PostMapping("/updStatus")
     public ResponseValue updateStatus(Long id) {
         if (id == null) {
@@ -261,9 +245,7 @@
      * @Date 2023/10/31
      */
     @ApiOperation(value = "璋冩嫧鍏ュ簱", notes = "璋冩嫧鍏ュ簱")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),})
     @PostMapping("/income")
     public ResponseValue income(Long id) {
         lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser());
@@ -276,15 +258,14 @@
      * @Date 2023/10/31
      */
     @ApiOperation(value = "璋冩嫧鍑哄簱", notes = "璋冩嫧鍑哄簱")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),})
     @PostMapping("/output")
     public ResponseValue output(Long id) {
         // 鍑哄簱鍓� 璁剧疆鍑哄簱浠撳簱
         FinSysTenantUser sysTenantUser = this.getSysInfo();
         String agencyId = sysTenantUser.getTenantId();
-        List<BaseWarehouse> baseWarehouseList = baseWarehouseService.getByAgencyId(Long.valueOf(agencyId), (short) 1, (short) 1);
+        List<BaseWarehouse> baseWarehouseList =
+            baseWarehouseService.getByAgencyId(Long.valueOf(agencyId), (short)1, (short)1);
         if (CollectionUtils.isEmpty(baseWarehouseList)) {
             return ResponseValue.error("鏈烘瀯鏃犻粯璁や粨搴擄紒");
         }
@@ -299,12 +280,9 @@
         return ResponseValue.success();
     }
 
-
     @ApiOperation(value = "璋冩嫧鍗曞鍑�", notes = "璋冩嫧鍗曞鍑�")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
-        @ApiImplicitParam(name = "type", value = "瀵煎嚭绫诲瀷 1 鍏ュ簱 2 鍑哄簱", required = true, dataType = "Integer"),
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
+        @ApiImplicitParam(name = "type", value = "瀵煎嚭绫诲瀷 1 鍏ュ簱 2 鍑哄簱", required = true, dataType = "Integer"),})
     @GetMapping("/list/export")
     public void export(Long id, Integer type, HttpServletResponse response) throws Exception {
 
@@ -320,8 +298,10 @@
         params.setHeadingStartRow(2);
         List<TransferExcelTemplate> export = this.lWhFormTransferService.export(id, type);
 
-        int countNum = export.stream().filter(item -> item.getNum() != null).mapToInt(TransferExcelTemplate::getNum).sum();
-        double totalAmount = export.stream().filter(item -> item.getTotalAmount() != null).mapToDouble(TransferExcelTemplate::getAmount).sum();
+        int countNum =
+            export.stream().filter(item -> item.getNum() != null).mapToInt(TransferExcelTemplate::getNum).sum();
+        double totalAmount = export.stream().filter(item -> item.getTotalAmount() != null)
+            .mapToDouble(TransferExcelTemplate::getAmount).sum();
         Optional<TransferExcelTemplate> first = export.stream().findFirst();
         TransferExcelTemplate entity = first.get();
         String businessFormCode = entity.getBusinessFormCode();
@@ -342,7 +322,6 @@
 
     }
 
-
     /**
      * 閮ㄩ棬鐗╁搧鍒嗗彂鍒楄〃鏄庣粏
      *
@@ -350,9 +329,7 @@
      * @return
      */
     @ApiOperation(value = "閮ㄩ棬鐗╁搧鍒嗗彂鍒楄〃鏄庣粏", notes = "閮ㄩ棬鐗╁搧鍒嗗彂鍒楄〃鏄庣粏")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "transferQryDto", value = "璋冩嫧鍗曟煡璇㈡潯浠�", required = true)
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "transferQryDto", value = "璋冩嫧鍗曟煡璇㈡潯浠�", required = true)})
     @GetMapping("/department/list")
     public ResponseValue departmentTransferList() {
         TransferQry param = CommonUtil.getObjFromReq(TransferQry.class);
@@ -364,15 +341,13 @@
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        GenericPager<Map<String, Object>> transferInfoDetailsVoGenericPager = this.lWhFormTransferService.queryTransferInfo(param);
+        GenericPager<Map<String, Object>> transferInfoDetailsVoGenericPager =
+            this.lWhFormTransferService.queryTransferInfo(param);
         return ResponseValue.success(transferInfoDetailsVoGenericPager);
     }
 
-
     @ApiOperation(value = "浣跨敤浜轰慨鏀�", notes = "浣跨敤浜轰慨鏀�")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "procureModelInfoDto", value = "浣跨敤淇℃伅", required = true)
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "procureModelInfoDto", value = "浣跨敤淇℃伅", required = true)})
     @PostMapping("/useInfo/update")
     public ResponseValue infoUpdate() {
 
@@ -438,9 +413,7 @@
      * @return
      */
     @ApiOperation(value = "閮ㄩ棬鐗╁搧浣跨敤浜鸿褰�", notes = "閮ㄩ棬鐗╁搧浣跨敤浜鸿褰�")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "transferOrderId", value = "璋冩嫧鍗昳d", required = true)
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "transferOrderId", value = "璋冩嫧鍗昳d", required = true)})
     @GetMapping("/use/record")
     public ResponseValue useRecord(Long transferOrderId) {
 
@@ -453,14 +426,14 @@
             return ResponseValue.error("鏈煡璇㈠埌浣跨敤璁板綍");
         }
         List<GoodsUseRecordVO> goodsUseRecordList = Lists.newArrayList();
-        //鍒嗙粍
-        Map<Long, Map<Long, List<UseRecordDTO>>> collect = useRecordDTOList.stream()
-            .collect(Collectors.groupingBy(UseRecordDTO::getId, Collectors.groupingBy(UseRecordDTO::getBaseGoodsModelsId)));
-        //寮�濮嬪惊鐜痗ollect
+        // 鍒嗙粍
+        Map<Long, Map<Long, List<UseRecordDTO>>> collect = useRecordDTOList.stream().collect(
+            Collectors.groupingBy(UseRecordDTO::getId, Collectors.groupingBy(UseRecordDTO::getBaseGoodsModelsId)));
+        // 寮�濮嬪惊鐜痗ollect
         for (Map.Entry<Long, Map<Long, List<UseRecordDTO>>> entry : collect.entrySet()) {
             Long id = entry.getKey();
             Map<Long, List<UseRecordDTO>> value = entry.getValue();
-            //寮�濮嬪惊鐜痸alue
+            // 寮�濮嬪惊鐜痸alue
             List<UseRecordSkuVO> useRecordSkuList = Lists.newArrayList();
             for (Map.Entry<Long, List<UseRecordDTO>> item : value.entrySet()) {
                 List<UseRecordDTO> list = item.getValue();
@@ -490,19 +463,17 @@
                 }
             }
         }
-        //鍒嗙粍涔嬪悗閲嶆柊鎺掑簭
-        List<GoodsUseRecordVO> result = goodsUseRecordList.stream()
-            .sorted(Comparator.comparing(GoodsUseRecordVO::getUpdateTime
-                , Comparator.nullsFirst(Long::compareTo)).reversed())
+        // 鍒嗙粍涔嬪悗閲嶆柊鎺掑簭
+        List<GoodsUseRecordVO> result = goodsUseRecordList
+            .stream().sorted(Comparator
+                .comparing(GoodsUseRecordVO::getUpdateTime, Comparator.nullsFirst(Long::compareTo)).reversed())
             .collect(Collectors.toList());
         return ResponseValue.success(result);
     }
 
-
     @ApiOperation(value = "鏌ヨ閮ㄩ棬涓嬬殑鍒嗗彂鍗�", notes = "鏌ヨ閮ㄩ棬涓嬬殑鍒嗗彂鍗�")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "agencyId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")
-    })
+        @ApiImplicitParam(name = "agencyId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")})
     @GetMapping("/query/transfList")
     public ResponseValue queryDepartmentTransferOrderList() {
 
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhProcureModelController.java b/consum-base/src/main/java/com/consum/base/controller/LWhProcureModelController.java
index d15bf4c..58d2d9e 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhProcureModelController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhProcureModelController.java
@@ -1,5 +1,14 @@
 package com.consum.base.controller;
 
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+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.core.utils.CommonUtil;
@@ -7,14 +16,6 @@
 import com.consum.base.service.LWhProcureModelService;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.web.ResponseValue;
-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 java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/pc/warehouse/procureModel")
diff --git a/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java b/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java
index d893072..c909105 100644
--- a/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java
+++ b/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java
@@ -1,15 +1,15 @@
 package com.consum.base.core;
 
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.consum.base.core.utils.SqlParameter;
 import com.consum.model.po.BaseCodeIndexing;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.NumberGenerator;
 import com.walker.jdbc.service.BaseServiceImpl;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 缂栫爜缁熶竴鐢熸垚鏈嶅姟
@@ -18,38 +18,29 @@
 @Transactional(propagation = Propagation.NOT_SUPPORTED)
 public class CodeGeneratorService extends BaseServiceImpl {
 
-
-    public static void main(String[] args) {
-        String prefix = "RK";
-        int[] days = DateUtils.getCurrentYearMonthDay();
-        prefix +=  StringUtils.removeStart(Integer.valueOf(days[0]).toString(),"20");
-        prefix += days[1] < 9 ? "0" + Integer.valueOf(days[1]).toString() : days[1];
-        prefix += days[2] < 9 ? "0" + Integer.valueOf(days[2]).toString() : days[2];
-        System.out.println(prefix);
-    }
-
-    private String createCodeByPrefix(String prefix,int length){
+    private String createCodeByPrefix(String prefix, int length) {
         String CODE_PREFIX = prefix;
         String sql = "SELECT * from BASE_CODE_INDEXING where CODE_PREFIX=:CODE_PREFIX";
 
-        BaseCodeIndexing  codeIndexing = get(sql,new SqlParameter().put("CODE_PREFIX",CODE_PREFIX),new BaseCodeIndexing());
-        if (codeIndexing == null){
+        BaseCodeIndexing codeIndexing =
+            get(sql, new SqlParameter().put("CODE_PREFIX", CODE_PREFIX), new BaseCodeIndexing());
+        if (codeIndexing == null) {
             codeIndexing = new BaseCodeIndexing();
             codeIndexing.setId(NumberGenerator.getLongSequenceNumber());
             codeIndexing.setCodePrefix(CODE_PREFIX);
             codeIndexing.setCodeIndex(1);
             insert(codeIndexing);
         } else {
-            codeIndexing.setCodeIndex(codeIndexing.getCodeIndex()+1);
+            codeIndexing.setCodeIndex(codeIndexing.getCodeIndex() + 1);
             update(codeIndexing);
         }
 
         String index = codeIndexing.getCodeIndex().toString();
         String intPrefix = "0";
-        for (int i=1;i<(length-index.length());i++){
+        for (int i = 1; i < (length - index.length()); i++) {
             intPrefix += "0";
         }
-        return CODE_PREFIX+intPrefix+index;
+        return CODE_PREFIX + intPrefix + index;
     }
 
     /**
@@ -58,7 +49,7 @@
      * @return 浠撳簱缂栫爜瑙勫垯涓猴細WH+鍥涗綅鏁板瓧杩炲彿锛�0001锛�
      */
     public synchronized String createWarehouseCode() {
-      /*
+        /*
         1.SELECT CODE_INDEX from BASE_CODE_INDEXING where CODE_PREFIX=:CODE_PREFIX
           CODE_PREFIX鏄�"WH"
           濡傛灉鑾峰彇涓嶅埌锛屽氨浠�1寮�濮嬶紝浣嗛渶瑕佽ˉ鍏ㄥ墠闈㈢殑"0"杩斿洖 "0001"锛涘悓鏃堕渶瑕佹彃鍏ユ暟鎹簱
@@ -66,7 +57,7 @@
          2.濡傛灉鑳藉鑾峰彇鍒帮紝鍒欏皢CODE_INDEX=CODE_INDEX+1鍚庢洿鏂板埌鏁版嵁搴擄紝琛ュ叏鍓嶉潰鐨�"0"杩斿洖 "0001"
          */
         String CODE_PREFIX = CodeGeneratorEnum.Warehouse.getValue();
-        return createCodeByPrefix(CODE_PREFIX,4);
+        return createCodeByPrefix(CODE_PREFIX, 4);
     }
 
     /**
@@ -84,7 +75,7 @@
          2.濡傛灉鑳藉鑾峰彇鍒帮紝鍒欏皢CODE_INDEX=CODE_INDEX+1鍚庢洿鏂板埌鏁版嵁搴擄紝琛ュ叏鍓嶉潰鐨�"0"杩斿洖 "000001"
          */
         String prefix = classify;
-        return createCodeByPrefix(prefix,6);
+        return createCodeByPrefix(prefix, 6);
     }
 
     /**
@@ -97,11 +88,10 @@
 
         String prefix = codeGeneratorEnum.getValue();
         int[] days = DateUtils.getCurrentYearMonthDay();
-        prefix +=  StringUtils.removeStart(Integer.valueOf(days[0]).toString(),"20");
+        prefix += StringUtils.removeStart(Integer.valueOf(days[0]).toString(), "20");
         prefix += days[1] < 9 ? "0" + Integer.valueOf(days[1]).toString() : days[1];
         prefix += days[2] < 9 ? "0" + Integer.valueOf(days[2]).toString() : days[2];
-        return createCodeByPrefix(prefix,4);
+        return createCodeByPrefix(prefix, 4);
     }
-
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
index 2316f69..c01de5a 100644
--- a/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/core/DepFormScrappedCoreServiceImpl.java
@@ -1,27 +1,34 @@
 package com.consum.base.core;
 
-import cn.hutool.core.convert.Convert;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.LockManage;
-import com.consum.base.service.*;
+import com.consum.base.service.GoodsBaseServiceImpl;
+import com.consum.base.service.LWarehouseFlowService;
+import com.consum.base.service.LWhGoodsRecordDetailsService;
+import com.consum.base.service.LWhGoodsRecordService;
+import com.consum.base.service.LWhGoodsService;
 import com.consum.model.po.DepFormScrapped;
 import com.consum.model.po.LWarehouseFlow;
 import com.consum.model.po.LWhGoodsRecord;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.web.ResponseValue;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+import cn.hutool.core.convert.Convert;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @ClassName DepFormScrappedCoreServiceImpl
@@ -41,7 +48,7 @@
     @Resource
     private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
     @Resource
-    private LWhGoodsRecordService lWhGoodsRecordService;
+    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
     @Resource
     private LWarehouseFlowService lWarehouseFlowService;
 
@@ -178,7 +185,7 @@
             return null;
         }
         // 鎵归噺鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撱�怢_WH_GOODS_RECORD銆�
-        lWhGoodsRecordService.insertBatch(lWhGoodsRecordList);
+        lWhGoodsRecordServiceImpl.insertBatch(lWhGoodsRecordList);
 
         // 鏇存柊鎶ュ簾鍗�
         depFormScrapped = new DepFormScrapped(lWhFormScrappedId);
diff --git a/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
index 02f9f1f..d637230 100644
--- a/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/core/DepUsingFormBackCoreServiceImpl.java
@@ -1,26 +1,36 @@
 package com.consum.base.core;
 
-import cn.hutool.core.convert.Convert;
-import com.consum.base.core.service.LWhWarningCoreServiceImpl;
-import com.consum.base.core.utils.IdUtil;
-import com.consum.base.core.utils.LockManage;
-import com.consum.base.service.*;
-import com.consum.model.po.*;
-import com.iplatform.model.po.S_user_core;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.web.ResponseValue;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-
-import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import com.consum.base.core.service.LWhWarningCoreServiceImpl;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.LockManage;
+import com.consum.base.service.GoodsBaseServiceImpl;
+import com.consum.base.service.LWarehouseFlowService;
+import com.consum.base.service.LWhGoodsRecordDetailsService;
+import com.consum.base.service.LWhGoodsRecordService;
+import com.consum.base.service.LWhGoodsService;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.LWarehouseFlow;
+import com.consum.model.po.LWhGoodsRecord;
+import com.consum.model.po.UsingFormBack;
+import com.iplatform.model.po.S_user_core;
+import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.web.ResponseValue;
+
+import cn.hutool.core.convert.Convert;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @ClassName DepFormScrappedCoreServiceImpl
@@ -40,7 +50,7 @@
     @Resource
     private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
     @Resource
-    private LWhGoodsRecordService lWhGoodsRecordService;
+    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
     @Resource
     private LWarehouseFlowService lWarehouseFlowService;
     @Resource
@@ -181,7 +191,7 @@
             return null;
         }
         // 鎵归噺鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撱�怢_WH_GOODS_RECORD銆�
-        lWhGoodsRecordService.insertBatch(lWhGoodsRecordList);
+        lWhGoodsRecordServiceImpl.insertBatch(lWhGoodsRecordList);
 
         // 鏇存柊鎶ュ簾鍗�
         depFormScrapped = new UsingFormBack(lWhFormBackId);
@@ -331,7 +341,7 @@
             return null;
         }
         // 鎵归噺鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撱�怢_WH_GOODS_RECORD銆�
-        lWhGoodsRecordService.insertBatch(flowRecordArrayList);
+        lWhGoodsRecordServiceImpl.insertBatch(flowRecordArrayList);
 
         return null;
     }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/BaseGoodsTemplateInfo.java b/consum-base/src/main/java/com/consum/base/pojo/response/BaseGoodsTemplateInfo.java
index 104da19..653a00d 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/response/BaseGoodsTemplateInfo.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/BaseGoodsTemplateInfo.java
@@ -1,14 +1,12 @@
 package com.consum.base.pojo.response;
 
-import lombok.Data;
-
 /**
  * @author asus
  * @version 1.0
  * @description: 鐗╁搧淇℃伅
  * @date 2023/12/1 17:16
  */
-@Data
+
 public class BaseGoodsTemplateInfo {
 
     private String baseGoodsTemplateName;
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FormOutputTemplateInfoVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FormOutputTemplateInfoVO.java
deleted file mode 100644
index ea5dafe..0000000
--- a/consum-base/src/main/java/com/consum/base/pojo/response/FormOutputTemplateInfoVO.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.consum.base.pojo.response;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-
-/**
- * @author asus
- * @version 1.0
- * @description: TODO
- * @date 2023/11/10 11:37
- */
-@ApiModel
-@Data
-public class FormOutputTemplateInfoVO {
-
-    private Long id;
-    private Long goodsTemplatesId;
-    private String goodsName;
-    private Object count;
-
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FormOutputVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FormOutputVO.java
index 47cc27f..cfb788a 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/response/FormOutputVO.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FormOutputVO.java
@@ -42,7 +42,7 @@
     private String agencyName;
 
 
-    private List<FormOutputTemplateInfoVO> formOutputTemplateInfoList;
+    private List<GoodsTemplateCountVO> formOutputTemplateInfoList;
 
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java
index b9c504e..3b6d58b 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java
@@ -1,7 +1,8 @@
 package com.consum.base.pojo.response;
 
-import io.swagger.annotations.ApiModel;
 import java.util.List;
+
+import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
@@ -17,56 +18,39 @@
     // 涓婚敭
     private Long id;
 
-
     // 灞炴�у垪琛�
     private String businessFormCode;
 
-
     private Long warehouseId;
-
 
     private String warehouseName;
 
-
     private Long buyerId;
-
 
     private String buyerName;
 
-
     private Long procureTime;
-
 
     private String procureDoc;
 
-
     private Integer buyType;
-
 
     private Integer states;
 
-
     private Long agencyId;
-
 
     private String agencyName;
 
-
     private Long incomeId;
-
 
     private String incomeName;
 
-
     private Long incomeTime;
-
 
     private String beiz;
 
-
     private Long lWarehouseFlowId;
 
-    private List<FromProcureTemplateInfoVO> fromProcureTemplateInfoList;
-
+    private List<GoodsTemplateCountVO> fromProcureTemplateInfoList;
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferVO.java
index 3fd0827..346b56c 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferVO.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferVO.java
@@ -1,8 +1,8 @@
 package com.consum.base.pojo.response;
 
-import com.consum.model.po.LWhFormTransfer;
-import io.swagger.annotations.ApiModel;
 import java.util.List;
+
+import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
@@ -13,11 +13,71 @@
  */
 @Data
 @ApiModel(value = "璋冩嫧鍗曞垪琛ㄤ俊鎭�")
-public class FormTransferVO extends LWhFormTransfer {
+public class FormTransferVO {
+
+    // 涓婚敭
+    private Long id;
+
+    // 灞炴�у垪琛�
+    private Long inWarehouseFormId;
+
+    private Long inWarehouseFlowId;
+
+    private Long outWarehouseFlowId;
+
+    private Long outWarehouseFormId;
+
+    private Integer businessType;
+
+    private String businessFormCode;
+
+    private Integer inWarehouseType;
+
+    private Long inWarehouseId;
+
+    private String inWarehouseName;
+
+    private Integer outWarehouseType;
+
+    private Long outWarehouseId;
+
+    private String outWarehouseName;
+
+    private Long inAgencyId;
+
+    private String inAgencyName;
+
+    private Long outAgencyId;
+
+    private String outAgencyName;
+
+    private Long operatorId;
+
+    private String operatorName;
+
+    private Long createTime;
+
+    private Integer states;
+
+    private Long inOperatorId;
+
+    private String inOperatorName;
+
+    private Long inTime;
+
+    private Long outOperatorId;
+
+    private String outOperatorName;
+
+    private Long outputTime;
+
+    private String procureDoc;
+
+    private Long tel;
 
     /**
      * 瑙勬牸鍨嬪彿
      */
-    private List<FromTransferTemplateInfoVO> fromTransferTemplateInfoList;
+    List<GoodsTemplateCountVO> fromTransferTemplateInfoList;
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FromTransferTemplateInfoVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FromTransferTemplateInfoVO.java
deleted file mode 100644
index a372fcf..0000000
--- a/consum-base/src/main/java/com/consum/base/pojo/response/FromTransferTemplateInfoVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.consum.base.pojo.response;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-
-/**
- * @author asus
- * @version 1.0
- * @description: 璋冩嫧鐗╁搧妯℃澘淇℃伅
- * @modified By
- * @date 2023/11/15 17:35
- */
-@Data
-@ApiModel(value = "璋冩嫧鐗╁搧妯℃澘淇℃伅")
-public class FromTransferTemplateInfoVO {
-
-    private Long id;
-    private Long goodsTemplatesId;
-    private String goodsName;
-    private Object count;
-}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateCountVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateCountVO.java
new file mode 100644
index 0000000..432029c
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateCountVO.java
@@ -0,0 +1,32 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 鐗╁搧缁熻淇℃伅
+ * @date 2023/11/10 11:37
+ */
+@ApiModel
+@Data
+public class GoodsTemplateCountVO {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+    @ApiModelProperty(value = "鐗╁搧妯℃澘鍚嶇О")
+    private String goodsName;
+    @ApiModelProperty(value = "鐗╁搧妯℃澘鍚嶇О")
+    private String goodsTemplateName;
+    @ApiModelProperty(value = "鐗╁搧妯℃澘鍚嶇О")
+    private String baseGoodsTemplateName;
+    @ApiModelProperty(value = "鍟嗗搧妯℃澘id")
+    private Long baseGoodsTemplateId;
+    @ApiModelProperty(value = "鐗╁搧鍐呭叏閮ㄥ瀷鍙风粺璁℃暟閲�")
+    private Integer count;
+    @ApiModelProperty(value = "鍗曚綅")
+    private String unit;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormScrappedVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormScrappedVO.java
index 4966ac3..904ccfe 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormScrappedVO.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormScrappedVO.java
@@ -1,7 +1,8 @@
 package com.consum.base.pojo.response;
 
-import io.swagger.annotations.ApiModel;
 import java.util.List;
+
+import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
@@ -33,12 +34,10 @@
 
     private Long dealTime;
 
-
     private Integer states;
-
 
     /**
      * 瑙勬牸鍨嬪彿
      */
-    private List<FromTransferTemplateInfoVO> goodTemplateInfo;
+    private List<GoodsTemplateCountVO> goodTemplateInfo;
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/UsingFormBackVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/UsingFormBackVO.java
index 8e6e03e..c65f015 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/response/UsingFormBackVO.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/UsingFormBackVO.java
@@ -20,5 +20,5 @@
     private String businessFormCode;
     private String operatorName;
 
-    private List<BaseGoodsTemplateInfo> goodsTemplateInfoList;
+    private  List<GoodsTemplateCountVO> goodsTemplateInfoList;
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/BaseWarehouseManagerService1.java b/consum-base/src/main/java/com/consum/base/service/BaseWarehouseManagerService1.java
deleted file mode 100644
index 9795436..0000000
--- a/consum-base/src/main/java/com/consum/base/service/BaseWarehouseManagerService1.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.consum.base.service;
-
-import com.walker.jdbc.service.BaseService;
-
-public interface BaseWarehouseManagerService1 extends BaseService {
-
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
index e9d6325..74df6dc 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
@@ -1,19 +1,11 @@
 package com.consum.base.service;
 
-import com.consum.base.core.utils.IdUtil;
-import com.consum.base.core.utils.LockManage;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.LWarehouseFlow;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhGoodsRecord;
-import com.consum.model.po.LWhProcureModel;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.NumberGenerator;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+
 import javax.annotation.PostConstruct;
-import lombok.extern.slf4j.Slf4j;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -23,6 +15,17 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
+
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.LockManage;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.LWarehouseFlow;
+import com.consum.model.po.LWhFormProcure;
+import com.consum.model.po.LWhGoodsRecord;
+import com.consum.model.po.LWhProcureModel;
+import com.walker.infrastructure.utils.CollectionUtils;
+
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @ClassName LWarehouseFlowService
@@ -39,7 +42,7 @@
     private SimpleJdbcCall simpleJdbcCall;
     private LWarehouseFlowService lWarehouseFlowService;
     private LWhGoodsService lWhGoodsService;
-    private LWhGoodsRecordService lWhGoodsRecordService;
+    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
     private BaseGoodsTemplateService baseGoodsTemplateService;
 
     @Value("${spring.datasource.dataBaseName}")
@@ -52,12 +55,12 @@
 
     @Autowired
     public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, LWhGoodsService lWhGoodsService,
-                                     BaseGoodsTemplateService baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordService) {
+                                     BaseGoodsTemplateService baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordServiceImpl) {
         this.jdbcTemplate = jdbcTemplate;
         this.lWarehouseFlowService = lWarehouseFlowService;
         this.baseGoodsTemplateService = baseGoodsTemplateService;
         this.lWhGoodsService = lWhGoodsService;
-        this.lWhGoodsRecordService = lWhGoodsRecordService;
+        this.lWhGoodsRecordServiceImpl = lWhGoodsRecordServiceImpl;
     }
 
     /**
@@ -157,7 +160,7 @@
                 ;
                 whGoodsRecord.setTotalPrice(totalPrice);
             }
-            lWhGoodsRecordService.insert(whGoodsRecord);
+            lWhGoodsRecordServiceImpl.insert(whGoodsRecord);
         });
 
         return 1;
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 718a4fb..479aae5 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
@@ -1,5 +1,18 @@
 package com.consum.base.service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
+
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.WhBusinessEnum;
@@ -14,18 +27,8 @@
 import com.consum.model.po.LWhProcureModel;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.NumberGenerator;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
 
 /**
  * @ClassName LWhFormInventoryCoreService
@@ -41,9 +44,9 @@
     private LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods;
     private LWhFormOutputCoreService lWhFormOutputCoreService;
     private CodeGeneratorService codeGeneratorService;
-    private LWhFormProcureService lWhFormProcureService;
+    private LWhFormProcureService lWhFormProcureServiceImpl;
     private BaseWarehouseService baseWarehouseService;
-    private LWhFormProcureGoodsService lWhFormProcureGoodsService;
+    private LWhFormProcureGoodsService lWhFormProcureGoodsServiceImpl;
     private LWhProcureModelService lWhProcureModelService;
     private BaseGoodsTemplateService baseGoodsTemplateService;
     private LWhGoodsService lWhGoodsService;
@@ -55,9 +58,9 @@
     public LWhFormInventoryCoreService(LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods,
                                        LWhFormOutputCoreService lWhFormOutputCoreService,
                                        CodeGeneratorService codeGeneratorService,
-                                       LWhFormProcureService lWhFormProcureService,
+                                       LWhFormProcureService lWhFormProcureServiceImpl,
                                        BaseWarehouseService baseWarehouseService,
-                                       LWhFormProcureGoodsService lWhFormProcureGoodsService,
+                                       LWhFormProcureGoodsService lWhFormProcureGoodsServiceImpl,
                                        LWhProcureModelService lWhProcureModelService,
                                        BaseGoodsTemplateService baseGoodsTemplateService,
                                        LWhGoodsService lWhGoodsService,
@@ -69,9 +72,9 @@
         this.lWhFormInventoryGoods = lWhFormInventoryGoods;
         this.lWhFormOutputCoreService = lWhFormOutputCoreService;
         this.codeGeneratorService = codeGeneratorService;
-        this.lWhFormProcureService = lWhFormProcureService;
+        this.lWhFormProcureServiceImpl = lWhFormProcureServiceImpl;
         this.baseWarehouseService = baseWarehouseService;
-        this.lWhFormProcureGoodsService = lWhFormProcureGoodsService;
+        this.lWhFormProcureGoodsServiceImpl = lWhFormProcureGoodsServiceImpl;
         this.lWhProcureModelService = lWhProcureModelService;
         this.baseGoodsTemplateService = baseGoodsTemplateService;
         this.lWhGoodsService = lWhGoodsService;
@@ -209,7 +212,7 @@
         lWhFormProcure.setStates(1);
         lWhFormProcure.setAgencyId(baseWarehouse.getAgencyId());
         lWhFormProcure.setAgencyName(baseWarehouse.getAgencyName());
-        int result = lWhFormProcureService.insert(lWhFormProcure);
+        int result = lWhFormProcureServiceImpl.insert(lWhFormProcure);
         if (result == 0) {
             return null;
         }
@@ -253,7 +256,7 @@
             whProcureModeLlist.add(model);
             procureGoodList.add(procureGood);
         }
-        lWhFormProcureGoodsService.insertBatch(procureGoodList);
+        lWhFormProcureGoodsServiceImpl.insertBatch(procureGoodList);
         lWhProcureModelService.insertBatch(whProcureModeLlist);
 
         HashMap<String, Object> rtnMap = new HashMap<>();
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
index cca17c4..0e49726 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
@@ -1,6 +1,15 @@
 package com.consum.base.service;
 
-import cn.hutool.core.convert.Convert;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.WhBusinessEnum;
@@ -16,15 +25,9 @@
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.NumberGenerator;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+
+import cn.hutool.core.convert.Convert;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 /**
  * @ClassName WhFormOutputCoreService
@@ -45,7 +48,7 @@
     private LWhWarningCoreServiceImpl lWhWarningCoreService;
     private LWarehouseFlowService lWarehouseFlowService;
     private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
-    private LWhGoodsRecordService lWhGoodsRecordService;
+    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
 
     @Autowired
     public LWhFormOutputCoreService(BaseGoodsTemplateService baseGoodsTemplateService,
@@ -55,7 +58,7 @@
                                     LWhFormOutputService lWhFormOutputService,
                                     LWarehouseFlowService lWarehouseFlowService,
                                     LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
-                                    LWhGoodsRecordService lWhGoodsRecordService,
+                                    LWhGoodsRecordService lWhGoodsRecordServiceImpl,
                                     LWhWarningCoreServiceImpl lWhWarningCoreService) {
         this.baseGoodsTemplateService = baseGoodsTemplateService;
         this.lWhGoodsService = lWhGoodsService;
@@ -64,7 +67,7 @@
         this.lWhFormOutputService = lWhFormOutputService;
         this.lWarehouseFlowService = lWarehouseFlowService;
         this.lWhGoodsRecordDetailsService = lWhGoodsRecordDetailsService;
-        this.lWhGoodsRecordService = lWhGoodsRecordService;
+        this.lWhGoodsRecordServiceImpl = lWhGoodsRecordServiceImpl;
         this.lWhWarningCoreService = lWhWarningCoreService;
     }
 
@@ -287,7 +290,7 @@
             long totalAmount = lWhGoodsService.queryGoodsPriceById(outGoodsId);
             LWhProcureModel lWhProcureModel = new LWhProcureModel(itemModelInfo.getId());
             whGoodsRecord.setTotalPrice(totalAmount);
-            lWhGoodsRecordService.insert(whGoodsRecord);
+            lWhGoodsRecordServiceImpl.insert(whGoodsRecord);
             lWhProcureModel.setTotalAmount(totalAmount);
             lWhProcureModelService.update(lWhProcureModel);
         });
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
index 8978da5..40b28e2 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
@@ -1,5 +1,15 @@
 package com.consum.base.service;
 
+import java.util.ArrayList;
+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.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.WhBusinessEnum;
@@ -23,15 +33,8 @@
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import java.util.ArrayList;
-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.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 /**
  * @Description 鍑哄簱鍗�
@@ -57,22 +60,22 @@
 
     private static String QUERY_FORM_OUTPUT_LIST = "SELECT * FROM l_wh_form_output WHERE 1 = 1";
 
-
     /**
      * @Description 鏂板鍑哄簱鍗�
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/27
      */
     public int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
-        //1.鏂板鍑哄簱鍗曡褰�
+        // 1.鏂板鍑哄簱鍗曡褰�
         LWhFormOutput lWhFormOutput = new LWhFormOutput();
-        //鍑哄叆搴搃d
+        // 鍑哄叆搴搃d
         long lWhFormOutputId = IdUtil.generateId();
         lWhFormOutput.setId(lWhFormOutputId);
-        lWhFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
+        lWhFormOutput
+            .setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
         Long warehouseId = param.getWarehouseId();
         lWhFormOutput.setWarehouseId(warehouseId);
-        //鏍规嵁浠撳簱id鏌ヨ浠撳簱
+        // 鏍规嵁浠撳簱id鏌ヨ浠撳簱
         BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
         if (warehouse == null) {
             log.error("浠撳簱id涓嶅瓨鍦�");
@@ -93,7 +96,7 @@
             log.error("鏂板鍑哄簱鍗曡褰�");
             return 0;
         }
-        //2.鏂板鐗╁搧鍨嬪彿璁板綍
+        // 2.鏂板鐗╁搧鍨嬪彿璁板綍
         List<LWFormsOutputGoodsInfoParam> goodsList = param.getGoods();
         List<LWhProcureModel> modelList = new ArrayList<>();
         for (LWFormsOutputGoodsInfoParam goods : goodsList) {
@@ -104,14 +107,16 @@
                 lWhProcureModel.setBusinessType(3);
                 lWhProcureModel.setBusinessId(lWhFormOutputId);
                 lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
-                //鏍规嵁鍨嬪彿id鏌ヨ鍨嬪彿
-                BaseGoodsModels baseGoodsModels = this.baseGoodsModelsService.get(new BaseGoodsModels(model.getBaseGoodsModelsId()));
+                // 鏍规嵁鍨嬪彿id鏌ヨ鍨嬪彿
+                BaseGoodsModels baseGoodsModels =
+                    this.baseGoodsModelsService.get(new BaseGoodsModels(model.getBaseGoodsModelsId()));
                 if (baseGoodsModels != null) {
                     lWhProcureModel.setBaseGoodsModelsName(baseGoodsModels.getModelName());
                 }
                 lWhProcureModel.setCounts(model.getCounts());
-                //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), 1, null);
+                // 鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
+                int goodsNum =
+                    this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), 1, null);
                 lWhProcureModel.setWorehouseCount(goodsNum);
                 modelList.add(lWhProcureModel);
             }
@@ -123,8 +128,9 @@
             return 0;
         }
 
-        //3.鏍规嵁鍑哄簱鍗曞嚭搴�
-        Long lWarehouseFlowId = this.lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, WhBusinessEnum.CHUKU, currentUser, param.getDealTime(), null);
+        // 3.鏍规嵁鍑哄簱鍗曞嚭搴�
+        Long lWarehouseFlowId = this.lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, WhBusinessEnum.CHUKU,
+            currentUser, param.getDealTime(), null);
         if (lWarehouseFlowId == null) {
             log.error("鏍规嵁鍑哄簱鍗曞嚭搴撳け璐�");
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -142,33 +148,34 @@
     public GenericPager queryFormOutputList(LWhFormOutputQry param) {
         HashMap<String, Object> paramts = new HashMap<>();
         StringBuilder sql = new StringBuilder(QUERY_FORM_OUTPUT_LIST);
-        //鍑哄簱鍗曞彿
+        // 鍑哄簱鍗曞彿
         if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
             sql.append(" and BUSINESS_FORM_CODE = :businessFormCode ");
             paramts.put("businessFormCode", param.getBusinessFormCode());
         }
-        //鐗╁搧鍚嶇О
+        // 鐗╁搧鍚嶇О
         if (!StringUtils.isEmpty(param.getGoodsName())) {
             sql.append(
                 " AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=3 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
-            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsName() + StringUtils.CHAR_PERCENT);
+            paramts.put("goodsTemplateName",
+                StringUtils.CHAR_PERCENT + param.getGoodsName() + StringUtils.CHAR_PERCENT);
         }
-        //鏈烘瀯
+        // 鏈烘瀯
         if (param.getAgencyId() != null) {
             sql.append(" and AGENCY_ID like :agencyId ");
             paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
         }
-        //鍒涘缓浜�
+        // 鍒涘缓浜�
         if (!StringUtils.isEmpty(param.getCreateName())) {
             sql.append(" and operator_name =:operator_name ");
             paramts.put("operator_name", param.getCreateName());
         }
-        //鐘舵��
+        // 鐘舵��
         if (param.getStates() != null) {
             sql.append(" and states =:states ");
             paramts.put("states", param.getStates());
         }
-        //鍑哄簱鏃堕棿
+        // 鍑哄簱鏃堕棿
         if (param.getStartTime() != null) {
             sql.append(" and DEAL_TIME >=:outputTimeStart ");
             paramts.put("outputTimeStart", param.getStartTime() * 1000000);
@@ -185,69 +192,62 @@
 
     public GenericPager<Map<String, Object>> queryFormOutputDetailList(LWhFormOutputQry param) {
         HashMap<String, Object> paramts = new HashMap<>();
-        StringBuilder sql = new StringBuilder("SELECT pm.id,fp.BUSINESS_FORM_CODE,fpg.GOODS_TEMPLATE_NAME,pm.PRICE,pm.COUNTS, "
-            + "( pm.PRICE * pm.COUNTS ) amount,fp.AGENCY_NAME,fp.BUYER_NAME,fp.PROCURE_TIME,pm.BUSINESS_ID,pm.BASE_GOODS_MODELS_NAME FROM l_wh_procure_model pm "
-            + "LEFT JOIN l_wh_form_procure fp ON pm.BUSINESS_ID = fp.id "
-            + "LEFT JOIN l_wh_form_procure_goods fpg ON fp.id = fpg.WH_FORM_PROCURE_ID WHERE pm.BUSINESS_TYPE = 1 ");
-        //鍏ュ簱鍗曞彿
+        StringBuilder sql =
+            new StringBuilder("SELECT pm.id,fp.BUSINESS_FORM_CODE,fpg.GOODS_TEMPLATE_NAME,pm.PRICE,pm.COUNTS, "
+                + "( pm.PRICE * pm.COUNTS ) amount,fp.AGENCY_NAME,fp.BUYER_NAME,fp.PROCURE_TIME,pm.BUSINESS_ID,pm.BASE_GOODS_MODELS_NAME FROM l_wh_procure_model pm "
+                + "LEFT JOIN l_wh_form_procure fp ON pm.BUSINESS_ID = fp.id "
+                + "LEFT JOIN l_wh_form_procure_goods fpg ON fp.id = fpg.WH_FORM_PROCURE_ID WHERE pm.BUSINESS_TYPE = 1 ");
+        // 鍏ュ簱鍗曞彿
         if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
             sql.append("and BUSINESS_FORM_CODE = :businessFormCode ");
             paramts.put("businessFormCode", param.getBusinessFormCode());
         }
-        //鐗╁搧鍚嶇О
+        // 鐗╁搧鍚嶇О
         if (!StringUtils.isEmpty(param.getGoodsName())) {
             sql.append("and fpg.GOODS_TEMPLATE_NAME like :goodsTemplateName ");
-            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsName() + StringUtils.CHAR_PERCENT);
+            paramts.put("goodsTemplateName",
+                StringUtils.CHAR_PERCENT + param.getGoodsName() + StringUtils.CHAR_PERCENT);
         }
         if (param.getAgencyId() != null) {
             sql.append("and AGENCY_ID like :agencyId ");
             paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
         }
-        //鍒涘缓浜�
+        // 鍒涘缓浜�
         if (!StringUtils.isEmpty(param.getCreateName())) {
             sql.append("and buyer_Name =:buyerName ");
             paramts.put("buyerName", param.getCreateName());
         }
-        //鍏ュ簱寮�濮嬫椂闂�
+        // 鍏ュ簱寮�濮嬫椂闂�
         if (param.getStartTime() != null) {
             sql.append("and INCOME_TIME >=:incomeTimeStart ");
             paramts.put("incomeTimeStart", param.getStartTime() * 1000000);
         }
-        //鍏ュ簱缁撴潫鏃堕棿
+        // 鍏ュ簱缁撴潫鏃堕棿
         if (param.getEndTime() != null) {
             sql.append("and INCOME_TIME <:incomeTimeEnd ");
             paramts.put("incomeTimeEnd", param.getEndTime() * 1000000 + 240000);
         }
-        //瑙勬牸鍨嬪彿
+        // 瑙勬牸鍨嬪彿
         if (param.getBaseGoodsModelsId() != null) {
             sql.append("and pm.BASE_GOODS_MODELS_ID =:baseGoodsModelsId ");
             paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
         }
 
         sql.append("ORDER BY PROCURE_TIME DESC");
-        GenericPager genericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+        GenericPager genericPager =
+            selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
         return genericPager;
 
     }
 
     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"
-            + "\ttotal_amount totalAmount,\n"
-            + "\tfo.DEAL_TIME createTime,\n"
-            + "\tfo.OPERATOR_NAME,\n"
-            + "\tBEIZ remark\n"
-            + "FROM\n"
-            + "\tl_wh_procure_model pm\n"
+        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"
+            + "\ttotal_amount totalAmount,\n" + "\tfo.DEAL_TIME createTime,\n" + "\tfo.OPERATOR_NAME,\n"
+            + "\tBEIZ remark\n" + "FROM\n" + "\tl_wh_procure_model pm\n"
             + "\tLEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id\n"
             + "\tLEFT JOIN base_goods_template bgt ON bgm.GOODS_TEMPLATES_ID = bgt.id\n"
-            + "\tLEFT JOIN l_wh_form_output fo ON fo.ID = pm.BUSINESS_ID\n"
-            + "WHERE\n"
-            + "\tpm.BUSINESS_ID = :id";
+            + "\tLEFT JOIN l_wh_form_output fo ON fo.ID = pm.BUSINESS_ID\n" + "WHERE\n" + "\tpm.BUSINESS_ID = :id";
 
         Map<String, Object> param = new HashMap<>();
         param.put("id", id);
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java
index c06992e..457b15c 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java
@@ -1,5 +1,14 @@
 package com.consum.base.service;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.consum.base.core.WhBusinessEnum;
 import com.consum.base.core.service.LWhWarningCoreServiceImpl;
 import com.consum.model.po.LWarehouseFlow;
@@ -8,14 +17,8 @@
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.NumberGenerator;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.stream.Collectors;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @ClassName LWhFormProcureCoreService
@@ -25,13 +28,13 @@
  **/
 @Service
 @Slf4j
-@Transactional(propagation= Propagation.REQUIRED)
+@Transactional(propagation = Propagation.REQUIRED)
 public class LWhFormProcureCoreService {
     @Resource
     private LWhProcureModelService lWhProcureModelService;
 
     @Resource
-    private LWhFormProcureService lWhFormProcureService;
+    private LWhFormProcureService lWhFormProcureServiceImpl;
 
     @Resource
     private LWhWarningCoreServiceImpl lWhWarningCoreService;
@@ -40,18 +43,16 @@
     private LWarehouseFlowCoreService lWarehouseFlowService;
 
     /**
-     * 鎵ц閲囪喘鍏ュ簱
-     * 绗竴姝ワ細閫氳繃閲囪喘鍗旾D鏌ヨ閲囪喘鍗曞瀷鍙枫�怢_WH_PROCURE_MODEL銆戝緱鍒板晢鍝佸瀷鍙蜂互鍙婃暟閲�
-     * 绗簩姝ワ細璁板綍杩涘嚭搴撴祦姘达細L_WAREHOUSE_FLOW
+     * 鎵ц閲囪喘鍏ュ簱 绗竴姝ワ細閫氳繃閲囪喘鍗旾D鏌ヨ閲囪喘鍗曞瀷鍙枫�怢_WH_PROCURE_MODEL銆戝緱鍒板晢鍝佸瀷鍙蜂互鍙婃暟閲� 绗簩姝ワ細璁板綍杩涘嚭搴撴祦姘达細L_WAREHOUSE_FLOW
      */
     @Transactional(rollbackFor = Exception.class)
     public String doProcure(Long whFormProcureId, S_user_core currentUser) {
         if (whFormProcureId == null) {
             return "閲囪喘鍗昳d涓虹┖";
         }
-        //閲囪喘鍗曚俊鎭�
+        // 閲囪喘鍗曚俊鎭�
         LWhFormProcure whFormProcure = new LWhFormProcure(whFormProcureId);
-        LWhFormProcure lWhFormProcure = lWhFormProcureService.get(whFormProcure);
+        LWhFormProcure lWhFormProcure = lWhFormProcureServiceImpl.get(whFormProcure);
         if (lWhFormProcure == null || lWhFormProcure.getStates() != 1) {
             log.error("鍏ュ簱澶辫触锛佽妫�鏌ュ叆搴撳崟鐘舵��");
             return "鍏ュ簱澶辫触锛佽妫�鏌ュ叆搴撳崟鐘舵��";
@@ -60,7 +61,8 @@
         String nickName = currentUser.getNick_name();
         long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
 
-        List<LWhProcureModel> goodsModelNum = lWhProcureModelService.getModelByForm(WhBusinessEnum.CAIGOU, whFormProcureId);
+        List<LWhProcureModel> goodsModelNum =
+            lWhProcureModelService.getModelByForm(WhBusinessEnum.CAIGOU, whFormProcureId);
         // 娴佹按璁板綍鎬昏〃ID
         Long warehouseId = lWhFormProcure.getWarehouseId();
         long lWarehouseFlowId = NumberGenerator.getLongSequenceNumberNano();
@@ -84,17 +86,14 @@
             whFormProcure.setIncomeId(userId);
             whFormProcure.setIncomeName(nickName);
             whFormProcure.setIncomeTime(dealTime);
-            lWhFormProcureService.update(whFormProcure);
+            lWhFormProcureServiceImpl.update(whFormProcure);
         }
 
-
         // 鎻愬彇baseGoodsModelsId骞舵斁鍏ユ柊鐨凩ist涓�
-        List<Long> allChangModelList = goodsModelNum.stream()
-                .map(LWhProcureModel::getBaseGoodsModelsId)
-                .distinct()
-                .collect(Collectors.toList());
-        //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉�
-        lWhWarningCoreService.updateKuCun((short) 0, warehouseId, allChangModelList, null, dealTime);
+        List<Long> allChangModelList =
+            goodsModelNum.stream().map(LWhProcureModel::getBaseGoodsModelsId).distinct().collect(Collectors.toList());
+        // 褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉�
+        lWhWarningCoreService.updateKuCun((short)0, warehouseId, allChangModelList, null, dealTime);
 
         log.info("鍏ュ簱鍗曪細{} 鍏ュ簱瀹屾垚", whFormProcureId);
         return null;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureGoodsService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureGoodsService.java
index 5d48487..4ebbe3a 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureGoodsService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureGoodsService.java
@@ -1,16 +1,7 @@
 package com.consum.base.service;
 
-import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.stereotype.Service;
+import com.walker.jdbc.service.BaseService;
 
-/**
- * @ClassName LWhFormProcureGoodsService
-
- * @Date 2023/10/27
- * @Description
- * @Version 1.0
- **/
-@Service
-public class LWhFormProcureGoodsService  extends BaseServiceImpl {
+public interface LWhFormProcureGoodsService extends BaseService {
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java
index d66808e..0918346 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java
@@ -1,160 +1,44 @@
 package com.consum.base.service;
 
-import com.consum.base.core.utils.CurrencyUtil;
-import com.consum.base.core.utils.MapUtils;
-import com.consum.base.core.utils.MapperUtil;
-import com.consum.base.core.utils.PageUtil;
-import com.consum.base.pojo.excel.ProcureExcelTemplate;
-import com.consum.base.pojo.query.FormProcureQry;
-import com.consum.model.po.LWhFormProcure;
-import com.walker.db.page.GenericPager;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.StringUtils;
-import com.walker.jdbc.service.BaseServiceImpl;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.stereotype.Service;
 
-/**
- * @ClassName lWhFormProcureService
- * @Date 2023/10/24
- * @Description 閲囪喘鍗�
- * @Version 1.0
- **/
-@Service
-public class LWhFormProcureService extends BaseServiceImpl {
+import com.consum.base.core.utils.PageUtil;
+import com.consum.base.pojo.LWhFormProcureParam;
+import com.consum.base.pojo.excel.ProcureExcelTemplate;
+import com.consum.base.pojo.query.FormProcureQry;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LWhFormProcure;
+import com.iplatform.model.po.S_user_core;
+import com.walker.db.page.GenericPager;
+import com.walker.jdbc.service.BaseService;
 
-    private static String QUERY_FORM_PROCURE_LIST = "SELECT * FROM L_WH_FORM_PROCURE WHERE 1 = 1";
+public interface LWhFormProcureService extends BaseService {
 
-    public PageUtil<LWhFormProcure> queryFormProcureList(FormProcureQry param) {
-        HashMap<String, Object> paramts = new HashMap<>();
-        StringBuilder sql = new StringBuilder(QUERY_FORM_PROCURE_LIST);
-        //鍏ュ簱鍗曞彿
-        if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
-            sql.append(" and BUSINESS_FORM_CODE like :businessFormCode ");
-            paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
-        }
-        if (param.getAgencyId() != null) {
-            sql.append(" and AGENCY_ID like :agencyId ");
-            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
-        }
-        //鍒涘缓浜�
-        if (!StringUtils.isEmpty(param.getCreateName())) {
-            sql.append(" and buyer_Name =:buyerName ");
-            paramts.put("buyerName", param.getCreateName());
-        }
-        //鐘舵��
-        if (param.getStates() != null) {
-            sql.append(" and states =:states ");
-            paramts.put("states", param.getStates());
-        }
-        //鍏ュ簱鏃堕棿
-        if (param.getStartTime() != null) {
-            sql.append(" and INCOME_TIME >=:incomeTimeStart ");
-            paramts.put("incomeTimeStart", param.getStartTime() * 1000000);
-        }
-        if (param.getEndTime() != null) {
-            sql.append(" and INCOME_TIME <:incomeTimeEnd ");
-            paramts.put("incomeTimeEnd", param.getEndTime() * 1000000 + 240000);
-        }
-        //鐗╁搧鍚嶇О
-        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
-            sql.append(
-                " AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
-            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
-        }
-        sql.append(" ORDER BY PROCURE_TIME DESC");
-        GenericPager genericPager = selectSplit(sql.toString(), paramts, new LWhFormProcure());
-        PageUtil pageUtil = new PageUtil(genericPager);
-        return pageUtil;
+    PageUtil<LWhFormProcure> queryFormProcureList(FormProcureQry param);
 
-    }
+    /**
+     * 閲囪喘鍗曟槑缁嗘煡璇�
+     * 
+     * @param param
+     * @return
+     */
+    GenericPager<Map<String, Object>> queryFormProcureDetailList(FormProcureQry param);
 
-    public GenericPager<Map<String, Object>> queryFormProcureDetailList(FormProcureQry param) {
-        HashMap<String, Object> paramts = new HashMap<>();
-        StringBuilder sql = new StringBuilder("SELECT pm.id,fp.BUSINESS_FORM_CODE,fpg.GOODS_TEMPLATE_NAME,pm.PRICE,pm.COUNTS, "
-            + "( pm.PRICE * pm.COUNTS ) amount,fp.AGENCY_NAME,fp.BUYER_NAME,fp.PROCURE_TIME,pm.BUSINESS_ID,pm.BASE_GOODS_MODELS_NAME FROM l_wh_procure_model pm "
-            + "LEFT JOIN l_wh_form_procure fp ON pm.BUSINESS_ID = fp.id "
-            + "LEFT JOIN l_wh_form_procure_goods fpg ON fp.id = fpg.WH_FORM_PROCURE_ID WHERE pm.BUSINESS_TYPE = 1 ");
-        //鍏ュ簱鍗曞彿
-        if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
-            sql.append("and BUSINESS_FORM_CODE = :businessFormCode ");
-            paramts.put("businessFormCode", param.getBusinessFormCode());
-        }
-        //鐗╁搧鍚嶇О
-        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
-            sql.append("and fpg.GOODS_TEMPLATE_NAME like :goodsTemplateName ");
-            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
-        }
-        if (param.getAgencyId() != null) {
-            sql.append("and AGENCY_ID like :agencyId ");
-            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
-        }
-        //鍒涘缓浜�
-        if (!StringUtils.isEmpty(param.getCreateName())) {
-            sql.append("and buyer_Name =:buyerName ");
-            paramts.put("buyerName", param.getCreateName());
-        }
-        //鍏ュ簱寮�濮嬫椂闂�
-        if (param.getStartTime() != null) {
-            sql.append("and INCOME_TIME >=:incomeTimeStart ");
-            paramts.put("incomeTimeStart", param.getStartTime() * 1000000);
-        }
-        //鍏ュ簱缁撴潫鏃堕棿
-        if (param.getEndTime() != null) {
-            sql.append("and INCOME_TIME <:incomeTimeEnd ");
-            paramts.put("incomeTimeEnd", param.getEndTime() * 1000000 + 240000);
-        }
-        //瑙勬牸鍨嬪彿
-        if (param.getBaseGoodsModelsId() != null) {
-            sql.append("and pm.BASE_GOODS_MODELS_ID =:baseGoodsModelsId ");
-            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
-        }
+    /**
+     * 瀵煎嚭
+     * 
+     * @param id
+     * @return
+     */
+    List<ProcureExcelTemplate> getExportList(Long id);
 
-        sql.append("ORDER BY PROCURE_TIME DESC");
-        GenericPager genericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
-        return genericPager;
-
-    }
-
-    public List<ProcureExcelTemplate> getExportList(Long id) {
-        String sql = "SELECT\n"
-            + "\tfp.BUSINESS_FORM_CODE,\n"
-            + "\tfp.AGENCY_NAME tenantName,\n"
-            + "\tfp.INCOME_TIME createTime,\n"
-            + "\tfp.INCOME_NAME operatorName,\n"
-            + "\tGOODS_NAME templateName,\n"
-            + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n"
-            + "\tcounts num,\n"
-            + "\tprice,\n"
-            + "\ttotal_amount totalAmount,\n"
-            + "\tWAREHOUSE_NAME,\n"
-            + "\tBEIZ remark\n"
-            + "FROM\n"
-            + "\tl_wh_procure_model pm\n"
-            + "\tLEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id\n"
-            + "\tLEFT JOIN base_goods_template bgt ON bgm.GOODS_TEMPLATES_ID = bgt.id\n"
-            + "\tLEFT JOIN l_wh_form_procure fp ON fp.ID = pm.BUSINESS_ID\n"
-            + "WHERE\n"
-            + "\tpm.BUSINESS_ID = :id";
-        Map<String, Object> param = new HashMap<>();
-        param.put("id", id);
-        List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
-        if (CollectionUtils.isEmpty(select)) {
-            return null;
-        }
-
-        List<ProcureExcelTemplate> list = Lists.newArrayList();
-        select.forEach(item -> {
-            ProcureExcelTemplate templateExcelExport = MapUtils.convertMapToObj(item, ProcureExcelTemplate.class);
-            templateExcelExport.setAmount(CurrencyUtil.convertFenToYuan(templateExcelExport.getTotalAmount()));
-            templateExcelExport.setPrice(CurrencyUtil.convertFenToYuan(templateExcelExport.getPrice()));
-            list.add(templateExcelExport);
-        });
-        return list;
-
-
-    }
+    /**
+     * 鏂板
+     * 
+     * @param param
+     * @param sysTenantUser
+     * @param currentUser
+     */
+    void add(LWhFormProcureParam param, FinSysTenantUser sysTenantUser, S_user_core currentUser);
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java
index 28040ff..c1a5c9e 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java
@@ -1,6 +1,16 @@
 package com.consum.base.service;
 
-import cn.hutool.core.convert.Convert;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
 import com.consum.base.core.WhBusinessEnum;
 import com.consum.base.core.service.LWhWarningCoreServiceImpl;
 import com.consum.base.core.utils.IdUtil;
@@ -11,16 +21,9 @@
 import com.consum.model.po.LWhGoodsRecord;
 import com.iplatform.model.po.S_user_core;
 import com.walker.infrastructure.utils.CollectionUtils;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+
+import cn.hutool.core.convert.Convert;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 /**
  * @ClassName LWhFormScrappedCoreService
@@ -38,7 +41,7 @@
     private BaseGoodsTemplateService baseGoodsTemplateService;
     private LWhGoodsService lWhGoodsService;
     private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
-    private LWhGoodsRecordService lWhGoodsRecordService;
+    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
     private LWarehouseFlowService lWarehouseFlowService;
     private LWhWarningCoreServiceImpl lWhWarningCoreService;
 
@@ -48,7 +51,7 @@
                                       BaseGoodsTemplateService baseGoodsTemplateService,
                                       LWhGoodsService lWhGoodsService,
                                       LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
-                                      LWhGoodsRecordService lWhGoodsRecordService,
+                                      LWhGoodsRecordService lWhGoodsRecordServiceImpl,
                                       LWarehouseFlowService lWarehouseFlowService,
                                       LWhWarningCoreServiceImpl lWhWarningCoreService) {
 //        this.lWhFormScrappedService = lWhFormScrappedService;
@@ -56,7 +59,7 @@
         this.baseGoodsTemplateService = baseGoodsTemplateService;
         this.lWhGoodsService = lWhGoodsService;
         this.lWhGoodsRecordDetailsService = lWhGoodsRecordDetailsService;
-        this.lWhGoodsRecordService = lWhGoodsRecordService;
+        this.lWhGoodsRecordServiceImpl = lWhGoodsRecordServiceImpl;
         this.lWarehouseFlowService = lWarehouseFlowService;
         this.goodsBaseService = goodsBaseService;
         this.lWhWarningCoreService = lWhWarningCoreService;
@@ -168,7 +171,7 @@
                     // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS]
                     lWhGoodsRecordDetailsService.sameGoodsInsertMore(srappedGoodsIds, whGoodsRecordId, (short) 2);
                 }
-                lWhGoodsRecordService.insert(whGoodsRecord);
+                lWhGoodsRecordServiceImpl.insert(whGoodsRecord);
             }
 
         }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedService.java
new file mode 100644
index 0000000..9f23227
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedService.java
@@ -0,0 +1,47 @@
+package com.consum.base.service;
+
+import java.util.List;
+
+import com.consum.base.core.utils.PageUtil;
+import com.consum.base.pojo.LWhFormScrappedParam;
+import com.consum.base.pojo.excel.ScrappedInfoExcelTemplate;
+import com.consum.base.pojo.query.LWhFormScrappedQry;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
+import com.consum.base.pojo.response.LWhFormScrappedExtendVO;
+import com.consum.model.po.FinSysTenantUser;
+import com.iplatform.model.po.S_user_core;
+import com.walker.jdbc.service.BaseService;
+
+public interface LWhFormScrappedService extends BaseService {
+
+    int add(LWhFormScrappedParam param, S_user_core currentUser, FinSysTenantUser sysInfo);
+
+    PageUtil queryList(LWhFormScrappedQry param, FinSysTenantUser sysInfo);
+
+    LWhFormScrappedExtendVO getById(Long id);
+
+    /**
+     * 鎶ュ簾鍗曟嵁鏄庣粏鏌ヨ
+     * 
+     * @param param
+     * @param sysInfo
+     * @return
+     */
+    PageUtil queryDetailList(LWhFormScrappedQry param, FinSysTenantUser sysInfo);
+
+    /**
+     * 瀵煎嚭鎶ュ簾鍗曟嵁鏌ヨ
+     * 
+     * @param id
+     * @return
+     */
+    List<ScrappedInfoExcelTemplate> export(Long id);
+
+    /**
+     * 缁熻鎶ュ簾鍗曠墿鍝佸瀷鍙锋暟閲�
+     * 
+     * @param businessId
+     * @return
+     */
+    List<GoodsTemplateCountVO> getScrappedCountByBusinessId(Long businessId);
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
index 8e0181d..25ab0e0 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
@@ -1,27 +1,35 @@
 package com.consum.base.service;
 
-import cn.hutool.core.convert.Convert;
-import com.consum.base.core.WhBusinessEnum;
-import com.consum.base.core.service.LWhWarningCoreServiceImpl;
-import com.consum.base.core.utils.IdUtil;
-import com.consum.base.core.utils.LockManage;
-import com.consum.model.po.*;
-import com.iplatform.model.po.S_user_core;
-import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.DateUtils;
-import com.walker.infrastructure.utils.NumberGenerator;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-
-import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import com.consum.base.core.WhBusinessEnum;
+import com.consum.base.core.service.LWhWarningCoreServiceImpl;
+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.LWarehouseFlow;
+import com.consum.model.po.LWhFormTransfer;
+import com.consum.model.po.LWhGoodsRecord;
+import com.consum.model.po.LWhGoodsRecordDetails;
+import com.consum.model.po.LWhProcureModelUser;
+import com.iplatform.model.po.S_user_core;
+import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.infrastructure.utils.DateUtils;
+import com.walker.infrastructure.utils.NumberGenerator;
+
+import cn.hutool.core.convert.Convert;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @ClassName LWhFormTransferCoreService
@@ -41,7 +49,7 @@
     @Resource
     private GoodsBaseServiceImpl goodsBaseService;
     @Resource
-    private LWhGoodsRecordService lWhGoodsRecordService;
+    private LWhGoodsRecordService lWhGoodsRecordServiceImpl;
     @Resource
     private LWhGoodsService lWhGoodsService;
     @Resource
@@ -173,7 +181,7 @@
         ArrayList<Long> allChangModelList = new ArrayList<>();
         LWhGoodsRecord lWhGoodsRecord = new LWhGoodsRecord();
         lWhGoodsRecord.setWarehouseFlowId(outWarehouseFlowId);
-        List<LWhGoodsRecord> whGoodsRecordList = lWhGoodsRecordService.select(lWhGoodsRecord);
+        List<LWhGoodsRecord> whGoodsRecordList = lWhGoodsRecordServiceImpl.select(lWhGoodsRecord);
         for (LWhGoodsRecord whGoodsRecord : whGoodsRecordList) {
             Long oldRecordId = whGoodsRecord.getId();
             Long baseGoodsModelsId = whGoodsRecord.getBaseGoodsModelsId();
@@ -269,7 +277,7 @@
             }
             lWhGoodsRecordDetailsService.insertBatch(goodsRecordDetailsList);
         }
-        lWhGoodsRecordService.insertBatch(whGoodsRecordList);
+        lWhGoodsRecordServiceImpl.insertBatch(whGoodsRecordList);
 
         // 鏇存柊璋冩嫧鍗�
         lWhFormTransfer = new LWhFormTransfer(whFormTransferId);
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferService.java
index 1c067fb..cc30fac 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferService.java
@@ -1,5 +1,8 @@
 package com.consum.base.service;
 
+import java.util.List;
+import java.util.Map;
+
 import com.consum.base.pojo.excel.TransferExcelTemplate;
 import com.consum.base.pojo.query.TransferQry;
 import com.consum.base.pojo.request.LWhFormTransferParam;
@@ -8,46 +11,20 @@
 import com.consum.model.po.LWhFormTransfer;
 import com.walker.db.page.GenericPager;
 import com.walker.jdbc.service.BaseService;
-import java.util.List;
-import java.util.Map;
 
 public interface LWhFormTransferService extends BaseService {
 
     long add(LWhFormTransferParam param, FinSysTenantUser sysInfo) throws Exception;
 
-
-    /**
-     * @Description 鍒楄〃鏌ヨ
-     * @Author 鍗㈠簡闃�
-     * @Date 2023/10/30
-     */
     GenericPager<LWhFormTransfer> queryFormTransferList(TransferQry param);
 
-    /**
-     * @Description 鏍规嵁id鏌ヨ璇︽儏
-     * @Author 鍗㈠簡闃�
-     * @Date 2023/10/30
-     */
     LWHFromTransferExtendVO getById(Long id);
 
-
-    /**
-     * @Description 瀵煎嚭璋冩嫧鍑哄簱鍗�
-     * @Author 鍗㈠簡闃�
-     * @Date 2023/10/31
-     */
     List<TransferExcelTemplate> export(Long id, Integer type);
 
-    /**
-     * 鎾ら攢
-     *
-     * @author 鍗㈠簡闃�
-     * @date 2023/10/31
-     */
     int updateStatus(Long id);
 
     GenericPager<Map<String, Object>> queryTransferInfo(TransferQry transferQry);
-
 
     GenericPager<Map<String, Object>> queryFormTransferDetailList(TransferQry param);
 
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordService.java b/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordService.java
index 851b933..5145f32 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordService.java
@@ -1,17 +1,7 @@
 package com.consum.base.service;
 
-import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.stereotype.Service;
+import com.walker.jdbc.service.BaseService;
 
-/**
- * @ClassName LWhGoodsRecordService
-
- * @Date 2023/10/27
- * @Description
- * @Version 1.0
- **/
-@Service
-public class LWhGoodsRecordService extends BaseServiceImpl {
-
+public interface LWhGoodsRecordService extends BaseService {
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhProcureModelService.java b/consum-base/src/main/java/com/consum/base/service/LWhProcureModelService.java
index 29696b9..870c059 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhProcureModelService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhProcureModelService.java
@@ -1,89 +1,34 @@
 package com.consum.base.service;
 
-import com.consum.base.core.WhBusinessEnum;
-import com.consum.base.core.utils.MapperUtil;
-import com.consum.model.po.LWhProcureModel;
-import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-/**
- * @ClassName LWhProcureModelService
- * @Date 2023/10/24
- * @Description
- * @Version 1.0
- **/
-@Service
-public class LWhProcureModelService extends BaseServiceImpl {
+import com.consum.base.core.WhBusinessEnum;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
+import com.consum.model.po.LWhProcureModel;
+import com.walker.jdbc.service.BaseService;
 
-    private static String GET_MODEL_BY_FORM = "SELECT * FROM L_WH_PROCURE_MODEL WHERE 1=1 ";
+public interface LWhProcureModelService extends BaseService {
+
+    List<LWhProcureModel> getModelByForm(WhBusinessEnum businessType, Long businessId);
+
+    List<Map<String, Object>> getFfOrderByGoodsIdAndDept(Long goodsTemplateId, Long departmentId);
+
+    List<Map<String, Object>> getGoodsUseInfoByFfOrderAndGoodId(Long goodsTemplateId, Long transBusinessId);
 
     /**
-     * 閫氳繃鍗曟嵁绫诲瀷 鍗曟嵁ID鏌ヨ璇ヨ鍗曞叧鑱旂殑璁惧鍨嬪彿浠ュ強鏁伴噺
-     *
+     * 缁熻鍟嗗搧鍨嬪彿鏁伴噺
+     * 
+     * @param businessId
      * @return
      */
-    public List<LWhProcureModel> getModelByForm(WhBusinessEnum businessType, Long businessId) {
-        StringBuilder sql = new StringBuilder(GET_MODEL_BY_FORM);
-        HashMap<String, Object> paramts = new HashMap<>();
-        //椤圭洰闃舵id
-        if (businessType != null) {
-            sql.append(" and BUSINESS_TYPE=:businessType ");
-            paramts.put("businessType", businessType.getValue());
-        }
-        if (businessId != null) {
-            sql.append(" and BUSINESS_ID=:businessId ");
-            paramts.put("businessId", businessId);
-        }
-        return this.select(sql.toString(), paramts, new LWhProcureModel());
-    }
+    List<GoodsTemplateCountVO> getGoodsTemplateCountByBusinessId(Long businessId);
 
     /**
-     * 鏍规嵁閮ㄩ棬銆佺墿鍝佹煡璇㈣皟鎷ㄥ崟
-     *
-     * @param goodsTemplateId 鐗╁搧ID
-     * @param departmentId 閮ㄩ棬ID
+     * 缁熻閲囪喘鍗曠墿鍝佸瀷鍙锋暟閲�
+     * 
+     * @param businessId
      * @return
      */
-    private static String GET_FF_ORDER_BY_GOODS_ID_AND_DEPT = "SELECT trans.ID TRANS_BUSINESS_ID,trans.BUSINESS_FORM_CODE,baseTemp.ID BASE_GOODS_TEMPLATE_ID,baseTemp.GOODS_NAME BASE_GOODS_TEMPLATE_NAME,sum(proModel.COUNTS) total_count,sum(proModel.USE_COUNT) use_count,trans.IN_TIME FROM L_WH_FORM_TRANSFER trans LEFT JOIN L_WH_PROCURE_MODEL proModel ON proModel.BUSINESS_ID=trans.id LEFT JOIN BASE_GOODS_MODELS baseModel ON proModel.BASE_GOODS_MODELS_ID=baseModel.id LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseTemp.id=baseModel.GOODS_TEMPLATES_ID WHERE proModel.BUSINESS_TYPE=4 AND proModel.USE_COUNT> 0 ";
-    private static String GET_FF_ORDER_BY_GOODS_ID_AND_DEPT_END = " GROUP BY trans.ID,trans.BUSINESS_FORM_CODE,baseTemp.ID,baseTemp.GOODS_NAME,trans.IN_TIME order by trans.BUSINESS_FORM_CODE desc";
-
-    public List<Map<String, Object>> getFfOrderByGoodsIdAndDept(Long goodsTemplateId, Long departmentId) {
-        StringBuilder sql = new StringBuilder(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT);
-        HashMap<String, Object> paramts = new HashMap<>();
-        //椤圭洰闃舵id
-        if (goodsTemplateId != null) {
-            sql.append(" AND baseTemp.ID=:goodsTemplateId ");
-            paramts.put("goodsTemplateId", goodsTemplateId);
-        }
-        if (departmentId != null) {
-            sql.append(" AND trans.IN_WAREHOUSE_TYPE=1 and trans.IN_WAREHOUSE_ID=:departmentId ");
-            paramts.put("departmentId", departmentId);
-        }
-        return select(sql.append(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT_END).toString(), paramts, new MapperUtil());
-    }  /**
-     * 鏍规嵁閮ㄩ棬銆佺墿鍝佹煡璇㈣皟鎷ㄥ崟
-     *
-     * @param goodsTemplateId 鐗╁搧ID
-     * @param departmentId 鍒嗗彂鍗旾D
-     * @return
-     */
-    private static String GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID = "SELECT baseModel.GOODS_TEMPLATES_ID,proModel.BASE_GOODS_MODELS_ID,baseModel.MODEL_NAME,baseModel.UNIT,CONCAT(baseCate.CLASSIFICATION,'绫�') CLASSIFICATION,modelUser.id MODEL_USER_id,modelUser.NOW_USER_PHONE,modelUser.NOW_USER_NAME,CASE WHEN modelUser.id IS NULL THEN proModel.USE_COUNT ELSE modelUser.USE_COUNT END AS user_Use_Count,CASE WHEN modelUser.id IS NULL THEN proModel.COUNTS ELSE modelUser.GOODS_NUM END AS GOODS_NUM FROM L_WH_PROCURE_MODEL proModel LEFT JOIN BASE_GOODS_MODELS baseModel ON proModel.BASE_GOODS_MODELS_ID=baseModel.id LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseTemp.id=baseModel.GOODS_TEMPLATES_ID LEFT JOIN BASE_CATEGORY baseCate ON baseCate.id=baseTemp.CATEGORY_ID LEFT JOIN L_WH_PROCURE_MODEL_USER modelUser ON modelUser.WH_PROCURE_MODEL_ID=proModel.id WHERE proModel.BUSINESS_TYPE=4 AND proModel.USE_COUNT> 0 ";
-
-    public List<Map<String, Object>> getGoodsUseInfoByFfOrderAndGoodId(Long goodsTemplateId, Long transBusinessId) {
-        StringBuilder sql = new StringBuilder(GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID);
-        HashMap<String, Object> paramts = new HashMap<>();
-        if (goodsTemplateId != null) {
-            sql.append(" AND baseModel.GOODS_TEMPLATES_ID=:goodsTemplateId ");
-            paramts.put("goodsTemplateId", goodsTemplateId);
-        }
-        if (transBusinessId != null) {
-            sql.append(" AND proModel.BUSINESS_ID=:transBusinessId ");
-            paramts.put("transBusinessId", transBusinessId);
-        }
-        return select(sql.toString(), paramts, new MapperUtil());
-    }
+    List<GoodsTemplateCountVO> getProcureCountByBusinessId(Long businessId);
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserRecordService.java b/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserRecordService.java
new file mode 100644
index 0000000..3acf49b
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserRecordService.java
@@ -0,0 +1,13 @@
+package com.consum.base.service;
+
+import com.walker.jdbc.service.BaseService;
+
+/**
+ * LWhProcureModelUserRecordService
+ *
+ * @author asus
+ * @version 2023/12/05 09:36
+ **/
+public interface LWhProcureModelUserRecordService extends BaseService {
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/UsingFormBackModelService.java b/consum-base/src/main/java/com/consum/base/service/UsingFormBackModelService.java
index 2874e68..a6380cd 100644
--- a/consum-base/src/main/java/com/consum/base/service/UsingFormBackModelService.java
+++ b/consum-base/src/main/java/com/consum/base/service/UsingFormBackModelService.java
@@ -1,5 +1,8 @@
 package com.consum.base.service;
 
+import java.util.List;
+
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.walker.jdbc.service.BaseService;
 
 /**
@@ -10,4 +13,11 @@
  */
 public interface UsingFormBackModelService extends BaseService {
 
+    /**
+     * 缁熻鍥炴敹鍗曠墿鍝佹暟閲�
+     * 
+     * @param businessId
+     * @return
+     */
+    List<GoodsTemplateCountVO> getUsingCountByBusinessId(Long businessId);
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureGoodsServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureGoodsServiceImpl.java
new file mode 100644
index 0000000..a19cc6d
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureGoodsServiceImpl.java
@@ -0,0 +1,18 @@
+package com.consum.base.service.impl;
+
+import org.springframework.stereotype.Service;
+
+import com.consum.base.service.LWhFormProcureGoodsService;
+import com.walker.jdbc.service.BaseServiceImpl;
+
+/**
+ * @ClassName LWhFormProcureGoodsService
+ * 
+ * @Date 2023/10/27
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+public class LWhFormProcureGoodsServiceImpl extends BaseServiceImpl implements LWhFormProcureGoodsService {
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java
new file mode 100644
index 0000000..40cd9a8
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormProcureServiceImpl.java
@@ -0,0 +1,316 @@
+package com.consum.base.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.consum.base.core.CodeGeneratorEnum;
+import com.consum.base.core.CodeGeneratorService;
+import com.consum.base.core.WhBusinessEnum;
+import com.consum.base.core.utils.CurrencyUtil;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.core.utils.MapUtils;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.core.utils.PageUtil;
+import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
+import com.consum.base.pojo.LWhFormProcureParam;
+import com.consum.base.pojo.LWhProcureModelParam;
+import com.consum.base.pojo.excel.ProcureExcelTemplate;
+import com.consum.base.pojo.query.FormProcureQry;
+import com.consum.base.service.BaseGoodsTemplateService;
+import com.consum.base.service.BaseWarehouseService;
+import com.consum.base.service.LOrgSupplierServiceImpl;
+import com.consum.base.service.LWhFormProcureGoodsService;
+import com.consum.base.service.LWhFormProcureService;
+import com.consum.base.service.LWhGoodsService;
+import com.consum.base.service.LWhProcureModelService;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LOrgSupplier;
+import com.consum.model.po.LWhFormProcure;
+import com.consum.model.po.LWhFormProcureGoods;
+import com.consum.model.po.LWhProcureModel;
+import com.iplatform.model.po.S_user_core;
+import com.walker.db.page.GenericPager;
+import com.walker.infrastructure.utils.CollectionUtils;
+import com.walker.infrastructure.utils.StringUtils;
+import com.walker.jdbc.service.BaseServiceImpl;
+
+/**
+ * @ClassName lWhFormProcureService
+ * @Date 2023/10/24
+ * @Description 閲囪喘鍗�
+ * @Version 1.0
+ **/
+@Service
+public class LWhFormProcureServiceImpl extends BaseServiceImpl implements LWhFormProcureService {
+
+    @Autowired
+    private BaseWarehouseService baseWarehouseService;
+    @Resource
+    private LOrgSupplierServiceImpl lOrgSupplierService;
+    @Autowired
+    private BaseGoodsTemplateService baseGoodsTemplateService;
+    @Autowired
+    private LWhGoodsService lWhGoodsService;
+    @Autowired
+    private LWhFormProcureGoodsService lWhFormProcureGoodsService;
+    @Autowired
+    private LWhProcureModelService lWhProcureModelService;
+    @Autowired
+    private CodeGeneratorService codeGeneratorService;
+
+    private static String QUERY_FORM_PROCURE_LIST = "SELECT * FROM L_WH_FORM_PROCURE WHERE 1 = 1";
+
+    @Override
+    public PageUtil<LWhFormProcure> queryFormProcureList(FormProcureQry param) {
+        HashMap<String, Object> paramts = new HashMap<>();
+        StringBuilder sql = new StringBuilder(QUERY_FORM_PROCURE_LIST);
+        // 鍏ュ簱鍗曞彿
+        if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
+            sql.append(" and BUSINESS_FORM_CODE like :businessFormCode ");
+            paramts.put("businessFormCode",
+                StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
+        }
+        if (param.getAgencyId() != null) {
+            sql.append(" and AGENCY_ID like :agencyId ");
+            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
+        }
+        // 鍒涘缓浜�
+        if (!StringUtils.isEmpty(param.getCreateName())) {
+            sql.append(" and buyer_Name =:buyerName ");
+            paramts.put("buyerName", param.getCreateName());
+        }
+        // 鐘舵��
+        if (param.getStates() != null) {
+            sql.append(" and states =:states ");
+            paramts.put("states", param.getStates());
+        }
+        // 鍏ュ簱鏃堕棿
+        if (param.getStartTime() != null) {
+            sql.append(" and INCOME_TIME >=:incomeTimeStart ");
+            paramts.put("incomeTimeStart", param.getStartTime() * 1000000);
+        }
+        if (param.getEndTime() != null) {
+            sql.append(" and INCOME_TIME <:incomeTimeEnd ");
+            paramts.put("incomeTimeEnd", param.getEndTime() * 1000000 + 240000);
+        }
+        // 鐗╁搧鍚嶇О
+        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
+            sql.append(
+                " AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
+            paramts.put("goodsTemplateName",
+                StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+        }
+        sql.append(" ORDER BY PROCURE_TIME DESC");
+        GenericPager genericPager = selectSplit(sql.toString(), paramts, new LWhFormProcure());
+        PageUtil pageUtil = new PageUtil(genericPager);
+        return pageUtil;
+
+    }
+
+    @Override
+    public GenericPager<Map<String, Object>> queryFormProcureDetailList(FormProcureQry param) {
+        HashMap<String, Object> paramts = new HashMap<>();
+        StringBuilder sql =
+            new StringBuilder("SELECT pm.id,fp.BUSINESS_FORM_CODE,fpg.GOODS_TEMPLATE_NAME,pm.PRICE,pm.COUNTS, "
+                + "( pm.PRICE * pm.COUNTS ) amount,fp.AGENCY_NAME,fp.BUYER_NAME,fp.PROCURE_TIME,pm.BUSINESS_ID,pm.BASE_GOODS_MODELS_NAME FROM l_wh_procure_model pm "
+                + "LEFT JOIN l_wh_form_procure fp ON pm.BUSINESS_ID = fp.id "
+                + "LEFT JOIN l_wh_form_procure_goods fpg ON fp.id = fpg.WH_FORM_PROCURE_ID WHERE pm.BUSINESS_TYPE = 1 ");
+        // 鍏ュ簱鍗曞彿
+        if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
+            sql.append("and BUSINESS_FORM_CODE = :businessFormCode ");
+            paramts.put("businessFormCode", param.getBusinessFormCode());
+        }
+        // 鐗╁搧鍚嶇О
+        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
+            sql.append("and fpg.GOODS_TEMPLATE_NAME like :goodsTemplateName ");
+            paramts.put("goodsTemplateName",
+                StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+        }
+        if (param.getAgencyId() != null) {
+            sql.append("and AGENCY_ID like :agencyId ");
+            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
+        }
+        // 鍒涘缓浜�
+        if (!StringUtils.isEmpty(param.getCreateName())) {
+            sql.append("and buyer_Name =:buyerName ");
+            paramts.put("buyerName", param.getCreateName());
+        }
+        // 鍏ュ簱寮�濮嬫椂闂�
+        if (param.getStartTime() != null) {
+            sql.append("and INCOME_TIME >=:incomeTimeStart ");
+            paramts.put("incomeTimeStart", param.getStartTime() * 1000000);
+        }
+        // 鍏ュ簱缁撴潫鏃堕棿
+        if (param.getEndTime() != null) {
+            sql.append("and INCOME_TIME <:incomeTimeEnd ");
+            paramts.put("incomeTimeEnd", param.getEndTime() * 1000000 + 240000);
+        }
+        // 瑙勬牸鍨嬪彿
+        if (param.getBaseGoodsModelsId() != null) {
+            sql.append("and pm.BASE_GOODS_MODELS_ID =:baseGoodsModelsId ");
+            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
+        }
+
+        sql.append("ORDER BY PROCURE_TIME DESC");
+        GenericPager genericPager =
+            selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+        return genericPager;
+
+    }
+
+    @Override
+    public List<ProcureExcelTemplate> getExportList(Long id) {
+        String sql = "SELECT\n" + "\tfp.BUSINESS_FORM_CODE,\n" + "\tfp.AGENCY_NAME tenantName,\n"
+            + "\tfp.INCOME_TIME createTime,\n" + "\tfp.INCOME_NAME operatorName,\n" + "\tGOODS_NAME templateName,\n"
+            + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n" + "\tcounts num,\n" + "\tprice,\n"
+            + "\ttotal_amount totalAmount,\n" + "\tWAREHOUSE_NAME,\n" + "\tBEIZ remark\n" + "FROM\n"
+            + "\tl_wh_procure_model pm\n" + "\tLEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id\n"
+            + "\tLEFT JOIN base_goods_template bgt ON bgm.GOODS_TEMPLATES_ID = bgt.id\n"
+            + "\tLEFT JOIN l_wh_form_procure fp ON fp.ID = pm.BUSINESS_ID\n" + "WHERE\n" + "\tpm.BUSINESS_ID = :id";
+        Map<String, Object> param = new HashMap<>();
+        param.put("id", id);
+        List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
+        if (CollectionUtils.isEmpty(select)) {
+            return null;
+        }
+
+        List<ProcureExcelTemplate> list = Lists.newArrayList();
+        select.forEach(item -> {
+            ProcureExcelTemplate templateExcelExport = MapUtils.convertMapToObj(item, ProcureExcelTemplate.class);
+            templateExcelExport.setAmount(CurrencyUtil.convertFenToYuan(templateExcelExport.getTotalAmount()));
+            templateExcelExport.setPrice(CurrencyUtil.convertFenToYuan(templateExcelExport.getPrice()));
+            list.add(templateExcelExport);
+        });
+        return list;
+
+    }
+
+    @Override
+    public void add(LWhFormProcureParam param, FinSysTenantUser sysTenantUser, S_user_core currentUser) {
+        Long warehouseId = param.getWarehouseId();
+        BaseWarehouse baseWarehouse = baseWarehouseService.getById(warehouseId);
+        String tenantId = sysTenantUser.getTenantId();
+        String tenantName = sysTenantUser.getTenantName();
+
+        // 閲囪喘鍗昳d
+        Long whFormProcureId = param.getId();
+        if (whFormProcureId == null) {
+            whFormProcureId = IdUtil.generateId();
+        }
+        long procureTime = Long.valueOf(param.getProcureTime());
+
+        Set<String> supplierList = new HashSet<>();
+
+        ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>();
+        ArrayList<LWhProcureModel> procureModelList = new ArrayList<>();
+
+        List<LWhFormProcureGoodsInfoParam> procureGoods = param.getProcureGoods();
+        for (int i = 0; i < procureGoods.size(); i++) {
+            LWhFormProcureGoodsInfoParam procureGoodT = procureGoods.get(i);
+            Long baseCategoryId = procureGoodT.getBaseCategoryId();
+            Long baseGoodsTemplateId = procureGoodT.getBaseGoodsTemplateId();
+            String supplier = procureGoodT.getSupplier();
+            // 鍒ゆ柇褰撳墠渚涘簲鍟嗘槸鍚﹀凡瀛樺湪
+            if (!supplierList.contains(supplier) && !lOrgSupplierService.supplierIsContain(tenantId, supplier)) {
+                supplierList.add(supplier);
+            }
+
+            List<LWhProcureModelParam> models = procureGoodT.getModels();
+            if (CollectionUtils.isEmpty(models)) {
+                throw new RuntimeException("閲囪喘鍗曚笉鑳戒负绌�");
+            }
+            LWhFormProcureGoods procureGood = new LWhFormProcureGoods();
+            long fromProcureGoodsId = IdUtil.generateId();
+            procureGood.setId(fromProcureGoodsId);
+            procureGood.setWhFormProcureId(whFormProcureId);
+            procureGood.setBaseCategoryId(baseCategoryId);
+            procureGood.setBaseGoodsTemplateId(baseGoodsTemplateId);
+            // TODO 鐗╁搧鍘嗗彶鐗堟湰
+            procureGood.setGoodsTemplateName(procureGoodT.getGoodsTemplateName());
+            procureGood.setSupplier(supplier);
+            procureGood.setSort(i);
+            for (LWhProcureModelParam modelT : models) {
+                Integer counts = modelT.getCounts();
+                if (counts == null || counts <= 0) {
+                    throw new RuntimeException("鍨嬪彿鐨勯噰璐暟閲忓彧鑳戒负姝f暣鏁�");
+                }
+                Long price = modelT.getPrice();
+                if (price == null || price <= 0) {
+                    throw new RuntimeException("鍨嬪彿鐨勯噰璐环鏍煎彧鑳戒负姝f暟");
+                }
+                Long baseGoodsModelsId = modelT.getBaseGoodsModelsId();
+                if (baseGoodsModelsId == null) {
+                    throw new RuntimeException("閲囪喘鐨勪环鍨嬪彿鏈壘鍒�");
+                }
+                // 鏌ヨ鍨嬪彿淇℃伅
+                Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId);
+                if (tempGoodsInfo == null) {
+                    throw new RuntimeException("閲囪喘鐨勪环鍨嬪彿鏈壘鍒�");
+                }
+                String modelName = (String)tempGoodsInfo.get("modelname");
+                // 鏌ヨ鍨嬪彿搴撳瓨
+                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
+                LWhProcureModel model = new LWhProcureModel();
+                model.setId(IdUtil.generateId());
+                model.setFromProcureGoodsId(fromProcureGoodsId);
+                model.setBusinessType(WhBusinessEnum.CAIGOU.getValue() + 0);
+                model.setBusinessId(whFormProcureId);
+                model.setBaseGoodsModelsId(baseGoodsModelsId);
+                model.setBaseGoodsModelsName(modelName);
+                model.setPrice(price);
+                model.setCounts(counts);
+                model.setWorehouseCount(goodsModelNum);
+                model.setSupplier(supplier);
+                model.setTotalAmount(price * counts);
+                procureModelList.add(model);
+            }
+            procureGoodList.add(procureGood);
+        }
+        lWhFormProcureGoodsService.insertBatch(procureGoodList);
+        lWhProcureModelService.insertBatch(procureModelList);
+
+        LWhFormProcure lWhFormProcure =
+            getlWhFormProcure(param, whFormProcureId, warehouseId, baseWarehouse, currentUser, procureTime);
+        insert(lWhFormProcure);
+
+        supplierList.forEach(supplier -> {
+            LOrgSupplier lOrgSupplier = new LOrgSupplier();
+            lOrgSupplier.setId(IdUtil.generateId());
+            lOrgSupplier.setAgencyId(tenantId);
+            lOrgSupplier.setAgencyName(tenantName);
+            lOrgSupplier.setSupplier(supplier);
+            lOrgSupplierService.insert(lOrgSupplier);
+        });
+    }
+
+    private LWhFormProcure getlWhFormProcure(LWhFormProcureParam param, Long whFormProcureId, Long warehouseId,
+        BaseWarehouse baseWarehouse, S_user_core currentUser, long procureTime) {
+        // 鎻掑叆 閲囪喘鍗曠墿鍝併�怢_WH_FORM_PROCURE_GOODS銆�
+        LWhFormProcure lWhFormProcure = new LWhFormProcure();
+        lWhFormProcure.setId(whFormProcureId);
+        lWhFormProcure
+            .setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Procure_Warehouse));
+        lWhFormProcure.setWarehouseId(warehouseId);
+        lWhFormProcure.setWarehouseName(baseWarehouse.getWarehouseName());
+        lWhFormProcure.setBuyerId(currentUser.getId());
+        lWhFormProcure.setBuyerName(currentUser.getNick_name());
+        lWhFormProcure.setProcureTime(procureTime);
+        lWhFormProcure.setProcureDoc(param.getProcureDoc());
+        lWhFormProcure.setBuyType(param.getBuyType());
+        lWhFormProcure.setStates(1);
+        lWhFormProcure.setAgencyId(baseWarehouse.getAgencyId());
+        lWhFormProcure.setAgencyName(baseWarehouse.getAgencyName());
+        return lWhFormProcure;
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java
similarity index 71%
rename from consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java
rename to consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java
index aa78516..9a3e556 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormScrappedServiceImpl.java
@@ -1,4 +1,18 @@
-package com.consum.base.service;
+package com.consum.base.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
 
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
@@ -14,7 +28,17 @@
 import com.consum.base.pojo.response.FormScrappedGoodsDetailVO;
 import com.consum.base.pojo.response.FormScrappedGoodsVO;
 import com.consum.base.pojo.response.GoodsModelVO;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.consum.base.pojo.response.LWhFormScrappedExtendVO;
+import com.consum.base.service.BaseGoodsModelsService;
+import com.consum.base.service.BaseGoodsTemplateService;
+import com.consum.base.service.BaseWarehouseService;
+import com.consum.base.service.FinSysTenantDepartmentService;
+import com.consum.base.service.LWhFormScrappedCoreService;
+import com.consum.base.service.LWhFormScrappedGoodsService;
+import com.consum.base.service.LWhFormScrappedService;
+import com.consum.base.service.LWhGoodsService;
+import com.consum.base.service.SDictDataServiceImpl;
 import com.consum.model.po.BaseGoodsModels;
 import com.consum.model.po.BaseGoodsTemplate;
 import com.consum.model.po.BaseWarehouse;
@@ -27,18 +51,6 @@
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
 
 /**
  * @Description 鎶ュ簾鍗�
@@ -46,7 +58,7 @@
  * @Date 2023/11/1
  */
 @Service
-public class LWhFormScrappedServiceImpl extends BaseServiceImpl {
+public class LWhFormScrappedServiceImpl extends BaseServiceImpl implements LWhFormScrappedService {
 
     @Autowired
     private CodeGeneratorService codeGeneratorService;
@@ -67,25 +79,27 @@
     @Autowired
     private LWhFormScrappedCoreService lWhFormScrappedCoreService;
 
-    private static String QUERY_LIST = "SELECT DISTINCT fs.* FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID WHERE 1 = 1 ";
+    private static String QUERY_LIST =
+        "SELECT DISTINCT fs.* FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID WHERE 1 = 1 ";
 
-    private static final String QUERY_BF_DETAIL_LIST = "select fs.id,fs.BUSINESS_FORM_CODE,fsg.GOODS_TEMPLATE_NAME,fsg.BASE_GOODS_MODELS_NAME,fsg.COUNTS,"
-        + "fs.AGENCY_NAME,OPERATOR_NAME,DEAL_TIME from l_wh_form_scrapped fs "
-        + "inner join l_wh_form_scrapped_goods fsg on fs.ID = fsg.FORM_SCRAPPED_ID where 1=1 ";
+    private static final String QUERY_BF_DETAIL_LIST =
+        "select fs.id,fs.BUSINESS_FORM_CODE,fsg.GOODS_TEMPLATE_NAME,fsg.BASE_GOODS_MODELS_NAME,fsg.COUNTS,"
+            + "fs.AGENCY_NAME,OPERATOR_NAME,DEAL_TIME from l_wh_form_scrapped fs "
+            + "inner join l_wh_form_scrapped_goods fsg on fs.ID = fsg.FORM_SCRAPPED_ID where 1=1 ";
 
     /**
      * 鏂板
      *
      * @param param
      * @param currentUser 褰撳墠鐧诲綍鐢ㄦ埛
-     * @param sysInfo     褰撳墠鐧诲綍鐢ㄦ埛
-     * @return 1.鏂板鎶ュ簾鍗�  2.鏂板鎶ュ簾鍗曠墿鍝�
+     * @param sysInfo 褰撳墠鐧诲綍鐢ㄦ埛
+     * @return 1.鏂板鎶ュ簾鍗� 2.鏂板鎶ュ簾鍗曠墿鍝�
      */
-
+    @Override
     public int add(LWhFormScrappedParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
-        //1.鏂板鎶ュ簾鍗曡褰�
+        // 1.鏂板鎶ュ簾鍗曡褰�
         LWhFormScrapped lWhFormScrapped = new LWhFormScrapped();
-        //鎶ュ簾鍗昳d
+        // 鎶ュ簾鍗昳d
         long lWhFormScrappedId = IdUtil.generateId();
         lWhFormScrapped.setId(lWhFormScrappedId);
         lWhFormScrapped.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Scrapped));
@@ -93,10 +107,10 @@
 
         // 鍏敤
         Long warehouseId = null;
-        //浠撳簱鍚嶇О
+        // 浠撳簱鍚嶇О
         String wareHouseName = null;
         warehouseId = param.getWarehouseId();
-        //鏍规嵁浠撳簱id鏌ヨ浠撳簱
+        // 鏍规嵁浠撳簱id鏌ヨ浠撳簱
         BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
         if (warehouse == null) {
             log.error("浠撳簱涓嶅瓨鍦�");
@@ -112,7 +126,7 @@
         lWhFormScrapped.setDealTime(param.getDealTime());
         lWhFormScrapped.setStates(0);
         lWhFormScrapped.setUploadFiles(param.getUploadFiles());
-        //鏍规嵁閮ㄩ棬id鏌ヨ閮ㄩ棬
+        // 鏍规嵁閮ㄩ棬id鏌ヨ閮ㄩ棬
         FinSysTenantDepartment department = this.departmentService.getById(sysInfo.getSysDeptId());
         if (department != null) {
             lWhFormScrapped.setDepartmentId(sysInfo.getSysDeptId());
@@ -123,10 +137,11 @@
             log.error("鏂板鎶ュ簾鍗曞け璐�");
             return 0;
         }
-        //2.鏂板鎶ュ簾鍗曠墿鍝佽褰�
-        //鏍规嵁鐗╁搧id鏌ヨ鐗╁搧
+        // 2.鏂板鎶ュ簾鍗曠墿鍝佽褰�
+        // 鏍规嵁鐗╁搧id鏌ヨ鐗╁搧
         for (LWhFormScrappedGoodsInfoParam goodsInfo : param.getScrappedGoodsInfo()) {
-            BaseGoodsTemplate goodsTemplate = this.baseGoodsTemplateService.get(new BaseGoodsTemplate(goodsInfo.getBaseGoodsTemplateId()));
+            BaseGoodsTemplate goodsTemplate =
+                this.baseGoodsTemplateService.get(new BaseGoodsTemplate(goodsInfo.getBaseGoodsTemplateId()));
             if (goodsTemplate == null) {
                 log.error("璇ョ墿鍝佹ā鏉夸笉瀛樺湪");
                 return 0;
@@ -136,40 +151,45 @@
                 log.error("鏂板鎶ュ簾鍗曠墿鍝佽褰曞け璐�");
                 return 0;
             }
-            //鑾峰彇瑙勬牸鍨嬪彿id
-            List<Long> baseGoodsModelsIdList = scrappedGoodsParamList.stream().map(params -> params.getBaseGoodsModelsId()).collect(Collectors.toList());
-            //鏍规嵁瑙勬牸鍨嬪彿id鏌ヨ瑙勬牸鍨嬪彿
+            // 鑾峰彇瑙勬牸鍨嬪彿id
+            List<Long> baseGoodsModelsIdList = scrappedGoodsParamList.stream()
+                .map(params -> params.getBaseGoodsModelsId()).collect(Collectors.toList());
+            // 鏍规嵁瑙勬牸鍨嬪彿id鏌ヨ瑙勬牸鍨嬪彿
             List<BaseGoodsModels> models = this.baseGoodsModelsService.selectByModelsIdList(baseGoodsModelsIdList);
             if (CollectionUtils.isEmpty(models)) {
                 log.error("璇ュ瀷鍙峰晢鍝佷笉瀛樺湪");
                 return 0;
             }
-            Map<Long, BaseGoodsModels> modelMap = models.stream().collect(Collectors.toMap(model -> model.getId(), model -> model));
-            //鑾峰彇鎶ュ簾鍘熷洜code
-            List<String> scrappedCodeList = scrappedGoodsParamList.stream().map(params -> params.getScrappedCode()).collect(Collectors.toList());
-            //鏍规嵁鎶ュ簾鍘熷洜code鏌ヨ鏁版嵁瀛楀吀
+            Map<Long, BaseGoodsModels> modelMap =
+                models.stream().collect(Collectors.toMap(model -> model.getId(), model -> model));
+            // 鑾峰彇鎶ュ簾鍘熷洜code
+            List<String> scrappedCodeList =
+                scrappedGoodsParamList.stream().map(params -> params.getScrappedCode()).collect(Collectors.toList());
+            // 鏍规嵁鎶ュ簾鍘熷洜code鏌ヨ鏁版嵁瀛楀吀
             List<SDictData> SDictDataList = this.sDictDataService.selectByScrappedCodeList(scrappedCodeList);
-            Map<Long, String> scrappedNameMap = SDictDataList.stream().collect(Collectors.toMap(s -> s.getDict_code(), s -> s.getDict_label()));
+            Map<Long, String> scrappedNameMap =
+                SDictDataList.stream().collect(Collectors.toMap(s -> s.getDict_code(), s -> s.getDict_label()));
 
             List<LWhFormScrappedGoods> scrappedGoodsList = new ArrayList<>();
             for (LWhFormScrappedGoodsModelParams params : scrappedGoodsParamList) {
                 LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods();
                 scrappedGoods.setId(IdUtil.generateId());
-                //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, scrappedGoods.getBaseGoodsModelsId(), 1, null);
+                // 鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
+                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId,
+                    scrappedGoods.getBaseGoodsModelsId(), 1, null);
                 if (params.getCounts() > goodsNum) {
                     log.error("鎶ュ簾鏁伴噺澶т簬搴撳瓨鏁伴噺");
                     return 0;
                 }
                 scrappedGoods.setCounts(params.getCounts());
-                //鎶ュ簾鍘熷洜
+                // 鎶ュ簾鍘熷洜
                 scrappedGoods.setScrappedCode(params.getScrappedCode());
                 scrappedGoods.setScrappedName(scrappedNameMap.get(Long.valueOf(params.getScrappedCode())));
                 scrappedGoods.setFormScrappedId(lWhFormScrappedId);
-                //鐗╁搧妯℃澘
+                // 鐗╁搧妯℃澘
                 scrappedGoods.setBaseGoodsTemplateId(goodsTemplate.getId());
                 scrappedGoods.setGoodsTemplateName(goodsTemplate.getGoodsName());
-                //瑙勬牸鍨嬪彿
+                // 瑙勬牸鍨嬪彿
                 Long baseGoodsModelsId = params.getBaseGoodsModelsId();
                 BaseGoodsModels baseGoodsModels = modelMap.get(baseGoodsModelsId);
                 if (baseGoodsModels != null) {
@@ -187,8 +207,9 @@
                 return 0;
             }
         }
-        //3.鏍规嵁鎶ュ簾鍗曟姤搴熺墿鍝�
-        Long lWarehouseFlowId = this.lWhFormScrappedCoreService.outFormByTransId(lWhFormScrappedId, currentUser, param.getDealTime());
+        // 3.鏍规嵁鎶ュ簾鍗曟姤搴熺墿鍝�
+        Long lWarehouseFlowId =
+            this.lWhFormScrappedCoreService.outFormByTransId(lWhFormScrappedId, currentUser, param.getDealTime());
         if (lWarehouseFlowId == null) {
             log.error("鏍规嵁鍑哄簱鍗曞嚭搴� 澶辫触");
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -203,27 +224,29 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/11/2
      */
+    @Override
     public PageUtil queryList(LWhFormScrappedQry param, FinSysTenantUser sysInfo) {
         HashMap<String, Object> paramts = new HashMap<>();
         StringBuilder sql = new StringBuilder(QUERY_LIST);
-        //鎶ュ簾鍗曞彿
+        // 鎶ュ簾鍗曞彿
         if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
             sql.append("and BUSINESS_FORM_CODE = :businessFormCode ");
             paramts.put("businessFormCode", param.getBusinessFormCode());
         }
-        //鐗╁搧鍚嶇О
+        // 鐗╁搧鍚嶇О
         if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
             sql.append("and fsg.GOODS_TEMPLATE_NAME LIKE :goodsTemplateName ");
-            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+            paramts.put("goodsTemplateName",
+                StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
         }
-        //鏈烘瀯
+        // 鏈烘瀯
         sql.append("and AGENCY_ID like :agencyId ");
         if (param.getAgencyId() != null) {
             paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
         } else {
             paramts.put("agencyId", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT);
         }
-        //鎶ュ簾鏃堕棿
+        // 鎶ュ簾鏃堕棿
         if (param.getStartTime() != null) {
             sql.append("and DEAL_TIME >=:dealTimeStart ");
             paramts.put("dealTimeStart", param.getStartTime() * 1000000);
@@ -243,18 +266,20 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/11/2
      */
+    @Override
     public LWhFormScrappedExtendVO getById(Long id) {
         LWhFormScrappedExtendVO scrappedExtend = new LWhFormScrappedExtendVO();
-        //1.鏌ヨ鎶ュ簾鍗�
+        // 1.鏌ヨ鎶ュ簾鍗�
         LWhFormScrapped lWhFormScrapped = this.get(new LWhFormScrapped(id));
         if (lWhFormScrapped != null) {
             BeanUtils.copyProperties(lWhFormScrapped, scrappedExtend);
         }
-        //2.鏌ヨ鎶ュ簾鍗�
+        // 2.鏌ヨ鎶ュ簾鍗�
         List<LWhFormScrappedGoods> scrappedGoodsList = this.scrappedGoodsService.getByFormScrappedId(id);
-        //閫氳繃baseGoodsTemplateId 杩涜鍒嗙粍
-        Map<Long, List<LWhFormScrappedGoods>> map = scrappedGoodsList.stream().collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsTemplateId));
-        //寰幆map鐨刱ey鍜寁alue
+        // 閫氳繃baseGoodsTemplateId 杩涜鍒嗙粍
+        Map<Long, List<LWhFormScrappedGoods>> map =
+            scrappedGoodsList.stream().collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsTemplateId));
+        // 寰幆map鐨刱ey鍜寁alue
         List<FormScrappedGoodsVO> scrappedGoodsVO = Lists.newArrayList();
         for (Map.Entry<Long, List<LWhFormScrappedGoods>> entry : map.entrySet()) {
             Long baseGoodsTemplateId = entry.getKey();
@@ -299,39 +324,41 @@
      * @param param
      * @return
      */
+    @Override
     public PageUtil queryDetailList(LWhFormScrappedQry param, FinSysTenantUser sysInfo) {
         StringBuilder sql = new StringBuilder(QUERY_BF_DETAIL_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.getGoodsTemplateName())) {
             sql.append("and GOODS_TEMPLATE_NAME like: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());
         }
-        //鏈烘瀯
+        // 鏈烘瀯
         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 (!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 DEAL_TIME >=:dealTimeStart ");
             paramts.put("dealTimeStart", param.getStartTime() * 1000000);
@@ -342,35 +369,27 @@
         }
 
         sql.append("ORDER BY DEAL_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 pageUtil = new PageUtil<>(mapGenericPager);
         List<FormScrappedGoodsDetailVO> result = Lists.newArrayList();
         mapGenericPager.getDatas().forEach(item -> {
-            FormScrappedGoodsDetailVO formScrappedGoodsDetailVO = MapUtils.convertMapToObj(item, FormScrappedGoodsDetailVO.class);
+            FormScrappedGoodsDetailVO formScrappedGoodsDetailVO =
+                MapUtils.convertMapToObj(item, FormScrappedGoodsDetailVO.class);
             result.add(formScrappedGoodsDetailVO);
         });
         pageUtil.setDatas(result);
         return pageUtil;
     }
 
+    @Override
     public List<ScrappedInfoExcelTemplate> export(Long id) {
-        String sql =
-            "SELECT\n"
-                + "\tBUSINESS_FORM_CODE,\n"
-                + "\tfs.DEAL_TIME,\n"
-                + "\tOPERATOR_NAME,\n"
-                + "\tAGENCY_NAME tenantName,\n"
-                + "\tGOODS_TEMPLATE_NAME templateName,\n"
-                + "\tBASE_GOODS_MODELS_NAME baseModelName,\n"
-                + "\tCOUNTS num,\n"
-                + "\tSCRAPPED_NAME deception,\n"
-                + "\tBEIZ remark\n"
-                + "FROM\n"
-                + "\tl_wh_form_scrapped_goods fsg\n"
-                + "\tLEFT JOIN l_wh_form_scrapped fs ON fs.id = fsg.FORM_SCRAPPED_ID\n"
-                + "WHERE\n"
-                + "\tfs.ID = :id\n"
-                + "\tAND STATES = 1";
+        String sql = "SELECT\n" + "\tBUSINESS_FORM_CODE,\n" + "\tfs.DEAL_TIME,\n" + "\tOPERATOR_NAME,\n"
+            + "\tAGENCY_NAME tenantName,\n" + "\tGOODS_TEMPLATE_NAME templateName,\n"
+            + "\tBASE_GOODS_MODELS_NAME baseModelName,\n" + "\tCOUNTS num,\n" + "\tSCRAPPED_NAME deception,\n"
+            + "\tBEIZ remark\n" + "FROM\n" + "\tl_wh_form_scrapped_goods fsg\n"
+            + "\tLEFT JOIN l_wh_form_scrapped fs ON fs.id = fsg.FORM_SCRAPPED_ID\n" + "WHERE\n" + "\tfs.ID = :id\n"
+            + "\tAND STATES = 1";
         Map<String, Object> param = new HashMap<>();
         param.put("id", id);
         List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
@@ -379,11 +398,28 @@
         }
         List<ScrappedInfoExcelTemplate> list = Lists.newArrayList();
         select.forEach(item -> {
-            ScrappedInfoExcelTemplate inventoryExcelTemplate = MapUtils.convertMapToObj(item, ScrappedInfoExcelTemplate.class);
+            ScrappedInfoExcelTemplate inventoryExcelTemplate =
+                MapUtils.convertMapToObj(item, ScrappedInfoExcelTemplate.class);
             list.add(inventoryExcelTemplate);
         });
         return list;
     }
 
+    @Override
+    public List<GoodsTemplateCountVO> getScrappedCountByBusinessId(Long businessId) {
+        List<GoodsTemplateCountVO> goodsTemplateCount = Lists.newArrayList();
+        // 缁熻鍨嬪彿鏁伴噺
+        String sql =
+            "SELECT fsg.BASE_GOODS_TEMPLATE_ID id,fsg.GOODS_TEMPLATE_NAME goodsName,sum(counts) count FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID "
+                + "where fsg.FORM_SCRAPPED_ID =:businessId group by fsg.BASE_GOODS_TEMPLATE_ID";
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("businessId", businessId);
+        List<Map<String, Object>> procureModelList = this.select(sql, paramMap, new MapperUtil());
+        for (Map<String, Object> map : procureModelList) {
+            GoodsTemplateCountVO goodsTemplateCountVO = MapUtils.convertMapToObj(map, GoodsTemplateCountVO.class);
+            goodsTemplateCount.add(goodsTemplateCountVO);
+        }
+        return goodsTemplateCount;
+    }
 
 }
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 3484855..24988ac 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
@@ -1,5 +1,18 @@
 package com.consum.base.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
+
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.utils.CurrencyUtil;
@@ -23,7 +36,7 @@
 import com.consum.base.service.LWhFormTransferService;
 import com.consum.base.service.LWhGoodsService;
 import com.consum.base.service.LWhProcureModelService;
-import com.consum.base.service.LWhProcureModelUserRecordServiceImpl;
+import com.consum.base.service.LWhProcureModelUserRecordService;
 import com.consum.base.service.LWhProcureModelUserServiceImpl;
 import com.consum.model.po.BaseWarehouse;
 import com.consum.model.po.BaseWarehouseManager;
@@ -36,17 +49,6 @@
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
 
 /**
  * @Description 璋冩嫧绠$悊
@@ -73,15 +75,14 @@
     @Autowired
     private LWhProcureModelUserServiceImpl lWhProcureModelUserService;
     @Autowired
-    private LWhProcureModelUserRecordServiceImpl lWhProcureModelUserRecordService;
+    private LWhProcureModelUserRecordService lWhProcureModelUserRecordService;
     @Autowired
     private BaseWarehouseManagerService baseWarehouseManagerService;
 
-    private static String QUERY_FORM_TRANSFER_LIST = "SELECT ft.* FROM l_wh_form_transfer ft "
-        + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id "
-        + "LEFT JOIN BASE_GOODS_MODELS bgm ON pm.BASE_GOODS_MODELS_ID=bgm.ID "
-        + "LEFT JOIN BASE_GOODS_TEMPLATE bgt ON bgm.GOODS_TEMPLATES_ID=bgt.id WHERE 1 = 1 ";
-
+    private static String QUERY_FORM_TRANSFER_LIST =
+        "SELECT ft.* FROM l_wh_form_transfer ft " + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id "
+            + "LEFT JOIN BASE_GOODS_MODELS bgm ON pm.BASE_GOODS_MODELS_ID=bgm.ID "
+            + "LEFT JOIN BASE_GOODS_TEMPLATE bgt ON bgm.GOODS_TEMPLATES_ID=bgt.id WHERE 1 = 1 ";
 
     /**
      * @Description 鏂板
@@ -89,9 +90,9 @@
      * @Date 2023/10/30
      */
     public long add(LWhFormTransferParam param, FinSysTenantUser sysInfo) throws Exception {
-        //1.鏂板璋冩嫧鍗曡褰�
+        // 1.鏂板璋冩嫧鍗曡褰�
         LWhFormTransfer lWhFormTransfer = new LWhFormTransfer();
-        //璋冩嫧鍗昳d
+        // 璋冩嫧鍗昳d
         long lWhFormTransferId = IdUtil.generateId();
         lWhFormTransfer.setId(lWhFormTransferId);
 
@@ -113,7 +114,7 @@
         Long warehouseId = param.getInWarehouseId();
         // 璋冩嫧绫诲瀷鍗曟嵁
         if (businessType == 0) {
-            //鍏ュ簱浠撳簱涓哄綋鍓嶇敤鎴风殑榛樿浠撳簱
+            // 鍏ュ簱浠撳簱涓哄綋鍓嶇敤鎴风殑榛樿浠撳簱
             String tenantId = sysInfo.getTenantId();
             String tenantName = sysInfo.getTenantName();
             BaseWarehouse warehouse = baseWarehouseService.getDefaultWarehouseByAgencyId(Long.valueOf(tenantId));
@@ -126,12 +127,12 @@
             lWhFormTransfer.setInAgencyId(Long.valueOf(tenantId));
             lWhFormTransfer.setInAgencyName(tenantName);
         }
-        //褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉
+        // 褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉
         if (businessType == 1) {
-            //閮ㄩ棬鍒嗗彂绫诲瀷 鍑哄簱浠撳簱绫诲瀷0鏈烘瀯1閮ㄩ棬
-            //浠庡綋鍓嶇櫥褰曞簱绠′汉浠庡簱涓嚭搴擄紝鍏ュ埌鎵�閫夐儴闂ㄧ殑涓�
+            // 閮ㄩ棬鍒嗗彂绫诲瀷 鍑哄簱浠撳簱绫诲瀷0鏈烘瀯1閮ㄩ棬
+            // 浠庡綋鍓嶇櫥褰曞簱绠′汉浠庡簱涓嚭搴擄紝鍏ュ埌鎵�閫夐儴闂ㄧ殑涓�
 
-            //鏌ヨ搴撶鍛樹俊鎭拰鐩稿叧浠撳簱
+            // 鏌ヨ搴撶鍛樹俊鎭拰鐩稿叧浠撳簱
             Long id = sysInfo.getId();
             BaseWarehouseManager manager = new BaseWarehouseManager();
             manager.setManagerId(id);
@@ -165,7 +166,7 @@
             }
         }
 
-        //鏍规嵁鏈烘瀯id鏌ヨ璋冩嫧鏈烘瀯
+        // 鏍规嵁鏈烘瀯id鏌ヨ璋冩嫧鏈烘瀯
         FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(param.getOutAgencyId()));
         if (finSysTenant == null) {
             log.error("璋冩嫧鏈烘瀯涓嶅瓨鍦�");
@@ -175,7 +176,7 @@
         lWhFormTransfer.setOperatorId(sysInfo.getId());
         lWhFormTransfer.setOperatorName(sysInfo.getUserName());
         lWhFormTransfer.setCreateTime(param.getCreateTime());
-        //0=寰呭嚭搴擄紱1=寰呮帴鏀讹紱2=宸插叆搴撳簱:4=宸叉挙閿�
+        // 0=寰呭嚭搴擄紱1=寰呮帴鏀讹紱2=宸插叆搴撳簱:4=宸叉挙閿�
         lWhFormTransfer.setStates(0);
         lWhFormTransfer.setProcureDoc(param.getProcureDoc());
 
@@ -184,7 +185,7 @@
             log.error("鏂板璋冩嫧鍗曞け璐�");
         }
 
-        //2.鏂板鐗╁搧鍨嬪彿璁板綍
+        // 2.鏂板鐗╁搧鍨嬪彿璁板綍
         List<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods();
         List<LWhProcureModel> modelList = new ArrayList<>();
         for (LWhFormTransferGoodsInfoParam transferGoodsInfo : transferGoods) {
@@ -196,7 +197,7 @@
                 Long baseGoodsModelsId = model.getBaseGoodsModelsId();
                 if (businessType == 0) {
                     lWhProcureModel.setBusinessType(2);
-                    //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
+                    // 鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
                     int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
                     lWhProcureModel.setWorehouseCount(goodsNum);
                 }
@@ -207,8 +208,9 @@
                 lWhProcureModel.setUseCount(model.getCounts());
                 lWhProcureModel.setBusinessId(lWhFormTransferId);
                 lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId);
-                //鏍规嵁鍨嬪彿id鏌ヨ鍨嬪彿
-                List<Map<String, Object>> baseGoodsModels = this.baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
+                // 鏍规嵁鍨嬪彿id鏌ヨ鍨嬪彿
+                List<Map<String, Object>> baseGoodsModels =
+                    this.baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
                 Map<String, Object> baseModelMap = baseGoodsModels.get(0);
                 if (baseGoodsModels != null && !CollectionUtils.isEmpty(baseModelMap)) {
                     Object modelName = baseModelMap.get("modelName");
@@ -216,9 +218,9 @@
                 }
                 lWhProcureModel.setSupplier(transferGoodsInfo.getSupplier());
 
-                //3.褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉
+                // 3.褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉
                 // 鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂
-                //閮ㄩ棬鍒嗗彂绫诲瀷
+                // 閮ㄩ棬鍒嗗彂绫诲瀷
                 if (businessType == 1 && "A".equals(baseModelMap.get("type"))) {
                     LWhProcureModelUserRecord lWhProcureModelUserRecord = new LWhProcureModelUserRecord();
                     lWhProcureModelUserRecord.setId(IdUtil.generateId());
@@ -261,7 +263,6 @@
         return lWhFormTransferId;
     }
 
-
     /**
      * @Description 鍒楄〃鏌ヨ
      * @Author 鍗㈠簡闃�
@@ -270,7 +271,7 @@
     public GenericPager<LWhFormTransfer> queryFormTransferList(TransferQry param) {
         HashMap<String, Object> paramts = new HashMap<>();
         StringBuilder sql = new StringBuilder(QUERY_FORM_TRANSFER_LIST);
-        //璋冩嫧鍗曞彿
+        // 璋冩嫧鍗曞彿
         if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
             sql.append(" and BUSINESS_FORM_CODE = :businessFormCode ");
             paramts.put("businessFormCode", param.getBusinessFormCode());
@@ -279,32 +280,33 @@
             sql.append("and ft.BUSINESS_TYPE = :businessType ");
             paramts.put("businessType", param.getQryType());
         }
-        //鐗╁搧鍚嶇О
+        // 鐗╁搧鍚嶇О
         if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
             sql.append("AND bgt.GOODS_NAME LIKE :goodsTemplateName ");
-            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+            paramts.put("goodsTemplateName",
+                StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
         }
-        //璋冩嫧鏈烘瀯
+        // 璋冩嫧鏈烘瀯
         if (param.getOutAgencyId() != null) {
             sql.append(" and OUT_AGENCY_ID = :OUT_AGENCY_ID ");
             paramts.put("OUT_AGENCY_ID", param.getOutAgencyId());
         }
-        //鎺ユ敹鏈烘瀯
+        // 鎺ユ敹鏈烘瀯
         if (param.getInAgencyId() != null) {
             sql.append(" and IN_AGENCY_ID = :IN_AGENCY_ID ");
             paramts.put("IN_AGENCY_ID", param.getInAgencyId());
         }
-        //鐘舵��
+        // 鐘舵��
         if (param.getStates() != null) {
             sql.append(" and ft.states =:states ");
             paramts.put("states", param.getStates());
         }
-        //鍒涘缓浜�
+        // 鍒涘缓浜�
         if (!StringUtils.isEmpty(param.getOperatorName())) {
             sql.append(" and OPERATOR_NAME =:OPERATOR_NAME ");
             paramts.put("OPERATOR_NAME", param.getOperatorName());
         }
-        //鐢宠鏃堕棿
+        // 鐢宠鏃堕棿
         if (param.getCreateTimeStart() != null) {
             sql.append(" and ft.CREATE_TIME >=:createTimeStart ");
             paramts.put("createTimeStart", param.getCreateTimeStart() * 1000000);
@@ -313,7 +315,7 @@
             sql.append(" and ft.CREATE_TIME <:createTimeEnd ");
             paramts.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000);
         }
-        //鎺ユ敹鏃堕棿
+        // 鎺ユ敹鏃堕棿
         if (param.getStartTime() != null) {
             sql.append(" and IN_TIME >=:inTimeStart ");
             paramts.put("inTimeStart", param.getStartTime() * 1000000);
@@ -322,7 +324,7 @@
             sql.append(" and IN_TIME <:inTimeEnd ");
             paramts.put("inTimeEnd", param.getEndTime() * 1000000 + 240000);
         }
-        //鍒嗗彂閮ㄩ棬
+        // 鍒嗗彂閮ㄩ棬
         if (param.getInWarehouseId() != null) {
             sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId ");
             paramts.put("inWarehouseId", param.getInWarehouseId());
@@ -341,7 +343,7 @@
      */
     public LWHFromTransferExtendVO getById(Long id) {
         LWHFromTransferExtendVO result = new LWHFromTransferExtendVO();
-        //1.鏌ヨ璋冩嫧鍗�
+        // 1.鏌ヨ璋冩嫧鍗�
         LWhFormTransfer lWhFormTransfer = this.get(new LWhFormTransfer(id));
         if (lWhFormTransfer != null) {
             BeanUtils.copyProperties(lWhFormTransfer, result);
@@ -350,13 +352,16 @@
 
         String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME,bgt.CLASSIFICATION type "
             + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
-            + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id ";
+            + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
+            + "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());
 
-        String queryRecord = "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1";
-        LWhProcureModelUserRecord lWhProcureModelUserRecord = lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord());
+        String queryRecord =
+            "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1";
+        LWhProcureModelUserRecord lWhProcureModelUserRecord =
+            lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord());
         List<FormTransferGoodsVO> formTransferGoods = Lists.newArrayList();
         for (Map<String, Object> map : procureModelList) {
             FormTransferGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormTransferGoodsVO.class);
@@ -365,22 +370,25 @@
             List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
             String sql2 = "SELECT pm.id,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount "
                 + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
-                + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id and bgt.id =:baseGoodsTemplateId";
+                + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
+                + "WHERE pm.BUSINESS_ID =:id and bgt.id =:baseGoodsTemplateId";
             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 =
+                lWhFormOutputService.select(sql2, goodsModelParamMap, new MapperUtil());
             modelList.forEach(item -> {
                 GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                 Integer businessType = result.getBusinessType();
                 String type = procureTemplateInfoVO.getType();
-                //閮ㄩ棬鍒嗗彂闇�瑕佹煡璇娇鐢ㄤ俊鎭�
+                // 閮ㄩ棬鍒嗗彂闇�瑕佹煡璇娇鐢ㄤ俊鎭�
                 if (businessType == 1 && "A".equals(type)) {
                     Long procureModelId = goodsModelVO.getId();
                     LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                     lWhProcureModelUser.setWhProcureModelId(procureModelId);
                     lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId());
-                    List<LWhProcureModelUser> procureModelUserList = this.lWhProcureModelUserService.select(lWhProcureModelUser);
+                    List<LWhProcureModelUser> procureModelUserList =
+                        this.lWhProcureModelUserService.select(lWhProcureModelUser);
                     if (!CollectionUtils.isEmpty(procureModelUserList)) {
                         List<DepartGoodsUseInfo> departGoodsUseInfoList = Lists.newArrayList();
                         procureModelUserList.forEach(useInfo -> {
@@ -407,31 +415,19 @@
         return result;
     }
 
-
     /**
      * @Description 瀵煎嚭璋冩嫧鍑哄簱鍗�
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/31
      */
     public List<TransferExcelTemplate> export(Long id, Integer type) {
-        String sql = "SELECT\n"
-            + "\tft.BUSINESS_FORM_CODE,\n"
-            + "\tft.OPERATOR_NAME,\n"
-            + "\tft.CREATE_TIME,\n"
-            + "\tft.IN_AGENCY_NAME,\n"
-            + "\tft.OUT_AGENCY_NAME,\n"
-            + "\tGOODS_NAME templateName,\n"
-            + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n"
-            + "\tpm.COUNTS num,\n"
-            + "\tpm.total_amount,\n"
-            + "\tft.BEIZ1 remark\n"
-            + "FROM\n"
-            + "\tl_wh_form_transfer ft\n"
+        String sql = "SELECT\n" + "\tft.BUSINESS_FORM_CODE,\n" + "\tft.OPERATOR_NAME,\n" + "\tft.CREATE_TIME,\n"
+            + "\tft.IN_AGENCY_NAME,\n" + "\tft.OUT_AGENCY_NAME,\n" + "\tGOODS_NAME templateName,\n"
+            + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n" + "\tpm.COUNTS num,\n" + "\tpm.total_amount,\n"
+            + "\tft.BEIZ1 remark\n" + "FROM\n" + "\tl_wh_form_transfer ft\n"
             + "\tINNER JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
             + "\tINNER JOIN base_goods_models bgm ON bgm.ID = pm.BASE_GOODS_MODELS_ID\n"
-            + "\tINNER JOIN base_goods_template bgt ON bgt.ID = bgm.GOODS_TEMPLATES_ID\n"
-            + "WHERE\n"
-            + "\tft.id = :id";
+            + "\tINNER JOIN base_goods_template bgt ON bgt.ID = bgm.GOODS_TEMPLATES_ID\n" + "WHERE\n" + "\tft.id = :id";
         Map<String, Object> paramts = new HashMap<>();
         paramts.put("id", id);
         List<Map<String, Object>> select = this.select(sql, paramts, new MapperUtil());
@@ -468,42 +464,45 @@
         StringBuilder sql = new StringBuilder(
             "SELECT ft.id,ft.BUSINESS_FORM_CODE,bgt.GOODS_NAME,bgt.CLASSIFICATION type,bgm.id goodsModelId,bgm.MODEL_NAME goodsModelName,pm.COUNTS goodsCount,fst.`name` tenantName,"
                 + "ft.IN_WAREHOUSE_NAME departmentName,ft.OPERATOR_ID,ft.CREATE_TIME,ft.OPERATOR_NAME FROM l_wh_form_transfer ft "
-                + "inner JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID " + "inner JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
+                + "inner JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID "
+                + "inner JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
                 + "inner JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
                 + "inner JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID "
                 + "inner JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID "
                 + "inner JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where ft.BUSINESS_TYPE =1 ");
-        //鍗曞彿
+        // 鍗曞彿
         if (StringUtils.isNotEmpty(transferQry.getBusinessFormCode())) {
             sql.append("AND BUSINESS_FORM_CODE like :businessFormCode ");
-            paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
+            paramts.put("businessFormCode",
+                StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
         }
-        //鐗╁搧鍚嶇О
+        // 鐗╁搧鍚嶇О
         if (StringUtils.isNotEmpty(transferQry.getGoodsTemplateName())) {
             sql.append("AND bgt.GOODS_NAME like:goodsName ");
-            paramts.put("goodsName", StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+            paramts.put("goodsName",
+                StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
         }
         // 瑙勬牸鍨嬪彿
         if (transferQry.getBaseGoodsModelsId() != null) {
             sql.append("AND bgm.id =:goodsModelId ");
             paramts.put("goodsModelId", transferQry.getBaseGoodsModelsId());
         }
-        //璋冩嫧鏈烘瀯
+        // 璋冩嫧鏈烘瀯
         if (transferQry.getOutAgencyId() != null) {
             sql.append("AND OUT_AGENCY_ID = :OUT_AGENCY_ID ");
             paramts.put("OUT_AGENCY_ID", transferQry.getOutAgencyId());
         }
-        //鍒嗗彂閮ㄩ棬
+        // 鍒嗗彂閮ㄩ棬
         if (transferQry.getInWarehouseId() != null) {
             sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId ");
             paramts.put("inWarehouseId", transferQry.getInWarehouseId());
         }
-        //鍒涘缓浜�
+        // 鍒涘缓浜�
         if (StringUtils.isNotEmpty(transferQry.getOperatorName())) {
             sql.append("AND ft.OPERATOR_NAME =:OPERATOR_NAME ");
             paramts.put("OPERATOR_NAME", transferQry.getOperatorName());
         }
-        //鐢宠鏃堕棿
+        // 鐢宠鏃堕棿
         if (transferQry.getStartTime() != null) {
             sql.append("AND ft.CREATE_TIME >=:createTimeStart ");
             paramts.put("createTimeStart", transferQry.getStartTime() * 1000000);
@@ -514,23 +513,23 @@
         }
         sql.append("ORDER BY ft.CREATE_TIME DESC");
 
-        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts, transferQry.getPageNum(), transferQry.getPageSize(),
-            new MapperUtil());
+        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts,
+            transferQry.getPageNum(), transferQry.getPageSize(), new MapperUtil());
 
         return mapGenericPager;
     }
 
-
     public GenericPager<Map<String, Object>> queryFormTransferDetailList(TransferQry param) {
 
         HashMap<String, Object> params = new HashMap<>();
-        StringBuilder sql = new StringBuilder(
-            "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       bgt.GOODS_NAME,\n" + "       bgt.CLASSIFICATION,\n"
-                + "       pm.BASE_GOODS_MODELS_NAME,\n" + "       pm.COUNTS,\n" + "       ft.IN_AGENCY_NAME,\n" + "       ft.OPERATOR_NAME,\n"
-                + "       ft.CREATE_TIME,\n" + "       ft.IN_TIME,\n" + "       ft.OUT_AGENCY_NAME,\n" + "       ft.OUT_OPERATOR_NAME,\n"
-                + "       ft.OUTPUT_TIME\n" + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
-                + "         LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID\n"
-                + "         LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID where 1=1 ");
+        StringBuilder sql = new StringBuilder("SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n"
+            + "       bgt.GOODS_NAME,\n" + "       bgt.CLASSIFICATION,\n" + "       pm.BASE_GOODS_MODELS_NAME,\n"
+            + "       pm.COUNTS,\n" + "       ft.IN_AGENCY_NAME,\n" + "       ft.OPERATOR_NAME,\n"
+            + "       ft.CREATE_TIME,\n" + "       ft.IN_TIME,\n" + "       ft.OUT_AGENCY_NAME,\n"
+            + "       ft.OUT_OPERATOR_NAME,\n" + "       ft.OUTPUT_TIME\n" + "FROM l_wh_form_transfer ft\n"
+            + "         LEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
+            + "         LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID\n"
+            + "         LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID where 1=1 ");
         if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
             sql.append("AND ft.BUSINESS_FORM_CODE = :businessFormCode ");
             params.put("businessFormCode", param.getBusinessFormCode());
@@ -555,7 +554,7 @@
             sql.append("AND ft.OPERATOR_NAME = :operatorName ");
             params.put("operatorName", param.getOperatorName());
         }
-        //鐢宠鍒涘缓鏃堕棿
+        // 鐢宠鍒涘缓鏃堕棿
         if (param.getCreateTimeStart() != null) {
             sql.append("AND ft.CREATE_TIME >= :createTimeStart ");
             params.put("createTimeStart", param.getCreateTimeStart() * 1000000);
@@ -564,7 +563,7 @@
             sql.append("AND ft.CREATE_TIME < :createTimeEnd ");
             params.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000);
         }
-        //鎺ユ敹鏃堕棿
+        // 鎺ユ敹鏃堕棿
         if (param.getStartTime() != null) {
             sql.append("AND ft.IN_TIME >= :createTimeStart ");
             params.put("createTimeStart", param.getStartTime() * 1000000);
@@ -573,19 +572,20 @@
             sql.append("AND ft.IN_TIME < :createTimeEnd ");
             params.put("createTimeEnd", param.getEndTime() * 1000000 + 240000);
         }
-        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil());
+        GenericPager<Map<String, Object>> mapGenericPager =
+            this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil());
         return mapGenericPager;
 
     }
 
     public List<Map<String, Object>> queryDepartmentTransferOrder() {
 
-        String sql =
-            "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       gr.GOODS_TEMPLATE_NAME,\n" + "       gr.BASE_GOODS_TEMPLATE_ID goodsTemplateId,\n"
-                + "       ft.CREATE_TIME\n" + "\n" + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN L_WAREHOUSE_FLOW wf ON ft.id = wf.BUSINESS_FORM_ID\n"
-                + "         left join L_WH_GOODS_RECORD gr on gr.WAREHOUSE_FLOW_ID = wf.id\n"
-                + "         LEFT JOIN L_GOODS_WH_RECORD gwr on gwr.WAREHOUSE_FLOW_ID = wf.id\n"
-                + "         left join L_WH_GOODS g on g.id = gwr.WH_GOODS_ID where ft.BUSINESS_TYPE = 1 GROUP BY gr.BASE_GOODS_TEMPLATE_ID \n";
+        String sql = "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       gr.GOODS_TEMPLATE_NAME,\n"
+            + "       gr.BASE_GOODS_TEMPLATE_ID goodsTemplateId,\n" + "       ft.CREATE_TIME\n" + "\n"
+            + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN L_WAREHOUSE_FLOW wf ON ft.id = wf.BUSINESS_FORM_ID\n"
+            + "         left join L_WH_GOODS_RECORD gr on gr.WAREHOUSE_FLOW_ID = wf.id\n"
+            + "         LEFT JOIN L_GOODS_WH_RECORD gwr on gwr.WAREHOUSE_FLOW_ID = wf.id\n"
+            + "         left join L_WH_GOODS g on g.id = gwr.WH_GOODS_ID where ft.BUSINESS_TYPE = 1 GROUP BY gr.BASE_GOODS_TEMPLATE_ID \n";
         HashMap<String, Object> param = new HashMap<>();
         List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
         select.forEach(item -> {
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsRecordServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsRecordServiceImpl.java
new file mode 100644
index 0000000..ed350d0
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhGoodsRecordServiceImpl.java
@@ -0,0 +1,19 @@
+package com.consum.base.service.impl;
+
+import org.springframework.stereotype.Service;
+
+import com.consum.base.service.LWhGoodsRecordService;
+import com.walker.jdbc.service.BaseServiceImpl;
+
+/**
+ * @ClassName LWhGoodsRecordService
+
+ * @Date 2023/10/27
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+public class LWhGoodsRecordServiceImpl extends BaseServiceImpl implements LWhGoodsRecordService {
+
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java
new file mode 100644
index 0000000..e2564bd
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelServiceImpl.java
@@ -0,0 +1,140 @@
+package com.consum.base.service.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.stereotype.Service;
+
+import com.consum.base.core.WhBusinessEnum;
+import com.consum.base.core.utils.MapUtils;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
+import com.consum.base.service.LWhProcureModelService;
+import com.consum.model.po.LWhProcureModel;
+import com.walker.jdbc.service.BaseServiceImpl;
+
+/**
+ * @ClassName LWhProcureModelService
+ * @Date 2023/10/24
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+public class LWhProcureModelServiceImpl extends BaseServiceImpl implements LWhProcureModelService {
+
+    private static String GET_MODEL_BY_FORM = "SELECT * FROM L_WH_PROCURE_MODEL WHERE 1=1 ";
+
+    /**
+     * 閫氳繃鍗曟嵁绫诲瀷 鍗曟嵁ID鏌ヨ璇ヨ鍗曞叧鑱旂殑璁惧鍨嬪彿浠ュ強鏁伴噺
+     *
+     * @return
+     */
+    @Override
+    public List<LWhProcureModel> getModelByForm(WhBusinessEnum businessType, Long businessId) {
+        StringBuilder sql = new StringBuilder(GET_MODEL_BY_FORM);
+        HashMap<String, Object> paramts = new HashMap<>();
+        // 椤圭洰闃舵id
+        if (businessType != null) {
+            sql.append(" and BUSINESS_TYPE=:businessType ");
+            paramts.put("businessType", businessType.getValue());
+        }
+        if (businessId != null) {
+            sql.append(" and BUSINESS_ID=:businessId ");
+            paramts.put("businessId", businessId);
+        }
+        return this.select(sql.toString(), paramts, new LWhProcureModel());
+    }
+
+    /**
+     * 鏍规嵁閮ㄩ棬銆佺墿鍝佹煡璇㈣皟鎷ㄥ崟
+     *
+     * @param goodsTemplateId 鐗╁搧ID
+     * @param departmentId 閮ㄩ棬ID
+     * @return
+     */
+    private static String GET_FF_ORDER_BY_GOODS_ID_AND_DEPT =
+        "SELECT trans.ID TRANS_BUSINESS_ID,trans.BUSINESS_FORM_CODE,baseTemp.ID BASE_GOODS_TEMPLATE_ID,baseTemp.GOODS_NAME BASE_GOODS_TEMPLATE_NAME,sum(proModel.COUNTS) total_count,sum(proModel.USE_COUNT) use_count,trans.IN_TIME FROM L_WH_FORM_TRANSFER trans LEFT JOIN L_WH_PROCURE_MODEL proModel ON proModel.BUSINESS_ID=trans.id LEFT JOIN BASE_GOODS_MODELS baseModel ON proModel.BASE_GOODS_MODELS_ID=baseModel.id LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseTemp.id=baseModel.GOODS_TEMPLATES_ID WHERE proModel.BUSINESS_TYPE=4 AND proModel.USE_COUNT> 0 ";
+    private static String GET_FF_ORDER_BY_GOODS_ID_AND_DEPT_END =
+        " GROUP BY trans.ID,trans.BUSINESS_FORM_CODE,baseTemp.ID,baseTemp.GOODS_NAME,trans.IN_TIME order by trans.BUSINESS_FORM_CODE desc";
+
+    @Override
+    public List<Map<String, Object>> getFfOrderByGoodsIdAndDept(Long goodsTemplateId, Long departmentId) {
+        StringBuilder sql = new StringBuilder(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT);
+        HashMap<String, Object> paramts = new HashMap<>();
+        // 椤圭洰闃舵id
+        if (goodsTemplateId != null) {
+            sql.append(" AND baseTemp.ID=:goodsTemplateId ");
+            paramts.put("goodsTemplateId", goodsTemplateId);
+        }
+        if (departmentId != null) {
+            sql.append(" AND trans.IN_WAREHOUSE_TYPE=1 and trans.IN_WAREHOUSE_ID=:departmentId ");
+            paramts.put("departmentId", departmentId);
+        }
+        return select(sql.append(GET_FF_ORDER_BY_GOODS_ID_AND_DEPT_END).toString(), paramts, new MapperUtil());
+    }
+
+    /**
+     * 鏍规嵁閮ㄩ棬銆佺墿鍝佹煡璇㈣皟鎷ㄥ崟
+     *
+     * @param goodsTemplateId 鐗╁搧ID
+     * @param departmentId 鍒嗗彂鍗旾D
+     * @return
+     */
+    private static String GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID =
+        "SELECT baseModel.GOODS_TEMPLATES_ID,proModel.BASE_GOODS_MODELS_ID,baseModel.MODEL_NAME,baseModel.UNIT,CONCAT(baseCate.CLASSIFICATION,'绫�') CLASSIFICATION,modelUser.id MODEL_USER_id,modelUser.NOW_USER_PHONE,modelUser.NOW_USER_NAME,CASE WHEN modelUser.id IS NULL THEN proModel.USE_COUNT ELSE modelUser.USE_COUNT END AS user_Use_Count,CASE WHEN modelUser.id IS NULL THEN proModel.COUNTS ELSE modelUser.GOODS_NUM END AS GOODS_NUM FROM L_WH_PROCURE_MODEL proModel LEFT JOIN BASE_GOODS_MODELS baseModel ON proModel.BASE_GOODS_MODELS_ID=baseModel.id LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseTemp.id=baseModel.GOODS_TEMPLATES_ID LEFT JOIN BASE_CATEGORY baseCate ON baseCate.id=baseTemp.CATEGORY_ID LEFT JOIN L_WH_PROCURE_MODEL_USER modelUser ON modelUser.WH_PROCURE_MODEL_ID=proModel.id WHERE proModel.BUSINESS_TYPE=4 AND proModel.USE_COUNT> 0 ";
+
+    @Override
+    public List<Map<String, Object>> getGoodsUseInfoByFfOrderAndGoodId(Long goodsTemplateId, Long transBusinessId) {
+        StringBuilder sql = new StringBuilder(GET_GOODS_USE_INFO_BY_FF_ORDER_AND_GOOD_ID);
+        HashMap<String, Object> paramts = new HashMap<>();
+        if (goodsTemplateId != null) {
+            sql.append(" AND baseModel.GOODS_TEMPLATES_ID=:goodsTemplateId ");
+            paramts.put("goodsTemplateId", goodsTemplateId);
+        }
+        if (transBusinessId != null) {
+            sql.append(" AND proModel.BUSINESS_ID=:transBusinessId ");
+            paramts.put("transBusinessId", transBusinessId);
+        }
+        return select(sql.toString(), paramts, new MapperUtil());
+    }
+
+    @Override
+    public List<GoodsTemplateCountVO> getGoodsTemplateCountByBusinessId(Long businessId) {
+        List<GoodsTemplateCountVO> goodsTemplateCount = Lists.newArrayList();
+
+        // 鏌ヨ鍨嬪彿鏁伴噺
+        String sql = "SELECT bgt.id,goods_name,sum(counts) count FROM "
+            + "l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id "
+            + "LEFT JOIN base_goods_template bgt ON bgm.goods_templates_id = bgt.id "
+            + "WHERE pm.business_id =:businessId GROUP BY bgm.goods_templates_id";
+
+        HashMap<String, Object> param = new HashMap<>();
+        param.put("businessId", businessId);
+        List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
+        select.forEach(item -> {
+            GoodsTemplateCountVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsTemplateCountVO.class);
+            goodsTemplateCount.add(goodsModelVO);
+        });
+
+        return goodsTemplateCount;
+    }
+
+    @Override
+    public List<GoodsTemplateCountVO> getProcureCountByBusinessId(Long businessId) {
+        List<GoodsTemplateCountVO> goodsTemplateCount = Lists.newArrayList();
+        // 鏌ヨ閲囪喘鍨嬪彿缁熻鏁伴噺
+        String sql = "select fpg.id,BASE_GOODS_TEMPLATE_ID,GOODS_TEMPLATE_NAME ,sum(counts) count "
+            + "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID "
+            + "where fpg.WH_FORM_PROCURE_ID =:businessId group by pm.FROM_PROCURE_GOODS_ID";
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("businessId", businessId);
+        List<Map<String, Object>> procureModelList = this.select(sql, paramMap, new MapperUtil());
+        for (Map<String, Object> map : procureModelList) {
+            GoodsTemplateCountVO goodsTemplateCountVO = MapUtils.convertMapToObj(map, GoodsTemplateCountVO.class);
+            goodsTemplateCount.add(goodsTemplateCountVO);
+        }
+        return goodsTemplateCount;
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserRecordServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelUserRecordServiceImpl.java
similarity index 64%
rename from consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserRecordServiceImpl.java
rename to consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelUserRecordServiceImpl.java
index f7009f2..188e8e9 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhProcureModelUserRecordServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhProcureModelUserRecordServiceImpl.java
@@ -1,7 +1,9 @@
-package com.consum.base.service;
+package com.consum.base.service.impl;
 
-import com.walker.jdbc.service.BaseServiceImpl;
 import org.springframework.stereotype.Service;
+
+import com.consum.base.service.LWhProcureModelUserRecordService;
+import com.walker.jdbc.service.BaseServiceImpl;
 
 /**
  * @ClassName LWhProcureModelUserRecordServiceImpl
@@ -10,7 +12,6 @@
  * @Version 1.0
  **/
 @Service
-public class LWhProcureModelUserRecordServiceImpl extends BaseServiceImpl {
-
+public class LWhProcureModelUserRecordServiceImpl extends BaseServiceImpl implements LWhProcureModelUserRecordService {
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackModelServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackModelServiceImpl.java
index 49918fb..6e1fe58 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackModelServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackModelServiceImpl.java
@@ -1,8 +1,17 @@
 package com.consum.base.service.impl;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.stereotype.Service;
+
+import com.consum.base.core.utils.MapUtils;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.consum.base.service.UsingFormBackModelService;
 import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.stereotype.Service;
 
 /**
  * @author asus
@@ -13,4 +22,22 @@
 @Service
 public class UsingFormBackModelServiceImpl extends BaseServiceImpl implements UsingFormBackModelService {
 
+    @Override
+    public List<GoodsTemplateCountVO> getUsingCountByBusinessId(Long businessId) {
+        List<GoodsTemplateCountVO> goodsTemplateCount = Lists.newArrayList();
+        // 缁熻鍨嬪彿鏁伴噺
+        StringBuilder countSql =
+            new StringBuilder("SELECT ufbg.BASE_GOODS_TEMPLATE_NAME,sum(ufbm.COUNTS) count,ufbm.UNIT "
+                + "FROM using_form_back_goods ufbg "
+                + "LEFT JOIN using_form_back_model ufbm ON ufbg.ID = ufbm.USING_FORM_BACK_GOODS_ID "
+                + "where ufbg.USING_FORM_BACK_ID = :businessId group by ufbg.BASE_GOODS_TEMPLATE_ID ");
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("businessId", businessId);
+        List<Map<String, Object>> procureModelList = this.select(countSql.toString(), paramMap, new MapperUtil());
+        for (Map<String, Object> map : procureModelList) {
+            GoodsTemplateCountVO goodsTemplateCountVO = MapUtils.convertMapToObj(map, GoodsTemplateCountVO.class);
+            goodsTemplateCount.add(goodsTemplateCountVO);
+        }
+        return goodsTemplateCount;
+    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java
index 273cd1c..e7345dc 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/UsingFormBackServiceImpl.java
@@ -1,5 +1,19 @@
 package com.consum.base.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.DepUsingFormBackCoreServiceImpl;
@@ -12,7 +26,7 @@
 import com.consum.base.pojo.request.UsingFormBackGoodsInfo;
 import com.consum.base.pojo.request.UsingFormBackParam;
 import com.consum.base.pojo.request.baseGoodModel;
-import com.consum.base.pojo.response.BaseGoodsTemplateInfo;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.consum.base.pojo.response.UseInfo;
 import com.consum.base.pojo.response.UsingFormBackDetailListVO;
 import com.consum.base.pojo.response.UsingFormBackDetailVO;
@@ -38,17 +52,6 @@
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import javax.annotation.Resource;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author asus
@@ -73,6 +76,8 @@
     private LWhFormTransferService lWhFormTransferService;
     @Resource
     private DepUsingFormBackCoreServiceImpl depUsingFormBackCoreService;
+    @Resource
+    private UsingFormBackModelService UsingFormBackModelService;
 
     @Override
     public void add(UsingFormBackParam usingFormBackParam, FinSysTenantUser sysInfo, S_user_core currentUser) {
@@ -92,7 +97,8 @@
         String departmentName = department.getName();
 
         // 娣诲姞閫�鍥炶〃鍗�
-        Long usingFormBackId = addUsingFormBack(sysInfo, departmentId, departmentName, operatorId, operatorName, backTime, procureDoc);
+        Long usingFormBackId =
+            addUsingFormBack(sysInfo, departmentId, departmentName, operatorId, operatorName, backTime, procureDoc);
 
         // 鎵归噺鎻掑叆閫�鍥炲晢鍝佸拰閫�鍥炲晢鍝佹ā鍨�
         List<UsingFormBackGoods> goodsBatch = new ArrayList<>();
@@ -103,7 +109,8 @@
             goodsBatch.add(goods);
 
             for (baseGoodModel model : goodsInfo.getModels()) {
-                UsingFormBackModel formModel = createUsingFormBackModel(usingFormBackId, goods.getId(), goodsInfo, model);
+                UsingFormBackModel formModel =
+                    createUsingFormBackModel(usingFormBackId, goods.getId(), goodsInfo, model);
                 modelBatch.add(formModel);
             }
         }
@@ -112,7 +119,8 @@
         usingFormBackModelService.insertBatch(goodsBatch);
         usingFormBackGoodsService.insertBatch(modelBatch);
 
-        depUsingFormBackCoreService.updateBack(usingFormBackId, currentUser, DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        depUsingFormBackCoreService.updateBack(usingFormBackId, currentUser,
+            DateUtils.getDateTimeNumber(System.currentTimeMillis()));
     }
 
     private UsingFormBackGoods createUsingFormBackGoods(Long usingFormBackId, UsingFormBackGoodsInfo goodsInfo) {
@@ -133,8 +141,8 @@
         return goods;
     }
 
-    private UsingFormBackModel createUsingFormBackModel(Long usingFormBackId, Long usingFormBackGoodsId, UsingFormBackGoodsInfo goodsInfo,
-        baseGoodModel model) {
+    private UsingFormBackModel createUsingFormBackModel(Long usingFormBackId, Long usingFormBackGoodsId,
+        UsingFormBackGoodsInfo goodsInfo, baseGoodModel model) {
         UsingFormBackModel formModel = new UsingFormBackModel();
         formModel.setId(IdUtil.generateId());
         formModel.setUsingFormBackId(usingFormBackId);
@@ -154,21 +162,13 @@
         return formModel;
     }
 
-
     @Override
     public PageUtil selectPageByList(UsingFormBackQry usingFormBackParam) {
 
-        StringBuilder sql = new StringBuilder("SELECT\n"
-            + "\tDISTINCT ufb.ID,\n"
-            + "\tufb.BUSINESS_FORM_CODE,\n"
-            + "\tufb.DEPARTMENT_NAME,\n"
-            + "\tufb.OPERATOR_NAME,\n"
-            + "\tufb.DEAL_TIME\n"
-            + "FROM\n"
-            + "\tusing_form_back ufb\n"
-            + "\tLEFT JOIN using_form_back_goods ufbg ON ufb.ID = ufbg.USING_FORM_BACK_ID\n"
-            + "\tLEFT JOIN using_form_back_model ufbm ON ufbg.ID = ufbm.USING_FORM_BACK_GOODS_ID\n"
-            + "where 1=1 ");
+        StringBuilder sql = new StringBuilder("SELECT\n" + "\tDISTINCT ufb.ID,\n" + "\tufb.BUSINESS_FORM_CODE,\n"
+            + "\tufb.DEPARTMENT_NAME,\n" + "\tufb.OPERATOR_NAME,\n" + "\tufb.DEAL_TIME\n" + "FROM\n"
+            + "\tusing_form_back ufb\n" + "\tLEFT JOIN using_form_back_goods ufbg ON ufb.ID = ufbg.USING_FORM_BACK_ID\n"
+            + "\tLEFT JOIN using_form_back_model ufbm ON ufbg.ID = ufbm.USING_FORM_BACK_GOODS_ID\n" + "where 1=1 ");
 
         String businessFormCode = usingFormBackParam.getBusinessFormCode();
         Long departmentId = usingFormBackParam.getDepartmentId();
@@ -217,31 +217,15 @@
             map.put("createName", createName);
         }
         sql.append("ORDER BY ufb.CREATE_TIME DESC ");
-        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), map, usingFormBackParam.getPageNum(),
-            usingFormBackParam.getPageSize(), new MapperUtil());
+        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), map,
+            usingFormBackParam.getPageNum(), usingFormBackParam.getPageSize(), new MapperUtil());
         PageUtil pageUtil = new PageUtil(mapGenericPager);
         List<UsingFormBackVO> pageList = Lists.newArrayList();
         mapGenericPager.getDatas().forEach(item -> {
             UsingFormBackVO usingFormBackVO = MapUtils.convertMapToObj(item, UsingFormBackVO.class);
-
             Long id = usingFormBackVO.getId();
-            StringBuilder countSql = new StringBuilder("SELECT \n"
-                + "\tufbg.BASE_GOODS_TEMPLATE_NAME,\n"
-                + "\tsum(ufbm.COUNTS) count,\n"
-                + "\tufbm.UNIT\n"
-                + "FROM\n"
-                + "\tusing_form_back_goods ufbg\n"
-                + "\tLEFT JOIN using_form_back_model ufbm ON ufbg.ID = ufbm.USING_FORM_BACK_GOODS_ID\n"
-                + "where ufbg.USING_FORM_BACK_ID = :id group by ufbg.BASE_GOODS_TEMPLATE_ID ");
-            Map<String, Object> countSqlMap = new HashMap<>();
-            countSqlMap.put("id", id);
-            List<Map<String, Object>> select = this.select(countSql.toString(), countSqlMap, new MapperUtil());
-            List<BaseGoodsTemplateInfo> baseGoodsTemplateInfoList = Lists.newArrayList();
-            select.forEach(entity -> {
-                BaseGoodsTemplateInfo baseGoodsTemplateInfo = MapUtils.convertMapToObj(entity, BaseGoodsTemplateInfo.class);
-                baseGoodsTemplateInfoList.add(baseGoodsTemplateInfo);
-            });
-            usingFormBackVO.setGoodsTemplateInfoList(baseGoodsTemplateInfoList);
+            List<GoodsTemplateCountVO> usingCount = UsingFormBackModelService.getUsingCountByBusinessId(id);
+            usingFormBackVO.setGoodsTemplateInfoList(usingCount);
             pageList.add(usingFormBackVO);
         });
         pageUtil.setDatas(pageList);
@@ -250,28 +234,13 @@
 
     @Override
     public UsingFormBackDetailVO getDetail(Long id) {
-        StringBuilder sql = new StringBuilder("SELECT\n"
-            + "\tDISTINCT ufb.ID,\n"
-            + "\tufb.BUSINESS_FORM_CODE,\n"
-            + "\tufb.AGENCY_NAME,\n"
-            + "\tufb.DEPARTMENT_NAME,\n"
-            + "\tufb.OPERATOR_NAME,\n"
-            + "\tufb.DEAL_TIME,\n"
-            + "\tufb.PROCURE_DOC,\n"
-            + "\tufbg.CATEGORY_NAME,\n"
-            + "\tufbg.BASE_GOODS_TEMPLATE_NAME,\n"
-            + "\tufbg.CLASSIFICATION,\n"
-            + "\tufbg.BUSINESS_FORM_CODE,\n"
-            + "\tufbm.BASE_GOODS_MODELS_NAME,\n"
-            + "\tufbm.BASE_GOODS_TEMPLATE_ID,\n"
-            + "\tufbm.BASE_GOODS_MODELS_ID,\n"
-            + "\tufbm.UNIT,\n"
-            + "\tufbm.COUNTS,\n"
-            + "\tufbm.USE_COUNT,\n"
-            + "\tufbm.GOODS_USER_NAME\n"
-            + "FROM\n"
-            + "\tusing_form_back ufb\n"
-            + "\tLEFT JOIN using_form_back_goods ufbg ON ufb.ID = ufbg.USING_FORM_BACK_ID\n"
+        StringBuilder sql = new StringBuilder("SELECT\n" + "\tDISTINCT ufb.ID,\n" + "\tufb.BUSINESS_FORM_CODE,\n"
+            + "\tufb.AGENCY_NAME,\n" + "\tufb.DEPARTMENT_NAME,\n" + "\tufb.OPERATOR_NAME,\n" + "\tufb.DEAL_TIME,\n"
+            + "\tufb.PROCURE_DOC,\n" + "\tufbg.CATEGORY_NAME,\n" + "\tufbg.BASE_GOODS_TEMPLATE_NAME,\n"
+            + "\tufbg.CLASSIFICATION,\n" + "\tufbg.BUSINESS_FORM_CODE,\n" + "\tufbm.BASE_GOODS_MODELS_NAME,\n"
+            + "\tufbm.BASE_GOODS_TEMPLATE_ID,\n" + "\tufbm.BASE_GOODS_MODELS_ID,\n" + "\tufbm.UNIT,\n"
+            + "\tufbm.COUNTS,\n" + "\tufbm.USE_COUNT,\n" + "\tufbm.GOODS_USER_NAME\n" + "FROM\n"
+            + "\tusing_form_back ufb\n" + "\tLEFT JOIN using_form_back_goods ufbg ON ufb.ID = ufbg.USING_FORM_BACK_ID\n"
             + "\tLEFT JOIN using_form_back_model ufbm ON ufbg.ID = ufbm.USING_FORM_BACK_GOODS_ID where ufb.id =:id");
         Map<String, Object> map = new HashMap<>();
         map.put("id", id);
@@ -281,13 +250,15 @@
         }
         List<UsingFormBackDetailDTO> usingFormBackDetailDTOList = Lists.newArrayList();
         select.forEach(item -> {
-            UsingFormBackDetailDTO usingFormBackDetailDTO = MapUtils.convertMapToObj(item, UsingFormBackDetailDTO.class);
+            UsingFormBackDetailDTO usingFormBackDetailDTO =
+                MapUtils.convertMapToObj(item, UsingFormBackDetailDTO.class);
             usingFormBackDetailDTOList.add(usingFormBackDetailDTO);
         });
 
         UsingFormBackDetailVO usingFormBackDetailVO = new UsingFormBackDetailVO();
         List<UsingFormBackGoodsTemplateInfo> goodsTemplateInfoList = Lists.newArrayList();
-        usingFormBackDetailDTOList.stream().collect(Collectors.groupingBy(UsingFormBackDetailDTO::getBaseGoodsTemplateId))
+        usingFormBackDetailDTOList.stream()
+            .collect(Collectors.groupingBy(UsingFormBackDetailDTO::getBaseGoodsTemplateId))
             .forEach((templateId, templateInfo) -> {
                 UsingFormBackDetailDTO templateInfoDTO = templateInfo.get(0);
                 BeanUtils.copyProperties(templateInfoDTO, usingFormBackDetailVO);
@@ -300,24 +271,25 @@
                 goodsTemplateInfoList.add(usingFormBackGoodsTemplateInfo);
                 usingFormBackDetailVO.setGoodsTemplateInfoList(goodsTemplateInfoList);
                 List<UsingFormBackModelInfo> modelInfoList = Lists.newArrayList();
-                templateInfo.stream().collect(Collectors.groupingBy(UsingFormBackDetailDTO::getBaseGoodsModelsId)).forEach((modelId, modelInfo) -> {
-                    UsingFormBackDetailDTO modelInfoDTO = modelInfo.get(0);
-                    UsingFormBackModelInfo usingFormBackModelInfo = new UsingFormBackModelInfo();
-                    usingFormBackModelInfo.setBaseGoodsModelsName(modelInfoDTO.getBaseGoodsModelsName());
-                    usingFormBackModelInfo.setUnit(modelInfoDTO.getUnit());
-                    usingFormBackModelInfo.setId(modelId);
-                    modelInfoList.add(usingFormBackModelInfo);
-                    usingFormBackGoodsTemplateInfo.setModelInfoList(modelInfoList);
-                    List<UseInfo> useInfoList = Lists.newArrayList();
-                    for (UsingFormBackDetailDTO useInfoDTO : modelInfo) {
-                        UseInfo useInfo = new UseInfo();
-                        useInfo.setUseName(useInfoDTO.getGoodsUserName());
-                        useInfo.setReturnNum(useInfoDTO.getCounts());
-                        useInfo.setUseUnm(useInfoDTO.getUseCount());
-                        useInfoList.add(useInfo);
-                        usingFormBackModelInfo.setUseInfoList(useInfoList);
-                    }
-                });
+                templateInfo.stream().collect(Collectors.groupingBy(UsingFormBackDetailDTO::getBaseGoodsModelsId))
+                    .forEach((modelId, modelInfo) -> {
+                        UsingFormBackDetailDTO modelInfoDTO = modelInfo.get(0);
+                        UsingFormBackModelInfo usingFormBackModelInfo = new UsingFormBackModelInfo();
+                        usingFormBackModelInfo.setBaseGoodsModelsName(modelInfoDTO.getBaseGoodsModelsName());
+                        usingFormBackModelInfo.setUnit(modelInfoDTO.getUnit());
+                        usingFormBackModelInfo.setId(modelId);
+                        modelInfoList.add(usingFormBackModelInfo);
+                        usingFormBackGoodsTemplateInfo.setModelInfoList(modelInfoList);
+                        List<UseInfo> useInfoList = Lists.newArrayList();
+                        for (UsingFormBackDetailDTO useInfoDTO : modelInfo) {
+                            UseInfo useInfo = new UseInfo();
+                            useInfo.setUseName(useInfoDTO.getGoodsUserName());
+                            useInfo.setReturnNum(useInfoDTO.getCounts());
+                            useInfo.setUseUnm(useInfoDTO.getUseCount());
+                            useInfoList.add(useInfo);
+                            usingFormBackModelInfo.setUseInfoList(useInfoList);
+                        }
+                    });
             });
 
         return usingFormBackDetailVO;
@@ -325,21 +297,12 @@
 
     @Override
     public PageUtil selectPageByDetail(UsingFormBackQry usingFormBackParam) {
-        StringBuilder sql = new StringBuilder("SELECT\n"
-            + "\tufb.ID,\n"
-            + "\tufb.BUSINESS_FORM_CODE,\n"
-            + "\tufbm.BASE_GOODS_TEMPLATE_NAME,\n"
-            + "\tufbm.BASE_GOODS_MODELS_NAME,\n"
-            + "\tufbm.counts,\n"
-            + "\tufb.AGENCY_NAME,\n"
-            + "\tufb.DEPARTMENT_NAME,\n"
-            + "\tufb.OPERATOR_NAME,\n"
-            + "\tufb.DEAL_TIME\n"
-            + "FROM\n"
-            + "\tusing_form_back ufb\n"
+        StringBuilder sql = new StringBuilder("SELECT\n" + "\tufb.ID,\n" + "\tufb.BUSINESS_FORM_CODE,\n"
+            + "\tufbm.BASE_GOODS_TEMPLATE_NAME,\n" + "\tufbm.BASE_GOODS_MODELS_NAME,\n" + "\tufbm.counts,\n"
+            + "\tufb.AGENCY_NAME,\n" + "\tufb.DEPARTMENT_NAME,\n" + "\tufb.OPERATOR_NAME,\n" + "\tufb.DEAL_TIME\n"
+            + "FROM\n" + "\tusing_form_back ufb\n"
             + "\tLEFT JOIN using_form_back_goods ufbg ON ufb.ID = ufbg.USING_FORM_BACK_ID\n"
-            + "\tLEFT JOIN using_form_back_model ufbm ON ufbg.ID = ufbm.USING_FORM_BACK_GOODS_ID\n"
-            + "where 1=1 ");
+            + "\tLEFT JOIN using_form_back_model ufbm ON ufbg.ID = ufbm.USING_FORM_BACK_GOODS_ID\n" + "where 1=1 ");
 
         String businessFormCode = usingFormBackParam.getBusinessFormCode();
         Long departmentId = usingFormBackParam.getDepartmentId();
@@ -388,8 +351,8 @@
             map.put("createName", createName);
         }
         sql.append("ORDER BY ufb.CREATE_TIME DESC ");
-        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), map, usingFormBackParam.getPageNum(),
-            usingFormBackParam.getPageSize(), new MapperUtil());
+        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), map,
+            usingFormBackParam.getPageNum(), usingFormBackParam.getPageSize(), new MapperUtil());
         PageUtil pageUtil = new PageUtil(mapGenericPager);
         List<UsingFormBackDetailListVO> pageList = Lists.newArrayList();
         mapGenericPager.getDatas().forEach(item -> {
@@ -400,10 +363,9 @@
         return pageUtil;
     }
 
-
     @Transactional
-    public Long addUsingFormBack(FinSysTenantUser sysInfo, Long departmentId, String departmentName, Long operatorId, String operatorName, Long backTime,
-        String procureDoc) {
+    public Long addUsingFormBack(FinSysTenantUser sysInfo, Long departmentId, String departmentName, Long operatorId,
+        String operatorName, Long backTime, String procureDoc) {
         UsingFormBack usingFormBack = new UsingFormBack();
         usingFormBack.setId(IdUtil.generateId());
         usingFormBack.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.GOBACK));

--
Gitblit v1.9.1