From 0c1dd25eabc4472c007951d528ee7385cc114e32 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期六, 11 十一月 2023 19:06:23 +0800
Subject: [PATCH] -- 采购单 -- 分类

---
 consum-base/src/main/java/com/consum/base/pojo/ProjectTreeResult.java                  |   32 -
 consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java      |    2 
 consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java             |   72 +++
 consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java           |   72 ++
 consum-base/src/main/java/com/consum/base/pojo/LWarehouseFlowParam.java                |   95 ---
 consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureExtendVO.java    |   69 +++
 consum-base/src/main/java/com/consum/base/pojo/response/TransferInfoVO.java            |   29 +
 consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java    |   26 +
 consum-base/src/main/java/com/consum/base/pojo/response/FromProcureTemplateInfoVO.java |   23 +
 consum-base/src/main/java/com/consum/base/pojo/query/FormProcureQryDto.java            |   73 +++
 consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java  |   10 
 consum-base/src/main/java/com/consum/base/util/MapUtils.java                           |   83 +++
 consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java       |   16 
 consum-base/src/main/java/com/consum/base/pojo/query/TransferQryDto.java               |   18 
 consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureGoodsVO.java     |   33 +
 consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java              |   44 -
 consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java         |   62 +
 consum-base/src/main/java/com/consum/base/pojo/response/FormProcureDetailVO.java       |   43 +
 consum-base/src/main/java/com/consum/base/pojo/response/WarehouseFlowVO.java           |   40 +
 consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java          |   69 --
 consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java               |  147 -----
 /dev/null                                                                              |   47 --
 consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java     |   25 
 consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java              |   23 +
 consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java    |   13 
 consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java     |  163 +++++-
 consum-base/src/main/java/com/consum/base/core/tools/MapperUtil.java                   |   29 +
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java           |   18 
 28 files changed, 889 insertions(+), 487 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java b/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
index bfb806f..343c47b 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
@@ -45,13 +45,13 @@
     private long defaultParentId = 0L;
 
     /**
-     * @Description  鑾峰彇鍒嗙被鏍�
+     * @Description 鑾峰彇鍒嗙被鏍�
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
      */
     @GetMapping("/select/tree")
     public ResponseValue tree(String categoryName) {
-        List<ProjectTreeResult> tree = this.baseCategoryService.tree(categoryName);
+        List<ProjectTreeResult> tree = this.baseCategoryService.tree();
         return ResponseValue.success(tree);
     }
 
@@ -75,7 +75,9 @@
         }
 
         int result = this.baseCategoryService.add(param, this.getCurrentUser());
-        if (result > 0) return ResponseValue.success(1);
+        if (result > 0) {
+            return ResponseValue.success(1);
+        }
         return ResponseValue.error("鏂板澶辫触锛�");
     }
 
@@ -123,6 +125,7 @@
 
     /**
      * 淇敼鐘舵��
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/10/23
      */
@@ -152,13 +155,14 @@
         if (baseCategory.getId() == null) {
             return ResponseValue.error("鍒嗙被id涓虹┖");
         }
-        int num = this.baseCategoryService.updateById(baseCategory,this.getCurrentUser());
+        int num = this.baseCategoryService.updateById(baseCategory, this.getCurrentUser());
 
         return num > 0 ? ResponseValue.success(1) : ResponseValue.error("鍒犻櫎澶辫触锛�");
     }
 
     /**
      * 鏍规嵁鐗╁搧id鏌ヨ鑺傜偣璇︽儏
+     *
      * @author 鍗㈠簡闃�
      * @Date 2023/10/23
      */
@@ -168,7 +172,9 @@
             return ResponseValue.error("鍒嗙被id涓虹┖");
         }
         BaseCategory baseCategory = this.baseCategoryService.getById(id);
-        if (baseCategory == null) return ResponseValue.error("鏌ヨ澶辫触锛�");
+        if (baseCategory == null) {
+            return ResponseValue.error("鏌ヨ澶辫触锛�");
+        }
         return ResponseValue.success("鏌ヨ鎴愬姛!", baseCategory);
     }
 
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 5e00c1a..a9747e1 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
@@ -167,11 +167,11 @@
     }
 
     @GetMapping("/query/goodsTemplate")
-    public ResponseValue getByAgencyId(Long agencyId) {
-        if (agencyId == null) {
-            return ResponseValue.error("鏈烘瀯id涓虹┖");
-        }
-        List<BaseGoodsTemplate> list = this.baseGoodsTemplateService.queryByAgencyId(agencyId);
+    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("鏌ヨ澶辫触锛�");
         }
diff --git a/consum-base/src/main/java/com/consum/base/controller/DepFormLendingController.java b/consum-base/src/main/java/com/consum/base/controller/DepFormLendingController.java
deleted file mode 100644
index 5f0c6d5..0000000
--- a/consum-base/src/main/java/com/consum/base/controller/DepFormLendingController.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.consum.base.controller;
-
-import com.consum.base.BaseController;
-import com.walker.web.ResponseValue;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @author asus
- * @version 1.0
- * @description: 鐗╁搧鍒嗗彂鍗�
- * @date 2023/11/2 15:49 dep_form_lending
- * TODO
- */
-@RestController
-@RequestMapping("/pc/dep/from/lending")
-public class DepFormLendingController extends BaseController {
-
-
-    /**
-     * 娣诲姞鏁版嵁
-     *
-     * @param id 鏁版嵁ID
-     * @return 娣诲姞缁撴灉
-     */
-    @PostMapping("/add")
-    public ResponseValue add(String id) {
-        // code for adding data
-        return null;
-    }
-
-
-    @GetMapping("/list")
-    public ResponseValue list() {
-
-        return null;
-    }
-
-    @GetMapping("/{id}")
-    public ResponseValue detail(@PathVariable String id) {
-
-        return null;
-    }
-}
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 29112e6..3608468 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
@@ -2,20 +2,23 @@
 
 import com.consum.base.BaseController;
 import com.consum.base.pojo.LWarehouseFlowParam;
+import com.consum.base.pojo.response.WarehouseFlowVO;
 import com.consum.base.service.LWarehouseFlowService;
+import com.consum.base.util.MapUtils;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.web.ResponseValue;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Map;
+import javax.annotation.Resource;
+import org.apache.commons.compress.utils.Lists;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
-import java.util.Map;
-
 /**
  * @ClassName lWarehouseFlowController
-
  * @Date 2023/10/27
  * @Description
  * @Version 1.0
@@ -23,6 +26,7 @@
 @RestController
 @RequestMapping("/pc/warehouse/flow")
 public class LWarehouseFlowController extends BaseController {
+
     @Resource
     private LWarehouseFlowService lWarehouseFlowService;
 
@@ -33,6 +37,19 @@
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
         GenericPager<Map<String, Object>> genericPager = lWarehouseFlowService.queryBusinessFlow(param);
+        ArrayList<WarehouseFlowVO> result = Lists.newArrayList();
+        genericPager.getDatas().forEach(map -> {
+            WarehouseFlowVO warehouseFlowVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(map), WarehouseFlowVO.class);
+            result.add(warehouseFlowVO);
+        });
+        try {
+            Field fieldDatas = GenericPager.class.getDeclaredField("datas");
+            fieldDatas.setAccessible(true);
+            fieldDatas.set(genericPager, result);
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        }
+
         return ResponseValue.success(genericPager);
     }
 }
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 711d942..746e598 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
@@ -4,35 +4,70 @@
 import com.consum.base.core.CodeGeneratorEnum;
 import com.consum.base.core.CodeGeneratorService;
 import com.consum.base.core.WhBusinessEnum;
-import com.consum.base.pojo.LWhFormProcureExtend;
+import com.consum.base.core.tools.MapperUtil;
 import com.consum.base.pojo.LWhFormProcureGoodsParams;
 import com.consum.base.pojo.LWhFormProcureParam;
 import com.consum.base.pojo.LWhProcureModelParams;
-import com.consum.base.service.*;
-import com.consum.model.po.*;
+import com.consum.base.pojo.query.FormProcureQryDto;
+import com.consum.base.pojo.response.FormProcureVO;
+import com.consum.base.pojo.response.FromProcureTemplateInfoVO;
+import com.consum.base.pojo.response.GoodsModelVO;
+import com.consum.base.pojo.response.LWhFormProcureExtendVO;
+import com.consum.base.pojo.response.LWhFormProcureGoodsVO;
+import com.consum.base.service.BaseGoodsTemplateServiceImpl;
+import com.consum.base.service.BaseWarehouseServiceImpl;
+import com.consum.base.service.FinSysTenantServiceImpl;
+import com.consum.base.service.LOrgSupplierServiceImpl;
+import com.consum.base.service.LWhFormProcureCoreService;
+import com.consum.base.service.LWhFormProcureGoodsService;
+import com.consum.base.service.LWhFormProcureService;
+import com.consum.base.service.LWhGoodsService;
+import com.consum.base.service.LWhProcureModelService;
+import com.consum.base.util.MapUtils;
+import com.consum.model.po.BaseGoodsTemplate;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.LOrgSupplier;
+import com.consum.model.po.LWhFormProcure;
+import com.consum.model.po.LWhFormProcureGoods;
+import com.consum.model.po.LWhProcureModel;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
-import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.NumberGenerator;
 import com.walker.web.ResponseValue;
-import org.springframework.beans.BeanUtils;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import java.lang.reflect.Field;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Resource;
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @ClassName LWhFormProcureController
-
  * @Date 2023/10/27
  * @Description
  * @Version 1.0
  **/
+@Api(value = "浠撳簱琛ㄥ崟閲囪喘", tags = "浠撳簱琛ㄥ崟閲囪喘")
 @RestController
 @RequestMapping("/pc/whForm/procure")
 public class LWhFormProcureController extends BaseController {
+
     @Resource
     private LWhFormProcureService lWhFormProcureService;
     @Resource
@@ -67,6 +102,8 @@
         FinSysTenantUser sysTenantUser = this.getSysInfo();
         String tenantId = sysTenantUser.getTenantId();
         String tenantName = sysTenantUser.getTenantName();
+//        String tenantId = "100";
+//        String tenantName = "娌冲崡鐪佸垎鍏徃";
         // 鍙兘娣诲姞鏈満鏋勪粨搴撶殑杩涜揣鍗�
         //??????
         //
@@ -82,12 +119,12 @@
         if (whFormProcureId == null) {
             whFormProcureId = NumberGenerator.getLongSequenceNumber();
         }
-        long procureTime = DateUtils.getDateTimeNumber(param.getProcureTime());
+        long procureTime = Long.valueOf(param.getProcureTime());
 
         Set<String> supplierList = new HashSet<>();
 
         ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>();
-        ArrayList<LWhProcureModel> whProcureModeLlist = new ArrayList<>();
+        ArrayList<LWhProcureModel> procureModelList = new ArrayList<>();
 
         for (int i = 0; i < procureGoods.size(); i++) {
             LWhFormProcureGoodsParams procureGoodT = procureGoods.get(i);
@@ -99,7 +136,6 @@
                 supplierList.add(supplier);
             }
 
-
             List<LWhProcureModelParams> models = procureGoodT.getModels();
             if (CollectionUtils.isEmpty(models)) {
                 return ResponseValue.error("閲囪喘鍗曚笉鑳戒负绌�");
@@ -110,7 +146,8 @@
             procureGood.setWhFormProcureId(whFormProcureId);
             procureGood.setBaseCategoryId(baseCategoryId);
             procureGood.setBaseGoodsTemplateId(baseGoodsTemplateId);
-            procureGood.setGoodsTemplateName(null);
+            // TODO 鐗╁搧鍘嗗彶鐗堟湰
+            procureGood.setGoodsTemplateName(procureGoodT.getGoodsTemplateName());
             procureGood.setSupplier(supplier);
             procureGood.setSort(i);
             for (LWhProcureModelParams modelT : models) {
@@ -145,12 +182,12 @@
                 model.setCounts(counts);
                 model.setWorehouseCount(goodsModelNum);
                 model.setSupplier(supplier);
-                whProcureModeLlist.add(model);
+                procureModelList.add(model);
             }
             procureGoodList.add(procureGood);
         }
         lWhFormProcureGoodsService.insertBatch(procureGoodList);
-        lWhProcureModelService.insertBatch(whProcureModeLlist);
+        lWhProcureModelService.insertBatch(procureModelList);
 
         // 鎻掑叆 閲囪喘鍗曠墿鍝併�怢_WH_FORM_PROCURE_GOODS銆�
         LWhFormProcure lWhFormProcure = new LWhFormProcure();
@@ -185,8 +222,10 @@
     /**
      * @Description 鍒楄〃鏌ヨ
      */
+    @ApiOperation(value = "閲囪喘鍗曞垪琛ㄦ煡璇�", notes = "閲囪喘鍗曞垪琛ㄦ煡璇�")
+    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鏌ヨ鏉′欢", required = true, dataType = "FormProcureQryDto", paramType = "query")})
     @GetMapping("/list")
-    public ResponseValue queryFormProcureList(LWhFormProcureParam param) {
+    public ResponseValue queryFormProcureList(FormProcureQryDto param) {
         S_user_core currentUser = this.getCurrentUser();
         if (currentUser == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -197,29 +236,38 @@
         //??????
 
         GenericPager genericPager = lWhFormProcureService.queryFormProcureList(param);
-        List<LWhFormProcure> datas = genericPager.getDatas();
-        ArrayList<LWhFormProcureExtend> newDatas = new ArrayList<>();
-        if (!CollectionUtils.isEmpty(datas)) {
-            datas.forEach(item -> {
+        List<LWhFormProcure> data = genericPager.getDatas();
+        ArrayList<FormProcureVO> result = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(data)) {
+            data.forEach(item -> {
+
+                FormProcureVO fromProcureVO = new FormProcureVO();
+                BeanUtils.copyProperties(item, fromProcureVO);
+                List<FromProcureTemplateInfoVO> procureTemplateInfoList = Lists.newArrayList();
+
                 // 鏌ヨ鍨嬪彿鏁伴噺
-                LWhProcureModel lWhProcureModel = new LWhProcureModel();
-                lWhProcureModel.setBusinessType(1);
-                lWhProcureModel.setBusinessId(item.getId());
-                List<LWhProcureModel> models = lWhProcureModelService.select(lWhProcureModel);
-                LWhFormProcureExtend formProcureExtend = new LWhFormProcureExtend();
-                BeanUtils.copyProperties(item, formProcureExtend);
-                formProcureExtend.setModels(models);
-                newDatas.add(formProcureExtend);
+                String sql = "select fpg.id,BASE_CATEGORY_ID ,BASE_GOODS_TEMPLATE_ID ,GOODS_TEMPLATE_NAME ,sum(counts) count "
+                    + "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID "
+                    + "where fpg.WH_FORM_PROCURE_ID =:id group by pm.FROM_PROCURE_GOODS_ID";
+                Map<String, Object> paramMap = new HashMap<>();
+                paramMap.put("id", item.getId());
+                List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap);
+                for (Map<String, Object> map : procureModelList) {
+                    FromProcureTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(map), FromProcureTemplateInfoVO.class);
+                    procureTemplateInfoList.add(procureTemplateInfoVO);
+                }
+                fromProcureVO.setFromProcureTemplateInfoList(procureTemplateInfoList);
+
+                result.add(fromProcureVO);
             });
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
             fieldDatas.setAccessible(true);
-            fieldDatas.set(genericPager, newDatas);
+            fieldDatas.set(genericPager, result);
         } catch (Exception e) {
             e.printStackTrace();
         }
-//        genericPager.setDatas(newDatas);
         return ResponseValue.success(genericPager);
     }
 
@@ -281,8 +329,8 @@
             return ResponseValue.error("閲囪喘鍗昳d涓虹┖");
         }
         LWhFormProcure lWhFormProcure = lWhFormProcureService.get(new LWhFormProcure(id));
-        LWhFormProcureExtend formProcureExtend = new LWhFormProcureExtend();
-        BeanUtils.copyProperties(lWhFormProcure, formProcureExtend);
+        LWhFormProcureExtendVO lWhFormProcureExtendVO = new LWhFormProcureExtendVO();
+        BeanUtils.copyProperties(lWhFormProcure, lWhFormProcureExtendVO);
 
         // 鐗╁搧
         LWhFormProcureGoods lWhFormProcureGoods = new LWhFormProcureGoods();
@@ -291,24 +339,51 @@
 
         Field fieldModels = null;
         try {
-            fieldModels = LWhFormProcureGoodsParams.class.getDeclaredField("models");
+            fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
         } catch (NoSuchFieldException e) {
             e.printStackTrace();
         }
         fieldModels.setAccessible(true);
-        ArrayList<LWhFormProcureGoodsParams> procureGoodsParams = new ArrayList<>();
+        ArrayList<LWhFormProcureGoodsVO> procureGoodsVOList = new ArrayList<>();
         for (LWhFormProcureGoods formProcureGood : formProcureGoods) {
-            LWhFormProcureGoodsParams lWhFormProcureGoodsParams = new LWhFormProcureGoodsParams();
-            BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsParams);
+            LWhFormProcureGoodsVO lWhFormProcureGoodsVO = new LWhFormProcureGoodsVO();
+            BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsVO);
 
+            Long baseGoodsTemplateId = formProcureGood.getBaseGoodsTemplateId();
+            BaseGoodsTemplate queryEntity = new BaseGoodsTemplate();
+            queryEntity.setId(baseGoodsTemplateId);
+            BaseGoodsTemplate baseGoodsTemplate = baseGoodsTemplateService.get(queryEntity);
+            lWhFormProcureGoodsVO.setBaseCategoryName(baseGoodsTemplate.getCategoryName());
             // 鏌ヨ鍨嬪彿鏁伴噺
-            LWhProcureModel lWhProcureModel = new LWhProcureModel();
-            lWhProcureModel.setFromProcureGoodsId(formProcureGood.getId());
-            List<LWhProcureModel> models = lWhProcureModelService.select(lWhProcureModel);
-            fieldModels.set(lWhFormProcureGoodsParams, models);
-            procureGoodsParams.add(lWhFormProcureGoodsParams);
+            Map<String, Object> paramMap = new HashMap<>();
+            paramMap.put("formProcureGoodId", formProcureGood.getId());
+            String sql = "SELECT\n" + "pm.BASE_GOODS_MODELS_ID,pm.BASE_GOODS_MODELS_NAME,pm.PRICE,pm.COUNTS,pm.WOREHOUSE_COUNT,bgm.unit " + "FROM\n"
+                + "\tl_wh_procure_model pm\n"
+                + "\tLEFT JOIN base_goods_models bgm on pm.BASE_GOODS_MODELS_ID = bgm.id where pm.FROM_PROCURE_GOODS_ID =:formProcureGoodId";
+            List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
+            List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
+            procureModelList.forEach(item -> {
+                GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
+                goodsModelVOList.add(goodsModelVO);
+            });
+            fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList);
+            procureGoodsVOList.add(lWhFormProcureGoodsVO);
         }
-        formProcureExtend.setProcureGoods(procureGoodsParams);
-        return ResponseValue.success("鏌ヨ鎴愬姛!", formProcureExtend);
+        lWhFormProcureExtendVO.setProcureGoods(procureGoodsVOList);
+        return ResponseValue.success("鏌ヨ鎴愬姛!", lWhFormProcureExtendVO);
+    }
+
+
+    @ApiOperation(value = "閲囪喘鍗曟槑缁嗘煡璇�", notes = "閲囪喘鍗曟槑缁嗘煡璇�")
+    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鍗曟槑缁嗘煡璇�", required = true, dataType = "FormProcureQryDto", paramType = "query")})
+    @GetMapping("detail/list")
+    public ResponseValue queryFormProcureDetailList(FormProcureQryDto param) {
+        S_user_core currentUser = this.getCurrentUser();
+        if (currentUser == null) {
+            return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+
+        GenericPager genericPager = lWhFormProcureService.queryFormProcureDetailList(param);
+        return ResponseValue.success(genericPager);
     }
 }
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 90ea3a0..32b784a 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
@@ -7,6 +7,7 @@
 import com.consum.base.pojo.UseRecordDto;
 import com.consum.base.pojo.UseRecordSkuDto;
 import com.consum.base.pojo.query.TransferQryDto;
+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;
@@ -29,6 +30,10 @@
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.web.ResponseValue;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
@@ -49,6 +54,7 @@
  */
 @RestController
 @RequestMapping("/pc/l/wh/form/transfer")
+@Api(tags = "璋冩嫧鍒嗗彂绠$悊")
 public class LWhFormTransferController extends BaseController {
 
     @Autowired
@@ -69,6 +75,8 @@
     /**
      * @Description 鏂板
      */
+    @ApiOperation(value = "鍗曟嵁鏂板", notes = "鍗曟嵁鏂板")
+    @ApiImplicitParam(name = "param", value = "鍗曟嵁鏂板", required = true, dataType = "LWhFormTransferParam")
     @PostMapping("/add")
     public ResponseValue add(@RequestBody LWhFormTransferParam param) {
         S_user_core currentUser = this.getCurrentUser();
@@ -233,6 +241,10 @@
      * @param transferQryDto
      * @return
      */
+    @ApiOperation(value = "閮ㄩ棬鐗╁搧鍒嗗彂鍒楄〃鏄庣粏", notes = "閮ㄩ棬鐗╁搧鍒嗗彂鍒楄〃鏄庣粏")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "transferQryDto", value = "璋冩嫧鍗曟煡璇㈡潯浠�", required = true)
+    })
     @GetMapping("/department/list")
     public ResponseValue departmentTransferList(TransferQryDto transferQryDto) {
 
@@ -347,4 +359,18 @@
         return ResponseValue.success(result);
     }
 
+
+    @ApiOperation(value = "鏌ヨ閮ㄩ棬涓嬬殑鍒嗗彂鍗�", notes = "鏌ヨ閮ㄩ棬涓嬬殑鍒嗗彂鍗�")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "agencyId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")
+    })
+    @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/core/tools/MapperUtil.java b/consum-base/src/main/java/com/consum/base/core/tools/MapperUtil.java
new file mode 100644
index 0000000..8f01fff
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/tools/MapperUtil.java
@@ -0,0 +1,29 @@
+package com.consum.base.core.tools;
+
+import com.consum.base.util.MapUtils;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import org.springframework.jdbc.core.RowMapper;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/11 14:40
+ */
+public class MapperUtil implements RowMapper<Map<String, Object>> {
+
+    @Override
+    public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
+        Map<String, Object> row = new HashMap<>();
+        int columnCount = rs.getMetaData().getColumnCount();
+        for (int i = 1; i <= columnCount; i++) {
+            String columnName = MapUtils.underlineToCamel(rs.getMetaData().getColumnName(i));
+            Object columnValue = rs.getObject(i);
+            row.put(columnName, columnValue);
+        }
+        return row;
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWarehouseFlowParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWarehouseFlowParam.java
index ac2cba4..47d3d85 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWarehouseFlowParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWarehouseFlowParam.java
@@ -1,116 +1,51 @@
 package com.consum.base.pojo;
 
 import com.walker.web.param.ParamRequest;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 /**
  * @ClassName LWarehouseFlowParam
-
  * @Date 2023/10/27
  * @Description
  * @Version 1.0
  **/
+@ApiModel(value = "搴撳瓨娴佹按鏌ヨ鍙傛暟")
+@Data
 public class LWarehouseFlowParam extends ParamRequest {
 
     //鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂 5鎶ュ簾
+    @ApiModelProperty(value = "鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂 5鎶ュ簾")
     private Short businessType;
     // 涓氬姟鍗曟嵁缂栧彿
+    @ApiModelProperty(value = "涓氬姟鍗曟嵁缂栧彿")
     private String businessFormCode;
     //鐗╁搧鍚嶇О
+    @ApiModelProperty(value = "鐗╁搧鍚嶇О")
     private String goodsTemplateName;
     //瑙勬牸鍨嬪彿
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
     private String baseGoodsModelsName;
 
     // 鏈烘瀯
+    @ApiModelProperty(value = "鏈烘瀯")
     private Long agencyId;
 
     //鍒涘缓浜�
+    @ApiModelProperty(value = "鍒涘缓浜�")
     private String createdName;
 
     // 鎿嶄綔鏃堕棿
+    @ApiModelProperty(value = "鎿嶄綔鏃堕棿")
     private Long dealTimeStart;
+    @ApiModelProperty(value = "鎿嶄綔鏃堕棿")
     private Long dealTimeEnd;
 
-    public Short getBusinessType() {
-        return businessType;
-    }
 
-    public void setBusinessType(Short businessType) {
-        this.businessType = businessType;
-    }
-
-    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 String getBaseGoodsModelsName() {
-        return baseGoodsModelsName;
-    }
-
-    public void setBaseGoodsModelsName(String baseGoodsModelsName) {
-        this.baseGoodsModelsName = baseGoodsModelsName;
-    }
-
-    public Long getAgencyId() {
-        return agencyId;
-    }
-
-    public void setAgencyId(Long agencyId) {
-        this.agencyId = agencyId;
-    }
-
-    public String getCreatedName() {
-        return createdName;
-    }
-
-    public void setCreatedName(String createdName) {
-        this.createdName = createdName;
-    }
-
-    public Long getDealTimeStart() {
-        return dealTimeStart;
-    }
-
-    public void setDealTimeStart(Long dealTimeStart) {
-        this.dealTimeStart = dealTimeStart;
-    }
-
-    public Long getDealTimeEnd() {
-        return dealTimeEnd;
-    }
-
-    public void setDealTimeEnd(Long dealTimeEnd) {
-        this.dealTimeEnd = dealTimeEnd;
-    }
-
-
+    @ApiModelProperty(value = "姣忛〉鏄剧ず鏉℃暟")
     private Integer pageSize = 10;
+    @ApiModelProperty(value = "褰撳墠椤垫暟")
     private Integer pageNum = 1;
 
-    public Integer getPageSize() {
-        return pageSize;
-    }
-
-    public void setPageSize(Integer pageSize) {
-        this.pageSize = pageSize;
-    }
-
-    public Integer getPageNum() {
-        return pageNum;
-    }
-
-    public void setPageNum(Integer pageNum) {
-        this.pageNum = pageNum;
-    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java
index 385e394..edbbe55 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java
@@ -1,17 +1,18 @@
 package com.consum.base.pojo;
 
 import com.walker.web.param.ParamRequest;
-
 import java.util.List;
+import lombok.Data;
 
 /**
  * @ClassName LWhFormProcureGoodsParams
-
  * @Date 2023/10/27
  * @Description
  * @Version 1.0
  **/
+@Data
 public class LWhFormProcureGoodsParams extends ParamRequest {
+
     //鍒嗙被缂栧彿
     private Long baseCategoryId = null;
     //鐗╁搧妯$増缂栧彿
@@ -21,77 +22,15 @@
 
     private List<LWhProcureModelParams> models;
 
-    public Long getBaseCategoryId() {
-        return baseCategoryId;
-    }
-
-    public void setBaseCategoryId(Long baseCategoryId) {
-        this.baseCategoryId = baseCategoryId;
-    }
-
-    public Long getBaseGoodsTemplateId() {
-        return baseGoodsTemplateId;
-    }
-
-    public void setBaseGoodsTemplateId(Long baseGoodsTemplateId) {
-        this.baseGoodsTemplateId = baseGoodsTemplateId;
-    }
-
-    public String getSupplier() {
-        return supplier;
-    }
-
-    public void setSupplier(String supplier) {
-        this.supplier = supplier;
-    }
-
-    public List<LWhProcureModelParams> getModels() {
-        return models;
-    }
-
-    public void setModels(List<LWhProcureModelParams> models) {
-        this.models = models;
-    }
-
     // 涓婚敭
     private Long id = null;
 
     // 灞炴�у垪琛�
     private Long whFormProcureId = null;
 
-    private String goodsTemplateName = null;
+    private String goodsTemplateName;
 
     private Integer sort = null;
 
-    public Long getId() {
-        return id;
-    }
 
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getWhFormProcureId() {
-        return whFormProcureId;
-    }
-
-    public void setWhFormProcureId(Long whFormProcureId) {
-        this.whFormProcureId = whFormProcureId;
-    }
-
-    public String getGoodsTemplateName() {
-        return goodsTemplateName;
-    }
-
-    public void setGoodsTemplateName(String goodsTemplateName) {
-        this.goodsTemplateName = goodsTemplateName;
-    }
-
-    public Integer getSort() {
-        return sort;
-    }
-
-    public void setSort(Integer sort) {
-        this.sort = sort;
-    }
 }
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 d5d9c6c..e91dadd 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,8 @@
 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;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -11,209 +13,102 @@
  * @Author 鍗㈠簡闃�
  * @Date 2023/10/30
  */
+@ApiModel(value = "鍗曟嵁鏂板淇℃伅")
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 public class LWhFormTransferParam extends ParamRequest {
 
+    @ApiModelProperty(value = "涓婚敭")
     private Long id;
     /**
      * 鍏ュ簱浠撳簱缂栧彿
      */
+    @ApiModelProperty(value = "鍏ュ簱浠撳簱缂栧彿")
     private Long inWarehouseId;
     /**
      * 鍑哄簱浠撳簱鏈烘瀯缂栧彿锛堣皟鎷ㄦ満鏋勶級
      */
+    @ApiModelProperty(value = "鍑哄簱浠撳簱鏈烘瀯缂栧彿锛堣皟鎷ㄦ満鏋勶級")
     private Long outAgencyId;
     /**
      * 璋冩嫧鏃堕棿
      */
+    @ApiModelProperty(value = "璋冩嫧鏃堕棿")
     private Long createTime;
     /**
      * 璋冩嫧鎵嬬画
      */
+    @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;
 
-    public Long getInWarehouseId() {
-        return inWarehouseId;
-    }
 
-    public void setInWarehouseId(Long inWarehouseId) {
-        this.inWarehouseId = inWarehouseId;
-    }
-
-    public Long getOutAgencyId() {
-        return outAgencyId;
-    }
-
-    public void setOutAgencyId(Long outAgencyId) {
-        this.outAgencyId = outAgencyId;
-    }
-
-    public Long getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Long createTime) {
-        this.createTime = createTime;
-    }
-
-    public List<LWhProcureModelParams> getModels() {
-        return models;
-    }
-
-    public void setModels(List<LWhProcureModelParams> models) {
-        this.models = models;
-    }
-
-    public Long getBaseGoodsTemplateId() {
-        return baseGoodsTemplateId;
-    }
-
-    public void setBaseGoodsTemplateId(Long baseGoodsTemplateId) {
-        this.baseGoodsTemplateId = baseGoodsTemplateId;
-    }
-
-    public String getGoodsTemplateName() {
-        return goodsTemplateName;
-    }
-
-    public void setGoodsTemplateName(String goodsTemplateName) {
-        this.goodsTemplateName = goodsTemplateName;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getProcureDoc() {
-        return procureDoc;
-    }
-
-    public void setProcureDoc(String procureDoc) {
-        this.procureDoc = procureDoc;
-    }
-
-    public String getBusinessFormCode() {
-        return businessFormCode;
-    }
-
-    public void setBusinessFormCode(String businessFormCode) {
-        this.businessFormCode = businessFormCode;
-    }
-
-    public Long getInAgencyId() {
-        return inAgencyId;
-    }
-
-    public void setInAgencyId(Long inAgencyId) {
-        this.inAgencyId = inAgencyId;
-    }
-
-    public Short getStates() {
-        return states;
-    }
-
-    public void setStates(Short states) {
-        this.states = states;
-    }
-
-    public String getOperatorName() {
-        return operatorName;
-    }
-
-    public void setOperatorName(String operatorName) {
-        this.operatorName = operatorName;
-    }
-
-    public Long getCreateTimeStart() {
-        return createTimeStart;
-    }
-
-    public void setCreateTimeStart(Long createTimeStart) {
-        this.createTimeStart = createTimeStart;
-    }
-
-    public Long getCreateTimeEnd() {
-        return createTimeEnd;
-    }
-
-    public void setCreateTimeEnd(Long createTimeEnd) {
-        this.createTimeEnd = createTimeEnd;
-    }
-
-    public Long getInTimeStart() {
-        return inTimeStart;
-    }
-
-    public void setInTimeStart(Long inTimeStart) {
-        this.inTimeStart = inTimeStart;
-    }
-
-    public Long getInTimeEnd() {
-        return inTimeEnd;
-    }
-
-    public void setInTimeEnd(Long inTimeEnd) {
-        this.inTimeEnd = inTimeEnd;
-    }
 }
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
index 3c3ecc1..6adbcd0 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java
@@ -2,6 +2,7 @@
 
 import com.walker.web.param.ParamRequest;
 import java.util.List;
+import lombok.Data;
 
 /**
  * @ClassName LWhProcureModelParams
@@ -9,6 +10,7 @@
  * @Description
  * @Version 1.0
  **/
+@Data
 public class LWhProcureModelParams extends ParamRequest {
 
     // //瑙勬牸鍨嬪彿缂栧彿
@@ -20,45 +22,9 @@
 
     private Integer procureModelBusinessType;
 
+    // 璁¢噺鍗曚綅
+    private String baseUnit;
+
     private List<LWhProcureModelUserDTO> lWhProcureModelUserList;
 
-    public Long getPrice() {
-        return price;
-    }
-
-    public void setPrice(Long price) {
-        this.price = price;
-    }
-
-    public Integer getCounts() {
-        return counts;
-    }
-
-    public void setCounts(Integer counts) {
-        this.counts = counts;
-    }
-
-    public Long getBaseGoodsModelsId() {
-        return baseGoodsModelsId;
-    }
-
-    public void setBaseGoodsModelsId(Long baseGoodsModelsId) {
-        this.baseGoodsModelsId = baseGoodsModelsId;
-    }
-
-    public List<LWhProcureModelUserDTO> getlWhProcureModelUserList() {
-        return lWhProcureModelUserList;
-    }
-
-    public void setlWhProcureModelUserList(List<LWhProcureModelUserDTO> lWhProcureModelUserList) {
-        this.lWhProcureModelUserList = lWhProcureModelUserList;
-    }
-
-    public Integer getProcureModelBusinessType() {
-        return procureModelBusinessType;
-    }
-
-    public void setProcureModelBusinessType(Integer procureModelBusinessType) {
-        this.procureModelBusinessType = procureModelBusinessType;
-    }
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/ProjectTreeResult.java b/consum-base/src/main/java/com/consum/base/pojo/ProjectTreeResult.java
index 12c9001..0de6fef 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/ProjectTreeResult.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/ProjectTreeResult.java
@@ -2,45 +2,23 @@
 
 import com.consum.model.po.BaseCategory;
 import com.walker.web.param.ParamRequest;
-
 import java.util.List;
+import lombok.Data;
 
+@Data
 public class ProjectTreeResult extends ParamRequest {
+
     List<ProjectTreeResult> children;
 
     private Long id;
 
     private String label;
 
-    public List<ProjectTreeResult> getChildren() {
-        return children;
-    }
-
-    public void setChildren(List<ProjectTreeResult> children) {
-        this.children = children;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getLabel() {
-        return label;
-    }
-
-    public void setLabel(String label) {
-        this.label = label;
-    }
-
-    public ProjectTreeResult() {
-    }
+    private Integer sort;
 
     public ProjectTreeResult(BaseCategory baseCategory) {
         this.id = baseCategory.getId();
         this.label = baseCategory.getCategoryName();
+        this.sort = baseCategory.getOrderNumber();
     }
 }
\ No newline at end of file
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/FormProcureQryDto.java b/consum-base/src/main/java/com/consum/base/pojo/query/FormProcureQryDto.java
new file mode 100644
index 0000000..f866681
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/FormProcureQryDto.java
@@ -0,0 +1,73 @@
+package com.consum.base.pojo.query;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 閲囪喘鏌ヨ鏉′欢
+ * @date 2023/11/10 16:51
+ */
+@ApiModel(value = "閲囪喘鏌ヨ鏉′欢")
+@Data
+public class FormProcureQryDto {
+
+    @ApiModelProperty(value = "涓婚敭")
+    private Long id;
+    /**
+     * 浠撳簱缂栧彿
+     */
+    @ApiModelProperty(value = "浠撳簱缂栧彿")
+    private Long warehouseId;
+    /**
+     * 鍏ュ簱鍗曞彿
+     */
+    @ApiModelProperty(value = "鍏ュ簱鍗曞彿")
+    private String businessFormCode;
+    /**
+     * 鐗╁搧妯$増鍚嶇О
+     */
+    @ApiModelProperty(value = "鐗╁搧妯$増鍚嶇О")
+    private String goodsTemplateName;
+    /**
+     * 鏈烘瀯
+     */
+    @ApiModelProperty(value = "鏈烘瀯")
+    private Long agencyId;
+    /**
+     * 鍒涘缓浜�
+     */
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createName;
+    /**
+     * 1=寰呭叆搴擄紱2=宸插叆搴�
+     */
+    @ApiModelProperty(value = "1=寰呭叆搴擄紱2=宸插叆搴�")
+    private Integer states;
+
+    /**
+     * 鍏ュ簱鏃堕棿 寮�濮�
+     */
+    @ApiModelProperty(value = "鍏ュ簱鏃堕棿 寮�濮�")
+    @JsonFormat(pattern = "yyyyMMdd", timezone = "GMT+8")
+    private Long incomeTimeStart;
+    /**
+     * 鍏ュ簱鏃堕棿 缁撴潫
+     */
+    @ApiModelProperty(value = "鍏ュ簱鏃堕棿 缁撴潫")
+    @JsonFormat(pattern = "yyyyMMdd", timezone = "GMT+8")
+    private Long incomeTimeEnd;
+    /**
+     * 瑙勬牸鍨嬪彿id
+     */
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿id")
+    private Long baseGoodsTemplateId;
+
+    @ApiModelProperty(value = "姣忛〉鏄剧ず鏉℃暟")
+    private Integer pageSize = 10;
+    @ApiModelProperty(value = "褰撳墠椤垫暟")
+    private Integer pageNum = 1;
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/TransferQryDto.java b/consum-base/src/main/java/com/consum/base/pojo/query/TransferQryDto.java
index 4f782dc..f7fa1ad 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/TransferQryDto.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/TransferQryDto.java
@@ -1,13 +1,16 @@
 package com.consum.base.pojo.query;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
  * @author asus
  * @version 1.0
- * @description: TODO
+ * @description: 璋冩嫧鍗曟煡璇㈡潯浠�
  * @date 2023/11/6 11:47
  */
+@ApiModel(value = "璋冩嫧鍗曟煡璇㈡潯浠�")
 @Data
 public class TransferQryDto {
 
@@ -15,56 +18,69 @@
     /**
      * 璋冩嫧鍗曞彿/鍒嗗彂鍗曞彿
      */
+    @ApiModelProperty(value = "璋冩嫧鍗曞彿/鍒嗗彂鍗曞彿")
     private String businessFormCode;
     /**
      * 鐗╁搧妯$増鍚嶇О
      */
+    @ApiModelProperty(value = "鐗╁搧妯$増鍚嶇О")
     private String goodsTemplateName;
     /**
      * 鍑哄簱浠撳簱鏈烘瀯缂栧彿锛堣皟鎷ㄦ満鏋勶級
      */
+    @ApiModelProperty(value = "鍑哄簱浠撳簱鏈烘瀯缂栧彿锛堣皟鎷ㄦ満鏋勶級")
     private Long outAgencyId;
     /**
      * 鎺ユ敹鏈烘瀯
      */
+    @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;
 
     /**
      * 瑙勬牸鍨嬪彿id
      */
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿id")
     private Long baseGoodsTemplateId;
 
     /**
      * 椤电爜
      */
+    @ApiModelProperty(value = "椤电爜")
     private Integer pageNum;
     /**
      * 椤靛ぇ灏�
      */
+    @ApiModelProperty(value = "椤靛ぇ灏�")
     private Integer pageSize;
 
 //    /**
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureDetailVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureDetailVO.java
new file mode 100644
index 0000000..80b462b
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureDetailVO.java
@@ -0,0 +1,43 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 閲囪喘鍒楄〃鏄庣粏淇℃伅
+ * @date 2023/11/11 9:51
+ */
+@ApiModel(value = "閲囪喘鍒楄〃鏄庣粏淇℃伅")
+@Data
+public class FormProcureDetailVO {
+
+
+    // 涓婚敭
+    private Long id;
+    // 涓氬姟鍗曞彿
+    private String businessFormCode;
+    //鐗╁搧妯$増缂栧彿
+    private Long baseGoodsTemplateId;
+    //鐗╁搧妯$増鍚嶇О
+    private String goodsTemplateName;
+    //瑙勬牸鍨嬪彿缂栧彿
+    private Long baseGoodsModelsId;
+    //瑙勬牸鍨嬪彿鍚嶇О
+    private String goodsModelsName;
+    //鍗曚环
+    private Long price;
+    //鐗╁搧鍒嗗彂鏁伴噺
+    private Integer goodsNum;
+    //閲戦
+    private Long amount;
+    //鎵�灞炴満鏋�
+    private String agencyName;
+    //鍒涘缓浜�
+    private String createName;
+    //鎿嶄綔鏃堕棿
+    private String procureTime;
+
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java
new file mode 100644
index 0000000..b9c504e
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java
@@ -0,0 +1,72 @@
+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/10 11:37
+ */
+@ApiModel(value = "閲囪喘鍒楄〃鏄庣粏淇℃伅")
+@Data
+public class FormProcureVO {
+
+    // 涓婚敭
+    private Long id;
+
+
+    // 灞炴�у垪琛�
+    private String businessFormCode;
+
+
+    private Long warehouseId;
+
+
+    private String warehouseName;
+
+
+    private Long buyerId;
+
+
+    private String buyerName;
+
+
+    private Long procureTime;
+
+
+    private String procureDoc;
+
+
+    private Integer buyType;
+
+
+    private Integer states;
+
+
+    private Long agencyId;
+
+
+    private String agencyName;
+
+
+    private Long incomeId;
+
+
+    private String incomeName;
+
+
+    private Long incomeTime;
+
+
+    private String beiz;
+
+
+    private Long lWarehouseFlowId;
+
+    private List<FromProcureTemplateInfoVO> fromProcureTemplateInfoList;
+
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/FromProcureTemplateInfoVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/FromProcureTemplateInfoVO.java
new file mode 100644
index 0000000..2e330ed
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/FromProcureTemplateInfoVO.java
@@ -0,0 +1,23 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/10 11:37
+ */
+@ApiModel
+@Data
+public class FromProcureTemplateInfoVO {
+
+    private Long id;
+    private Long baseCategoryId;
+    private Long baseGoodsTemplateId;
+    private String goodsTemplateName;
+    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
new file mode 100644
index 0000000..ec4c7e6
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java
@@ -0,0 +1,23 @@
+package com.consum.base.pojo.response;
+
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/11 17:10
+ */
+@Data
+public class GoodsModelVO {
+
+    private Long id;
+    private String baseGoodsModelsName;
+    private String unit;
+    private Long price;
+    private Integer counts;
+    private Integer worehouseCount;
+    private Long baseGoodsModelsId;
+
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureExtendVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureExtendVO.java
new file mode 100644
index 0000000..58fbcf8
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureExtendVO.java
@@ -0,0 +1,69 @@
+package com.consum.base.pojo.response;
+
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/11 18:00
+ */
+@Data
+public class LWhFormProcureExtendVO {
+
+
+    // 涓婚敭
+    private Long id;
+
+
+    // 灞炴�у垪琛�
+    private String businessFormCode;
+
+
+    private Long warehouseId;
+
+
+    private String warehouseName;
+
+
+    private Long buyerId;
+
+
+    private String buyerName;
+
+
+    private Long procureTime;
+
+
+    private String procureDoc;
+
+
+    private Integer buyType;
+
+
+    private Integer states;
+
+
+    private Long agencyId;
+
+
+    private String agencyName;
+
+
+    private Long incomeId;
+
+
+    private String incomeName;
+
+
+    private Long incomeTime;
+
+
+    private String beiz;
+
+
+    private Long lWarehouseFlowId;
+
+    private List<LWhFormProcureGoodsVO> procureGoods;
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureGoodsVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureGoodsVO.java
new file mode 100644
index 0000000..4698c6c
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureGoodsVO.java
@@ -0,0 +1,33 @@
+package com.consum.base.pojo.response;
+
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @ClassName LWhFormProcureGoodsParams
+ * @Date 2023/10/27
+ * @Description
+ * @Version 1.0
+ **/
+@Data
+public class LWhFormProcureGoodsVO {
+
+    // 涓婚敭
+    private Long id;
+    //鍒嗙被缂栧彿
+    private Long baseCategoryId;
+    //鍒嗙被鍚嶇О
+    private String baseCategoryName;
+    //鐗╁搧妯$増缂栧彿
+    private Long baseGoodsTemplateId;
+    //渚涘簲鍟�
+    private String supplier;
+
+    private Long whFormProcureId;
+
+    private String goodsTemplateName;
+
+    private Integer sort;
+
+    private List<GoodsModelVO> models;
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/TransferInfoVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/TransferInfoVO.java
new file mode 100644
index 0000000..80b8c34
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/TransferInfoVO.java
@@ -0,0 +1,29 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/10 15:35
+ */
+@ApiModel(value = "鏈烘瀯鍒嗗彂鍗曚俊鎭�")
+@Data
+public class TransferInfoVO {
+
+    @ApiModelProperty(value = "id")
+    private String id;
+    @ApiModelProperty(value = "鍗曞彿")
+    private String code;
+    @ApiModelProperty(value = "鐗╁搧鍚嶇О")
+    private String name;
+    @ApiModelProperty(value = "鍒嗗彂鏁伴噺")
+    private String num;
+    @ApiModelProperty(value = "鍙��鏁伴噺")
+    private String refundNum;
+    @ApiModelProperty(value = "鍒嗗彂鏃堕棿")
+    private String createDate;
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/response/WarehouseFlowVO.java b/consum-base/src/main/java/com/consum/base/pojo/response/WarehouseFlowVO.java
new file mode 100644
index 0000000..57c73b3
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/response/WarehouseFlowVO.java
@@ -0,0 +1,40 @@
+package com.consum.base.pojo.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author asus
+ * @version 1.0
+ * @description: 浠撳簱娴佹按鏄庣粏淇℃伅
+ * @date 2023/11/11 11:26
+ */
+@ApiModel(value = "浠撳簱娴佹按鏄庣粏淇℃伅")
+@NoArgsConstructor
+@Data
+public class WarehouseFlowVO {
+
+
+    @ApiModelProperty(value = "鍟嗗搧妯℃澘鍚嶇О")
+    private String goodsTemplateName;
+    @ApiModelProperty(value = "瑙勬牸鍚嶇О")
+    private String baseGoodsModelsName;
+    @ApiModelProperty(value = "浜ゆ槗鏃堕棿")
+    private Long dealTime;
+    @ApiModelProperty(value = "浜ゆ槗绫诲瀷")
+    private Integer businessType;
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createdName;
+    @ApiModelProperty(value = "鏁伴噺")
+    private Integer thisCount;
+    @ApiModelProperty(value = "浜ゆ槗鍗曞彿")
+    private String businessFormCode;
+    @ApiModelProperty(value = "缁忚惀鍗曚綅")
+    private String agencyName;
+    @ApiModelProperty(value = "浜ゆ槗鍗旾D")
+    private Long businessFormId;
+    @ApiModelProperty(value = "浜ゆ槗绫诲瀷")
+    private Integer thisType;
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java
index 48d474f..beb28d3 100644
--- a/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java
@@ -10,13 +10,12 @@
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
 
 /**
  * @Description 鐗╁搧鍒嗙被
@@ -38,7 +37,9 @@
         BeanUtils.copyProperties(param, baseCategory);
         baseCategory.setId(IdUtil.generateId());
         //灞傜骇
-        if (baseCategory.getFatherCategoryId() == 0L) {  //涓�绾у垎绫�
+        if (baseCategory.getFatherCategoryId() == null) {
+            //涓�绾у垎绫�
+            baseCategory.setFatherCategoryId(0L);
             baseCategory.setLevels(Constants.LEVELS_ONE);
         } else {
             //鏍规嵁鐖剁被id鏌ヨ涓婄骇鍒嗙被淇℃伅
@@ -59,11 +60,11 @@
     }
 
     /**
+     * @param categoryName
+     * @param fatherCategoryId
      * @Description 鏍规嵁鍒嗙被鍚嶇О鍜岀埗绫籭d鏌ヨ鍒嗙被
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/23
-     * @param categoryName
-     * @param fatherCategoryId
      */
     public BaseCategory getByCategoryNameAndFatherCategoryId(String categoryName, Long fatherCategoryId) {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
@@ -87,7 +88,11 @@
     public GenericPager<BaseCategory> queryBaseCategoryList(BaseCategoryParam param) {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
         HashMap<String, Object> paramts = new HashMap<>();
-
+        //鍒嗙被鍚嶇О
+        if (param.getFatherCategoryId() != null) {
+            sql.append("and father_category_id =:fatherCategoryId ");
+            paramts.put("fatherCategoryId", param.getFatherCategoryId());
+        }
         //鍒嗙被鍚嶇О
         if (!StringUtils.isEmpty(param.getCategoryName())) {
             sql.append(" and category_name like:category_name ");
@@ -110,7 +115,7 @@
     }
 
     /**
-     * @Description  缂栬緫
+     * @Description 缂栬緫
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/23
      */
@@ -120,6 +125,7 @@
 
     /**
      * 淇敼鐘舵��
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/9/27
      */
@@ -144,6 +150,7 @@
 
     /**
      * 鏍规嵁鑺傜偣id鏌ヨ鑺傜偣璇︽儏
+     *
      * @author 鍗㈠簡闃�
      * @Date 2023/10/23
      */
@@ -161,23 +168,42 @@
         return this.select(QUERY_TREE_ALL, new Object[]{}, new BaseCategory());
     }
 
-    public List<ProjectTreeResult> tree(String categoryName) {
+    public List<ProjectTreeResult> tree() {
         BaseCategory categoryParam = new BaseCategory();
         categoryParam.setStates(1);
-        List<BaseCategory> categories = select(categoryParam);
-        return categories.stream()
-                .filter(category -> Integer.valueOf(1).equals(category.getLevels()))
-                .sorted(Comparator.comparing(BaseCategory::getOrderNumber))
-                .map(ProjectTreeResult::new)
-                .peek(lv1TreeResult -> lv1TreeResult.setChildren(categories.stream().filter(categorie -> lv1TreeResult.getId().equals(categorie.getFatherCategoryId())).sorted(Comparator.comparing(BaseCategory::getOrderNumber)).map(ProjectTreeResult::new).collect(Collectors.toList())))
-                .collect(Collectors.toList());
+        //鏌ュ嚭鎵�鏈夊垎绫�
+        List<BaseCategory> all = select(categoryParam);
+        //缁勮鎴愮埗瀛愭爲褰㈢粨鏋�
+        //1绾у垎绫�
+        List<ProjectTreeResult> menus = all.stream().filter(entity -> entity.getLevels() == 1).map(entity -> {
+            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
+            projectTreeResult.setChildren(getChildren(projectTreeResult, all));
+            return projectTreeResult;
+        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
+        return menus;
+
     }
 
     /**
-     * @Description  涓夌骇鍒嗙被鍒楄〃鏌ヨ
+     * 閫掑綊鏌ユ壘鎵�鏈夎彍鍗曠殑瀛愯彍鍗�
+     */
+    private List<ProjectTreeResult> getChildren(ProjectTreeResult root, List<BaseCategory> all) {
+        List<ProjectTreeResult> children = all.stream().filter(entity -> entity.getFatherCategoryId().equals(root.getId())).map(entity -> {
+
+            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
+            //閫氳繃閫掑綊鎵惧埌瀛愬垎绫�
+            projectTreeResult.setChildren(getChildren(projectTreeResult, all));
+            return projectTreeResult;
+        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
+        return children;
+    }
+
+
+    /**
+     * @return
+     * @Description 涓夌骇鍒嗙被鍒楄〃鏌ヨ
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
-     * @return
      */
     public List<BaseCategory> queryForLv3Tree() {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE states = 1 and levels = 3 order by ORDER_NUMBER,CREATE_TIME desc");
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 4db2cf8..2c12708 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
@@ -197,7 +197,12 @@
         }
         int flag1 = this.update(baseGoodsTemplate);
         //2.淇敼瑙勬牸鍨嬪彿鐨勫崟浣�
+        // TODO id 鐗╁搧鍨嬪彿淇敼寰呮暣鐞�
         List<BaseGoodsModels> modelsList = param.getModels();
+        for (BaseGoodsModels baseGoodsModel : modelsList) {
+            BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+            BeanUtils.copyProperties(baseGoodsModel, baseGoodsModels);
+        }
         int flag2 = this.update(modelsList);
 
         if (flag1 > 0 && flag2 > 0) {
@@ -295,13 +300,17 @@
         return this.select(goodsTemplate);
     }
 
-    public List<BaseGoodsTemplate> queryByAgencyId(Long agencyId) {
+    public List<BaseGoodsTemplate> queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId) {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1=1 ");
         Map<String, Object> params = new HashMap<>();
         if (agencyId != null) {
-            sql.append(" AND model.id=:modelId");
+            sql.append("AND AGENCY_ID=:agencyId");
             params.put("agencyId", agencyId);
         }
+        if (categoryId != null) {
+            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/LWarehouseFlowService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
index 4d3bba5..1751794 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
@@ -5,14 +5,12 @@
 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
-
  * @Date 2023/10/25
  * @Description
  * @Version 1.0
@@ -26,7 +24,7 @@
      * @param param
      * @return
      */
-    private static String QUERY_BUSINESS_FLOW = "SELECT flow.BUSINESS_TYPE as businessType,flow.BUSINESS_FORM_ID as businessFormId,tCaiGou.BUSINESS_FORM_CODE AS businessFormCode,record.GOODS_TEMPLATE_NAME AS goodsTemplateName,record.BASE_GOODS_MODELS_NAME AS baseGoodsModelsName,record.THIS_COUNT AS thisCount,record.THIS_TYPE AS thisType,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME END AS agencyName,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUYER_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.OPERATOR_NAME END AS createdName,flow.DEAL_TIME AS dealTime 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 ,tCaiGou.BUSINESS_FORM_CODE ,record.GOODS_TEMPLATE_NAME ,record.BASE_GOODS_MODELS_NAME ,record.THIS_COUNT ,record.THIS_TYPE ,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);
@@ -38,9 +36,9 @@
 //            sql.append(" and flow.BUSINESS_TYPE =?");
 //            params.add(param.getBusinessType());
         }
-        if (param.getBusinessFormCode() != null) {
-            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");
+        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());
 //            sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN flow.BUSINESS_FORM_CODE=?");
 //            params.add(param.getBusinessFormCode());
@@ -60,10 +58,8 @@
             paramts.put("agencyId", param.getAgencyId());
         }
         if (param.getCreatedName() != null) {
-            sql.append(" AND CASE" +
-                    " WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME LIKE :createdName"+
-                    " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME LIKE :createdName END"
-            );
+            sql.append(" AND CASE" + " WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME LIKE :createdName"
+                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME LIKE :createdName END");
             paramts.put("createdName", StringUtils.CHAR_PERCENT + param.getCreatedName() + StringUtils.CHAR_PERCENT);
         }
         if (param.getDealTimeStart() != null) {
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java
index d0189f9..5f497b8 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java
@@ -1,17 +1,17 @@
 package com.consum.base.service;
 
-import com.consum.base.pojo.LWhFormProcureParam;
+import com.consum.base.core.tools.MapperUtil;
+import com.consum.base.pojo.query.FormProcureQryDto;
 import com.consum.model.po.LWhFormProcure;
 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 lWhFormProcureService
-
  * @Date 2023/10/24
  * @Description 閲囪喘鍗�
  * @Version 1.0
@@ -21,7 +21,7 @@
 
     private static String QUERY_FORM_PROCURE_LIST = "SELECT * FROM L_WH_FORM_PROCURE WHERE 1 = 1";
 
-    public GenericPager<LWhFormProcure> queryFormProcureList(LWhFormProcureParam param) {
+    public GenericPager<LWhFormProcure> queryFormProcureList(FormProcureQryDto param) {
         HashMap<String, Object> paramts = new HashMap<>();
         StringBuilder sql = new StringBuilder(QUERY_FORM_PROCURE_LIST);
         //鍏ュ簱鍗曞彿
@@ -29,19 +29,19 @@
             sql.append(" and BUSINESS_FORM_CODE like :businessFormCode ");
             paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
         }
-        if (param.getAgencyId() != null){
+        if (param.getAgencyId() != null) {
             sql.append(" and AGENCY_ID like :agencyId ");
-            paramts.put("agencyId",  param.getAgencyId() + StringUtils.CHAR_PERCENT);
+            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
         }
         //鍒涘缓浜�
-        if (!StringUtils.isEmpty(param.getBuyerName())) {
+        if (!StringUtils.isEmpty(param.getCreateName())) {
             sql.append(" and buyer_Name =:buyerName ");
-            paramts.put("buyerName", param.getBuyerName());
+            paramts.put("buyerName", param.getCreateName());
         }
         //鐘舵��
         if (param.getStates() != null) {
-            sql.append(" and status =:status ");
-            paramts.put("status", param.getStates());
+            sql.append(" and states =:states ");
+            paramts.put("states", param.getStates());
         }
         //鍏ュ簱鏃堕棿
         if (param.getIncomeTimeStart() != null) {
@@ -54,7 +54,8 @@
         }
         //鐗╁搧鍚嶇О
         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)");
+            sql.append(
+                " AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
             paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
         }
         sql.append(" ORDER BY PROCURE_TIME DESC");
@@ -63,5 +64,52 @@
 
     }
 
+    public GenericPager<Map<String, Object>> queryFormProcureDetailList(FormProcureQryDto param) {
+        HashMap<String, Object> paramts = new HashMap<>();
+        StringBuilder sql = new StringBuilder(
+            "SELECT pm.id,fp.BUSINESS_FORM_CODE,fpg.GOODS_TEMPLATE_NAME,pm.PRICE,pm.COUNTS, "
+                + "( pm.PRICE * pm.COUNTS ) amount,fp.AGENCY_NAME,fp.BUYER_NAME,fp.PROCURE_TIME,pm.BUSINESS_ID,pm.BASE_GOODS_MODELS_NAME FROM l_wh_procure_model pm "
+                + "LEFT JOIN l_wh_form_procure fp ON pm.BUSINESS_ID = fp.id "
+                + "LEFT JOIN l_wh_form_procure_goods fpg ON fp.id = fpg.WH_FORM_PROCURE_ID WHERE pm.BUSINESS_TYPE = 1 ");
+        //鍏ュ簱鍗曞彿
+        if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
+            sql.append("and BUSINESS_FORM_CODE = :businessFormCode ");
+            paramts.put("businessFormCode", param.getBusinessFormCode());
+        }
+        //鐗╁搧鍚嶇О
+        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
+            sql.append("and fpg.GOODS_TEMPLATE_NAME like :goodsTemplateName ");
+            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+        }
+        if (param.getAgencyId() != null) {
+            sql.append("and AGENCY_ID like :agencyId ");
+            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
+        }
+        //鍒涘缓浜�
+        if (!StringUtils.isEmpty(param.getCreateName())) {
+            sql.append("and buyer_Name =:buyerName ");
+            paramts.put("buyerName", param.getCreateName());
+        }
+        //鍏ュ簱寮�濮嬫椂闂�
+        if (param.getIncomeTimeStart() != null) {
+            sql.append("and INCOME_TIME >=:incomeTimeStart ");
+            paramts.put("incomeTimeStart", param.getIncomeTimeStart() * 1000000);
+        }
+        //鍏ュ簱缁撴潫鏃堕棿
+        if (param.getIncomeTimeEnd() != null) {
+            sql.append("and INCOME_TIME <:incomeTimeEnd ");
+            paramts.put("incomeTimeEnd", param.getIncomeTimeEnd() * 1000000 + 240000);
+        }
+        //瑙勬牸鍨嬪彿
+        if (param.getBaseGoodsTemplateId() != null) {
+            sql.append("and fpg.BASE_GOODS_TEMPLATE_ID =:baseGoodsTemplateId ");
+            paramts.put("baseGoodsTemplateId",param.getBaseGoodsTemplateId());
+        }
+
+        sql.append("ORDER BY PROCURE_TIME DESC");
+        GenericPager genericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+        return genericPager;
+
+    }
 
 }
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 810a5bf..9cb5f1d 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
@@ -144,7 +144,7 @@
             // 鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂
             if (model.getProcureModelBusinessType() == 4) {
                 List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList();
-                for (LWhProcureModelUserDTO lWhProcureModelUserDTO : model.getlWhProcureModelUserList()) {
+                for (LWhProcureModelUserDTO lWhProcureModelUserDTO : model.getLWhProcureModelUserList()) {
                     LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                     lWhProcureModelUser.setId(IdUtil.generateId());
                     lWhProcureModelUser.setTransBusinessId(lWhFormTransferId);
diff --git a/consum-base/src/main/java/com/consum/base/util/MapUtils.java b/consum-base/src/main/java/com/consum/base/util/MapUtils.java
new file mode 100644
index 0000000..92cf4f5
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/util/MapUtils.java
@@ -0,0 +1,83 @@
+package com.consum.base.util;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+public class MapUtils {
+
+    public static <T> T convertMapToObj(Map<String, Object> map, Class<T> clazz) {
+        try {
+            T obj = clazz.newInstance();
+            for (Map.Entry<String, Object> entry : map.entrySet()) {
+                Field field = clazz.getDeclaredField(entry.getKey());
+                field.setAccessible(true);
+                field.set(obj, entry.getValue());
+            }
+            return obj;
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (NoSuchFieldException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    public static final char UNDERLINE = '_';
+
+    /**
+     * 鎶妋ap鐨刱ey杞崲鎴愰┘宄板懡鍚�
+     *
+     * @param map
+     * @return
+     */
+    public static Map<String, Object> toReplaceKeyLow(Map<String, Object> map) {
+        Map reMap = new HashMap();
+
+        if (map != null) {
+            Iterator var2 = map.entrySet().iterator();
+
+            while (var2.hasNext()) {
+                Map.Entry<String, Object> entry = (Map.Entry) var2.next();
+                reMap.put(underlineToCamel((String) entry.getKey()), map.get(entry.getKey()));
+            }
+
+            map.clear();
+        }
+
+        return reMap;
+    }
+
+
+    /**
+     * 灏嗕笅鍒掔嚎杞负椹煎嘲鏍煎紡
+     *
+     * @param param
+     * @return
+     */
+    public static String underlineToCamel(String param) {
+        if (param == null || "".equals(param.trim())) {
+            return "";
+        }
+        int len = param.length();
+        StringBuilder sb = new StringBuilder(len);
+
+        for (int i = 0; i < len; i++) {
+            char c = param.charAt(i);
+            if (c == UNDERLINE) {
+                if (++i < len) {
+                    sb.append(Character.toUpperCase(param.charAt(i)));
+                }
+            } else {
+                sb.append(Character.toLowerCase(param.charAt(i)));
+            }
+        }
+        return sb.toString();
+    }
+
+
+}
\ No newline at end of file

--
Gitblit v1.9.1