From dc1800d4d2d252b7b37d80d9f54285200c94ff3c Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期三, 15 十一月 2023 19:34:40 +0800
Subject: [PATCH] 出库单管理

---
 consum-base/src/main/java/com/consum/base/pojo/response/FromTransferTemplateInfoVO.java |   21 
 consum-base/src/main/java/com/consum/base/pojo/response/LWHFromTransferExtendVO.java    |   77 +++
 consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java       |  191 +++++---
 consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputParam.java                  |    4 
 consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferGoodsInfoParam.java       |   40 +
 consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java              |   10 
 consum-base/src/main/java/com/consum/base/pojo/response/DetailVO.java                   |   41 +
 consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java     |   91 ++-
 consum-base/src/main/java/com/consum/base/pojo/response/FormTransferVO.java             |   23 +
 consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateVO.java            |   19 
 consum-model-pojo/src/main/java/com/consum/model/vo/LWhFormTransferVo.java              |    8 
 consum-base/src/main/java/com/consum/base/pojo/LWFormsOutputGoodsInfoParam.java         |    2 
 consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java   |   57 ++
 consum-base/src/main/java/com/consum/base/pojo/LWhTransferModelParam.java               |   38 +
 consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelUserParam.java            |    2 
 consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java       |   28 
 consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java         |  105 ----
 consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java                |   67 --
 consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java        |  134 ++++-
 consum-base/src/main/java/com/consum/base/controller/LWhFormScrappedController.java     |   42 +
 consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java        |    4 
 /dev/null                                                                               |   30 -
 consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java      |   14 
 consum-base/src/main/java/com/consum/base/service/BaseWarehouseServiceImpl.java         |   42 +
 consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java               |    2 
 consum-base/src/main/java/com/consum/base/pojo/response/FormTransferGoodsVO.java        |   30 +
 consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java     |    4 
 consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureParam.java                 |   95 ----
 consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParam.java                |   37 +
 consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java      |   16 
 consum-base/src/main/java/com/consum/base/service/FinSysTenantServiceImpl.java          |   30 
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java            |   65 ++
 32 files changed, 853 insertions(+), 516 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
index ee3ee21..27c9099 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
@@ -1,17 +1,29 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.MapUtils;
+import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.pojo.BaseGoodsTemplateParam;
+import com.consum.base.pojo.response.GoodsTemplateVO;
 import com.consum.base.service.BaseGoodsTemplateServiceImpl;
+import com.consum.base.service.BaseWarehouseServiceImpl;
+import com.consum.base.service.LWhGoodsService;
 import com.consum.model.po.BaseGoodsModels;
 import com.consum.model.po.BaseGoodsTemplate;
+import com.consum.model.po.BaseWarehouse;
 import com.consum.model.po.SDictData;
 import com.consum.model.vo.BaseGoodsTemplateVo;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.web.ResponseValue;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -32,6 +44,12 @@
 
     @Autowired
     private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
+
+    @Autowired
+    private LWhGoodsService lWhGoodsService;
+
+    @Autowired
+    private BaseWarehouseServiceImpl baseWarehouseService;
 
     /**
      * @Description 鏂板鐗╁搧妯℃澘
@@ -168,9 +186,6 @@
 
     @GetMapping("/query/goodsTemplate")
     public ResponseValue queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId) {
-//        if (agencyId == null) {
-//            return ResponseValue.error("鏈烘瀯id涓虹┖");
-//        }
         List<BaseGoodsTemplate> list = this.baseGoodsTemplateService.queryGoodsTemplateByCategoryId(agencyId, categoryId);
         if (list == null) {
             return ResponseValue.error("鏌ヨ澶辫触锛�");
@@ -179,5 +194,41 @@
     }
 
 
+    @ApiOperation(value = "鏌ヨ鏈烘瀯涓嬮粯璁や粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�", notes = "鏌ヨ鏈烘瀯涓嬮粯璁や粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "agencyId", value = "鐖剁骇鏈烘瀯id", required = true, dataType = "Long", paramType = "query"),
+        @ApiImplicitParam(name = "categoryId", value = "鍒嗙被id", required = true, dataType = "Long", paramType = "query")
+    })
+    @GetMapping("/query/warehouse/goods")
+    public ResponseValue queryWarehouseGoods(Long agencyId, Long categoryId) {
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("categoryId", categoryId);
+
+        List<BaseWarehouse> baseWarehouseList = baseWarehouseService.getByAgencyId(agencyId);
+        baseWarehouseList.forEach(baseWarehouse -> {
+            Integer isDefault = baseWarehouse.getIsDefault();
+            if (isDefault == 1) {
+                map.put("warehouseId", baseWarehouse.getId());
+            }
+        });
+
+        String sql = "SELECT DISTINCT bgt.id,bgt.GOODS_NAME FROM l_wh_goods g LEFT JOIN base_goods_template bgt ON g.BASE_GOODS_TEMPLATE_ID = bgt.id "
+            + "WHERE WAREHOUSE_TYPE = 0 "
+            + "AND WAREHOUSE_ID = :warehouseId "
+            + "AND CATEGORY_ID = :categoryId "
+            // 1:闆嗛噰,2:鑷��璐�
+            + "AND BUY_TYPE =1";
+
+        List<GoodsTemplateVO> resultList = Lists.newArrayList();
+        List<Map<String, Object>> goodsTemplateList = lWhGoodsService.select(sql, map, new MapperUtil());
+        goodsTemplateList.forEach(item -> {
+            GoodsTemplateVO goodsTemplateVO = MapUtils.convertMapToObj(item, GoodsTemplateVO.class);
+            resultList.add(goodsTemplateVO);
+        });
+        return ResponseValue.success("鏌ヨ鎴愬姛!", resultList);
+    }
+
+
 }
 
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
index 25f650a..398a0b7 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
@@ -5,11 +5,11 @@
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.excel.exception.ExcelDataConvertException;
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.FinSysTenantUtils;
 import com.consum.base.pojo.FinSysTenantParam;
 import com.consum.base.pojo.FinSysTenantSearchParam;
 import com.consum.base.service.FinSysTenantServiceImpl;
 import com.consum.base.service.FinSysTenantUserServiceImpl;
-import com.consum.base.core.utils.FinSysTenantUtils;
 import com.consum.model.po.FinSysTenant;
 import com.consum.model.po.FinSysTenantUser;
 import com.consum.model.vo.FinSysTenantUserResult;
@@ -17,6 +17,19 @@
 import com.walker.infrastructure.tree.TreeNode;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.web.ResponseValue;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.io.ClassPathResource;
@@ -26,13 +39,13 @@
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
+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 java.io.IOException;
-import java.io.InputStream;
-import java.net.URLEncoder;
-import java.util.*;
 
 /**
  * @Description 鍖哄垝
@@ -164,12 +177,12 @@
         // 鐪佽繘鍏� 鏌ヨ 鐪佸拰鍦板競 锛涘湴甯傝繘鍏� 鏌ヨ鑷繁鍦板競
         // TODO Long.valueOf(getSysInfo().getTenantId())
         FinSysTenant finSysTenant =
-                this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
+            this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
         if (finSysTenant.getLv() == 3) {
             return ResponseValue.error("鍘垮尯绾у埆鏃犳硶鏌ョ湅");
         }
         List<FinSysTenant> finSysTenantList =
-                this.finSysTenantService.queryTreeById(finSysTenant.getId(), finSysTenant.getLv());
+            this.finSysTenantService.queryTreeById(finSysTenant.getId(), finSysTenant.getLv());
         List<TreeNode> treeNodeList = new ArrayList<>();
         // 鐪佹煡鏈韩鍙婁互涓� 甯傛煡鏈骇 鍘挎棤鏉冩煡鐪�
         if (finSysTenant.getLv() == 1) {
@@ -181,7 +194,7 @@
             }
         } else {
             TreeNode treeNode = new TreeNode(finSysTenantList.get(0).getId(), finSysTenantList.get(0).getName(),
-                    new ArrayList<>(), finSysTenantList.get(0).getParentId(), finSysTenantList.get(0).getCode());
+                new ArrayList<>(), finSysTenantList.get(0).getParentId(), finSysTenantList.get(0).getCode());
             treeNodeList.add(treeNode);
         }
         return ResponseValue.success(treeNodeList);
@@ -196,12 +209,12 @@
         // 鐪佽繘鍏� 鏌ヨ 鐪佸拰鍦板競 锛涘湴甯傝繘鍏� 鏌ヨ鑷繁鍦板競
         // TODO Long.valueOf(getSysInfo().getTenantId())
         FinSysTenant finSysTenant =
-                this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
+            this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
         if (finSysTenant.getLv() == 3) {
             return ResponseValue.error("鍘垮尯绾у埆鏃犳硶鏌ョ湅");
         }
         Map<Long, List<FinSysTenant>> finSysTenantList =
-                this.finSysTenantService.queryCountyByCityCode(finSysTenant.getId(), finSysTenant.getLv());
+            this.finSysTenantService.queryCountyByCityCode(finSysTenant.getId(), finSysTenant.getLv());
         return ResponseValue.success(finSysTenantList);
     }
 
@@ -272,7 +285,7 @@
 
     protected TreeNode toTreeNode(FinSysTenant entity) {
         TreeNode treeNode =
-                new TreeNode(entity.getId(), entity.getName(), (List) null, entity.getParentId(), entity.getCode());
+            new TreeNode(entity.getId(), entity.getName(), (List) null, entity.getParentId(), entity.getCode());
         return treeNode;
     }
 
@@ -297,7 +310,7 @@
     @RequestMapping("/select/allList")
     public ResponseValue allList(FinSysTenantSearchParam param) {
         StringBuilder whStr = new StringBuilder("where 1=1 and status = 1 and is_delete = 0 ");
-        HashMap  parameter = new HashMap<>();
+        HashMap parameter = new HashMap<>();
         if (param.getFirstZmS() != null && !param.getFirstZmS().equals("")) {
             whStr.append(" and name is not null and(");
             String upperCase = param.getFirstZmS().toUpperCase();
@@ -314,6 +327,7 @@
 
     /**
      * 鍒犻櫎
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/4
      */
@@ -322,17 +336,18 @@
         if (param.getId() == null) {
             return ResponseValue.error("鏈烘瀯id涓虹┖");
         }
-        int num =this.finSysTenantService.updateById(param,this.getSysInfo());
-        return num>0 ? ResponseValue.success(1):ResponseValue.error("鍒犻櫎澶辫触锛�");
+        int num = this.finSysTenantService.updateById(param, this.getSysInfo());
+        return num > 0 ? ResponseValue.success(1) : ResponseValue.error("鍒犻櫎澶辫触锛�");
     }
 
     /**
      * 娣诲姞鏈烘瀯
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/4
      */
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody FinSysTenantParam param){
+    public ResponseValue add(@RequestBody FinSysTenantParam param) {
         if (param == null) {
             return ResponseValue.error("鍙傛暟涓虹┖");
         }
@@ -351,8 +366,10 @@
         if (lv > 4) {
             return ResponseValue.error("涓嶈兘鍒涘缓鏀眬浠ヤ笅鏈烘瀯");
         }
-        int num = this.finSysTenantService.addFinSysTenant(param,this.getSysInfo(),lv);
-        if(num>0) return ResponseValue.success(1);
+        int num = this.finSysTenantService.addFinSysTenant(param, this.getSysInfo(), lv);
+        if (num > 0) {
+            return ResponseValue.success(1);
+        }
         return ResponseValue.error("鎻掑叆澶辫触锛�");
     }
 
@@ -371,9 +388,9 @@
         InputStreamResource resourceToDownload = new InputStreamResource(inputStream);
         // 杩斿洖甯︽湁鏂囦欢杈撳叆娴佺殑ResponseEntity瀵硅薄
         return ResponseEntity
-                .status(HttpStatus.OK)
-                .headers(headers)
-                .body(resourceToDownload);
+            .status(HttpStatus.OK)
+            .headers(headers)
+            .body(resourceToDownload);
     }
 
 
@@ -396,20 +413,20 @@
         InputStreamResource resourceToDownload = new InputStreamResource(inputStream);
         // 杩斿洖甯︽湁鏂囦欢杈撳叆娴佺殑ResponseEntity瀵硅薄
         return ResponseEntity
-                .status(HttpStatus.OK)
-                .headers(headers)
-                .body(resourceToDownload);
+            .status(HttpStatus.OK)
+            .headers(headers)
+            .body(resourceToDownload);
     }
 
 
     @PostMapping("import")
     public ResponseValue upload(@RequestParam Long pid, MultipartFile file) throws IOException {
         String originalFilename = file.getOriginalFilename();
-        if (!"xls".equals(originalFilename.substring(originalFilename.lastIndexOf(".") + 1))){
+        if (!"xls".equals(originalFilename.substring(originalFilename.lastIndexOf(".") + 1))) {
             return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
         }
         FinSysTenantUser sysInfo = this.getSysInfo();
-        if (sysInfo==null){
+        if (sysInfo == null) {
             return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
         }
         String parentIdStr = pid + "";
@@ -420,17 +437,20 @@
 
         EasyExcel.read(file.getInputStream(), FinSysTenantParam.class, new AnalysisEventListener<FinSysTenantParam>() {
             LinkedList<FinSysTenantParam> finSysTenantParams = new LinkedList<>();
+
             @Override
             public void invoke(FinSysTenantParam finSysTenantParam, AnalysisContext analysisContext) {
-                if (StringUtils.isEmpty(finSysTenantParam.getCode())||finSysTenantParam.getCode().length()>20){
-                    IllegalStateException exception = new IllegalStateException("绗�" + analysisContext.readSheetHolder().getRowIndex() + "琛�,鏈烘瀯缂栧彿涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�20");
+                if (StringUtils.isEmpty(finSysTenantParam.getCode()) || finSysTenantParam.getCode().length() > 20) {
+                    IllegalStateException exception = new IllegalStateException(
+                        "绗�" + analysisContext.readSheetHolder().getRowIndex() + "琛�,鏈烘瀯缂栧彿涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�20");
                     throw exception;
                 }
-                if (null!=finSysTenantService.selectByTenantId(finSysTenantParam.getCode())){
+                if (null != finSysTenantService.selectByTenantId(finSysTenantParam.getCode())) {
                     throw new IllegalStateException("绗�" + analysisContext.readSheetHolder().getRowIndex() + "琛�,鏈烘瀯缂栧彿宸插瓨鍦�");
                 }
-                if (StringUtils.isEmpty(finSysTenantParam.getName())||finSysTenantParam.getName().length()>100){
-                    IllegalStateException exception = new IllegalStateException("绗�" + analysisContext.readSheetHolder().getRowIndex() + "琛�,鏈烘瀯鍚嶇О涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�100");
+                if (StringUtils.isEmpty(finSysTenantParam.getName()) || finSysTenantParam.getName().length() > 100) {
+                    IllegalStateException exception = new IllegalStateException(
+                        "绗�" + analysisContext.readSheetHolder().getRowIndex() + "琛�,鏈烘瀯鍚嶇О涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�100");
                     throw exception;
                 }
                 finSysTenantParam.setParentId(pid);
@@ -438,33 +458,37 @@
                 finSysTenantParam.setSummary("绯荤粺瀵煎叆");
                 finSysTenantParams.add(finSysTenantParam);
             }
+
             @Override
             public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-                finSysTenantService.insertFinSysTenantBatch(finSysTenantParams,sysInfo,lv);
+                finSysTenantService.insertFinSysTenantBatch(finSysTenantParams, sysInfo, lv);
             }
 
             @Override
             public void onException(Exception exception, AnalysisContext context) {
                 // 濡傛灉鏄煇涓�涓崟鍏冩牸鐨勮浆鎹㈠紓甯� 鑳借幏鍙栧埌鍏蜂綋琛屽彿
                 if (exception instanceof ExcelDataConvertException) {
-                    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()+" ]");
+                    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() + " ]");
                 }
-                if (exception instanceof IllegalStateException){
-                    throw (IllegalStateException)exception;
+                if (exception instanceof IllegalStateException) {
+                    throw (IllegalStateException) exception;
                 }
 
             }
 
         }).doReadAll();
 
-        return ResponseValue.success("瀵煎叆鎴愬姛!",1);
+        return ResponseValue.success("瀵煎叆鎴愬姛!", 1);
     }
 
     /**
      * 缂栬緫
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/6
      */
@@ -482,8 +506,8 @@
 //        if (finSysTenant1.getLv() != 1) {
 //            return ResponseValue.error("鏆傛棤淇敼鏉冮檺");
 //        }
-        int num = this.finSysTenantService.updateFinSysTenant(finSysTenant,this.getSysInfo());
-        return num>0 ? ResponseValue.success(1):ResponseValue.error("缂栬緫澶辫触锛�");
+        int num = this.finSysTenantService.updateFinSysTenant(finSysTenant, this.getSysInfo());
+        return num > 0 ? ResponseValue.success(1) : ResponseValue.error("缂栬緫澶辫触锛�");
     }
 
     /**
@@ -564,4 +588,30 @@
         }
         return ResponseValue.success(finSysTenantUserResults);
     }
+
+    @ApiOperation(value = "鑾峰彇鐖剁骇鏈烘瀯", notes = "鑾峰彇鐖剁骇鏈烘瀯")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "Authorization", value = "token", dataType = "String", paramType = "header"),
+    })
+    @GetMapping("/get/parent/tenant")
+    public ResponseValue getParentTenant() {
+        FinSysTenantUser sysInfo = getSysInfo();
+        if (sysInfo == null) {
+            return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        String tenantId = sysInfo.getTenantId();
+        FinSysTenant finSysTenant = new FinSysTenant();
+        finSysTenant.setTempId(Long.valueOf(tenantId));
+        FinSysTenant userTenant = this.finSysTenantService.get(finSysTenant);
+        Long parentId = userTenant.getParentId();
+        //绗竴绾�
+        if (parentId == 0) {
+            return ResponseValue.success(userTenant);
+        } else {
+            FinSysTenant param = new FinSysTenant();
+            param.setTempId(Long.valueOf(parentId));
+            FinSysTenant result = this.finSysTenantService.get(param);
+            return ResponseValue.success(result);
+        }
+    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java b/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java
index 3cacb64..f9e8b0b 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java
@@ -1,10 +1,10 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.utils.MapUtils;
 import com.consum.base.pojo.LWarehouseFlowParam;
 import com.consum.base.pojo.response.WarehouseFlowVO;
 import com.consum.base.service.LWarehouseFlowService;
-import com.consum.base.core.utils.MapUtils;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.web.ResponseValue;
@@ -52,4 +52,16 @@
 
         return ResponseValue.success(genericPager);
     }
+
+
+    @GetMapping("/detail/list")
+    public ResponseValue queryFormProcureList1(LWarehouseFlowParam param) {
+        S_user_core currentUser = this.getCurrentUser();
+        if (currentUser == null) {
+            return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        GenericPager<Map<String, Object>> genericPager = lWarehouseFlowService.queryBusinessFlow(param);
+        return ResponseValue.success(genericPager);
+    }
+
 }
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 931b356..4d66964 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
@@ -3,13 +3,15 @@
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.MapUtils;
-import com.consum.base.pojo.LWhFormOutputInsertParam;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.pojo.LWhFormOutputParam;
 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.LWhFormOutputExtendVO;
+import com.consum.base.service.LWarehouseFlowService;
 import com.consum.base.service.LWhFormOutputServiceImpl;
 import com.consum.base.service.LWhGoodsService;
 import com.consum.base.service.LWhProcureModelService;
@@ -26,6 +28,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Resource;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -50,6 +53,8 @@
     private LWhProcureModelService lWhProcureModelService;
     @Autowired
     private LWhGoodsService lWhGoodsService;
+    @Resource
+    private LWarehouseFlowService lWarehouseFlowService;
 
     /**
      * @Description 鏂板鍑哄簱鍗�
@@ -62,7 +67,7 @@
     })
     @PostMapping("/add")
     public ResponseValue add() {
-        LWhFormOutputInsertParam param = CommonUtil.getObjFromReqBody(LWhFormOutputInsertParam.class);
+        LWhFormOutputParam param = CommonUtil.getObjFromReqBody(LWhFormOutputParam.class);
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -106,9 +111,9 @@
                     + "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);
+                List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
                 for (Map<String, Object> map : procureModelList) {
-                    FormOutputTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(map), FormOutputTemplateInfoVO.class);
+                    FormOutputTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormOutputTemplateInfoVO.class);
                     procureTemplateInfoList.add(procureTemplateInfoVO);
                 }
                 formOutputVO.setFormOutputTemplateInfoList(procureTemplateInfoList);
@@ -146,10 +151,10 @@
             + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id ";
         Map<String, Object> paramMap = new HashMap<>();
         paramMap.put("id", lWhFormOutputExtendVO.getId());
-        List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap);
+        List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap, new MapperUtil());
         List<FormOutputGoodsVO> fromOutputGoods = Lists.newArrayList();
         for (Map<String, Object> map : procureModelList) {
-            FormOutputGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(map), FormOutputGoodsVO.class);
+            FormOutputGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormOutputGoodsVO.class);
 
             // 鏌ヨ鍨嬪彿鏁伴噺
             List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
@@ -157,9 +162,9 @@
                 + "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";
-            List<Map<String, Object>> modelList = lWhFormOutputService.select(sql2, paramMap);
+            List<Map<String, Object>> modelList = lWhFormOutputService.select(sql2, paramMap, new MapperUtil());
             modelList.forEach(item -> {
-                GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(item), GoodsModelVO.class);
+                GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                 goodsModelVOList.add(goodsModelVO);
             });
             procureTemplateInfoVO.setModels(goodsModelVOList);
@@ -191,16 +196,15 @@
 
     @ApiOperation(value = "鏌ヨ鍑哄簱鍗曡鎯呮槑缁�", notes = "鏌ヨ鍑哄簱鍗曡鎯呮槑缁�")
     @ApiImplicitParam(name = "formOutputQry", value = "鍑哄簱鍗曡鎯呮煡璇㈡潯浠�", required = true, dataType = "LWhFormOutputQry", paramType = "query")
-    @GetMapping("detail/list")
+    @GetMapping("/detail/list")
     public ResponseValue queryFormOutputDetailList() {
         LWhFormOutputQry formOutputQry = CommonUtil.getObjFromReq(LWhFormOutputQry.class);
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-
-        GenericPager genericPager = lWhFormOutputService.queryFormOutputDetailList(formOutputQry);
-        return ResponseValue.success(genericPager);
+        GenericPager<Map<String, Object>> mapGenericPager = lWarehouseFlowService.queryBusinessFlowDetail(formOutputQry);
+        return ResponseValue.success(mapGenericPager);
     }
 
 }
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 0bef5bb..38adcd8 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
@@ -7,9 +7,9 @@
 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.pojo.LWhFormProcureGoodsParams;
+import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
 import com.consum.base.pojo.LWhFormProcureParam;
-import com.consum.base.pojo.LWhProcureModelParams;
+import com.consum.base.pojo.LWhProcureModelParam;
 import com.consum.base.pojo.query.FormProcureQry;
 import com.consum.base.pojo.response.FormProcureVO;
 import com.consum.base.pojo.response.FromProcureTemplateInfoVO;
@@ -104,7 +104,7 @@
         String tenantId = sysTenantUser.getTenantId();
         String tenantName = sysTenantUser.getTenantName();
 
-        List<LWhFormProcureGoodsParams> procureGoods = param.getProcureGoods();
+        List<LWhFormProcureGoodsInfoParam> procureGoods = param.getProcureGoods();
         if (CollectionUtils.isEmpty(procureGoods)) {
             return ResponseValue.error("閲囪喘鍗曚笉鑳戒负绌�");
         }
@@ -123,7 +123,7 @@
         ArrayList<LWhProcureModel> procureModelList = new ArrayList<>();
 
         for (int i = 0; i < procureGoods.size(); i++) {
-            LWhFormProcureGoodsParams procureGoodT = procureGoods.get(i);
+            LWhFormProcureGoodsInfoParam procureGoodT = procureGoods.get(i);
             Long baseCategoryId = procureGoodT.getBaseCategoryId();
             Long baseGoodsTemplateId = procureGoodT.getBaseGoodsTemplateId();
             String supplier = procureGoodT.getSupplier();
@@ -132,7 +132,7 @@
                 supplierList.add(supplier);
             }
 
-            List<LWhProcureModelParams> models = procureGoodT.getModels();
+            List<LWhProcureModelParam> models = procureGoodT.getModels();
             if (CollectionUtils.isEmpty(models)) {
                 return ResponseValue.error("閲囪喘鍗曚笉鑳戒负绌�");
             }
@@ -146,7 +146,7 @@
             procureGood.setGoodsTemplateName(procureGoodT.getGoodsTemplateName());
             procureGood.setSupplier(supplier);
             procureGood.setSort(i);
-            for (LWhProcureModelParams modelT : models) {
+            for (LWhProcureModelParam modelT : models) {
                 Integer counts = modelT.getCounts();
                 if (counts == null || counts <= 0) {
                     return ResponseValue.error("鍨嬪彿鐨勯噰璐暟閲忓彧鑳戒负姝f暣鏁�");
@@ -245,9 +245,9 @@
                     + "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);
+                List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
                 for (Map<String, Object> map : procureModelList) {
-                    FromProcureTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(map), FromProcureTemplateInfoVO.class);
+                    FromProcureTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FromProcureTemplateInfoVO.class);
                     procureTemplateInfoList.add(procureTemplateInfoVO);
                 }
                 fromProcureVO.setFromProcureTemplateInfoList(procureTemplateInfoList);
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 6e6c912..e5bad62 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,24 +1,27 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
-import com.consum.base.pojo.*;
+import com.consum.base.pojo.LWhFormScrappedExtend;
+import com.consum.base.pojo.LWhFormScrappedParam;
 import com.consum.base.service.LWhFormScrappedGoodsService;
 import com.consum.base.service.LWhFormScrappedServiceImpl;
-import com.consum.model.po.*;
-import com.consum.model.vo.LWhFormOutputVo;
-import com.consum.model.vo.LWhFormTransferVo;
-import com.iplatform.model.po.S_user_core;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LWhFormScrapped;
+import com.consum.model.po.LWhFormScrappedGoods;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.web.ResponseValue;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+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.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @Description 鎶ュ簾鍗�
@@ -35,20 +38,22 @@
     private LWhFormScrappedGoodsService scrappedGoodsService;
 
     /**
-     * @Description  鏂板鎶ュ簾鍗�
+     * @Description 鏂板鎶ュ簾鍗�
      * @Author 鍗㈠簡闃�
      * @Date 2023/11/1
      */
     @PostMapping("/add")
     public ResponseValue add(@RequestBody LWhFormScrappedParam param) {
         FinSysTenantUser sysInfo = this.getSysInfo();
-        int result = this.lWhFormScrappedService.add(param, this.getCurrentUser(),sysInfo);
-        if (result > 0) return ResponseValue.success(1);
+        int result = this.lWhFormScrappedService.add(param, this.getCurrentUser(), sysInfo);
+        if (result > 0) {
+            return ResponseValue.success(1);
+        }
         return ResponseValue.error("鏂板澶辫触锛�");
     }
 
     /**
-     * @Description  鍒楄〃鏌ヨ
+     * @Description 鍒楄〃鏌ヨ
      * @Author 鍗㈠簡闃�
      * @Date 2023/11/02
      */
@@ -61,7 +66,7 @@
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
 
-        GenericPager genericPager = lWhFormScrappedService.queryList(param,sysInfo);
+        GenericPager genericPager = lWhFormScrappedService.queryList(param, sysInfo);
         List<LWhFormScrapped> datas = genericPager.getDatas();
         ArrayList<LWhFormScrappedExtend> newDatas = new ArrayList<>();
         if (!CollectionUtils.isEmpty(datas)) {
@@ -88,7 +93,7 @@
     }
 
     /**
-     * @Description  鏍规嵁id鏌ヨ璇︽儏
+     * @Description 鏍规嵁id鏌ヨ璇︽儏
      * @Author 鍗㈠簡闃�
      * @Date 2023/11/2
      */
@@ -103,6 +108,7 @@
 
     /**
      * 鎶ュ簾鏄庣粏
+     *
      * @param param
      * @return
      */
@@ -112,12 +118,12 @@
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        GenericPager<Map<String, Object>> genericPager = lWhFormScrappedService.queryDetailList(param,sysInfo);
+        GenericPager<Map<String, Object>> genericPager = lWhFormScrappedService.queryDetailList(param, sysInfo);
         return ResponseValue.success(genericPager);
     }
 
     /**
-     * @Description  瀵煎嚭鎶ュ簾鐧昏鍗�
+     * @Description 瀵煎嚭鎶ュ簾鐧昏鍗�
      * @Author 鍗㈠簡闃�
      * @Date 2023/11/2
      */
@@ -126,7 +132,7 @@
         if (id == null) {
             return ResponseValue.error("鎶ュ簾鍗昳d涓虹┖");
         }
-        LWhFormScrappedExtend scrappedExtend = this.lWhFormScrappedService.export(id,this.getSysInfo());
+        LWhFormScrappedExtend scrappedExtend = this.lWhFormScrappedService.export(id, this.getSysInfo());
         return ResponseValue.success(scrappedExtend);
     }
 
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 cdb40c7..24c767c 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,21 +1,25 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+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.LWhFormTransferGoodsInfoParam;
 import com.consum.base.pojo.LWhFormTransferParam;
-import com.consum.base.pojo.LWhProcureModelParams;
 import com.consum.base.pojo.ProcureModelInfoDto;
 import com.consum.base.pojo.UseRecordDto;
 import com.consum.base.pojo.UseRecordSkuDto;
 import com.consum.base.pojo.query.TransferQry;
+import com.consum.base.pojo.response.FormTransferVO;
+import com.consum.base.pojo.response.FromTransferTemplateInfoVO;
+import com.consum.base.pojo.response.LWHFromTransferExtendVO;
 import com.consum.base.pojo.response.TransferInfoVO;
 import com.consum.base.service.BaseGoodsModelsServiceImpl;
-import com.consum.base.service.BaseWarehouseServiceImpl;
 import com.consum.base.service.LWhFormTransferCoreService;
 import com.consum.base.service.LWhFormTransferServiceImpl;
 import com.consum.base.service.LWhProcureModelService;
 import com.consum.base.service.LWhProcureModelUserRecordServiceImpl;
 import com.consum.base.service.LWhProcureModelUserServiceImpl;
-import com.consum.base.core.utils.IdUtil;
 import com.consum.model.po.BaseGoodsModels;
 import com.consum.model.po.FinSysTenantUser;
 import com.consum.model.po.LWhFormTransfer;
@@ -23,8 +27,6 @@
 import com.consum.model.po.LWhProcureModelUser;
 import com.consum.model.po.LWhProcureModelUserRecord;
 import com.consum.model.vo.LWhFormOutputVo;
-import com.consum.model.vo.LWhFormTransferVo;
-import com.consum.model.vo.LWhProcureModelVo;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
@@ -36,6 +38,7 @@
 import io.swagger.annotations.ApiOperation;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.compress.utils.Lists;
@@ -60,8 +63,6 @@
     @Autowired
     private LWhFormTransferServiceImpl lWhFormTransferService;
     @Autowired
-    private BaseWarehouseServiceImpl baseWarehouseService;
-    @Autowired
     private LWhProcureModelService lWhProcureModelService;
     @Autowired
     private LWhFormTransferCoreService lWhFormTransferCoreService;
@@ -78,16 +79,16 @@
     @ApiOperation(value = "鍗曟嵁鏂板", notes = "鍗曟嵁鏂板")
     @ApiImplicitParam(name = "param", value = "鍗曟嵁鏂板", required = true, dataType = "LWhFormTransferParam")
     @PostMapping("/add")
-    public ResponseValue add(@RequestBody LWhFormTransferParam param) {
+    public ResponseValue add(@RequestBody LWhFormTransferParam param) throws Exception {
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        List<LWhProcureModelParams> transferGoods = param.getModels();
+        List<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods();
         if (CollectionUtils.isEmpty(transferGoods)) {
             return ResponseValue.error("璋冩嫧鍗曚笉鑳戒负绌�");
         }
-        int result = this.lWhFormTransferService.add(param, currentUser, this.getSysInfo());
+        int result = this.lWhFormTransferService.add(param, this.getSysInfo());
         if (result > 0) {
             return ResponseValue.success(1);
         }
@@ -98,26 +99,52 @@
      * @Description 鍒楄〃鏌ヨ(璋冩嫧鏄庣粏)
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
+     * <p>
+     * 1.鏌ヨ璋冩嫧鍗�
+     * <p>
+     * 2.鏌ヨ鐗╁搧鍨嬪彿
      */
-//    1.鏌ヨ璋冩嫧鍗�
-//    2.鏌ヨ鐗╁搧鍨嬪彿
+    @ApiOperation(value = "鍗曟嵁鍒楄〃鏌ヨ", notes = "鍗曟嵁鍒楄〃鏌ヨ")
+    @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"),
+    })
     @GetMapping("/list")
     public ResponseValue queryFormTransferList(TransferQry param) {
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        FinSysTenantUser sysInfo = getSysInfo();
-
-        //鍙兘鏌ヨ鏈骇 鍙婁互涓嬫満鏋勭殑璋冩嫧鍗�
-        //??????
 
         GenericPager genericPager = lWhFormTransferService.queryFormTransferList(param);
         List<LWhFormTransfer> datas = genericPager.getDatas();
-        ArrayList<LWhFormTransferVo> newDatas = new ArrayList<>();
+        ArrayList<FormTransferVO> result = new ArrayList<>();
         if (!CollectionUtils.isEmpty(datas)) {
             datas.forEach(item -> {
+                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);
+
+                result.add(formTransferVO);
+
+
+                /*// 鏌ヨ鍨嬪彿鏁伴噺
                 LWhProcureModel lWhProcureModel = new LWhProcureModel();
                 Integer businessType = item.getBusinessType();
                 // TODO 璋冩嫧=0 鍒嗗彂=1 閫�鍥�=2
@@ -130,10 +157,6 @@
                         break;
                 }
                 lWhProcureModel.setBusinessId(item.getId());
-
-                LWhFormTransferVo formTransferExtend = new LWhFormTransferVo();
-                BeanUtils.copyProperties(item, formTransferExtend);
-
                 List<LWhProcureModel> models = lWhProcureModelService.select(lWhProcureModel);
                 List<LWhProcureModelVo> lWhProcureModelVoList = new ArrayList<>();
                 if (!CollectionUtils.isEmpty(models)) {
@@ -153,15 +176,14 @@
                         lWhProcureModelVoList.add(lWhProcureModelVo);
                     });
                 }
-
                 formTransferExtend.setModels(lWhProcureModelVoList);
-                newDatas.add(formTransferExtend);
+                newDatas.add(formTransferExtend);*/
             });
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
             fieldDatas.setAccessible(true);
-            fieldDatas.set(genericPager, newDatas);
+            fieldDatas.set(genericPager, result);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -173,12 +195,16 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
      */
+    @ApiOperation(value = "鏍规嵁id鏌ヨ璇︽儏", notes = "鏍规嵁id鏌ヨ璇︽儏")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
+    })
     @GetMapping("/detail")
     public ResponseValue getById(Long id) {
         if (id == null) {
             return ResponseValue.error("璋冩嫧鍗昳d涓虹┖");
         }
-        LWhFormTransferVo vo = this.lWhFormTransferService.getById(id);
+        LWHFromTransferExtendVO vo = this.lWhFormTransferService.getById(id);
         return ResponseValue.success(vo);
     }
 
@@ -188,6 +214,10 @@
      * @author 鍗㈠簡闃�
      * @date 2023/10/31
      */
+    @ApiOperation(value = "鎾ら攢", notes = "鎾ら攢")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
+    })
     @PostMapping("/updStatus")
     public ResponseValue updateStatus(Long id) {
         if (id == null) {
@@ -203,6 +233,10 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/31
      */
+    @ApiOperation(value = "璋冩嫧鍏ュ簱", notes = "璋冩嫧鍏ュ簱")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
+    })
     @PostMapping("/income")
     public ResponseValue income(Long id) {
         lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser());
@@ -214,6 +248,10 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/31
      */
+    @ApiOperation(value = "璋冩嫧鍑哄簱", notes = "璋冩嫧鍑哄簱")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),
+    })
     @PostMapping("/output")
     public ResponseValue output(Long id) {
         lWhFormTransferCoreService.doTransferOutPut(id, getCurrentUser());
@@ -366,9 +404,6 @@
     })
     @GetMapping("/query/detail")
     public ResponseValue queryDepartmentTransferOrder(Long agencyId) {
-
-
-
 
         TransferInfoVO transferInfoVO = new TransferInfoVO();
         return ResponseValue.success(transferInfoVO);
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWFormsOutputGoodsParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWFormsOutputGoodsInfoParam.java
similarity index 94%
rename from consum-base/src/main/java/com/consum/base/pojo/LWFormsOutputGoodsParam.java
rename to consum-base/src/main/java/com/consum/base/pojo/LWFormsOutputGoodsInfoParam.java
index cf9861f..b87eff9 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWFormsOutputGoodsParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWFormsOutputGoodsInfoParam.java
@@ -12,7 +12,7 @@
  */
 @ApiModel(value = "璁板綍鐗╁搧淇℃伅鍜岃鏍煎瀷鍙�")
 @Data
-public class LWFormsOutputGoodsParam {
+public class LWFormsOutputGoodsInfoParam {
 
 
     /**
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputExtend.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputExtend.java
deleted file mode 100644
index 10d7587..0000000
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputExtend.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.consum.base.pojo;
-
-import com.consum.model.po.LWhFormOutput;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhProcureModel;
-
-import java.util.List;
-
-/**
- * @ClassName LWhFormProcureExtend
-
- * @Date 2023/10/27
- * @Description
- * @Version 1.0
- **/
-public class LWhFormOutputExtend extends LWhFormOutput {
-
-    private List<LWhProcureModel> models;
-
-    public List<LWhProcureModel> getModels() {
-        return models;
-    }
-
-    public void setModels(List<LWhProcureModel> models) {
-        this.models = models;
-    }
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputInsertParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputParam.java
similarity index 87%
rename from consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputInsertParam.java
rename to consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputParam.java
index 7e1135b..452ceaf 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputInsertParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormOutputParam.java
@@ -13,7 +13,7 @@
  */
 @ApiModel(value = "LWhFormOutputInsertParam")
 @Data
-public class LWhFormOutputInsertParam extends ParamRequest {
+public class LWhFormOutputParam extends ParamRequest {
 
     /**
      * 浠撳簱id
@@ -34,7 +34,7 @@
      * 璁板綍鐗╁搧淇℃伅鍜岃鏍煎瀷鍙�
      */
     @ApiModelProperty(value = "璁板綍鐗╁搧淇℃伅鍜岃鏍煎瀷鍙�")
-    private List<LWFormsOutputGoodsParam> goods;
+    private List<LWFormsOutputGoodsInfoParam> goods;
 
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureExtend.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureExtend.java
deleted file mode 100644
index a537924..0000000
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureExtend.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.consum.base.pojo;
-
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhProcureModel;
-
-import java.util.List;
-
-/**
- * @ClassName LWhFormProcureExtend
-
- * @Date 2023/10/27
- * @Description
- * @Version 1.0
- **/
-public class LWhFormProcureExtend extends LWhFormProcure {
-
-    private List<LWhProcureModel> models;
-    private List<LWhFormProcureGoodsParams> procureGoods;
-
-    public List<LWhProcureModel> getModels() {
-        return models;
-    }
-
-    public void setModels(List<LWhProcureModel> models) {
-        this.models = models;
-    }
-
-    public List<LWhFormProcureGoodsParams> getProcureGoods() {
-        return procureGoods;
-    }
-
-    public void setProcureGoods(List<LWhFormProcureGoodsParams> procureGoods) {
-        this.procureGoods = procureGoods;
-    }
-}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
similarity index 83%
rename from consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java
rename to consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
index edbbe55..8371567 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
@@ -11,7 +11,7 @@
  * @Version 1.0
  **/
 @Data
-public class LWhFormProcureGoodsParams extends ParamRequest {
+public class LWhFormProcureGoodsInfoParam extends ParamRequest {
 
     //鍒嗙被缂栧彿
     private Long baseCategoryId = null;
@@ -20,7 +20,7 @@
     //渚涘簲鍟�
     private String supplier = null;
 
-    private List<LWhProcureModelParams> models;
+    private List<LWhProcureModelParam> models;
 
     // 涓婚敭
     private Long id = null;
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureParam.java
index 06c1918..5952203 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureParam.java
@@ -39,39 +39,8 @@
     /**
      * 閲囪喘鍗曞瀷鍙�
      */
-    private List<LWhFormProcureGoodsParams> procureGoods;
+    private List<LWhFormProcureGoodsInfoParam> procureGoods;
 
-    public Long getWarehouseId() {
-        return warehouseId;
-    }
-
-    public void setWarehouseId(Long warehouseId) {
-        this.warehouseId = warehouseId;
-    }
-
-    public String getProcureDoc() {
-        return procureDoc;
-    }
-
-    public void setProcureDoc(String procureDoc) {
-        this.procureDoc = procureDoc;
-    }
-
-    public Integer getBuyType() {
-        return buyType;
-    }
-
-    public void setBuyType(Integer buyType) {
-        this.buyType = buyType;
-    }
-
-    public List<LWhFormProcureGoodsParams> getProcureGoods() {
-        return procureGoods;
-    }
-
-    public void setProcureGoods(List<LWhFormProcureGoodsParams> procureGoods) {
-        this.procureGoods = procureGoods;
-    }
 
     /**
      * 鍏ュ簱鍗曞彿
@@ -103,67 +72,5 @@
      */
     private Long incomeTimeEnd;
 
-    public String getBusinessFormCode() {
-        return businessFormCode;
-    }
 
-    public void setBusinessFormCode(String businessFormCode) {
-        this.businessFormCode = businessFormCode;
-    }
-
-    public String getGoodsTemplateName() {
-        return goodsTemplateName;
-    }
-
-    public void setGoodsTemplateName(String goodsTemplateName) {
-        this.goodsTemplateName = goodsTemplateName;
-    }
-
-    public Long getAgencyId() {
-        return agencyId;
-    }
-
-    public void setAgencyId(Long agencyId) {
-        this.agencyId = agencyId;
-    }
-
-    public String getBuyerName() {
-        return buyerName;
-    }
-
-    public void setBuyerName(String buyerName) {
-        this.buyerName = buyerName;
-    }
-
-    public Short getStates() {
-        return states;
-    }
-
-    public void setStates(Short states) {
-        this.states = states;
-    }
-
-    public Long getIncomeTimeStart() {
-        return incomeTimeStart;
-    }
-
-    public void setIncomeTimeStart(Long incomeTimeStart) {
-        this.incomeTimeStart = incomeTimeStart;
-    }
-
-    public Long getIncomeTimeEnd() {
-        return incomeTimeEnd;
-    }
-
-    public void setIncomeTimeEnd(Long incomeTimeEnd) {
-        this.incomeTimeEnd = incomeTimeEnd;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferExtend.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferExtend.java
deleted file mode 100644
index 396a180..0000000
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferExtend.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.consum.base.pojo;
-
-import com.consum.model.po.LWhFormTransfer;
-import com.consum.model.po.LWhProcureModel;
-
-import java.util.List;
-
-/**
- * @Description
- * @Author 鍗㈠簡闃�
- * @Date 2023/11/2
- */
-public class LWhFormTransferExtend extends LWhFormTransfer {
-
-    private List<LWhProcureModel> models;
-
-    public List<LWhProcureModel> getModels() {
-        return models;
-    }
-
-    public void setModels(List<LWhProcureModel> models) {
-        this.models = models;
-    }
-}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferGoodsInfoParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferGoodsInfoParam.java
new file mode 100644
index 0000000..f7539e4
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferGoodsInfoParam.java
@@ -0,0 +1,40 @@
+package com.consum.base.pojo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @ClassName LWhFormProcureGoodsParams
+ * @Date 2023/10/27
+ * @Description 璋冩嫧鍗曞瀷鍙�
+ * @Version 1.0
+ **/
+@Data
+@ApiModel(value = "璋冩嫧鍗曞瀷鍙�")
+public class LWhFormTransferGoodsInfoParam {
+
+    // 涓婚敭
+    private Long id;
+    //鍒嗙被缂栧彿
+    private Long baseCategoryId;
+    //鐗╁搧妯$増缂栧彿
+    private Long baseGoodsTemplateId;
+    //渚涘簲鍟�
+    private String supplier;
+
+    private String goodsTemplateName;
+
+    private Integer sort;
+
+    @ApiModelProperty(value = "鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂")
+    private Integer procureModelBusinessType;
+
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿缂栧彿")
+    private Long baseGoodsModelsId;
+
+    private List<LWhTransferModelParam> models;
+
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java
index e91dadd..2c37523 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java
@@ -1,6 +1,5 @@
 package com.consum.base.pojo;
 
-import com.walker.web.param.ParamRequest;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.util.List;
@@ -17,7 +16,7 @@
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class LWhFormTransferParam extends ParamRequest {
+public class LWhFormTransferParam {
 
     @ApiModelProperty(value = "涓婚敭")
     private Long id;
@@ -42,73 +41,15 @@
     @ApiModelProperty(value = "璋冩嫧鎵嬬画")
     private String procureDoc;
     /**
-     * 璋冩嫧鍗曞瀷鍙�
-     */
-    @ApiModelProperty(value = "璋冩嫧鍗曞瀷鍙�")
-    private List<LWhProcureModelParams> models;
-    /**
-     * 鐗╁搧id
-     */
-    @ApiModelProperty(value = "鐗╁搧id")
-    private Long baseGoodsTemplateId;
-    /**
-     * 鐗╁搧妯$増鍚嶇О
-     */
-    @ApiModelProperty(value = "鐗╁搧妯$増鍚嶇О")
-    private String goodsTemplateName;
-    /**
-     * 璋冩嫧鍗曞彿
-     */
-    @ApiModelProperty(value = "璋冩嫧鍗曞彿")
-    private String businessFormCode;
-    /**
-     * 鎺ユ敹鏈烘瀯
-     */
-    @ApiModelProperty(value = "鎺ユ敹鏈烘瀯")
-    private Long inAgencyId;
-    /**
-     * 鐘舵�� 0=寰呭嚭搴擄紱1=寰呮帴鏀讹紱2=宸插叆搴�
-     */
-    @ApiModelProperty(value = "鐘舵�� 0=寰呭嚭搴擄紱1=寰呮帴鏀讹紱2=宸插叆搴�")
-    private Short states;
-    /**
-     * 鍒涘缓浜�
-     */
-    @ApiModelProperty(value = "鍒涘缓浜�")
-    private String operatorName;
-    /**
-     * 鐢宠鏃堕棿 寮�濮�
-     */
-    @ApiModelProperty(value = "鐢宠鏃堕棿 寮�濮�")
-    private Long createTimeStart;
-    /**
-     * 鐢宠鏃堕棿 缁撴潫
-     */
-    @ApiModelProperty(value = "鐢宠鏃堕棿 缁撴潫")
-    private Long createTimeEnd;
-    /**
-     * 鎺ユ敹鏃堕棿 寮�濮�
-     */
-    @ApiModelProperty(value = "鎺ユ敹鏃堕棿 寮�濮�")
-    private Long inTimeStart;
-    /**
-     * 鎺ユ敹鏃堕棿 缁撴潫
-     */
-    @ApiModelProperty(value = "鎺ユ敹鏃堕棿 缁撴潫")
-    private Long inTimeEnd;
-
-    /**
      * 鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為��
      */
     @ApiModelProperty(value = "鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為��")
     private Integer transferBusinessType;
-
     /**
-     * 閮ㄩ棬鐗╁搧浣跨敤浜�
-     * TODO 灞炴�ч噸澶�
+     * 璋冩嫧鍗曞瀷鍙�
      */
-    @ApiModelProperty(value = "閮ㄩ棬鐗╁搧浣跨敤浜�")
-    private List<LWhProcureModelUserDTO> procureModelUserList;
+    @ApiModelProperty(value = "璋冩嫧鍗曞瀷鍙�")
+    private List<LWhFormTransferGoodsInfoParam> transferGoods;
 
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParam.java
new file mode 100644
index 0000000..e8cb9ab
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParam.java
@@ -0,0 +1,37 @@
+package com.consum.base.pojo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @ClassName LWhProcureModelParams
+ * @Date 2023/10/27
+ * @Description
+ * @Version 1.0
+ **/
+@ApiModel(value = "璋冩嫧鍗曡鏍煎瀷鍙�")
+@Data
+public class LWhProcureModelParam {
+
+    //瑙勬牸鍨嬪彿缂栧彿
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿缂栧彿")
+    private Long baseGoodsModelsId;
+    //浠锋牸
+    @ApiModelProperty(value = "浠锋牸")
+    private Long price;
+    //鏁伴噺
+    @ApiModelProperty(value = "鏁伴噺")
+    private Integer counts;
+    // 鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂
+    @ApiModelProperty(value = "鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂")
+    private Integer procureModelBusinessType;
+    // 璁¢噺鍗曚綅
+    @ApiModelProperty(value = "璁¢噺鍗曚綅")
+    private String baseUnit;
+
+    @ApiModelProperty(value = "鐢ㄦ埛瑙勬牸鍨嬪彿")
+    private List<LWhProcureModelUserParam> procureModelUserList;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java b/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java
deleted file mode 100644
index 6adbcd0..0000000
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.consum.base.pojo;
-
-import com.walker.web.param.ParamRequest;
-import java.util.List;
-import lombok.Data;
-
-/**
- * @ClassName LWhProcureModelParams
- * @Date 2023/10/27
- * @Description
- * @Version 1.0
- **/
-@Data
-public class LWhProcureModelParams extends ParamRequest {
-
-    // //瑙勬牸鍨嬪彿缂栧彿
-    private Long baseGoodsModelsId = null;
-    //浠锋牸
-    private Long price = null;
-    //鏁伴噺
-    private Integer counts = null;
-
-    private Integer procureModelBusinessType;
-
-    // 璁¢噺鍗曚綅
-    private String baseUnit;
-
-    private List<LWhProcureModelUserDTO> lWhProcureModelUserList;
-
-}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelUserDTO.java b/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelUserParam.java
similarity index 94%
rename from consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelUserDTO.java
rename to consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelUserParam.java
index 735c178..d0db62a 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelUserDTO.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelUserParam.java
@@ -13,7 +13,7 @@
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class LWhProcureModelUserDTO {
+public class LWhProcureModelUserParam {
 
     /**
      * 璋冩嫧涓氬姟ID
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhTransferModelParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhTransferModelParam.java
new file mode 100644
index 0000000..c3571ba
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhTransferModelParam.java
@@ -0,0 +1,38 @@
+package com.consum.base.pojo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+import lombok.Data;
+
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 璋冩嫧鍗曡鏍煎瀷鍙�
+ * @date 2023/11/6 9:28
+ */
+@ApiModel(value = "璋冩嫧鍗曡鏍煎瀷鍙�")
+@Data
+public class LWhTransferModelParam {
+
+    // //瑙勬牸鍨嬪彿缂栧彿
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿缂栧彿")
+    private Long baseGoodsModelsId;
+    //浠锋牸
+    @ApiModelProperty(value = "浠锋牸")
+    private Long price;
+    //鏁伴噺
+    @ApiModelProperty(value = "鏁伴噺")
+    private Integer counts;
+    // 鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂
+    @ApiModelProperty(value = "鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂")
+    private Integer procureModelBusinessType;
+    // 璁¢噺鍗曚綅
+    @ApiModelProperty(value = "璁¢噺鍗曚綅")
+    private String baseUnit;
+
+    @ApiModelProperty(value = "鐢ㄦ埛瑙勬牸鍨嬪彿")
+    private List<LWhProcureModelUserParam> procureModelUserList;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java
index 250d249..cd0e92b 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/LWhFormOutputQry.java
@@ -42,9 +42,15 @@
     @ApiModelProperty(value = "鍒涘缓浜�")
     private String createName;
     /**
-     * 1=寰呭叆搴擄紱2=宸插叆搴�
+     * 閲囪喘鍏ュ簱 map.put("1" + "1", "1")
+     * 璋冩嫧鍏ュ簱 map.put("2" + "1", "2")
+     * 璋冩嫧鍑哄簱 map.put("2" + "2", "3")
+     * 鍏朵粬鍑哄簱 map.put("3" + "1", "4")
+     * 鍏朵粬鍑哄簱 map.put("3" + "2", "5")
+     * 閫�杩樺叆搴� map.put("4" + "1", "6")
+     * 鐢抽鍑哄簱 map.put("4" + "2", "7")
      */
-    @ApiModelProperty(value = "1=寰呭叆搴擄紱2=宸插叆搴�")
+    @ApiModelProperty(value = "1=閲囪喘鍏ュ簱,2=璋冩嫧鍏ュ簱,")
     private Integer states;
 
     /**
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/DetailVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/DetailVO.java
new file mode 100644
index 0000000..2baa9e0
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/DetailVO.java
@@ -0,0 +1,41 @@
+package com.consum.base.pojo.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/14 16:52
+ */
+@NoArgsConstructor
+@Data
+@ApiModel
+public class DetailVO {
+
+    @JsonProperty("thisType")
+    private Integer thisType;
+    @JsonProperty("dealTime")
+    private Long dealTime;
+    @JsonProperty("businessFormId")
+    private Long businessFormId;
+    @JsonProperty("totalPrice")
+    private Object totalPrice;
+    @JsonProperty("businessFormCode")
+    private Object businessFormCode;
+    @JsonProperty("baseGoodsModelsName")
+    private String baseGoodsModelsName;
+    @JsonProperty("createdName")
+    private Object createdName;
+    @JsonProperty("businessType")
+    private Integer businessType;
+    @JsonProperty("thisCount")
+    private Integer thisCount;
+    @JsonProperty("goodsTemplateName")
+    private String goodsTemplateName;
+    @JsonProperty("agencyName")
+    private Object agencyName;
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferGoodsVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferGoodsVO.java
new file mode 100644
index 0000000..3e7ae74
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferGoodsVO.java
@@ -0,0 +1,30 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 鍑哄簱鍗曠墿鍝佹ā鏉夸俊鎭�
+ * @date 2023/11/15 18:06
+ */
+@Data
+@ApiModel(value = "FormTransferGoodsVO")
+public class FormTransferGoodsVO {
+
+    // 涓婚敭
+    private Long id;
+    //鍒嗙被缂栧彿
+    private Long categoryId;
+    //鍒嗙被鍚嶇О
+    private String categoryName;
+    //鐗╁搧妯$増缂栧彿
+    private Long baseGoodsTemplateId;
+
+    private String goodsName;
+
+    private List<GoodsModelVO> models;
+
+}
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
new file mode 100644
index 0000000..3fd0827
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FormTransferVO.java
@@ -0,0 +1,23 @@
+package com.consum.base.pojo.response;
+
+import com.consum.model.po.LWhFormTransfer;
+import io.swagger.annotations.ApiModel;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 璋冩嫧鍗曞垪琛ㄤ俊鎭�
+ * @date 2023/11/15 17:27
+ */
+@Data
+@ApiModel(value = "璋冩嫧鍗曞垪琛ㄤ俊鎭�")
+public class FormTransferVO extends LWhFormTransfer {
+
+    /**
+     * 瑙勬牸鍨嬪彿
+     */
+    private List<FromTransferTemplateInfoVO> 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
new file mode 100644
index 0000000..a372fcf
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FromTransferTemplateInfoVO.java
@@ -0,0 +1,21 @@
+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/GoodsModelVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java
index be3fb38..ad51961 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java
@@ -18,7 +18,7 @@
     private Integer counts;
     private Integer worehouseCount;
     private Long baseGoodsModelsId;
-    private Long totalAmount;
+    private Integer totalAmount;
 
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateVO.java
new file mode 100644
index 0000000..20e9906
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/GoodsTemplateVO.java
@@ -0,0 +1,19 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 鐗╁搧妯℃澘淇℃伅
+ * @date 2023/11/15 13:38
+ */
+@Data
+@ApiModel(value = "鐗╁搧妯℃澘淇℃伅")
+public class GoodsTemplateVO {
+
+    private Long id;
+    private String goodsName;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/LWHFromTransferExtendVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/LWHFromTransferExtendVO.java
new file mode 100644
index 0000000..9bc89e4
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/LWHFromTransferExtendVO.java
@@ -0,0 +1,77 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 璋冩嫧鍗曟墿灞曡缁嗕俊鎭�
+ * @date 2023/11/15 18:02
+ */
+@Data
+@ApiModel(value = "LWHFromTransferExtendVO")
+public class LWHFromTransferExtendVO {
+
+
+    // 涓婚敭
+    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 List<FormTransferGoodsVO> formTransferGoods;
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java
index 0625991..81a2cde 100644
--- a/consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java
@@ -304,11 +304,11 @@
         StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1=1 ");
         Map<String, Object> params = new HashMap<>();
         if (agencyId != null) {
-            sql.append("AND AGENCY_ID=:agencyId");
+            sql.append("AND AGENCY_ID=:agencyId ");
             params.put("agencyId", agencyId);
         }
         if (categoryId != null) {
-            sql.append("AND CATEGORY_ID=:categoryId");
+            sql.append("AND CATEGORY_ID=:categoryId ");
             params.put("categoryId", categoryId);
         }
         return this.select(sql.toString(), params, new BaseGoodsTemplate());
diff --git a/consum-base/src/main/java/com/consum/base/service/BaseWarehouseServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/BaseWarehouseServiceImpl.java
index 253d995..fbc426c 100644
--- a/consum-base/src/main/java/com/consum/base/service/BaseWarehouseServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/BaseWarehouseServiceImpl.java
@@ -2,20 +2,24 @@
 
 import com.consum.base.Constants;
 import com.consum.base.core.CodeGeneratorService;
-import com.consum.base.pojo.BaseWarehouseParam;
 import com.consum.base.core.utils.IdUtil;
-import com.consum.model.po.*;
+import com.consum.base.pojo.BaseWarehouseParam;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenant;
+import com.consum.model.po.FinSysTenantDepartment;
+import com.consum.model.po.SDictData;
 import com.walker.db.page.GenericPager;
 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 java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * @Description 浠撳簱绠$悊
@@ -123,6 +127,7 @@
 
     /**
      * 鏍规嵁id鏌ヨ浠撳簱璇︽儏
+     *
      * @author 鍗㈠簡闃�
      * @Date 2023/10/26
      */
@@ -164,10 +169,10 @@
     }
 
     /**
-     * @Description  鏍规嵁鏈烘瀯id鏌ヨ鏈烘瀯浠撳簱
+     * @return
+     * @Description 鏍规嵁鏈烘瀯id鏌ヨ鏈烘瀯浠撳簱
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/27
-     * @return
      */
     public List<BaseWarehouse> getByAgencyId(Long agencyId) {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE 1 = 1 ");
@@ -180,4 +185,23 @@
         }
         return select(sql.toString(), paramts, new BaseWarehouse());
     }
+
+
+    /**
+     * 鏍规嵁鏈烘瀯id鏌ヨ榛樿浠撳簱
+     *
+     * @param agencyId
+     * @return
+     */
+    public BaseWarehouse getDefaultWarehouseByAgencyId(Long agencyId) {
+        StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE IS_DEFAULT = 1 and AGENCY_ID =:agencyId ");
+        Map<String, Object> param = new HashMap<>();
+        param.put("agencyId", agencyId);
+        List<BaseWarehouse> select = select(sql.toString(), param, new BaseWarehouse());
+        Optional<BaseWarehouse> optional = select.stream().findFirst();
+        if (optional.isPresent()) {
+            return optional.get();
+        }
+        return null;
+    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/FinSysTenantServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/FinSysTenantServiceImpl.java
index 686bd31..452bd0c 100644
--- a/consum-base/src/main/java/com/consum/base/service/FinSysTenantServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/FinSysTenantServiceImpl.java
@@ -7,12 +7,15 @@
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.stereotype.Service;
-
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
+import org.springframework.stereotype.Service;
 
 @Service
 public class FinSysTenantServiceImpl extends BaseServiceImpl {
@@ -26,8 +29,7 @@
 
     /**
      * @Author 锛歱ower
-     * @Date 锛� 2023/7/20 20:41
-     * 鑾峰彇鍖哄垝淇℃伅 涓昏鐢ㄤ簬缂撳瓨
+     * @Date 锛� 2023/7/20 20:41 鑾峰彇鍖哄垝淇℃伅 涓昏鐢ㄤ簬缂撳瓨
      */
     public FinSysTenant queryOneByCode(String code) {
         FinSysTenant tenant = new FinSysTenant();
@@ -49,8 +51,7 @@
 
     /**
      * @Author 锛歱ower
-     * @Date 锛� 2023/7/20 16:34
-     * 鏍规嵁id 鏌ヨ涓嬬骇鎵�鏈夎妭鐐� 鍦板競鏌ヨ鑷繁 鐪佹煡璇㈡墍鏈夊湴甯�
+     * @Date 锛� 2023/7/20 16:34 鏍规嵁id 鏌ヨ涓嬬骇鎵�鏈夎妭鐐� 鍦板競鏌ヨ鑷繁 鐪佹煡璇㈡墍鏈夊湴甯�
      */
     public List<FinSysTenant> queryTreeById(Long id, Integer lv) {
         if (lv == 3) {
@@ -71,8 +72,7 @@
 
     /**
      * @Author 锛歱ower
-     * @Date 锛� 2023/7/21 14:46
-     * 鐗规畩鏁版嵁 绂佹鍏朵粬鎺ュ彛浣跨敤
+     * @Date 锛� 2023/7/21 14:46 鐗规畩鏁版嵁 绂佹鍏朵粬鎺ュ彛浣跨敤
      */
     public Map<Long, List<FinSysTenant>> queryCountyByCityCode(Long id, Integer lv) {
         Map<String, Object> parameter = new HashMap<>(5);
@@ -111,7 +111,7 @@
     }
 
     /**
-     * @Description 鏍规嵁鍖哄垝CODE鏌ヨ鍖哄垝淇℃伅
+     * @Description 鏍规嵁parentId鏌ヨ
      * @Author wh
      * @Date 2023/9/11 19:16
      */
@@ -135,6 +135,7 @@
 
     /**
      * 鍒犻櫎
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/4
      */
@@ -150,9 +151,9 @@
     }
 
 
-
     /**
      * 娣诲姞鏈烘瀯
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/4
      */
@@ -249,15 +250,15 @@
 
     /**
      * 鎵归噺娣诲姞鏈烘瀯
+     *
      * @author jlq
      * @date 2023/10/9
      */
-    public void insertFinSysTenantBatch(List<FinSysTenantParam> params, FinSysTenantUser sysInfo, int lv){
+    public void insertFinSysTenantBatch(List<FinSysTenantParam> params, FinSysTenantUser sysInfo, int lv) {
         for (FinSysTenantParam param : params) {
-            addFinSysTenant(param,sysInfo,lv);
+            addFinSysTenant(param, sysInfo, lv);
         }
     }
-
 
 
     /**
@@ -280,6 +281,7 @@
 
     /**
      * 缂栬緫
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/6
      */
diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
index 14765df..8e4e322 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
@@ -1,14 +1,15 @@
 package com.consum.base.service;
 
 import com.consum.base.core.utils.MapRowMapper;
+import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.pojo.LWarehouseFlowParam;
+import com.consum.base.pojo.query.LWhFormOutputQry;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.stereotype.Service;
-
 import java.util.HashMap;
 import java.util.Map;
+import org.springframework.stereotype.Service;
 
 /**
  * @ClassName LWarehouseFlowService
@@ -25,7 +26,7 @@
      * @param param
      * @return
      */
-    private static String QUERY_BUSINESS_FLOW = "SELECT flow.BUSINESS_TYPE,flow.BUSINESS_FORM_ID,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.BUSINESS_FORM_CODE END BUSINESS_FORM_CODE,record.GOODS_TEMPLATE_NAME,record.BASE_GOODS_MODELS_NAME,record.THIS_COUNT,record.THIS_TYPE,record.total_price,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME END AGENCY_NAME,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUYER_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.OPERATOR_NAME END created_Name,flow.DEAL_TIME deal_Time FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID WHERE 1=1";
+    private static String QUERY_BUSINESS_FLOW = "SELECT flow.BUSINESS_TYPE,flow.BUSINESS_FORM_ID,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.BUSINESS_FORM_CODE END BUSINESS_FORM_CODE,record.GOODS_TEMPLATE_NAME,record.BASE_GOODS_MODELS_NAME,record.THIS_COUNT,record.THIS_TYPE,record.total_price,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME END AGENCY_NAME,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUYER_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.OPERATOR_NAME END created_Name,flow.DEAL_TIME deal_Time FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID WHERE 1=1 ";
 
     public GenericPager<Map<String, Object>> queryBusinessFlow(LWarehouseFlowParam param) {
         StringBuilder sql = new StringBuilder(QUERY_BUSINESS_FLOW);
@@ -73,4 +74,62 @@
         }
         return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapRowMapper());
     }
+
+    public GenericPager<Map<String, Object>> queryBusinessFlowDetail(LWhFormOutputQry param) {
+        StringBuilder sql = new StringBuilder(QUERY_BUSINESS_FLOW);
+        Map<String, Object> paramts = new HashMap<>();
+        if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
+            sql.append("AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE=:businessFormCode"
+                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END ");
+            paramts.put("businessFormCode", param.getBusinessFormCode());
+        }
+        if (StringUtils.isNotEmpty(param.getGoodsName())) {
+            sql.append("AND record.GOODS_TEMPLATE_NAME like :goodsTemplateName ");
+            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsName() + StringUtils.CHAR_PERCENT);
+        }
+
+        if (param.getBaseGoodsModelsId() != null) {
+            sql.append("AND record.BASE_GOODS_MODELS_ID =:baseGoodsModelsId ");
+            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
+        }
+        if (param.getAgencyId() != null) {
+            sql.append("AND tCaiGou.AGENCY_id=:agencyId ");
+            paramts.put("agencyId", param.getAgencyId());
+        }
+
+        if (StringUtils.isNotEmpty(param.getCreateName())) {
+            sql.append("AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME = :createdName"
+                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME = :createdName END ");
+            paramts.put("createdName", param.getCreateName());
+        }
+        if (param.getStartTime() != null) {
+            sql.append("and flow.DEAL_TIME >=:dealTimeStart ");
+            paramts.put("dealTimeStart", param.getStartTime() * 1000000);
+        }
+        if (param.getEndTime() != null) {
+            sql.append("and flow.DEAL_TIME <:dealTimeEnd ");
+            paramts.put("dealTimeEnd", param.getEndTime() * 1000000 + 240000);
+        }
+        if (param.getStates() != null) {
+
+            switch (param.getStates()) {
+                case 1:
+                    sql.append("and flow.BUSINESS_TYPE =:businessType");
+                    break;
+                case 2:
+                    sql.append("and flow.FLOW_STATE = 2 ");
+                    break;
+                default:
+                    sql.append("and flow.FLOW_STATE = 3 ");
+            }
+
+        }
+
+//        if (param.getBusinessType() != null) {
+//            sql.append(" and flow.BUSINESS_TYPE =:businessType");
+//            paramts.put("businessType", param.getBusinessType());
+//        }
+
+        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+    }
 }
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 5e88b08..7e814b6 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
@@ -6,9 +6,9 @@
 import com.consum.base.core.param.BaseWarehouseParam1;
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.pojo.LWFormsOutputGoodsInfoParam;
 import com.consum.base.pojo.LWFormsOutputGoodsModelParam;
-import com.consum.base.pojo.LWFormsOutputGoodsParam;
-import com.consum.base.pojo.LWhFormOutputInsertParam;
+import com.consum.base.pojo.LWhFormOutputParam;
 import com.consum.base.pojo.query.LWhFormOutputQry;
 import com.consum.model.po.*;
 import com.iplatform.model.po.S_user_core;
@@ -49,108 +49,13 @@
 
     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.鏂板鍑哄簱鍗曡褰�
-//        LWhFormOutput lWhFormOutput = new LWhFormOutput();
-//        //鍑哄叆搴搃d
-//        long lWhFormOutputId = IdUtil.generateId();
-//        lWhFormOutput.setId(lWhFormOutputId);
-//        Long warehouseId = param.getWarehouseId();
-//        lWhFormOutput.setWarehouseId(warehouseId);
-//        //鏍规嵁浠撳簱id鏌ヨ浠撳簱
-//        BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
-//        if (warehouse == null) {
-//            log.error("浠撳簱id涓嶅瓨鍦�");
-//            return 0;
-//        }
-//        lWhFormOutput.setWarehouseName(warehouse.getWarehouseName());
-//        lWhFormOutput.setOutputCode(BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue()+"");
-//        lWhFormOutput.setOutputName("闆舵槦鍑哄簱");
-//        lWhFormOutput.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
-//        lWhFormOutput.setAgencyName(sysInfo.getTenantName());
-//        lWhFormOutput.setOperatorId(sysInfo.getId());
-//        lWhFormOutput.setOperatorName(sysInfo.getUserName());
-//        long dateTimeNumber = DateUtils.getDateTimeNumber(System.currentTimeMillis());
-//        lWhFormOutput.setDealTime(dateTimeNumber);
-//        lWhFormOutput.setStates(1);
-//        int flag1 = this.insert(lWhFormOutput);
-//
-//        //2.鏍规嵁鍑哄簱鍗曞嚭搴�
-//        Long lWarehouseFlowId = this.lWhFormOutputCoreService.outFormByTransId(lWhFormOutput.getId(), currentUser, dateTimeNumber);
-//        //3.鍚戝嚭搴撳崟 鎻掑叆 杩涘嚭搴撴祦姘存�昏〃ID
-//        int flag3 = 0;
-//        if (flag1 > 0) {
-//            LWhFormOutput lWhFormOutput1 = new LWhFormOutput(lWhFormOutputId);
-//            lWhFormOutput1.setWarehouseFlowId(lWarehouseFlowId);
-//            flag3 = this.update(lWhFormOutput1);
-//        }
-//
-//        //4.鏂板l_wh_goods_record璁板綍
-//        List<LWhGoodsRecord> recordList = param.getList();
-//        if (CollectionUtils.isEmpty(recordList)) {
-//            log.error("瑙勬牸鍨嬪彿涓虹┖");
-//            return 0;
-//        }
-//        int flag5 = 0;
-//        int number = -1;  //鍑哄簱鍚庯紝鐗╁搧鍓╀綑鏁伴噺
-//        for (LWhGoodsRecord record : recordList) {
-//            //鐗╁搧id鍜岀墿鍝佸悕绉�
-//            record.setBaseGoodsTemplateId(param.getBaseGoodsTemplateId());
-//            record.setGoodsTemplateName(param.getGoodsTemplateName());
-//
-//            record.setId(IdUtil.generateId());
-//            record.setWarehouseId(warehouseId);
-//            //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-//            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(warehouseId, record.getBaseGoodsModelsId(), (short) 1, null);
-//            record.setInitialCount(goodsNum);
-//            record.setThisType(2);
-//
-//            //鍒ゆ柇鍑哄簱鏁伴噺鏄惁灏忎簬搴撳瓨
-//            number = goodsNum - record.getThisCount();
-//            if (number < 0) {
-//                log.error("搴撳瓨涓嶈冻");
-//                break;
-//            }
-//            record.setEndCount(number);
-//            record.setDealTime(dateTimeNumber);
-//            record.setWarehouseFlowId(lWarehouseFlowId);
-//
-//            //5.鏂板L_WH_PROCURE_MODEL璁板綍
-//            LWhProcureModel lWhProcureModel = new LWhProcureModel();
-//            lWhProcureModel.setId(IdUtil.generateId());
-//            lWhProcureModel.setBusinessType(3);
-//            lWhProcureModel.setBaseGoodsModelsId(record.getBaseGoodsModelsId());
-//            lWhProcureModel.setCounts(record.getThisCount());
-//            lWhProcureModel.setWorehouseCount(goodsNum);
-//            int res = this.lWhProcureModelService.insert(lWhProcureModel);
-//            flag5 += res;
-//        }
-//        //濡傛灉鍑哄簱鍚庯紝鍓╀綑搴撳瓨澶т簬0锛屾柊澧瀕_wh_goods_record璁板綍
-//        int flag4 = 0;
-//        if (number >= 0){
-//            flag4 = this.lWhGoodsService.insert(recordList);
-//        }
-//
-//        //濡傛灉鏈変竴鏉¤褰曟柊澧炲け璐ワ紝鍒欏洖婊�
-//        if (flag1 == 0 || flag3 == 0 || flag4 != recordList.size() || flag5 != recordList.size() || number < 0) {
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//            return 0;
-//        }
-//
-//        return 1;
-//    }
 
     /**
      * @Description 鏂板鍑哄簱鍗�
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/27
      */
-    public int add(LWhFormOutputInsertParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
+    public int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
         //1.鏂板鍑哄簱鍗曡褰�
         LWhFormOutput lWhFormOutput = new LWhFormOutput();
         //鍑哄叆搴搃d
@@ -181,9 +86,9 @@
             return 0;
         }
         //2.鏂板鐗╁搧鍨嬪彿璁板綍
-        List<LWFormsOutputGoodsParam> goodsList = param.getGoods();
+        List<LWFormsOutputGoodsInfoParam> goodsList = param.getGoods();
         List<LWhProcureModel> modelList = new ArrayList<>();
-        for (LWFormsOutputGoodsParam goods : goodsList) {
+        for (LWFormsOutputGoodsInfoParam goods : goodsList) {
             List<LWFormsOutputGoodsModelParam> models = goods.getModels();
             for (LWFormsOutputGoodsModelParam model : models) {
                 LWhProcureModel lWhProcureModel = new LWhProcureModel();
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java
index 6cda935..c0ca71b 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java
@@ -4,10 +4,16 @@
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.utils.IdUtil;
 import com.consum.base.core.utils.MapRowMapper;
+import com.consum.base.core.utils.MapUtils;
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
 import com.consum.base.pojo.LWhFormTransferParam;
-import com.consum.base.pojo.LWhProcureModelParams;
-import com.consum.base.pojo.LWhProcureModelUserDTO;
+import com.consum.base.pojo.LWhProcureModelUserParam;
+import com.consum.base.pojo.LWhTransferModelParam;
 import com.consum.base.pojo.query.TransferQry;
+import com.consum.base.pojo.response.FormTransferGoodsVO;
+import com.consum.base.pojo.response.GoodsModelVO;
+import com.consum.base.pojo.response.LWHFromTransferExtendVO;
 import com.consum.model.po.BaseGoodsModels;
 import com.consum.model.po.BaseWarehouse;
 import com.consum.model.po.FinSysTenant;
@@ -18,9 +24,7 @@
 import com.consum.model.po.LWhProcureModel;
 import com.consum.model.po.LWhProcureModelUser;
 import com.consum.model.vo.LWhFormOutputVo;
-import com.consum.model.vo.LWhFormTransferVo;
 import com.consum.model.vo.LWhGoodsRecordVo;
-import com.consum.model.vo.LWhProcureModelVo;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.DateUtils;
@@ -74,7 +78,7 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
      */
-    public int add(LWhFormTransferParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
+    public int add(LWhFormTransferParam param, FinSysTenantUser sysInfo) throws Exception {
         //1.鏂板璋冩嫧鍗曡褰�
         LWhFormTransfer lWhFormTransfer = new LWhFormTransfer();
         //璋冩嫧鍗昳d
@@ -82,21 +86,22 @@
         lWhFormTransfer.setId(lWhFormTransferId);
 
         Integer businessType = param.getTransferBusinessType();
-        // 涓氬姟绫诲瀷 璋冩嫧/閮ㄩ棬鍒嗗彂/閮ㄩ棬閫�鍥� 鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為��
+        // 鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為��
         // TODO 鏋氫妇瀛楀吀
         lWhFormTransfer.setBusinessType(businessType);
 
         lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Transfer));
         Long warehouseId = param.getInWarehouseId();
         lWhFormTransfer.setInWarehouseId(warehouseId);
-        //鏍规嵁浠撳簱id鏌ヨ浠撳簱
-        BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
+        //鍏ュ簱浠撳簱涓哄綋鍓嶇敤鎴风殑榛樿浠撳簱
+        String tenantId = sysInfo.getTenantId();
+        BaseWarehouse warehouse = baseWarehouseService.getDefaultWarehouseByAgencyId(Long.valueOf(tenantId));
         if (warehouse == null) {
             log.error("浠撳簱涓嶅瓨鍦�");
-            return 0;
+            throw new Exception("浠撳簱涓嶅瓨鍦�");
         }
         lWhFormTransfer.setInWarehouseName(warehouse.getWarehouseName());
-        lWhFormTransfer.setInAgencyId(Long.valueOf(sysInfo.getTenantId()));
+        lWhFormTransfer.setInAgencyId(Long.valueOf(tenantId));
         lWhFormTransfer.setInAgencyName(sysInfo.getTenantName());
         //鏍规嵁鏈烘瀯id鏌ヨ璋冩嫧鏈烘瀯
         FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(param.getOutAgencyId()));
@@ -126,44 +131,64 @@
         }
 
         //2.鏂板鐗╁搧鍨嬪彿璁板綍
-        List<LWhProcureModelParams> models = param.getModels();
+        List<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods();
         List<LWhProcureModel> modelList = new ArrayList<>();
-        for (LWhProcureModelParams model : models) {
-            LWhProcureModel lWhProcureModel = new LWhProcureModel();
-            lWhProcureModel.setId(IdUtil.generateId());
-            // 鐗╁搧鍨嬪彿涓氬姟绫诲瀷
-            lWhProcureModel.setBusinessType(model.getProcureModelBusinessType());
-            lWhProcureModel.setBusinessId(lWhFormTransferId);
-            lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
-            lWhProcureModel.setCounts(model.getCounts());
-            //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
-            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
-            lWhProcureModel.setWorehouseCount(goodsNum);
+        for (LWhFormTransferGoodsInfoParam transferGoodsInfo : transferGoods) {
+            for (LWhTransferModelParam model : transferGoodsInfo.getModels()) {
+                LWhProcureModel lWhProcureModel = new LWhProcureModel();
+                lWhProcureModel.setId(IdUtil.generateId());
+                // 鐗╁搧鍨嬪彿涓氬姟绫诲瀷
+                // 鐗╁搧绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂
+                switch (businessType) {
+                    case 0:
+                        lWhProcureModel.setBusinessType(2);
+                        break;
+                    case 1:
+                        lWhProcureModel.setBusinessType(4);
+                        break;
+                    default:
+                        lWhProcureModel.setBusinessType(null);
+                }
+                lWhProcureModel.setBusinessId(lWhFormTransferId);
+                lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
+                lWhProcureModel.setCounts(model.getCounts());
+                //鏍规嵁鍨嬪彿id鏌ヨ鍨嬪彿
+                BaseGoodsModels baseGoodsModels = this.baseGoodsModelsService.get(new BaseGoodsModels(model.getBaseGoodsModelsId()));
+                if (baseGoodsModels != null) {
+                    lWhProcureModel.setBaseGoodsModelsName(baseGoodsModels.getModelName());
+                }
+                // TODO 浠锋牸
+                lWhProcureModel.setPrice(10L);
+                //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨
+                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
+                lWhProcureModel.setWorehouseCount(goodsNum);
 
-            //3.褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉
-            // 鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂
-            if (model.getProcureModelBusinessType() == 4) {
-                List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList();
-                for (LWhProcureModelUserDTO lWhProcureModelUserDTO : model.getLWhProcureModelUserList()) {
-                    LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
-                    lWhProcureModelUser.setId(IdUtil.generateId());
-                    lWhProcureModelUser.setTransBusinessId(lWhFormTransferId);
-                    lWhProcureModelUser.setWhProcureModelId(lWhProcureModel.getId());
-                    lWhProcureModelUser.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
-                    lWhProcureModelUser.setNowUserName(lWhProcureModelUserDTO.getNowUserName());
-                    lWhProcureModelUser.setNowUserPhone(lWhProcureModelUserDTO.getNowUserPhone());
-                    lWhProcureModelUser.setGoodsNum(lWhProcureModelUserDTO.getGoodsNum());
-                    procureModelUserList.add(lWhProcureModelUser);
+                //3.褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉
+                // 鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂
+                //TODO 閮ㄩ棬鍒嗗彂绫诲瀷
+                if (businessType == 1) {
+                    List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList();
+                    for (LWhProcureModelUserParam lWhProcureModelUserParam : model.getProcureModelUserList()) {
+                        LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
+                        lWhProcureModelUser.setId(IdUtil.generateId());
+                        lWhProcureModelUser.setTransBusinessId(lWhFormTransferId);
+                        lWhProcureModelUser.setWhProcureModelId(lWhProcureModel.getId());
+                        lWhProcureModelUser.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
+                        lWhProcureModelUser.setNowUserName(lWhProcureModelUserParam.getNowUserName());
+                        lWhProcureModelUser.setNowUserPhone(lWhProcureModelUserParam.getNowUserPhone());
+                        lWhProcureModelUser.setGoodsNum(lWhProcureModelUserParam.getGoodsNum());
+                        procureModelUserList.add(lWhProcureModelUser);
+                    }
+                    int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList);
+                    if (procureInsertNum != procureModelUserList.size()) {
+                        log.error("鏂板鐗╁搧浣跨敤淇℃伅澶辫触");
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return 0;
+                    }
                 }
-                int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList);
-                if (procureInsertNum != procureModelUserList.size()) {
-                    log.error("鏂板鐗╁搧浣跨敤淇℃伅澶辫触");
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return 0;
-                }
+
+                modelList.add(lWhProcureModel);
             }
-
-            modelList.add(lWhProcureModel);
         }
 
         int flag2 = this.lWhProcureModelService.insert(modelList);
@@ -187,13 +212,13 @@
         StringBuilder sql = new StringBuilder(QUERY_FORM_TRANSFER_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);
+            sql.append(" and BUSINESS_FORM_CODE = :businessFormCode ");
+            paramts.put("businessFormCode", param.getBusinessFormCode());
         }
         //鐗╁搧鍚嶇О
         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)");
+                " 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=2 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
             paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
         }
         //璋冩嫧鏈烘瀯
@@ -246,15 +271,43 @@
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
      */
-    public LWhFormTransferVo getById(Long id) {
-        LWhFormTransferVo vo = new LWhFormTransferVo();
+    public LWHFromTransferExtendVO getById(Long id) {
+        LWHFromTransferExtendVO result = new LWHFromTransferExtendVO();
         //1.鏌ヨ璋冩嫧鍗�
         LWhFormTransfer lWhFormTransfer = this.get(new LWhFormTransfer(id));
         if (lWhFormTransfer != null) {
-            BeanUtils.copyProperties(lWhFormTransfer, vo);
+            BeanUtils.copyProperties(lWhFormTransfer, result);
         }
-        //2.鏌ヨ鐗╁搧鍨嬪彿
-//        List<LWhProcureModel> models = this.lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, id);
+
+        String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME "
+            + "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 ";
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("id", result.getId());
+        List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap, new MapperUtil());
+        List<FormTransferGoodsVO> formTransferGoods = Lists.newArrayList();
+        for (Map<String, Object> map : procureModelList) {
+            FormTransferGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormTransferGoodsVO.class);
+
+            // 鏌ヨ鍨嬪彿鏁伴噺
+            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";
+            List<Map<String, Object>> modelList = lWhFormOutputService.select(sql2, paramMap, new MapperUtil());
+            modelList.forEach(item -> {
+                GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
+                goodsModelVOList.add(goodsModelVO);
+            });
+            procureTemplateInfoVO.setModels(goodsModelVOList);
+            formTransferGoods.add(procureTemplateInfoVO);
+        }
+        result.setFormTransferGoods(formTransferGoods);
+
+        /*//2.鏌ヨ鐗╁搧鍨嬪彿
+        //List<LWhProcureModel> models = this.lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, id);
         List<LWhProcureModel> models = this.lWhProcureModelService.getModelByForm(null, id);
 
         if (!CollectionUtils.isEmpty(models)) {
@@ -270,8 +323,8 @@
                 lWhProcureModelVoList.add(lWhProcureModelVo);
             }
             vo.setModels(lWhProcureModelVoList);
-        }
-        return vo;
+        }*/
+        return result;
     }
 
 
@@ -327,26 +380,16 @@
     public GenericPager<Map<String, Object>> queryTransferInfo(TransferQry transferQry) {
 
         HashMap<String, Object> paramts = new HashMap<>();
-        StringBuilder sql = new StringBuilder("SELECT\n"
-            + "\tft.id,\n"
-            + "\tft.BUSINESS_FORM_CODE businessCode,\n"
-            + "\tbgt.GOODS_NAME goodsName,\n"
-            + "\tbgt.CLASSIFICATION goodsType,\n"
-            + "\tbgm.id goodsModelId,\n"
-            + "\tbgm.MODEL_NAME goodsModelName,\n"
-            + "\tpm.COUNTS goodsCount,\n"
-            + "\tfst.`name` tennatName,\n"
-            + "\tfstd.NAME departmentName,\n"
-            + "\tft.OPERATOR_ID distributor,\n"
-            + "\tft.CREATE_TIME TIME \n"
-            + "FROM\n"
-            + "\tl_wh_form_transfer ft\n"
-            + "\tLEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
-            + "\tLEFT JOIN base_goods_models bgm ON bgm.GOODS_TEMPLATES_ID = pm.BASE_GOODS_MODELS_ID\n"
-            + "\tLEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID\n"
-            + "\tLEFT JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID\n"
-            + "\tLEFT JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID \n"
-            + "\tLEFT JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where 1=1 ");
+        StringBuilder sql = new StringBuilder(
+            "SELECT\n" + "\tft.id,\n" + "\tft.BUSINESS_FORM_CODE businessCode,\n" + "\tbgt.GOODS_NAME goodsName,\n" + "\tbgt.CLASSIFICATION goodsType,\n"
+                + "\tbgm.id goodsModelId,\n" + "\tbgm.MODEL_NAME goodsModelName,\n" + "\tpm.COUNTS goodsCount,\n" + "\tfst.`name` tennatName,\n"
+                + "\tfstd.NAME departmentName,\n" + "\tft.OPERATOR_ID distributor,\n" + "\tft.CREATE_TIME TIME \n" + "FROM\n" + "\tl_wh_form_transfer ft\n"
+                + "\tLEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
+                + "\tLEFT JOIN base_goods_models bgm ON bgm.GOODS_TEMPLATES_ID = pm.BASE_GOODS_MODELS_ID\n"
+                + "\tLEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID\n"
+                + "\tLEFT JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID\n"
+                + "\tLEFT JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID \n"
+                + "\tLEFT JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where 1=1 ");
         //鍗曞彿
         if (StringUtils.isNotEmpty(transferQry.getBusinessFormCode())) {
             sql.append("AND BUSINESS_FORM_CODE like :businessFormCode ");
diff --git a/consum-model-pojo/src/main/java/com/consum/model/vo/LWhFormTransferVo.java b/consum-model-pojo/src/main/java/com/consum/model/vo/LWhFormTransferVo.java
index f6ed2b5..0969d0a 100644
--- a/consum-model-pojo/src/main/java/com/consum/model/vo/LWhFormTransferVo.java
+++ b/consum-model-pojo/src/main/java/com/consum/model/vo/LWhFormTransferVo.java
@@ -2,7 +2,9 @@
 
 import com.consum.model.po.LWhFormTransfer;
 import java.util.List;
+import lombok.Data;
 
+@Data
 public class LWhFormTransferVo extends LWhFormTransfer {
 
     /**
@@ -10,11 +12,5 @@
      */
     private List<LWhProcureModelVo> models;
 
-    public List<LWhProcureModelVo> getModels() {
-        return models;
-    }
 
-    public void setModels(List<LWhProcureModelVo> models) {
-        this.models = models;
-    }
 }

--
Gitblit v1.9.1