From 33032d320cb75854def7391026b0401f1bfb8360 Mon Sep 17 00:00:00 2001
From: 黎星凯 <13949086503@163.com>
Date: 星期六, 11 五月 2024 17:26:02 +0800
Subject: [PATCH] 20240511修改: 分发单优化, 分类,物品,分发单明细,采购单明细数据导入

---
 consum-base/src/main/java/com/consum/base/util/DateUtil.java                                  |  250 +++++++
 consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java             |   11 
 admin-web/src/views/foundation/classification/index.vue                                       |   16 
 consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java          |   31 
 consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java           |   58 +
 consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java             |   53 +
 consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java           |  434 ++++++++++++
 deploy-jar-single/src/main/resources/import/物品信息old.xls                                       |    0 
 deploy-jar-single/src/main/resources/import/采购导入old.xls                                       |    0 
 consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java         |  269 +++++--
 deploy-jar-single/src/main/resources/import/物品信息.xls                                          |    0 
 consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java              |  202 +++++
 consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java          |    8 
 admin-web/public/static/config.js                                                             |    4 
 deploy-jar-single/src/main/resources/import/采购导入.xls                                          |    0 
 consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java |   15 
 consum-base/pom.xml                                                                           |    4 
 consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java                     |   39 +
 consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java        |   26 
 admin-web/src/views/stock/procure/purchaseOrder/index.vue                                     |    8 
 consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java              |  142 ++--
 consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java                    |   15 
 deploy-jar-single/src/main/resources/import/分发导入.xls                                          |    0 
 consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java              |    5 
 deploy-jar-single/src/main/resources/import/物品分类.xls                                          |    0 
 consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java            |  374 ++++++++--
 admin-web/src/views/departmentitem/itemdis/distribution/index.vue                             |   67 +
 27 files changed, 1,718 insertions(+), 313 deletions(-)

diff --git a/admin-web/public/static/config.js b/admin-web/public/static/config.js
index 09bd03b..77b3c75 100644
--- a/admin-web/public/static/config.js
+++ b/admin-web/public/static/config.js
@@ -9,8 +9,8 @@
 
 
   // 鎺ュ彛璇锋眰鍦板潃
-  ftpUrl: 'http://172.16.60.172:8083/lowConsum',//寮�鍙�
-  apiBaseURL: 'http://172.16.60.172:8083/lowConsum',//寮�鍙�
+  ftpUrl: 'http://172.16.20.9:8083/lowConsum',//寮�鍙�
+  apiBaseURL: 'http://172.16.20.9:8083/lowConsum',//寮�鍙�
 
 
   // apiBaseURL: 'http://172.16.60.110:8083/lowConsum',//寮�鍙�
diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
index b994d13..1e0fb27 100644
--- a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
+++ b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
@@ -11,6 +11,7 @@
             <!--鍒楄〃-->
             <div class="table-tool-bar" style="margin-bottom: 15px">
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium"/>
+              <my-button name="瀵煎叆" @click="openImport()" site="tools" size="medium" />
             </div>
             <div :style="{ 'overflow-y': 'auto', height: `calc(100vh - 320px)` }" v-loading="loading">
               <el-row v-if="list.length" class="card" :gutter="5">
@@ -22,19 +23,19 @@
                           <span>鍒嗗彂鍗曞彿锛�</span>
                           <span class="value">{{ item.businessFormCode }}</span>
 
-                          <span style="padding-left: 30px">鍒嗗彂鐘舵�侊細</span>
-                          <span style="color: red" v-if="item.states === 0"  class="value">鏈垎鍙�</span>
-                          <span v-if="item.states === 2"  class="value">宸插垎鍙�</span>
+<!--                          <span style="padding-left: 30px">鍒嗗彂鐘舵�侊細</span>-->
+<!--                          <span style="color: red" v-if="item.states === 0"  class="value">鏈垎鍙�</span>-->
+<!--                          <span v-if="item.states === 2"  class="value">宸插垎鍙�</span>-->
                         </div>
                         <div class="card-header-right">
                           <!-- 瀵煎嚭鍗曞瓙 -->
-                          <el-button v-if="item.states === 0" name="涓嬭浇" site="form" type="primary" size="mini" @click="handleDetail(item)">
-                            涓嬭浇
-                          </el-button>
+<!--                          <el-button v-if="item.states === 0" name="涓嬭浇" site="form" type="primary" size="mini" @click="handleDetail(item)">-->
+<!--                            涓嬭浇-->
+<!--                          </el-button>-->
 
-                          <el-button v-if="item.states === 0" name="涓婁紶" site="form" type="primary" size="mini" @click="handleUploadPage(item)">
-                            涓婁紶
-                          </el-button>
+<!--                          <el-button v-if="item.states === 0" name="涓婁紶" site="form" type="primary" size="mini" @click="handleUploadPage(item)">-->
+<!--                            涓婁紶-->
+<!--                          </el-button>-->
 
                           <el-button name="鏌ョ湅璇︽儏" site="form" type="primary" size="mini" @click="handleDetail(item)">
                             鏌ョ湅璇︽儏
@@ -45,7 +46,7 @@
                         <div class="box"><span class="span-two">閮ㄩ棬锛�</span>{{ item.inWarehouseName }}</div>
                         <div class="box"><span class="span-two">鍒嗗彂浜猴細</span>{{ item.outOperatorName }}</div>
                         <div class="box">
-                          <span class="span-two">鍒嗗彂鏃堕棿锛�</span>{{ item.inTime | formatTime }}
+                          <span class="span-two">鍒嗗彂鏃堕棿锛�</span>{{ item.createTime | formatTime }}
                         </div>
                       </div>
                       <div class="card-end">
@@ -104,6 +105,13 @@
         @close="detailSetting.show = false"
         ref="detailRef"
     ></detail>
+
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+
   </div>
 </template>
 
@@ -117,6 +125,7 @@
 import uploadPage from './uploadPage';
 import listPage from '@/views/mixins/listPage';
 import {getUserDetail} from "@/utils/auth";
+import {getBaseUrl} from '@/utils/base';
 
 export default {
   name: 'index',
@@ -127,6 +136,26 @@
       loading: false,
       adddialog: false,
       list: [],
+
+      // 瀵煎叆
+      importSetting: {
+        dialogTitle: '瀵煎叆',
+        dialogShow: false,
+        fileSettings: {
+          data: {},
+          uploadUrl: getBaseUrl() + '/pc/l/wh/form/transfer/import2', // 涓婁紶鍦板潃
+          accept: '.xls', // 鏍煎紡
+          type: 'text', // 鍥炴樉褰㈠紡
+          loading: true, // 瀵煎叆鏁堟灉
+        },
+        /* 妯℃澘涓嬭浇 */
+        templateSettings: {
+          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate?type=distribute', // 涓嬭浇鍦板潃
+        },
+        onSuccess: null,
+      },
+
       // 鎼滅储妗�
       items: [
         {
@@ -203,7 +232,23 @@
         this.total = res.totalRows;
         this.loading = false;
       });
-    }
+    },
+    openImport(){
+      this.importOrg();
+    },
+    //瀵煎叆
+    importOrg() {
+      this.importSetting.dialogShow = true;
+      this.importSetting.onSuccess = (response, callBack) => {
+        if (response.code === 1) {
+          this.$message.success(response.msg);
+          this.search(1);
+        } else {
+          this.$message.warning(response.msg);
+        }
+        callBack();
+      };
+    },
   },
 };
 </script>
diff --git a/admin-web/src/views/foundation/classification/index.vue b/admin-web/src/views/foundation/classification/index.vue
index 115890d..774aa37 100644
--- a/admin-web/src/views/foundation/classification/index.vue
+++ b/admin-web/src/views/foundation/classification/index.vue
@@ -69,15 +69,15 @@
         dialogShow: false,
         fileSettings: {
           data: {},
-          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+          uploadUrl: getBaseUrl() + '/pc/base/category/import', // 涓婁紶鍦板潃
           accept: '.xls', // 鏍煎紡
           type: 'text', // 鍥炴樉褰㈠紡
-          loading: false, // 瀵煎叆鏁堟灉
+          loading: true, // 瀵煎叆鏁堟灉
         },
         /* 妯℃澘涓嬭浇 */
         templateSettings: {
           templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate?type=classification', // 涓嬭浇鍦板潃
         },
         onSuccess: null,
       },
@@ -108,6 +108,12 @@
               name: '鏂板',
               click: () => {
                 this.showAdd(null);
+              },
+            },
+            {
+              name: '瀵煎叆',
+              click: () => {
+                this.openImport(null);
               },
             },
           ],
@@ -288,6 +294,10 @@
       this.filterFrom = Object.assign(this.filterFrom, params);
       this.search(1);
     },
+
+    openImport(){
+      this.importOrg();
+    },
   },
 };
 </script>
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/index.vue b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
index fa78cbb..aa59722 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/index.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
@@ -12,7 +12,7 @@
             <div class="table-tool-bar" style="margin-bottom: 15px">
 <!--              <my-button name="鏂板"  check-permission="procure:order:add" @click="handleAdd" site="tools" size="medium" />-->
               <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
-              <my-button name="瀵煎叆" @click="importSetting.dialogShow = true" site="tools" size="medium" />
+              <my-button name="瀵煎叆" @click="openImport()" site="tools" size="medium" />
             </div>
             <div v-loading="loading" style="margin-bottom: 15px">
               <div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }">
@@ -226,7 +226,7 @@
           uploadUrl: getBaseUrl() + '/pc/whForm/procure/import', // 涓婁紶鍦板潃
           accept: '.xls', // 鏍煎紡
           type: 'text', // 鍥炴樉褰㈠紡
-          loading: false, // 瀵煎叆鏁堟灉
+          loading: true, // 瀵煎叆鏁堟灉
         },
         /* 妯℃澘涓嬭浇 */
         templateSettings: {
@@ -300,6 +300,10 @@
           .catch(() => {});
       });
     },
+    openImport(){
+      this.importOrg();
+    }
+
   },
 };
 </script>
diff --git a/consum-base/pom.xml b/consum-base/pom.xml
index c1e9318..0edc9dd 100644
--- a/consum-base/pom.xml
+++ b/consum-base/pom.xml
@@ -145,6 +145,10 @@
             <artifactId>hutool-core</artifactId>
             <version>4.5.3</version>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
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 f827446..552f22d 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
@@ -1,7 +1,19 @@
 package com.consum.base.controller;
 
+import java.io.IOException;
 import java.util.List;
-
+import java.util.Map;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.alibaba.excel.exception.ExcelDataConvertException;
+import com.consum.base.pojo.*;
+import com.consum.base.pojo.excel.ImportClassificationTemplate;
+import com.consum.model.po.*;
+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;
@@ -9,20 +21,16 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
-import com.consum.base.pojo.BaseCategoryParam;
-import com.consum.base.pojo.ProjectTreeResult;
 import com.consum.base.service.BaseCategoryService;
 import com.consum.base.service.BaseGoodsTemplateService;
-import com.consum.model.po.BaseCategory;
 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.Api;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * @Description 鐗╁搧鍒嗙被
@@ -70,7 +78,7 @@
         }
         // 鍒ゆ柇鍚屼竴鐖剁被id涓嬪垎绫诲悕绉版槸鍚﹂噸澶�
         BaseCategory category = this.baseCategoryService.getByCategoryNameAndFatherCategoryId(param.getCategoryName(),
-            param.getFatherCategoryId());
+                param.getFatherCategoryId());
         if (category != null) {
             return ResponseValue.error("鍒嗙被鍚嶇О宸插瓨鍦�");
         }
@@ -214,4 +222,184 @@
         return ResponseValue.success(baseCategories);
     }
 
+    /**
+     * 瀵煎叆鐗╁搧鍒嗙被
+     *
+     * @param file
+     * @return
+     * @throws IOException
+     */
+    @PostMapping("/import")
+    public ResponseValue importData(MultipartFile file) {
+        String originalFilename = file.getOriginalFilename();
+//        if (!".xls".endsWith(originalFilename)) {
+//            return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+//        }
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        if (sysInfo == null) {
+            return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
+        }
+        // 褰撳墠鐧诲綍鐢ㄦ埛
+        S_user_core currentUser = this.getCurrentUser();
+        try {
+            EasyExcelFactory.read(file.getInputStream(), ImportClassificationTemplate.class,
+                    new AnalysisEventListener<ImportClassificationTemplate>() {
+
+                        /**
+                         * 姣忔潯瀛樺偍鐨刲ist
+                         */
+                        final List<ImportClassificationTemplate> importData = Lists.newArrayList();
+
+                        /**
+                         * 璇诲彇鐨勮鍙�
+                         */
+                        Integer rowIndex = 0;
+
+                        /**
+                         * 琛ㄥご淇℃伅
+                         * @param headMap
+                         * @param context
+                         */
+                        @Override
+                        public void invokeHeadMap(Map headMap, AnalysisContext context) {
+                            // 楠岃瘉琛ㄥご鏁伴噺
+                            logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+                            if (headMap.size() != 4) {
+                                throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+                            }
+                        }
+
+                        /**
+                         * 鏁版嵁澶勭悊
+                         * @param data
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void invoke(ImportClassificationTemplate data, AnalysisContext analysisContext) {
+                            rowIndex++;
+                            // 璺宠繃
+                            if (data.getCategoryOne().contains("璇存槑锛�")) {
+                                return;
+                            }
+                            if (StrUtil.isEmpty(data.getCategoryOne())) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝涓�绾у垎绫讳笉鑳戒负绌猴細" + data.getCategoryOne());
+                            }
+                            if (StrUtil.isEmpty(data.getCategoryTwo())) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝浜岀骇鍒嗙被涓嶈兘涓虹┖锛�" + data.getCategoryTwo());
+                            }
+                            if (StrUtil.isEmpty(data.getCategoryThree())) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + data.getCategoryThree());
+                            }
+                            if (StrUtil.isEmpty(data.getType())) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝绠$悊鍒嗙被涓嶈兘涓虹┖锛�" + data.getType());
+                            }
+                            importData.add(data);
+                        }
+
+                        /**
+                         * 鏁版嵁澶勭悊瀵煎叆涓绘柟娉�
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+                            for (ImportClassificationTemplate data : importData) {
+                                String h1 = data.getCategoryOne();
+                                String h2 = data.getCategoryTwo();
+                                String h3 = data.getCategoryThree();
+                                String type = data.getType();
+                                BaseCategoryParam baseCategoryParam1 = new BaseCategoryParam();
+                                baseCategoryParam1.setFatherCategoryId(0L);
+                                baseCategoryParam1.setCategoryName(h1);
+                                GenericPager<BaseCategory> baseCategoryGenericPager = baseCategoryService.queryBaseCategoryList2(baseCategoryParam1);
+                                List<BaseCategory> datas = baseCategoryGenericPager.getDatas();
+
+                                // 涓�绾у垎绫�
+                                BaseCategory D1 = null;
+                                if (!CollectionUtil.isEmpty(datas)) {
+                                    D1 = datas.get(0);
+                                } else {
+                                    // 鏂板鐖剁骇
+                                    BaseCategoryParam param = new BaseCategoryParam();
+                                    param.setCategoryName(h1);
+                                    param.setStates(1);
+                                    int getIndex = baseCategoryService.selIndexByPid(0L);
+                                    param.setOrderNumber(getIndex + 1);
+                                    baseCategoryService.add(param, currentUser);
+                                    GenericPager<BaseCategory> baseCategoryGenericPager2 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam1);
+                                    List<BaseCategory> datas2 = baseCategoryGenericPager2.getDatas();
+                                    D1 = datas2.get(0);
+                                }
+
+                                // 2銆佷簩绾у垎绫� 鏌ヨ绗簩灞傛暟鎹�
+                                BaseCategoryParam baseCategoryParam2 = new BaseCategoryParam();
+                                baseCategoryParam2.setCategoryName(h2);
+                                baseCategoryParam2.setFatherCategoryId(D1.getId());
+                                GenericPager<BaseCategory> baseCategoryGenericPager2 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam2);
+                                List<BaseCategory> datas2 = baseCategoryGenericPager2.getDatas();
+                                BaseCategory D2 = null;
+                                if (!CollectionUtil.isEmpty(datas2)) {
+                                    D2 = datas2.get(0);
+                                } else {
+                                    // 鏂板鐖�2绾�
+                                    BaseCategoryParam param = new BaseCategoryParam();
+                                    param.setCategoryName(h2);
+                                    param.setStates(1);
+                                    param.setFatherCategoryId(D1.getId());
+                                    int getIndex = baseCategoryService.selIndexByPid(D1.getId());
+                                    param.setOrderNumber(getIndex + 1);
+                                    baseCategoryService.add(param, currentUser);
+                                    GenericPager<BaseCategory> baseCategoryGenericPager4 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam2);
+                                    List<BaseCategory> datas4 = baseCategoryGenericPager4.getDatas();
+                                    D2 = datas4.get(0);
+                                }
+
+                                // 3銆佷笁绾у垎绫�(濡傛灉宸茬粡瀛樺湪锛岄偅涔堜笉澶勭悊锛屼笉瀛樺湪鏂板)
+                                BaseCategoryParam baseCategoryParam3 = new BaseCategoryParam();
+                                baseCategoryParam3.setCategoryName(h3);
+                                baseCategoryParam3.setClassification(type);
+                                baseCategoryParam3.setFatherCategoryId(D2.getId());
+                                GenericPager<BaseCategory> baseCategoryGenericPager3 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam3);
+                                List<BaseCategory> datas3 = baseCategoryGenericPager3.getDatas();
+                                if (!CollectionUtil.isEmpty(datas3)) {
+                                } else {
+                                    // 鏂板鐖�2绾�
+                                    BaseCategoryParam param = new BaseCategoryParam();
+                                    param.setCategoryName(h3);
+                                    param.setStates(1);
+                                    param.setFatherCategoryId(D2.getId());
+                                    int getIndex = baseCategoryService.selIndexByPid(D2.getId());
+                                    param.setOrderNumber(getIndex + 1);
+                                    param.setClassification(type);
+                                    baseCategoryService.add(param, currentUser);
+                                    //GenericPager<BaseCategory> baseCategoryGenericPager4 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam3);
+                                    //List<BaseCategory> datas4 = baseCategoryGenericPager4.getDatas();
+                                    //D3 = datas4.get(0);
+                                }
+                            }
+                        }
+
+                        @Override
+                        public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+                            if (exception instanceof ExcelDataConvertException) {
+                                ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+                                Integer row = excelDataConvertException.getRowIndex() + 1;
+                                Integer column = excelDataConvertException.getColumnIndex() + 1;
+                                throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+                            } else {
+                                throw new ExcelAnalysisException(exception.getMessage());
+                            }
+                        }
+                    }).sheet(0).doRead();
+        } catch (ExcelAnalysisException e) {
+            return ResponseValue.error(e.getMessage());
+        }catch (RuntimeException e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        }catch (Exception e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        }
+        return ResponseValue.success("瀵煎叆鎴愬姛!");
+    }
+
 }
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 fe31dc4..d19a2f3 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
@@ -7,7 +7,9 @@
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
-
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.consum.base.service.*;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
@@ -17,7 +19,6 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
-
 import com.alibaba.excel.EasyExcelFactory;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
@@ -30,11 +31,6 @@
 import com.consum.base.pojo.BaseGoodsTemplateParam;
 import com.consum.base.pojo.excel.ImportGoodsInfoTemplate;
 import com.consum.base.pojo.response.GoodsTemplateVO;
-import com.consum.base.service.BaseCategoryService;
-import com.consum.base.service.BaseGoodsTemplateService;
-import com.consum.base.service.BaseWarehouseService;
-import com.consum.base.service.FinSysTenantService;
-import com.consum.base.service.LWhGoodsService;
 import com.consum.model.po.BaseCategory;
 import com.consum.model.po.BaseGoodsModels;
 import com.consum.model.po.BaseGoodsTemplate;
@@ -77,6 +73,9 @@
     @Autowired
     private BaseCategoryService baseCategoryService;
 
+    @Autowired
+    private BaseGoodsModelsService baseGoodsModelsService;
+
     /**
      * @Description 鏂板鐗╁搧妯℃澘
      * @Author 鍗㈠簡闃�
@@ -101,7 +100,7 @@
         }
         // 鍒ゆ柇鍚屼竴鍒嗙被涓嬬殑鐗╁搧鍚嶇О鏄惁閲嶅
         BaseGoodsTemplate goodsTemplate =
-            this.baseGoodsTemplateService.getByGoodsNameAndCategoryId(param.getGoodsName(), param.getCategoryId());
+                this.baseGoodsTemplateService.getByGoodsNameAndCategoryId(param.getGoodsName(), param.getCategoryId());
         if (goodsTemplate != null) {
             return ResponseValue.error("鐗╁搧鍚嶇О宸插瓨鍦�");
         }
@@ -181,9 +180,9 @@
      *
      * @author 鍗㈠簡闃�
      * @date 2023/10/25
-     *       <p>
-     *       鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
-     *       <p>
+     * <p>
+     * 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
+     * <p>
      */
     @PostMapping("/updStatus")
     public ResponseValue updateStatus() {
@@ -204,9 +203,9 @@
      * @Description 鏍规嵁鐗╁搧id鍒犻櫎鐗╁搧
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/25
-     *       <p>
-     *       鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
-     *       <p/>
+     * <p>
+     * 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
+     * <p/>
      */
     @DeleteMapping("/del")
     public ResponseValue updateById() {
@@ -249,7 +248,7 @@
     public ResponseValue queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId) {
         // 涓嶉檺鍒舵満鏋�
         List<BaseGoodsTemplate> list = baseGoodsTemplateService.queryGoodsTemplateByCategoryId(null, categoryId,
-            StatesType.NORMAL.getValue(), null);
+                StatesType.NORMAL.getValue(), null);
         if (list == null) {
             return ResponseValue.error("鏌ヨ澶辫触锛�");
         }
@@ -258,10 +257,10 @@
 
     @ApiOperation(value = "璋冩嫧鏌ヨ鏈烘瀯涓嬫墍鏈変粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�", notes = "璋冩嫧鏌ヨ鏈烘瀯涓嬫墍鏈変粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "agencyId", value = "鐖剁骇鏈烘瀯id", required = true, dataType = "java.lang.Long",
-            paramType = "query"),
-        @ApiImplicitParam(name = "categoryId", value = "鍒嗙被id", required = true, dataType = "Long",
-            paramType = "query")})
+            @ApiImplicitParam(name = "agencyId", value = "鐖剁骇鏈烘瀯id", required = true, dataType = "java.lang.Long",
+                    paramType = "query"),
+            @ApiImplicitParam(name = "categoryId", value = "鍒嗙被id", required = true, dataType = "Long",
+                    paramType = "query")})
     @GetMapping("/query/warehouse/goods")
     public ResponseValue queryWarehouseGoods(Long agencyId, Long categoryId) {
 
@@ -270,7 +269,7 @@
         map.put("categoryId", categoryId);
 
         List<BaseWarehouse> baseWarehouseList =
-            baseWarehouseService.getBaseWareHouseList(agencyId, StatesType.NORMAL.getValue());
+                baseWarehouseService.getBaseWareHouseList(agencyId, StatesType.NORMAL.getValue());
         if (CollectionUtils.isEmpty(baseWarehouseList)) {
             return ResponseValue.error("鏈烘瀯鏃犱粨搴擄紒");
 
@@ -279,11 +278,11 @@
         map.put("warehouseIdList", warehouseIdList);
 
         String sql =
-            "SELECT DISTINCT bgt.id,bgt.GOODS_NAME, CLASSIFICATION type FROM l_wh_goods g LEFT JOIN base_goods_template bgt ON g.BASE_GOODS_TEMPLATE_ID = bgt.id "
-                + "WHERE WAREHOUSE_TYPE = 0 " + "AND WAREHOUSE_ID in (:warehouseIdList) "
-                + "AND CATEGORY_ID = :categoryId "
-                // 1:闆嗛噰,2:鑷噰
-                + "AND BUY_TYPE =1";
+                "SELECT DISTINCT bgt.id,bgt.GOODS_NAME, CLASSIFICATION type FROM l_wh_goods g LEFT JOIN base_goods_template bgt ON g.BASE_GOODS_TEMPLATE_ID = bgt.id "
+                        + "WHERE WAREHOUSE_TYPE = 0 " + "AND WAREHOUSE_ID in (:warehouseIdList) "
+                        + "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());
@@ -294,82 +293,174 @@
         return ResponseValue.success("鏌ヨ鎴愬姛!", resultList);
     }
 
+    /**
+     * 瀵煎叆鐗╁搧鏁版嵁
+     * @param file
+     * @return
+     */
     @PostMapping("/import")
-    public ResponseValue upload(MultipartFile file) throws IOException {
+    public ResponseValue importData(MultipartFile file) {
         String originalFilename = file.getOriginalFilename();
-        if (!".xls".endsWith(originalFilename)) {
-            return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
-        }
+//        if (!".xls".endsWith(originalFilename)) {
+//            return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+//        }
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
         }
-        EasyExcelFactory.read(file.getInputStream(), ImportGoodsInfoTemplate.class,
-            new AnalysisEventListener<ImportGoodsInfoTemplate>() {
-                List<BaseGoodsTemplateParam> list = Lists.newArrayList();
+        try {
+            EasyExcelFactory.read(file.getInputStream(), ImportGoodsInfoTemplate.class,
+                    new AnalysisEventListener<ImportGoodsInfoTemplate>() {
+                        /**
+                         * 涓绘暟鎹�
+                         */
+                        final List<BaseGoodsTemplateParam> list = Lists.newArrayList();
 
-                @Override
-                public void invoke(ImportGoodsInfoTemplate data, AnalysisContext analysisContext) {
-                    String categoryOne = data.getCategoryOne();
-                    String categoryTwo = data.getCategoryTwo();
-                    String categoryThree = data.getCategoryThree();
-                    String goodsName = data.getGoodsName();
-                    String goodModelName = data.getGoodModelName();
-                    String unit = data.getUnit();
-                    String type = data.getType();
-                    String agencyName = data.getAgencyName();
+                        /**
+                         * 妯″潡鏁版嵁
+                         */
+                        final List<BaseGoodsModels> baseGoodsModelsArrayList = Lists.newArrayList();
 
-                    BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
-                    Long categoryId = baseCategory.getId();
+                        /**
+                         * 璇诲彇鐨勮鍙�
+                         */
+                        Integer rowIndex = 0;
 
-                    Optional<BaseGoodsTemplateParam> optional =
-                        list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+                        /**
+                         * 琛ㄥご淇℃伅
+                         * @param headMap
+                         * @param context
+                         */
+                        @Override
+                        public void invokeHeadMap(Map headMap, AnalysisContext context) {
+                            // 楠岃瘉琛ㄥご鏁伴噺
+                            logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+                            if (headMap.size() != 7) {
+                                throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+                            }
+                        }
 
-                    if (optional.isPresent()) {
-                        BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
-                        baseGoodsModels.setModelName(goodModelName);
-                        baseGoodsModels.setUnit(unit);
-                        optional.get().getModels().add(baseGoodsModels);
-                    } else {
-                        BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
-                        baseGoodsTemplate.setCategoryId(categoryId);
-                        baseGoodsTemplate.setGoodsName(goodsName);
-                        baseGoodsTemplate.setStates(1);
-                        FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
-                        baseGoodsTemplate.setAgencyId(finSysTenant.getId());
-                        baseGoodsTemplate.setAgencyName(agencyName);
+                        /**
+                         * 鏁版嵁澶勭悊
+                         * @param data
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void invoke(ImportGoodsInfoTemplate data, AnalysisContext analysisContext) {
+                            rowIndex++;
+                            String categoryOne = data.getCategoryOne();
+                            String categoryTwo = data.getCategoryTwo();
+                            String categoryThree = data.getCategoryThree();
+                            if (StrUtil.isEmpty(categoryThree)) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + categoryThree);
+                            }
+                            String goodsName = data.getGoodsName();
+                            if (StrUtil.isEmpty(goodsName)) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍝佸悕涓嶈兘涓虹┖锛�" + goodsName);
+                            }
+                            String goodModelName = data.getGoodModelName();
+                            if (StrUtil.isEmpty(goodModelName)) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝瑙勬牸鍨嬪彿涓嶈兘涓虹┖锛�" + goodModelName);
+                            }
+                            String unit = data.getUnit();
+                            if (StrUtil.isEmpty(unit)) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍗曚綅涓嶈兘涓虹┖锛�" + unit);
+                            }
+                            //String type = data.getType();
+                            String agencyName = data.getAgencyName();
+                            if (StrUtil.isEmpty(agencyName)) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍒涘缓鏈烘瀯涓嶈兘涓虹┖锛�" + agencyName);
+                            }
+                            BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
+                            if (baseCategory == null) {
+                                throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鏈煡璇㈠埌姝ゅ搧绫诲悕绉帮細" + categoryThree);
+                            }
+                            Long categoryId = baseCategory.getId();
+                            // 鍒ゆ柇鍚屼竴鍒嗙被涓嬬殑鐗╁搧鍚嶇О鏄惁閲嶅
+                            BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+                            if (goodsTemplate != null) {
+                                // 鏌ョ湅姝ゆ壒娆″拰鏁伴噺
+                                BaseGoodsModels baseGoodsModelsAdd = new BaseGoodsModels();
+                                baseGoodsModelsAdd.setGoodsTemplatesId(goodsTemplate.getId());
+                                baseGoodsModelsAdd.setStates(1);
+                                baseGoodsModelsAdd.setModelName(goodModelName);
+                                baseGoodsModelsAdd.setUnit(unit);
+                                // 鍒ゆ柇鍚屼竴鐗╁搧妯℃澘id涓嬬殑 瑙勬牸鍨嬪彿鍚嶇О鏄惁閲嶅
+                                BaseGoodsModels baseGoodsModels = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(baseGoodsModelsAdd);
+                                if (baseGoodsModels == null) {
+                                    baseGoodsModelsArrayList.add(baseGoodsModelsAdd);
+                                    return;
+                                } else {
+                                    throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹�" + "鐗╁搧鍚嶇О锛�" + goodsName + "宸插瓨鍦紝瑙勬牸锛�" + goodModelName + "锛屽崟浣嶏細" + unit);
+                                }
+                            }
+                            Optional<BaseGoodsTemplateParam> optional =
+                                    list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+                            Optional<BaseGoodsTemplateParam> optional2 =
+                                    list.stream().filter(item -> item.getGoodsName().equals(goodsName)).findFirst();
+                            if (optional.isPresent() && optional2.isPresent()) {
+                                BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+                                baseGoodsModels.setModelName(goodModelName);
+                                baseGoodsModels.setUnit(unit);
+                                optional.get().getModels().add(baseGoodsModels);
+                            } else {
+                                BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
+                                baseGoodsTemplate.setCategoryId(categoryId);
+                                baseGoodsTemplate.setGoodsName(goodsName);
+                                baseGoodsTemplate.setStates(1);
+                                FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
+                                if (finSysTenant == null) {
+                                    throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鏈煡璇㈠埌姝ゆ満鏋勶細" + agencyName);
+                                }
+                                baseGoodsTemplate.setAgencyId(finSysTenant.getId());
+                                baseGoodsTemplate.setAgencyName(agencyName);
+                                List<BaseGoodsModels> models = new ArrayList<>();
+                                BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+                                baseGoodsModels.setModelName(goodModelName);
+                                baseGoodsModels.setUnit(unit);
+                                models.add(baseGoodsModels);
+                                baseGoodsTemplate.setModels(models);
+                                list.add(baseGoodsTemplate);
+                            }
+                        }
 
-                        List<BaseGoodsModels> models = new ArrayList<>();
-                        BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
-                        baseGoodsModels.setModelName(goodModelName);
-                        baseGoodsModels.setUnit(unit);
-                        models.add(baseGoodsModels);
-                        baseGoodsTemplate.setModels(models);
+                        /**
+                         * 澶勭悊鍚庡鍏ユ暟鎹�
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+                            // 涓绘暟鎹瓨鍌�
+                            for (BaseGoodsTemplateParam baseGoodsTemplate : list) {
+                                baseGoodsTemplateService.add(baseGoodsTemplate, null);
+                            }
+                            // 妯″潡鏁版嵁瀛樺偍
+                            for (BaseGoodsModels baseGoodsModels : baseGoodsModelsArrayList) {
+                                baseGoodsModelsService.add(baseGoodsModels);
+                            }
+                        }
 
-                        list.add(baseGoodsTemplate);
-                    }
-                }
-
-                @Override
-                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-                    for (BaseGoodsTemplateParam baseGoodsTemplate : list) {
-                        baseGoodsTemplateService.add(baseGoodsTemplate, null);
-                    }
-                }
-
-                @Override
-                public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
-                    if (exception instanceof ExcelDataConvertException) {
-                        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
-                        Integer row = excelDataConvertException.getRowIndex() + 1;
-                        Integer column = excelDataConvertException.getColumnIndex() + 1;
-                        throw new RuntimeException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
-                    } else {
-                        throw new RuntimeException(exception.getMessage());
-                    }
-                }
-            }).sheet(0).doRead();
-
+                        @Override
+                        public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+                            if (exception instanceof ExcelDataConvertException) {
+                                ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+                                Integer row = excelDataConvertException.getRowIndex() + 1;
+                                Integer column = excelDataConvertException.getColumnIndex() + 1;
+                                throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+                            } else {
+                                throw new ExcelAnalysisException(exception.getMessage());
+                            }
+                        }
+                    }).sheet(0).doRead();
+        } catch (ExcelAnalysisException e) {
+            return ResponseValue.error(e.getMessage());
+        } catch (RuntimeException e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        }catch (Exception e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        }
         return ResponseValue.success("瀵煎叆鎴愬姛!");
     }
 }
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 3335a92..0607533 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
@@ -187,12 +187,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) {
@@ -204,7 +204,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);
@@ -219,12 +219,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);
     }
 
@@ -236,7 +236,7 @@
 
             while (var3.hasNext()) {
                 Object obj = var3.next();
-                node = this.toTreeNode((FinSysTenant)obj);
+                node = this.toTreeNode((FinSysTenant) obj);
 
                 if (node.getId() == this.defaultParentId) {
                     this.rootMap.put(node.getId(), node);
@@ -256,7 +256,7 @@
                     var3 = this.rootMap.values().iterator();
 
                     while (var3.hasNext()) {
-                        TreeNode n = (TreeNode)var3.next();
+                        TreeNode n = (TreeNode) var3.next();
                         n.setParentId(this.defaultParentId);
                         this.dummyRoot.addChild(n);
                     }
@@ -271,16 +271,16 @@
         Iterator i = childMap.values().iterator();
 
         while (i.hasNext()) {
-            _node = (TreeNode)i.next();
+            _node = (TreeNode) i.next();
             this.mountMiddleNode(_node, childMap);
         }
 
     }
 
     private void mountMiddleNode(TreeNode currentNode, Map<Long, TreeNode> childMap) {
-        TreeNode _parentNode = (TreeNode)this.rootMap.get(currentNode.getParentId());
+        TreeNode _parentNode = (TreeNode) this.rootMap.get(currentNode.getParentId());
         if (_parentNode == null) {
-            _parentNode = (TreeNode)childMap.get(currentNode.getId());
+            _parentNode = (TreeNode) childMap.get(currentNode.getId());
             if (_parentNode == null) {
                 throw new NullPointerException("parent node not found, current: " + currentNode);
             }
@@ -295,7 +295,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;
     }
 
@@ -307,7 +307,7 @@
             Iterator var2 = this.rootMap.values().iterator();
 
             while (var2.hasNext()) {
-                TreeNode node = (TreeNode)var2.next();
+                TreeNode node = (TreeNode) var2.next();
                 list.add(node);
             }
             return list;
@@ -330,7 +330,7 @@
             whStr.append(" and name is not null and(");
             String upperCase = param.getFirstZmS().toUpperCase();
             whStr.append(
-                "instr(:upperFirstZmS,F_PINYIN( SUBSTR(name, 1, 1)))>0 or instr(:upperFirstZmS2,SUBSTR(name, 1, 1))>0");
+                    "instr(:upperFirstZmS,F_PINYIN( SUBSTR(name, 1, 1)))>0 or instr(:upperFirstZmS2,SUBSTR(name, 1, 1))>0");
             parameter.put("upperFirstZmS", upperCase);
             parameter.put("upperFirstZmS2", upperCase);
             whStr.append(")");
@@ -408,6 +408,10 @@
             fileName = "鐗╁搧淇℃伅.xls";
         } else if ("procure".equals(type)) {
             fileName = "閲囪喘瀵煎叆.xls";
+        } else if ("distribute".equals(type)) {
+            fileName = "鍒嗗彂瀵煎叆.xls";
+        } else if ("classification".equals(type)) {
+            fileName = "鐗╁搧鍒嗙被.xls";
         }
         Resource resource = new ClassPathResource("import/" + fileName);
         // 鑾峰彇鏂囦欢杈撳叆娴�
@@ -440,61 +444,61 @@
         }
 
         EasyExcelFactory
-            .read(file.getInputStream(), ImportTenantTemplate.class, new AnalysisEventListener<ImportTenantTemplate>() {
-                LinkedList<FinSysTenantParam> finSysTenantParams = new LinkedList<>();
+                .read(file.getInputStream(), ImportTenantTemplate.class, new AnalysisEventListener<ImportTenantTemplate>() {
+                    LinkedList<FinSysTenantParam> finSysTenantParams = new LinkedList<>();
 
-                @Override
-                public void invoke(ImportTenantTemplate finSysTenantParam, AnalysisContext analysisContext) {
-                    String code = finSysTenantParam.getCode();
-                    String tenantName = finSysTenantParam.getTenantName();
-                    ReadSheetHolder readSheetHolder = analysisContext.readSheetHolder();
-                    Integer rowIndex = readSheetHolder.getRowIndex() + 1;
-                    if (StringUtils.isEmpty(code) || code.length() > 20) {
-                        IllegalStateException exception =
-                            new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�20");
-                        throw exception;
-                    }
-                    if (null != finSysTenantService.queryOneByCode(code)) {
-                        throw new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿宸插瓨鍦�");
-                    }
-                    if (StringUtils.isEmpty(tenantName) || tenantName.length() > 100) {
-                        IllegalStateException exception =
-                            new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯鍚嶇О涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�100");
-                        throw exception;
-                    }
-                    FinSysTenantParam tenantParam = new FinSysTenantParam();
-                    tenantParam.setParentId(pid);
-                    tenantParam.setStatus(1);
-                    tenantParam.setSummary("绯荤粺瀵煎叆");
-                    tenantParam.setCode(code);
-                    tenantParam.setName(tenantName);
-                    finSysTenantParams.add(tenantParam);
-                }
-
-                @Override
-                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-                    finSysTenantService.insertFinSysTenantBatch(finSysTenantParams, sysInfo, lv);
-                }
-
-                @Override
-                public void onException(Exception exception, AnalysisContext context) {
-                    // 濡傛灉鏄煇涓�涓崟鍏冩牸鐨勮浆鎹㈠紓甯� 鑳借幏鍙栧埌鍏蜂綋琛屽彿
-                    if (exception instanceof ExcelDataConvertException) {
-                        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
-                        Integer rowIndex = excelDataConvertException.getRowIndex() + 1;
-                        Integer columnIndex = excelDataConvertException.getColumnIndex();
-                        String stringValue = excelDataConvertException.getCellData().getStringValue();
-                        logger.error("绗瑊}琛岋紝绗瑊}鍒楄В鏋愬紓甯革紝鏁版嵁涓�:{}", rowIndex, columnIndex, stringValue);
-                        throw new IllegalStateException(
-                            "绗�" + rowIndex + "琛岋紝绗�" + columnIndex + "鍒楄В鏋愬紓甯�,寮傚父鏁版嵁涓�:[ " + stringValue + " ]");
-                    }
-                    if (exception instanceof IllegalStateException) {
-                        throw (IllegalStateException)exception;
+                    @Override
+                    public void invoke(ImportTenantTemplate finSysTenantParam, AnalysisContext analysisContext) {
+                        String code = finSysTenantParam.getCode();
+                        String tenantName = finSysTenantParam.getTenantName();
+                        ReadSheetHolder readSheetHolder = analysisContext.readSheetHolder();
+                        Integer rowIndex = readSheetHolder.getRowIndex() + 1;
+                        if (StringUtils.isEmpty(code) || code.length() > 20) {
+                            IllegalStateException exception =
+                                    new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�20");
+                            throw exception;
+                        }
+                        if (null != finSysTenantService.queryOneByCode(code)) {
+                            throw new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿宸插瓨鍦�");
+                        }
+                        if (StringUtils.isEmpty(tenantName) || tenantName.length() > 100) {
+                            IllegalStateException exception =
+                                    new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯鍚嶇О涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�100");
+                            throw exception;
+                        }
+                        FinSysTenantParam tenantParam = new FinSysTenantParam();
+                        tenantParam.setParentId(pid);
+                        tenantParam.setStatus(1);
+                        tenantParam.setSummary("绯荤粺瀵煎叆");
+                        tenantParam.setCode(code);
+                        tenantParam.setName(tenantName);
+                        finSysTenantParams.add(tenantParam);
                     }
 
-                }
+                    @Override
+                    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+                        finSysTenantService.insertFinSysTenantBatch(finSysTenantParams, sysInfo, lv);
+                    }
 
-            }).doReadAll();
+                    @Override
+                    public void onException(Exception exception, AnalysisContext context) {
+                        // 濡傛灉鏄煇涓�涓崟鍏冩牸鐨勮浆鎹㈠紓甯� 鑳借幏鍙栧埌鍏蜂綋琛屽彿
+                        if (exception instanceof ExcelDataConvertException) {
+                            ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+                            Integer rowIndex = excelDataConvertException.getRowIndex() + 1;
+                            Integer columnIndex = excelDataConvertException.getColumnIndex();
+                            String stringValue = excelDataConvertException.getCellData().getStringValue();
+                            logger.error("绗瑊}琛岋紝绗瑊}鍒楄В鏋愬紓甯革紝鏁版嵁涓�:{}", rowIndex, columnIndex, stringValue);
+                            throw new IllegalStateException(
+                                    "绗�" + rowIndex + "琛岋紝绗�" + columnIndex + "鍒楄В鏋愬紓甯�,寮傚父鏁版嵁涓�:[ " + stringValue + " ]");
+                        }
+                        if (exception instanceof IllegalStateException) {
+                            throw (IllegalStateException) exception;
+                        }
+
+                    }
+
+                }).doReadAll();
 
         return ResponseValue.success("瀵煎叆鎴愬姛!", 1);
     }
@@ -520,7 +524,7 @@
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
- 
+
         int num = this.finSysTenantService.updateFinSysTenant(param, this.getSysInfo());
         return num > 0 ? ResponseValue.success(1) : ResponseValue.error("缂栬緫澶辫触锛�");
     }
@@ -586,7 +590,7 @@
             // 鐪�
             FinSysTenant finSysTenant1 = this.finSysTenantService.get(new FinSysTenant(finSysTenant.getParentId()));
             List<FinSysTenantUser> finSysTenantUserList =
-                this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
+                    this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
             if (!StringUtils.isEmptyList(finSysTenantUserList)) {
                 FinSysTenantUserResult finSysTenantUserResult = new FinSysTenantUserResult();
                 finSysTenantUserResult.setOrgId(finSysTenant1.getId());
@@ -608,7 +612,7 @@
             // 甯�
             FinSysTenant finSysTenant2 = this.finSysTenantService.get(new FinSysTenant(finSysTenant.getParentId()));
             List<FinSysTenantUser> finSysTenantUserList2 =
-                this.finSysTenantUserService.getByOrgId(finSysTenant2.getId());
+                    this.finSysTenantUserService.getByOrgId(finSysTenant2.getId());
             if (!StringUtils.isEmptyList(finSysTenantUserList2)) {
                 FinSysTenantUserResult finSysTenantUserResult = new FinSysTenantUserResult();
                 finSysTenantUserResult.setOrgId(finSysTenant2.getId());
@@ -619,7 +623,7 @@
             // 鐪�
             FinSysTenant finSysTenant1 = this.finSysTenantService.get(new FinSysTenant(finSysTenant2.getParentId()));
             List<FinSysTenantUser> finSysTenantUserList =
-                this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
+                    this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
             if (!StringUtils.isEmptyList(finSysTenantUserList)) {
                 FinSysTenantUserResult finSysTenantUserResult = new FinSysTenantUserResult();
                 finSysTenantUserResult.setOrgId(finSysTenant1.getId());
@@ -633,7 +637,7 @@
 
     @ApiOperation(value = "鑾峰彇鐖剁骇鏈烘瀯", notes = "鑾峰彇鐖剁骇鏈烘瀯")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "Authorization", value = "token", dataType = "String", paramType = "header"),})
+            @ApiImplicitParam(name = "Authorization", value = "token", dataType = "String", paramType = "header"),})
     @GetMapping("/get/parent/tenant")
     public ResponseValue getParentTenant() {
         FinSysTenantUser sysInfo = getSysInfo();
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 e6538a8..ef8e0db 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
@@ -2,25 +2,34 @@
 
 import java.io.IOException;
 import java.lang.reflect.Field;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.alibaba.fastjson.JSONObject;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.pojo.*;
+import com.consum.base.service.*;
+import com.consum.base.util.DateUtil;
+import com.consum.model.po.*;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
-
 import com.alibaba.excel.EasyExcelFactory;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
@@ -28,8 +37,6 @@
 import com.consum.base.BaseController;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.PageUtil;
-import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
-import com.consum.base.pojo.LWhFormProcureParam;
 import com.consum.base.pojo.dto.GoodModelInfoDTO;
 import com.consum.base.pojo.excel.ImportProcureOrderTemplate;
 import com.consum.base.pojo.excel.ProcureExcelTemplate;
@@ -39,21 +46,12 @@
 import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.consum.base.pojo.response.GoodsTemplateInfoVO;
 import com.consum.base.pojo.response.LWhFormProcureExtendVO;
-import com.consum.base.service.BaseCategoryService;
-import com.consum.base.service.LWhFormProcureGoodsService;
-import com.consum.base.service.LWhFormProcureService;
-import com.consum.base.service.LWhProcureModelService;
 import com.consum.base.service.core.LWhFormProcureCoreService;
-import com.consum.model.po.BaseCategory;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhFormProcureGoods;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.web.ResponseValue;
-
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
 import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
 import cn.hutool.core.util.ReflectUtil;
@@ -83,6 +81,24 @@
     private LWhProcureModelService lWhProcureModelService;
     @Resource
     private BaseCategoryService baseCategoryService;
+
+    /**
+     * 浠撳簱鏈嶅姟
+     */
+    @Autowired
+    private BaseWarehouseService baseWarehouseService;
+
+    /**
+     * 鍏ュ簱id
+     */
+    @Autowired
+    private BaseGoodsTemplateService baseGoodsTemplateService;
+
+    /**
+     * 鐗╁搧model鏈嶅姟
+     */
+    @Autowired
+    private BaseGoodsModelsService baseGoodsModelsService;
 
     /**
      * @Description 鏂板
@@ -116,7 +132,7 @@
      */
     @ApiOperation(value = "閲囪喘鍗曞垪琛ㄦ煡璇�", notes = "閲囪喘鍗曞垪琛ㄦ煡璇�")
     @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鏌ヨ鏉′欢", required = true,
-        dataType = "FormProcureQryDto", paramType = "query")})
+            dataType = "FormProcureQryDto", paramType = "query")})
     @GetMapping("/list")
     public ResponseValue queryFormProcureList() {
         FormProcureQry param = CommonUtil.getObjFromReq(FormProcureQry.class);
@@ -143,7 +159,7 @@
 
                 // 鏌ヨ鍨嬪彿鏁伴噺
                 List<GoodsTemplateCountVO> procureCount =
-                    lWhProcureModelService.getProcureCountByBusinessId(item.getId());
+                        lWhProcureModelService.getProcureCountByBusinessId(item.getId());
                 fromProcureVO.setFromProcureTemplateInfoList(procureCount);
 
                 result.add(fromProcureVO);
@@ -238,7 +254,7 @@
             BeanUtils.copyProperties(formProcureGood, goodsTemplateInfoVO);
 
             List<GoodModelInfoDTO> goodsModelInfoList =
-                lWhProcureModelService.getGoodsModelListByBusinessId(null, formProcureGood.getId());
+                    lWhProcureModelService.getGoodsModelListByBusinessId(null, formProcureGood.getId());
             if (CollectionUtils.isEmpty(goodsModelInfoList)) {
                 continue;
             }
@@ -268,7 +284,7 @@
         goodsModelVO.setUnit(goodModelInfo.getUnit());
         goodsModelVO.setCounts(goodModelInfo.getCounts());
         goodsModelVO.setTotalAmount(
-            goodModelInfo.getTotalAmount() != null ? goodModelInfo.getTotalAmount().doubleValue() : null);
+                goodModelInfo.getTotalAmount() != null ? goodModelInfo.getTotalAmount().doubleValue() : null);
         goodsModelVO.setWorehouseCount(goodModelInfo.getWorehouseCount());
         goodsModelVO.setPrice(goodModelInfo.getPrice());
         goodsModelVO.setBaseGoodsModelsId(goodModelInfo.getBaseGoodsModelsId());
@@ -277,7 +293,7 @@
 
     @ApiOperation(value = "閲囪喘鍗曟槑缁嗘煡璇�", notes = "閲囪喘鍗曟槑缁嗘煡璇�")
     @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鍗曟槑缁嗘煡璇�", required = true,
-        dataType = "FormProcureQryDto", paramType = "query")})
+            dataType = "FormProcureQryDto", paramType = "query")})
     @GetMapping("detail/list")
     public ResponseValue queryFormProcureDetailList() {
         FormProcureQry formProcureQry = CommonUtil.getObjFromReq(FormProcureQry.class);
@@ -296,7 +312,7 @@
 
     @ApiOperation(value = "閲囪喘鍗曞鍑�", notes = "閲囪喘鍗曞鍑�")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "id", value = "閲囪喘鍗昳d", required = true, dataType = "Long", paramType = "query")})
+            @ApiImplicitParam(name = "id", value = "閲囪喘鍗昳d", required = true, dataType = "Long", paramType = "query")})
     @GetMapping("/list/export")
     public ResponseValue<String> export(Long id, HttpServletResponse response) throws Exception {
         TemplateExportParams params = new TemplateExportParams("import/閲囪喘鍏ュ簱鍗�.xls");
@@ -312,9 +328,9 @@
         }
 
         int countNum =
-            exportList.stream().filter(item -> item.getNum() != null).mapToInt(ProcureExcelTemplate::getNum).sum();
+                exportList.stream().filter(item -> item.getNum() != null).mapToInt(ProcureExcelTemplate::getNum).sum();
         double totalAmount = exportList.stream().filter(export -> export.getTotalAmount() != null)
-            .mapToDouble(ProcureExcelTemplate::getAmount).sum();
+                .mapToDouble(ProcureExcelTemplate::getAmount).sum();
         Optional<ProcureExcelTemplate> first = exportList.stream().findFirst();
         ProcureExcelTemplate templateExcelExport = first.get();
         String businessFormCode = templateExcelExport.getBusinessFormCode();
@@ -334,87 +350,267 @@
 
     }
 
+    /**
+     * 閲囪喘鍗曞鍏�
+     *
+     * @param file
+     * @return
+     */
     @ApiOperation(value = "閲囪喘鍗曞鍏�", notes = "閲囪喘鍗曞鍏�")
     @PostMapping("/import")
-    public ResponseValue upload(MultipartFile file) throws IOException {
+    public ResponseValue upload(MultipartFile file) {
         String originalFilename = file.getOriginalFilename();
-        if (!".xls".endsWith(originalFilename)) {
-            return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
-        }
+        // 鏂囦欢鏍煎紡鏍¢獙
+//        if (!".xls".endsWith(originalFilename)) {
+//            return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+//        }
         FinSysTenantUser sysInfo = this.getSysInfo();
         if (sysInfo == null) {
             return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
         }
-        EasyExcelFactory.read(file.getInputStream(), ImportProcureOrderTemplate.class,
-            new AnalysisEventListener<ImportProcureOrderTemplate>() {
-                List<LWhFormProcureParam> list = Lists.newArrayList();
+        try {
+            EasyExcelFactory.read(file.getInputStream(), ImportProcureOrderTemplate.class,
+                    new AnalysisEventListener<ImportProcureOrderTemplate>() {
+                        /**
+                         * 鑷噰閲囪喘鍗曠殑鍐呭眰鏁版嵁
+                         */
+                        final List<LWhFormProcureGoodsInfoParam> zcList = Lists.newArrayList();
 
-                @Override
-                public void invoke(ImportProcureOrderTemplate data, AnalysisContext analysisContext) {
-                    String categoryOne = data.getCategoryOne();
-                    String categoryTwo = data.getCategoryTwo();
-                    String categoryThree = data.getCategoryThree();
-                    String goodsName = data.getGoodsName();
-                    String goodModelName = data.getGoodModelName();
-                    String unit = data.getUnit();
-                    String type = data.getType();
-                    String agencyName = data.getAgencyName();
-                    String warehouseName = data.getWarehouseName();
-                    String supplierName = data.getSupplierName();
-                    String price = data.getPrice();
-                    String num = data.getNum();
+                        /**
+                         * 闆嗛噰閲囪喘鍗曠殑鍐呭眰鏁版嵁
+                         */
+                        final List<LWhFormProcureGoodsInfoParam> jcList = Lists.newArrayList();
 
-                    BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
-                    Long categoryId = baseCategory.getId();
+                        /**
+                         * 閲囪喘鍗曠殑涓绘暟鎹�
+                         */
+                        final LWhFormProcureParam lWhFormProcureParam = new LWhFormProcureParam();
 
-                    // Optional<BaseGoodsTemplateParam> optional =
-                    // list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
-                    //
-                    // if (optional.isPresent()) {
-                    // BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
-                    // baseGoodsModels.setModelName(goodModelName);
-                    // baseGoodsModels.setUnit(unit);
-                    // optional.get().getModels().add(baseGoodsModels);
-                    // } else {
-                    // BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
-                    // baseGoodsTemplate.setCategoryId(categoryId);
-                    // baseGoodsTemplate.setGoodsName(goodsName);
-                    // baseGoodsTemplate.setStates(1);
-                    // FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
-                    // baseGoodsTemplate.setAgencyId(finSysTenant.getId());
-                    // baseGoodsTemplate.setAgencyName(agencyName);
-                    //
-                    // List<BaseGoodsModels> models = new ArrayList<>();
-                    // BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
-                    // baseGoodsModels.setModelName(goodModelName);
-                    // baseGoodsModels.setUnit(unit);
-                    // models.add(baseGoodsModels);
-                    // baseGoodsTemplate.setModels(models);
-                    //
-                    // list.add(baseGoodsTemplate);
-                    // }
-                }
+                        /**
+                         * 绗嚑鏉℃暟鎹�
+                         */
+                        Integer index = 0;
 
-                @Override
-                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-                    for (LWhFormProcureParam procureParam : list) {
-                        // lWhFormProcureService.add(procureParam, null);
-                    }
-                }
+                        /**
+                         * 琛ㄥご淇℃伅
+                         * @param headMap
+                         * @param context
+                         */
+                        @Override
+                        public void invokeHeadMap(Map headMap, AnalysisContext context) {
+                            // 楠岃瘉琛ㄥご鏁伴噺
+                            logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+                            if (headMap.size() != 12) {
+                                throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+                            }
+                        }
 
-                @Override
-                public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
-                    if (exception instanceof ExcelDataConvertException) {
-                        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
-                        Integer row = excelDataConvertException.getRowIndex() + 1;
-                        Integer column = excelDataConvertException.getColumnIndex() + 1;
-                        throw new RuntimeException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
-                    } else {
-                        throw new RuntimeException(exception.getMessage());
-                    }
-                }
-            }).sheet(0).doRead();
+                        /**
+                         * 鏁版嵁澶勭悊
+                         * @param data
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void invoke(ImportProcureOrderTemplate data, AnalysisContext analysisContext) {
+                            index++;
+                            String categoryOne = data.getCategoryOne();
+                            String categoryTwo = data.getCategoryTwo();
+                            String categoryThree = data.getCategoryThree();
+                            if (StrUtil.isEmpty(categoryThree)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + categoryThree);
+                            }
+                            String goodsName = data.getGoodsName();
+                            if (StrUtil.isEmpty(goodsName)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佸悕涓嶈兘涓虹┖锛�" + goodsName);
+                            }
+                            String goodModelName = data.getGoodModelName();
+                            if (StrUtil.isEmpty(goodModelName)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝瑙勬牸鍨嬪彿涓嶈兘涓虹┖锛�" + goodModelName);
+                            }
+                            String unit = data.getUnit();
+                            if (StrUtil.isEmpty(unit)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍗曚綅涓嶈兘涓虹┖锛�" + unit);
+                            }
+                            String type = data.getType();
+                            //String agencyName = data.getAgencyName();
+                            String warehouseName = data.getWarehouseName();
+                            if (StrUtil.isEmpty(warehouseName)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鎵�鍦ㄤ粨搴撲笉鑳戒负绌猴細" + warehouseName);
+                            }
+                            String supplierName = data.getSupplierName();
+                            if (StrUtil.isEmpty(supplierName)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝渚涜揣鍟嗕笉鑳戒负绌猴細" + supplierName);
+                            }
 
+                            String price = data.getPrice();
+                            if (StrUtil.isEmpty(price)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍗曚环(鍏�)涓嶈兘涓虹┖锛�" + price);
+                            }
+                            String num = data.getNum();
+                            if (StrUtil.isEmpty(num)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝搴撳瓨鏁伴噺涓嶈兘涓虹┖锛�" + num);
+                            }
+                            // 鐗╁搧绫诲瀷(鑷噰闆嗛噰)
+                            String goodsType = data.getGoodsType();
+                            if (StrUtil.isEmpty(goodsType)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鐗╁搧绫诲瀷涓嶈兘涓虹┖锛�" + goodsType);
+                            }
+
+                            // 绗竴娆¤繘鏉ユ妸澶栧眰鐨勫�艰缃竴涓�
+                            if (lWhFormProcureParam.getAgencyId() == null) {
+                                // [閫氳繃浠撳簱鍚嶏紝鏌ユ壘瀵瑰簲鐨勪粨搴搃d]
+                                FinSysTenantUser currentUser = getSysInfo();
+                                BaseWarehouseParam baseWarehouseParam = new BaseWarehouseParam();
+                                baseWarehouseParam.setStates(1);
+                                baseWarehouseParam.setWarehouseName(warehouseName);
+                                GenericPager<BaseWarehouse> pager = baseWarehouseService.queryList(baseWarehouseParam, currentUser);
+                                List<BaseWarehouse> datas = pager.getDatas();
+                                Long ckId = null;
+                                if (!CollectionUtil.isEmpty(datas)) {
+                                    BaseWarehouse baseWarehouse = datas.get(0);
+                                    ckId = baseWarehouse.getId();
+                                } else {
+                                    // 鎶ラ敊 浠撳簱涓嶅瓨鍦�
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝浠撳簱涓嶅瓨鍦細" + warehouseName);
+                                }
+                                lWhFormProcureParam.setProcureDoc("");
+                                lWhFormProcureParam.setWarehouseId(ckId);
+                                lWhFormProcureParam.setProcureTime(DateUtil.getNowDate() + "");
+                                lWhFormProcureParam.setBuyType(2);
+                            }
+                            // 鏌ヨ鍒嗙被id
+                            BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
+                            if (baseCategory == null) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝姝ゅ垎绫讳笉瀛樺湪锛�" + categoryThree);
+                            }
+                            Long categoryId = baseCategory.getId();
+                            // 涓嶅悓閲囬泦绫诲瀷锛屼笉鍚岀瓫閫�
+                            Optional<LWhFormProcureGoodsInfoParam> optional = null;
+                            if ("鑷噰".equals(goodsType)) {
+                                optional = zcList.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+                            } else if ("闆嗛噰".equals(goodsType)) {
+                                optional = jcList.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+                            }
+
+                            Optional<LWhFormProcureGoodsInfoParam> optional1 = null;
+                            if ("鑷噰".equals(goodsType)) {
+                                optional1 = zcList.stream().filter(item -> item.getGoodsTemplateName().equals(goodsName)).findFirst();
+                            } else if ("闆嗛噰".equals(goodsType)) {
+                                optional1 = jcList.stream().filter(item -> item.getGoodsTemplateName().equals(goodsName)).findFirst();
+                            }
+
+                            // 鍝佺被 鍜� 鍟嗗搧鍚嶅畬鍏ㄤ竴鏍锋墠鍔犲叆
+                            if (optional.isPresent() && optional1.isPresent()) {
+                                LWhProcureModelParam lWhProcureModelParam = new LWhProcureModelParam();
+                                lWhProcureModelParam.setCounts(StrUtil.isEmpty(num) ? 0 : Integer.valueOf(num));
+                                lWhProcureModelParam.setPrice(new BigDecimal(price).multiply(new BigDecimal("100")).longValue());
+                                lWhProcureModelParam.setBaseUnit(unit);
+
+
+                                // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+                                BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+                                if (goodsTemplate == null) {
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝姝ょ墿鍝佷笉瀛樺湪锛�" + goodsName);
+                                }
+                                BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+                                baseGoodsModels.setModelName(goodModelName);
+                                baseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+                                BaseGoodsModels byModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(baseGoodsModels);
+                                if (byModelNameAndGoodsTemplatesId == null) {
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+                                }
+                                lWhProcureModelParam.setBaseGoodsModelsId(byModelNameAndGoodsTemplatesId.getId());
+                                optional.get().getModels().add(lWhProcureModelParam);
+                            } else {
+                                LWhFormProcureGoodsInfoParam lWhFormProcureGoodsInfoParam = new LWhFormProcureGoodsInfoParam();
+                                // 鏁版嵁绗簩灞�-鐗╁搧涓夌骇鍒嗙被绗笁绾х殑id
+                                lWhFormProcureGoodsInfoParam.setCategoryId(categoryId);
+                                // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+                                BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+                                if (goodsTemplate == null) {
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝姝ょ墿鍝佷笉瀛樺湪锛�" + goodsName);
+                                }
+                                lWhFormProcureGoodsInfoParam.setBaseGoodsTemplateId(goodsTemplate.getId());
+                                // 鏁版嵁绗簩灞�-渚涘簲鍟�
+                                lWhFormProcureGoodsInfoParam.setSupplier(supplierName);
+                                // 鏁版嵁绗簩灞�-鐗╁搧鍚�
+                                lWhFormProcureGoodsInfoParam.setGoodsTemplateName(goodsName);
+                                // 鏁版嵁绗笁灞傛暟鎹�
+                                List<LWhProcureModelParam> lWhProcureModelParams = new ArrayList<>();
+                                LWhProcureModelParam lWhProcureModelParam = new LWhProcureModelParam();
+                                lWhProcureModelParam.setCounts(StrUtil.isEmpty(num) ? 0 : Integer.valueOf(num));
+                                BigDecimal multiply = new BigDecimal(price).multiply(new BigDecimal("100"));
+                                lWhProcureModelParam.setPrice(multiply.longValue());
+                                lWhProcureModelParam.setBaseUnit(unit);
+                                BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+                                baseGoodsModels.setModelName(goodModelName);
+                                baseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+                                BaseGoodsModels byModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(baseGoodsModels);
+                                if (byModelNameAndGoodsTemplatesId == null) {
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+                                }
+                                lWhProcureModelParam.setBaseGoodsModelsId(byModelNameAndGoodsTemplatesId.getId());
+                                lWhProcureModelParams.add(lWhProcureModelParam);
+                                lWhFormProcureGoodsInfoParam.setModels(lWhProcureModelParams);
+                                // 涓嶅悓閲囬泦绫诲瀷鍒颁笉鍚宭ist
+                                if ("鑷噰".equals(goodsType)) {
+                                    zcList.add(lWhFormProcureGoodsInfoParam);
+                                } else if ("闆嗛噰".equals(goodsType)) {
+                                    jcList.add(lWhFormProcureGoodsInfoParam);
+                                }
+                            }
+                        }
+
+                        /**
+                         * 澶勭悊鍚庣殑鏁版嵁瀵煎叆
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+                            lWhFormProcureParam.setProcureGoods(zcList);
+                            // 閲囪喘鍗�-鑷噰
+                            long zcId = IdUtil.generateId();
+                            lWhFormProcureParam.setId(zcId);
+                            String zcJsonString = JSONObject.toJSONString(lWhFormProcureParam);
+                            logger.info("瀵煎叆閲囪喘鍗�(鑷噰)json鏁版嵁 --------------------");
+                            logger.info(zcJsonString);
+                            add(lWhFormProcureParam);
+
+                            // 閲囪喘鍗�-闆嗛噰
+                            long jcId = IdUtil.generateId();
+                            lWhFormProcureParam.setId(jcId);
+                            lWhFormProcureParam.setBuyType(1);
+                            lWhFormProcureParam.setProcureGoods(jcList);
+                            String jcJsonString = JSONObject.toJSONString(lWhFormProcureParam);
+                            logger.info("瀵煎叆閲囪喘鍗�(闆嗛噰)json鏁版嵁 --------------------");
+                            logger.info(jcJsonString);
+                            add(lWhFormProcureParam);
+                            // 鑷噰鍜岄泦閲囧叆搴�
+                            income(zcId);
+                            income(jcId);
+                        }
+
+                        @Override
+                        public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+                            if (exception instanceof ExcelDataConvertException) {
+                                ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+                                Integer row = excelDataConvertException.getRowIndex() + 1;
+                                Integer column = excelDataConvertException.getColumnIndex() + 1;
+                                throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+                            } else {
+                                throw new ExcelAnalysisException(exception.getMessage());
+                            }
+                        }
+                    }).sheet(0).doRead();
+        }catch (ExcelAnalysisException e) {
+            return ResponseValue.error(e.getMessage());
+        }catch (RuntimeException e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        }
         return ResponseValue.success("瀵煎叆鎴愬姛!");
     }
 
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 ba8e8dc..61409c5 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,6 +1,7 @@
 package com.consum.base.controller;
 
 import java.lang.reflect.Field;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -10,10 +11,24 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.alibaba.excel.exception.ExcelDataConvertException;
 import com.alibaba.fastjson.JSONObject;
+import com.consum.base.pojo.*;
+import com.consum.base.pojo.excel.ImportProcureOrderTemplate;
+import com.consum.base.pojo.excel.LWhFormTransferTemplate;
+import com.consum.base.pojo.query.WarehouseQry;
+import com.consum.base.service.*;
+import com.consum.base.util.DateUtil;
 import com.consum.base.util.ExcelStyleUtil;
+import com.consum.model.po.*;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -27,10 +42,6 @@
 import com.consum.base.core.type.TransferStatesType;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.core.utils.IdUtil;
-import com.consum.base.pojo.GoodsUseRecordVO;
-import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
-import com.consum.base.pojo.RecordUserInfoVO;
-import com.consum.base.pojo.UseRecordSkuVO;
 import com.consum.base.pojo.dto.GoodsInfoDTO;
 import com.consum.base.pojo.dto.UseRecordDTO;
 import com.consum.base.pojo.excel.TransferExcelTemplate;
@@ -42,20 +53,7 @@
 import com.consum.base.pojo.response.GoodsTemplateCountVO;
 import com.consum.base.pojo.response.LWHFromTransferExtendVO;
 import com.consum.base.pojo.response.TransferInfoVO;
-import com.consum.base.service.BaseWarehouseService;
-import com.consum.base.service.LGoodsUserRecordCoreService;
-import com.consum.base.service.LWhFormTransferService;
-import com.consum.base.service.LWhGoodsService;
-import com.consum.base.service.LWhProcureModelService;
-import com.consum.base.service.LWhProcureModelUserRecordService;
-import com.consum.base.service.LWhProcureModelUserService;
 import com.consum.base.service.core.LWhFormTransferCoreService;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormTransfer;
-import com.consum.model.po.LWhProcureModel;
-import com.consum.model.po.LWhProcureModelUser;
-import com.consum.model.po.LWhProcureModelUserRecord;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
@@ -68,6 +66,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * @Description 璋冩嫧绠$悊
@@ -95,6 +94,14 @@
     private LWhGoodsService lWhGoodsService;
     @Autowired
     private BaseWarehouseService baseWarehouseService;
+    @Autowired
+    private FinSysTenantDepartmentService departmentService;
+    @Autowired
+    private BaseCategoryService baseCategoryService;
+    @Autowired
+    private BaseGoodsTemplateService baseGoodsTemplateService;
+    @Autowired
+    private BaseGoodsModelsService baseGoodsModelsService;
 
     /**
      * @Description 鏂板
@@ -118,10 +125,69 @@
             return ResponseValue.error("璋冩嫧鍗曚笉鑳戒负绌�");
         }
         long id = this.lWhFormTransferService.add(param, this.getSysInfo(), StrUtil.isEmpty(param.getProcureDoc()));
-        if(id == -1L){
+        if (id == -1L) {
             return ResponseValue.error("鎮ㄤ笉鏄簱绠″憳");
         }
-        if(id == -2L){
+        if (id == -2L) {
+            return ResponseValue.error("浠撳簱涓嶅瓨鍦�");
+        }
+
+        Integer transferBusinessType = param.getTransferBusinessType();
+        // 閮ㄩ棬鍒嗗彂涓氬姟闇�瑕佸鐞�
+        // 鎷嗗垎 鏂伴�昏緫
+        if (transferBusinessType == 1 && !StrUtil.isEmpty(param.getProcureDoc())) {
+            // 鍏堝嚭搴擄紝鍐嶅叆搴�
+            // 鍑哄簱鍓� 璁剧疆鍑哄簱浠撳簱
+            List<LWhProcureModel> modelByForm = lWhProcureModelService.getModelByForm(WhBusinessEnum.BUMENFENFA, id);
+            Set<Long> baseModelIds =
+                    modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet());
+
+            FinSysTenantUser sysTenantUser = this.getSysInfo();
+            String agencyId = sysTenantUser.getTenantId();
+            List<BaseWarehouse> baseWarehouseList =
+                    baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), StatesType.NORMAL.getValue());
+            Set<Long> wareHouseIds = baseWarehouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toSet());
+            // 閫氳繃璋冩嫧鍗曚腑鐨勫瀷鍙穒d鏌ヨ鍑鸿鍨嬪彿鐗╁搧鎵�鍦ㄧ殑浠撳簱浣嶇疆
+            List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds, wareHouseIds, null);
+            GoodsInfoDTO goodsInfoDTO = goodsInfoDTOS.stream().findFirst().orElse(null);
+            if (ObjectUtils.isEmpty(goodsInfoDTO)) {
+                return ResponseValue.error("璇ュ瀷鍙锋病鏈夊簱瀛樺彲浣跨敤");
+            }
+
+            Long wareHouseId = goodsInfoDTO.getWarehouseId();
+            String warehouseName = goodsInfoDTO.getWarehouseName();
+            LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id);
+            lWhFormTransfer.setOutWarehouseId(wareHouseId);
+            lWhFormTransfer.setOutWarehouseName(warehouseName);
+            lWhFormTransferService.update(lWhFormTransfer);
+            Long l = lWhFormTransferCoreService.doTransferOutPutNew(id, getCurrentUser(), WhBusinessEnum.BUMENFENFA);
+            if (l == -1L) {
+                return ResponseValue.error("浠撳簱鏁伴噺涓嶈冻");
+            }
+            lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser(), param.getOperatorName());
+        }
+
+        return ResponseValue.success();
+    }
+
+
+    public ResponseValue add2(LWhFormTransferParam param) throws Exception {
+        S_user_core currentUser = this.getCurrentUser();
+        if (currentUser == null) {
+            return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        List<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods();
+        if (CollectionUtils.isEmpty(transferGoods)) {
+            return ResponseValue.error("璋冩嫧鍗曚笉鑳戒负绌�");
+        }
+
+        FinSysTenantUser sysInfo = this.getSysInfo();
+
+        long id = this.lWhFormTransferService.add(param, sysInfo, true);
+        if (id == -1L) {
+            return ResponseValue.error("鎮ㄤ笉鏄簱绠″憳");
+        }
+        if (id == -2L) {
             return ResponseValue.error("浠撳簱涓嶅瓨鍦�");
         }
 
@@ -154,7 +220,7 @@
             lWhFormTransfer.setOutWarehouseName(warehouseName);
             lWhFormTransferService.update(lWhFormTransfer);
             Long l = lWhFormTransferCoreService.doTransferOutPutNew(id, getCurrentUser(), WhBusinessEnum.BUMENFENFA);
-            if(l == -1L){
+            if (l == -1L) {
                 return ResponseValue.error("浠撳簱鏁伴噺涓嶈冻");
             }
             lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser(), param.getOperatorName());
@@ -409,7 +475,7 @@
         if (type == 0) {
             params = new TemplateExportParams("import/璋冩嫧鍏ュ簱鍗�.xls");
             fileName = "璋冩嫧鍏ュ簱鍗�";
-        }else if (type == 1) {
+        } else if (type == 1) {
             params = new TemplateExportParams("import/璋冩嫧鍏ュ簱鍗�1.xls");
             fileName = "璋冩嫧鍏ュ簱鍗�";
         } else {
@@ -614,4 +680,330 @@
         lWhFormTransferService.queryDepartmentTransferOrder();
         return ResponseValue.success(transferInfoVO);
     }
+
+    /**
+     * 鍒嗗彂鍗曞鍏�
+     *
+     * @param file
+     * @return
+     */
+    @ApiOperation(value = "鍒嗗彂鍗曞鍏�", notes = "鍒嗗彂鍗曞鍏�")
+    @PostMapping("/import2")
+    public ResponseValue import2(MultipartFile file) {
+        String originalFilename = file.getOriginalFilename();
+        // 鏂囦欢鏍煎紡鏍¢獙
+//        if (!".xls".endsWith(originalFilename)) {
+//            return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+//        }
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        if (sysInfo == null) {
+            return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
+        }
+        try {
+            EasyExcelFactory.read(file.getInputStream(), LWhFormTransferTemplate.class,
+                    new AnalysisEventListener<LWhFormTransferTemplate>() {
+                        /**
+                         * 鍒嗗彂鍗曚富鏁版嵁
+                         */
+                        final List<LWhFormTransferGoodsInfoParam> list = Lists.newArrayList();
+
+                        /**
+                         * 鍒嗗彂鍗曠殑澶栧眰鐨勪富鏁版嵁
+                         */
+                        final LWhFormTransferParam lWhFormTransferParam = new LWhFormTransferParam();
+
+                        /**
+                         * 琛岀储寮�
+                         */
+                        Integer index = 0;
+
+                        /**
+                         * 琛ㄥご淇℃伅
+                         * @param headMap
+                         * @param context
+                         */
+                        @Override
+                        public void invokeHeadMap(Map headMap, AnalysisContext context) {
+                            // 楠岃瘉琛ㄥご鏁伴噺
+                            logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+                            if (headMap.size() != 15) {
+                                throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+                            }
+                        }
+
+                        /**
+                         * 瀵煎叆涓�(鏂囦欢鏁版嵁澶勭悊)
+                         * @param data
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void invoke(LWhFormTransferTemplate data, AnalysisContext analysisContext) {
+                            index++;
+                            String categoryOne = data.getCategoryOne();
+                            String categoryTwo = data.getCategoryTwo();
+                            String categoryThree = data.getCategoryThree();
+                            if (StrUtil.isEmpty(categoryThree)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + categoryThree);
+                            }
+                            String goodsName = data.getGoodsName();
+                            if (StrUtil.isEmpty(goodsName)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佸悕涓嶈兘涓虹┖锛�" + goodsName);
+                            }
+                            String goodModelName = data.getGoodModelName();
+                            if (StrUtil.isEmpty(goodModelName)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝瑙勬牸鍨嬪彿涓嶈兘涓虹┖锛�" + goodModelName);
+                            }
+                            String unit = data.getUnit();
+                            String type = data.getType();
+                            if (StrUtil.isEmpty(type)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝绠$悊鍒嗙被涓嶈兘涓虹┖锛�" + type);
+                            }
+                            String agencyName = data.getAgencyName();
+                            if (StrUtil.isEmpty(agencyName)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍒涘缓鏈烘瀯涓嶈兘涓虹┖锛�" + agencyName);
+                            }
+                            //String warehouseName = data.getWarehouseName();
+                            String supplierName = data.getSupplierName();
+                            //String price = data.getPrice();
+                            String num = data.getNum();
+                            if (StrUtil.isEmpty(num)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝棰嗙敤鏁伴噺涓嶈兘涓虹┖锛�" + num);
+                            }
+                            // 鐗╁搧绫诲瀷(鑷噰闆嗛噰)
+                            //String goodsType = data.getGoodsType();
+                            // 浣跨敤浜洪儴闂�
+                            String userDepartment = data.getUserDepartment();
+                            if (StrUtil.isEmpty(userDepartment)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝浣跨敤浜洪儴闂ㄤ笉鑳戒负绌猴細" + userDepartment);
+                            }
+                            // 濉姤浜�
+                            String reportedBy = data.getReportedBy();
+                            if (StrUtil.isEmpty(reportedBy)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝濉姤浜轰笉鑳戒负绌猴細" + reportedBy);
+                            }
+                            // 浣跨敤浜�
+                            String user = data.getUser();
+                            if (StrUtil.isEmpty(user)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝浣跨敤浜轰笉鑳戒负绌猴細" + user);
+                            }
+                            // 鑱旂郴鐢佃瘽
+                            String userContactPhone = data.getUserContactPhone();
+                            if (StrUtil.isEmpty(userContactPhone)) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鑱旂郴鐢佃瘽涓嶈兘涓虹┖锛�" + userContactPhone);
+                            }
+                            // 绗竴娆¤繘鏉ユ妸澶栧眰鐨勫�艰缃竴涓�
+                            if (StrUtil.isEmpty(lWhFormTransferParam.getDepartmentName())) {
+                                // 鏈烘瀯id (鏍规嵁 鏈烘瀯鍚嶇О鍜岄儴闂ㄥ悕绉� 鏌ユ壘瀵瑰簲鐨刬d)
+                                FinSysTenantDepartment finSysTenantDepartment = departmentService.queryIdByTenDepName(agencyName, userDepartment);
+                                if (finSysTenantDepartment == null) {
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹� " + "鏈烘瀯-閮ㄩ棬鏈壘鍒帮細[" + agencyName + "-" + userDepartment + "]");
+                                }
+                                lWhFormTransferParam.setTransferBusinessType(1);
+                                lWhFormTransferParam.setDepartmentId(finSysTenantDepartment.getId());
+                                lWhFormTransferParam.setDepartmentName(userDepartment);
+                                lWhFormTransferParam.setOperatorName(reportedBy);
+                                lWhFormTransferParam.setTel(0L);
+                                lWhFormTransferParam.setCreateTime(DateUtil.getNowDate());
+                                lWhFormTransferParam.setProcureDoc("");
+                                lWhFormTransferParam.setOutAgencyId(finSysTenantDepartment.getTenantId());
+                            }
+                            // 鏌ヨ鍒嗙被id
+                            BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
+                            if (baseCategory == null) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "姝ゅ垎绫绘湭鎵惧埌锛�" + categoryThree);
+                            }
+                            Long categoryId = baseCategory.getId();
+                            // 涓嶅悓閲囬泦绫诲瀷锛屼笉鍚岀瓫閫�
+                            Optional<LWhFormTransferGoodsInfoParam> optional = null;
+                            // 绛涢�夌被鍨�
+                            optional = list.stream().filter(item -> item.getBaseCategoryId().equals(categoryId)).findFirst();
+                            // 绛涢�夌墿鍝佸悕
+                            Optional<LWhFormTransferGoodsInfoParam> optional2 =
+                                    list.stream().filter(item -> item.getGoodsTemplateName().equals(goodsName)).findFirst();
+                            // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+                            BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+                            if (goodsTemplate == null) {
+                                throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "姝ょ墿鍝佹湭鎵惧埌锛�" + goodsName);
+                            }
+                            if (optional.isPresent() && optional2.isPresent()) {
+                                // 鍐呭眰list(棰嗙敤浜�)
+                                List<LWhTransferModelParam> models3 = optional.get().getModels();
+                                // 鎵惧瀷鍙峰悕瀛椾竴鏍风殑
+                                Optional<LWhTransferModelParam> optional3 =
+                                        models3.stream().filter(item -> item.getBaseGoodsModelsName().equals(goodModelName)).findFirst();
+                                int counts = 0;
+                                for (LWhTransferModelParam m : models3) {
+                                    int addNum = 0;
+                                    if (m.getNum() != null) {
+                                        addNum = m.getCounts();
+                                    }
+                                    counts += addNum;
+                                }
+                                // 鍚屼竴涓瀷鍙风殑
+                                if (optional3.isPresent()) {
+                                    if ("A".equals(type)) {
+                                        LWhProcureModelUserParam lWhProcureModelUserParam = new LWhProcureModelUserParam();
+                                        lWhProcureModelUserParam.setGoodsNum(Integer.valueOf(num));
+                                        lWhProcureModelUserParam.setNowUserName(user);
+                                        lWhProcureModelUserParam.setNowUserPhone(new Long(userContactPhone));
+                                        Integer counts1 = optional3.get().getCounts();
+                                        Integer num1 = optional3.get().getNum();
+                                        optional3.get().setCounts(Integer.valueOf(num) + counts1);
+                                        optional3.get().setNum(Integer.valueOf(num) + num1);
+                                        optional3.get().getProcureModelUserList().add(lWhProcureModelUserParam);
+                                    } else {
+                                        Integer counts1 = optional3.get().getCounts();
+                                        Integer num1 = optional3.get().getNum();
+                                        optional3.get().setCounts(Integer.valueOf(num) + counts1);
+                                        optional3.get().setNum(Integer.valueOf(num) + num1);
+                                    }
+                                } else {
+                                    // 姝ょ墿鍝佸彟澶栫殑瑙勬牸鍨嬪彿
+                                    LWhTransferModelParam lWhTransferModelParam = new LWhTransferModelParam();
+                                    // 妯℃澘鐨刬d
+                                    BaseGoodsModels selBaseGoodsModels = new BaseGoodsModels();
+                                    selBaseGoodsModels.setModelName(goodModelName);
+                                    selBaseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+                                    BaseGoodsModels selByModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(selBaseGoodsModels);
+                                    if (selByModelNameAndGoodsTemplatesId == null) {
+                                        throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+                                    }
+                                    lWhTransferModelParam.setBaseGoodsModelsId(selByModelNameAndGoodsTemplatesId.getId());
+                                    // 鍐呭眰list鐨勬暟閲忎箣鍜�
+                                    lWhTransferModelParam.setCounts(Integer.valueOf(num));
+                                    // 妯℃澘鍚嶇О
+                                    lWhTransferModelParam.setBaseGoodsModelsName(goodModelName);
+                                    List<LWhProcureModelUserParam> addLWhProcureModelUserParam = new ArrayList<>();
+                                    LWhProcureModelUserParam lWhProcureModelUserParam = new LWhProcureModelUserParam();
+                                    lWhProcureModelUserParam.setGoodsNum(Integer.valueOf(num));
+
+                                    // 鏌ヨ搴撳瓨鏁伴噺
+                                    Integer nowNum = selectAllNumber(lWhFormTransferParam.getOutAgencyId(), selByModelNameAndGoodsTemplatesId.getId());
+                                    if(nowNum<new Integer(num)){
+                                        throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛歔" + goodsName + "] 瑙勬牸鍨嬪彿锛歔" + goodModelName + "] 搴撳瓨鏁伴噺涓嶈冻锛歔"+nowNum+"]");
+                                    }
+                                    lWhProcureModelUserParam.setNowUserName(user);
+                                    lWhProcureModelUserParam.setNowUserPhone(new Long(userContactPhone));
+                                    addLWhProcureModelUserParam.add(lWhProcureModelUserParam);
+                                    lWhTransferModelParam.setProcureModelUserList(addLWhProcureModelUserParam);
+                                    optional.get().getModels().add(lWhTransferModelParam);
+                                }
+                            } else {
+                                LWhFormTransferGoodsInfoParam lWhFormTransferGoodsInfoParam = new LWhFormTransferGoodsInfoParam();
+                                // 鍒嗙被id
+                                lWhFormTransferGoodsInfoParam.setBaseCategoryId(categoryId);
+                                // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+                                //BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+                                BaseGoodsModels selBaseGoodsModels = new BaseGoodsModels();
+                                selBaseGoodsModels.setModelName(goodModelName);
+                                selBaseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+                                BaseGoodsModels selByModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(selBaseGoodsModels);
+                                if (selByModelNameAndGoodsTemplatesId == null) {
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹� " + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+                                }
+                                // 鐗╁搧鐨刬d 锛氱埍鐜涚數鍔ㄨ溅
+                                lWhFormTransferGoodsInfoParam.setBaseGoodsTemplateId(goodsTemplate.getId());
+                                lWhFormTransferGoodsInfoParam.setGoodsTemplateName(goodsName);
+                                // 鍐呭眰
+                                LWhTransferModelParam lWhTransferModelParam = new LWhTransferModelParam();
+                                // 瑙勬牸id
+                                lWhTransferModelParam.setBaseGoodsModelsId(selByModelNameAndGoodsTemplatesId.getId());
+                                // 鏂板鐨勬椂鍊欓粯璁や竴鏉�
+                                lWhTransferModelParam.setCounts(new Integer(num));
+                                lWhTransferModelParam.setNum(new Integer(num));
+                                List<LWhProcureModelUserParam> lWhFormProcureGoodsInfoParam = new ArrayList<>();
+                                LWhProcureModelUserParam lWhProcureModelUserParam = new LWhProcureModelUserParam();
+                                lWhProcureModelUserParam.setGoodsNum(Integer.valueOf(num));
+
+                                // 鏌ヨ搴撳瓨鏁伴噺
+                                Integer nowNum = selectAllNumber(lWhFormTransferParam.getOutAgencyId(), selByModelNameAndGoodsTemplatesId.getId());
+                                if(nowNum<new Integer(num)){
+                                    throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹� " + "鍝佸悕锛歔" + goodsName + "] 瑙勬牸鍨嬪彿锛歔" + goodModelName + "] 搴撳瓨鏁伴噺涓嶈冻锛歔"+nowNum+"]");
+                                }
+
+                                lWhProcureModelUserParam.setNowUserName(user);
+                                lWhProcureModelUserParam.setNowUserPhone(new Long(userContactPhone));
+                                lWhFormProcureGoodsInfoParam.add(lWhProcureModelUserParam);
+                                lWhTransferModelParam.setProcureModelUserList(lWhFormProcureGoodsInfoParam);
+                                lWhTransferModelParam.setBaseGoodsModelsName(goodModelName);
+                                List<LWhTransferModelParam> lWhTransferModelParams = new ArrayList<>();
+                                lWhTransferModelParams.add(lWhTransferModelParam);
+                                lWhFormTransferGoodsInfoParam.setModels(lWhTransferModelParams);
+                                lWhFormTransferGoodsInfoParam.setType(type);
+                                list.add(lWhFormTransferGoodsInfoParam);
+                            }
+                        }
+
+                        /**
+                         * 鍒嗗彂鍗曞鍏ヤ富鏂规硶
+                         * @param analysisContext
+                         */
+                        @Override
+                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+                            lWhFormTransferParam.setTransferGoods(list);
+                            long id = IdUtil.generateId();
+                            //lWhFormTransferParam.setProcureDoc("[{\"fileType\":\"png\",\"id\":\"883654049218335\",\"name\":\"寰俊鎴浘_20240426143552.png\",\"url\":\"http://172.16.60.172:8083/lowConsum/file/2024/5/883654049218335.png\",\"path\":\"2024/5/883654049218335.png\",\"attSize\":6772}]");
+                            lWhFormTransferParam.setProcureDoc("-");
+                            lWhFormTransferParam.setId(id);
+                            String jsonString = JSONObject.toJSONString(lWhFormTransferParam);
+                            logger.info("瀵煎叆鍒嗗彂鍗昷son鏁版嵁 --------------------");
+                            logger.info(jsonString);
+                            // 鍒嗗彂鍗曟嵁
+                            try {
+                                ResponseValue responseValue = add2(lWhFormTransferParam);
+                                logger.info(responseValue.toString());
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                                throw new RuntimeException(e);
+                            }
+                        }
+
+                        @Override
+                        public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+                            if (exception instanceof ExcelDataConvertException) {
+                                ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+                                Integer row = excelDataConvertException.getRowIndex() + 1;
+                                Integer column = excelDataConvertException.getColumnIndex() + 1;
+                                throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+                            } else {
+                                throw new ExcelAnalysisException(exception.getMessage());
+                            }
+                        }
+                    }).sheet(0).doRead();
+        } catch (ExcelAnalysisException e) {
+            return ResponseValue.error(e.getMessage());
+        } catch (RuntimeException e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseValue.error("绯荤粺閿欒");
+        }
+        return ResponseValue.success("瀵煎叆鎴愬姛!");
+    }
+
+
+    /**
+     * 鏌ヨ搴撳瓨Id
+     * @param agencyId
+     * @param baseGoodsModelsId
+     * @return
+     */
+    public Integer selectAllNumber(Long agencyId,Long baseGoodsModelsId) {
+        WarehouseQry warehouseQry = new WarehouseQry();
+        warehouseQry.setAgencyId(agencyId);
+        warehouseQry.setBaseGoodsModelsId(baseGoodsModelsId);
+        List<BaseWarehouse> baseWarehouseList =
+                baseWarehouseService.getBaseWareHouseList(agencyId, StatesType.NORMAL.getValue());
+        List<Long> warehouseIdList = baseWarehouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toList());
+        Integer warehouseType = warehouseQry.getWarehouseType();
+        Integer states = warehouseQry.getStates();
+        Integer buyType = warehouseQry.getBuyType();
+        // 璋冩嫧鏃跺彧鏌ユ満鏋勭被鍨嬬殑闆嗛噰浠撳簱搴撳瓨
+        // 閮ㄩ棬鍒嗗彂鏃朵笉鍒嗘満鏋勫拰閮ㄩ棬锛屽洜涓鸿皟鎷ㄨ繘鏉ョ殑鐗╁搧涔熺畻鍦ㄥ簱瀛橀噷鍙槸绫诲瀷涓洪儴闂紝鍚屾牱妫�瑙嗘墍鏈変粨搴撹鍨嬪彿鐨勬暟閲�
+        int num = lWhGoodsService.queryGoodsModelInWareHouseNum(warehouseType, warehouseIdList, baseGoodsModelsId,
+                states, buyType);
+        return num;
+    }
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java b/consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java
new file mode 100644
index 0000000..15dbb75
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java
@@ -0,0 +1,39 @@
+package com.consum.base.listener;
+
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.context.AnalysisContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class EasyExcelListener extends AnalysisEventListener<Map<Integer, String>> {
+    //琛ㄥご鏁版嵁锛堝瓨鍌ㄦ墍鏈夌殑琛ㄥご鏁版嵁锛�
+    private List<Map<Integer, String>> headList = new ArrayList<>();
+    //鏁版嵁浣�
+    private List<Map<Integer, String>> dataList = new ArrayList<>();
+
+
+    @Override//杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+        //瀛樺偍鍏ㄩ儴琛ㄥご鏁版嵁
+        System.out.println("1");
+        headList.add(headMap);
+    }
+
+    @Override// 澶勭悊姣忎竴琛屾暟鎹�
+    public void invoke(Map<Integer, String> data, AnalysisContext context) {
+        dataList.add(data);
+    }
+
+    @Override// 鍏ㄩ儴澶勭悊缁撴潫鎵ц
+    public void doAfterAllAnalysed(AnalysisContext context) {
+    }
+
+    public List<Map<Integer, String>> getHeadList() {
+        return headList;
+    }
+
+    public List<Map<Integer, String>> getDataList() {
+        return dataList;
+    }
+}
\ No newline at end of file
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
index 8371567..f7dbc24 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
@@ -32,5 +32,8 @@
 
     private Integer sort = null;
 
-
+    /**
+     * 鍒嗙被id
+     */
+    private Long categoryId;
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java
new file mode 100644
index 0000000..ad3ee5f
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java
@@ -0,0 +1,26 @@
+package com.consum.base.pojo.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+
+/**
+ * 鍔熻兘鎻忚堪: 鍒嗙被妯℃澘
+ *
+ * @author lxk
+ * @date  2024/5/11 10:43
+ * @version 1.0
+ **/
+@Data
+public class ImportClassificationTemplate {
+
+    @ExcelProperty("涓�绾у垎绫�")
+    private String categoryOne;
+    @ExcelProperty("浜岀骇鍒嗙被")
+    private String categoryTwo;
+    @ExcelProperty("鍝佺被鍚嶇О")
+    private String categoryThree;
+    @ExcelProperty("绠$悊鍒嗙被")
+    private String type;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java
index fb1b3a7..8347471 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java
@@ -1,5 +1,6 @@
 package com.consum.base.pojo.excel;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 
 import lombok.Data;
@@ -12,22 +13,20 @@
  */
 @Data
 public class ImportGoodsInfoTemplate {
-
     @ExcelProperty("涓�绾у垎绫�")
     private String categoryOne;
     @ExcelProperty("浜岀骇鍒嗙被")
     private String categoryTwo;
-    @ExcelProperty("涓夌骇鍒嗙被")
+    @ExcelProperty("鍝佺被鍚嶇О")
     private String categoryThree;
-    @ExcelProperty("鐗╁搧鍚嶇О")
+    @ExcelProperty("鍝佸悕")
     private String goodsName;
     @ExcelProperty("瑙勬牸鍨嬪彿")
     private String goodModelName;
     @ExcelProperty("鍗曚綅")
     private String unit;
-    @ExcelProperty("閲囪喘绫诲瀷")
-    private String type;
+//    @ExcelProperty("鐗╁搧绫诲瀷")
+//    private String type;
     @ExcelProperty("鎵�灞炴満鏋�")
     private String agencyName;
-
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java
index bb8e692..c6c559c 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java
@@ -13,28 +13,33 @@
 @Data
 public class ImportProcureOrderTemplate {
 
-    @ExcelProperty("鍏ュ簱鏈烘瀯")
-    private String agencyName;
-    @ExcelProperty("鍏ュ簱浠撳簱")
-    private String warehouseName;
-    @ExcelProperty("閲囪喘绫诲瀷")
-    private String type;
-    @ExcelProperty("鐗╁搧涓�绾у垎绫�")
+    @ExcelProperty("涓�绾у垎绫�")
     private String categoryOne;
-    @ExcelProperty("鐗╁搧浜岀骇鍒嗙被")
+    @ExcelProperty("浜岀骇鍒嗙被")
     private String categoryTwo;
-    @ExcelProperty("鐗╁搧涓夌骇鍒嗙被")
+    @ExcelProperty("鍝佺被鍚嶇О")
     private String categoryThree;
-    @ExcelProperty("鐗╁搧鍚嶇О")
+    @ExcelProperty("绠$悊鍒嗙被")
+    private String type;
+    @ExcelProperty("鍝佸悕")
     private String goodsName;
     @ExcelProperty("瑙勬牸鍨嬪彿")
     private String goodModelName;
+    @ExcelProperty("鍗曚綅")
+    private String unit;
+    @ExcelProperty("鐗╁搧绫诲瀷")
+    private String goodsType;
+    @ExcelProperty("鎵�鍦ㄤ粨搴�")
+    private String warehouseName;
+//    @ExcelProperty("鍒涘缓鏈烘瀯")
+//    private String agencyName;
     @ExcelProperty("渚涜揣鍟�")
     private String supplierName;
-    @ExcelProperty("鏁伴噺鍗曚綅")
-    private String unit;
     @ExcelProperty("鍗曚环(鍏�)")
     private String price;
-    @ExcelProperty("鍏ュ簱鏁伴噺")
+    @ExcelProperty("搴撳瓨鏁伴噺")
     private String num;
+//    @ExcelProperty("搴撶鍛�")
+//    private String warehouseKeeper;
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java
new file mode 100644
index 0000000..8367d57
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java
@@ -0,0 +1,53 @@
+package com.consum.base.pojo.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+/**
+ * 鍔熻兘鎻忚堪: 鍒嗗彂鍗曟ā鏉�
+ *
+ * @author lxk
+ * @version 1.0
+ * @date 2024/5/10 10:15
+ **/
+@Data
+public class LWhFormTransferTemplate {
+
+    @ExcelProperty("涓�绾у垎绫�")
+    private String categoryOne;
+    @ExcelProperty("浜岀骇鍒嗙被")
+    private String categoryTwo;
+    @ExcelProperty("鍝佺被鍚嶇О")
+    private String categoryThree;
+    @ExcelProperty("绠$悊鍒嗙被")
+    private String type;
+    @ExcelProperty("鍝佸悕")
+    private String goodsName;
+    @ExcelProperty("瑙勬牸鍨嬪彿")
+    private String goodModelName;
+    @ExcelProperty("鍗曚綅")
+    private String unit;
+//    @ExcelProperty("鐗╁搧绫诲瀷")
+//    private String goodsType;
+//    @ExcelProperty("鎵�鍦ㄤ粨搴�")
+//    private String warehouseName;
+    @ExcelProperty("鎵�灞炴満鏋�")
+    private String agencyName;
+    @ExcelProperty("渚涜揣鍟�")
+    private String supplierName;
+//    @ExcelProperty("鍗曚环(鍏�)")
+//    private String price;
+    @ExcelProperty("搴撶鍛�")
+    private String warehouseKeeper;
+    @ExcelProperty("浣跨敤浜�")
+    private String user;
+    @ExcelProperty("浣跨敤浜洪儴闂�")
+    private String userDepartment;
+    @ExcelProperty("浣跨敤浜鸿仈绯荤數璇�")
+    private String userContactPhone;
+    @ExcelProperty("棰嗙敤鏁伴噺")
+    private String num;
+    @ExcelProperty("濉姤浜�")
+    private String reportedBy;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java b/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java
index f71b12e..997b080 100644
--- a/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java
+++ b/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java
@@ -36,4 +36,19 @@
      * @return
      */
     BaseCategory getByCategoryByName(String categoryName);
+
+    /**
+     * 鏌ヨ鏈�澶х殑鎺掑簭鍙稡y id
+     * @param id 鍒嗙被id
+     * @return
+     */
+    int selIndexByPid(Long id);
+
+    /**
+     * 鐗╁搧鍒嗙被鍒楄〃鏌ヨ绮剧‘鏌ヨ
+     * @param baseCategoryParam1
+     * @return
+     */
+    GenericPager<BaseCategory> queryBaseCategoryList2(BaseCategoryParam baseCategoryParam1);
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java b/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java
index d77c8be..33e8002 100644
--- a/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java
+++ b/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java
@@ -63,5 +63,13 @@
 
     List<FinSysTenantDepartment> queryDataList(FinSysTenantDepartmentParam finSysTenantDepartmentParam1);
 
+    /**
+     * 鏌ヨid by鏈烘瀯鍜岄儴闂ㄥ悕
+     * @param tenantName
+     * @param departmentName
+     * @return
+     */
+    FinSysTenantDepartment queryIdByTenDepName(String tenantName, String departmentName);
+
 
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
index 27616a7..80e0c8b 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -102,6 +103,42 @@
         if (!StringUtils.isEmpty(param.getCategoryName())) {
             sql.append(" and category_name like:category_name ");
             paramts.put("category_name", StringUtils.CHAR_PERCENT + param.getCategoryName() + StringUtils.CHAR_PERCENT);
+        }
+        // 绫诲埆
+        if (!StringUtils.isEmpty(param.getClassification())) {
+            sql.append(" and classification =:classification ");
+            paramts.put("classification", param.getClassification());
+        }
+        // 鐘舵��
+        if (param.getStates() != null) {
+            sql.append(" and states =:states ");
+            paramts.put("states", param.getStates());
+        } else {
+            sql.append(" and states !=3 ");
+        }
+        sql.append(" ORDER BY ORDER_NUMBER,CREATE_TIME DESC ");
+        return selectSplit(sql.toString(), paramts, new BaseCategory());
+    }
+
+    /**
+     * 鐗╁搧鍒嗙被鍒楄〃鏌ヨ绮剧‘鏌ヨ
+     * @param param
+     * @return
+     */
+    public GenericPager<BaseCategory> queryBaseCategoryList2(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());
+        } else {
+            sql.append("and levels =1 ");
+        }
+        // 鍒嗙被鍚嶇О
+        if (!StringUtils.isEmpty(param.getCategoryName())) {
+            sql.append(" and category_name =:category_name ");
+            paramts.put("category_name", param.getCategoryName());
         }
         // 绫诲埆
         if (!StringUtils.isEmpty(param.getClassification())) {
@@ -236,4 +273,25 @@
         BaseCategory baseCategory = this.get(sql.toString(), paramts, new BaseCategory());
         return baseCategory;
     }
+
+    /**
+     * 鏌ヨ鍒嗙被鍚岀骇鍒殑鏈�澶ф帓搴忓彿
+     * @param id 鍒嗙被
+     * @return
+     */
+    @Override
+    public int selIndexByPid(Long id) {
+        StringBuilder sql = new StringBuilder("SELECT max(ORDER_NUMBER) maxNum FROM base_category WHERE 1 = 1 ");
+        HashMap<String, Object> paramts = new HashMap<>();
+        // 鍒嗙被鍚嶇О
+        sql.append(" and FATHER_CATEGORY_ID =:FATHER_CATEGORY_ID ");
+        paramts.put("FATHER_CATEGORY_ID", id);
+        Map getMap = this.get(sql.toString(), paramts);
+        Object obj = getMap.get("maxNum");
+        if(obj!=null){
+            return new Integer(obj.toString());
+        }
+        return 0;
+    }
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java
index 5121104..f017e97 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java
@@ -203,4 +203,19 @@
         List<FinSysTenantDepartment> select = this.select(sql.toString(), paramts, new FinSysTenantDepartment());
         return select;
     }
+
+    /**
+     * 鏍规嵁閮ㄩ棬鍜屾満鏋勫悕鏌ユ壘瀵瑰簲鐨勯儴闂ㄤ俊鎭�
+     * @param tenantName
+     * @param departmentName
+     * @return
+     */
+    @Override
+    public FinSysTenantDepartment queryIdByTenDepName(String tenantName, String departmentName ) {
+        StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department \n" +
+                "WHERE TENANT_ID = ( SELECT id FROM fin_sys_tenant WHERE NAME = '"+tenantName+"' LIMIT 1 ) AND NAME = '"+departmentName+"' LIMIT 1 ");
+        HashMap<String, Object> paramts = new HashMap<>();
+        return this.get(sql.toString(), paramts, new FinSysTenantDepartment());
+    }
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/util/DateUtil.java b/consum-base/src/main/java/com/consum/base/util/DateUtil.java
new file mode 100644
index 0000000..d91948b
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/util/DateUtil.java
@@ -0,0 +1,250 @@
+package com.consum.base.util;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.sql.Timestamp;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 鍔熻兘鎻忚堪: 鏃堕棿澶勭悊
+ *
+ * @author lxk
+ * @date  2024/4/9 10:34
+ * @version 1.0
+ **/
+public class DateUtil {
+    /**
+     * @author: hyf
+     * @create: 2023/4/26 0026
+     * @description: 鑾峰彇褰撳墠鏃堕棿
+     *
+     **/
+    public static Timestamp getNowTimestamp(){
+        return new Timestamp(System.currentTimeMillis());
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鏃堕棿鐨刲ong鍊�
+     *
+     * @return 杩斿洖褰撳墠鏃堕棿鐨刲ong鍊硷細渚� 20230101101010
+     */
+    public static Long getNowDate() {
+        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+        long currentTimeMillis = System.currentTimeMillis();
+        Date date = new Date(currentTimeMillis);
+        String format = df.format(date);
+        return new Long(format);
+    }
+
+    /**
+     * 鎶�14浣嶇殑鏃堕棿long锛岃浆鍖栨椂闂村瓧绗︿覆
+     * @param dateLong  long鏃堕棿14浣�
+     * @param format 瑕佽浆鐨勬椂闂存牸寮�
+     * @return
+     */
+    public static String getStrDateByLong(Long dateLong,String format) {
+        String dateStr = dateLong.toString();
+        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+        DateFormat df2 = new SimpleDateFormat(format);
+        try {
+            Date parse = df.parse(dateStr);
+            String format1 = df2.format(parse);
+            return format1;
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static Long DateToLong(Date date) {
+        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+        String format = df.format(date);
+        return new Long(format);
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鏃跺垎
+     * @return
+     */
+    public static Long getNowTime4HHMM() {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HHmm");
+        LocalTime localTime = LocalTime.now();
+        String format = localTime.format(formatter);
+        return Long.parseLong(format);
+    }
+
+    /**
+     * 鍒ゆ柇褰撳墠鏃堕棿鍦ㄦ煇涓尯闂�
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public static Boolean betweenNowTime(Long startTime, Long endTime) {
+        Long nowTime4HHMM = DateUtil.getNowTime4HHMM();
+        if (startTime <= nowTime4HHMM && endTime >= nowTime4HHMM) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 鏃堕棿娣诲姞澶�
+     * @param time
+     * @param day
+     * @return
+     */
+    public static Long addDay(Long time, Long day) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        LocalDateTime localDateTime = LocalDateTime.parse(time.toString(time), formatter);
+        LocalDateTime newTime = localDateTime.plusDays(day);
+        String format = newTime.format(formatter);
+        return Long.parseLong(format);
+    }
+
+    /**
+     * 鏃堕棿鍑忓皯澶�
+     * @param time
+     * @param day
+     * @return
+     */
+    public static Long subDay(Long time, Long day) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        LocalDateTime localDateTime = LocalDateTime.parse(time.toString(time), formatter);
+        LocalDateTime newTime = localDateTime.minusDays(day);
+        String format = newTime.format(formatter);
+        return Long.parseLong(format);
+    }
+
+    private static final DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+    private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+    private static final SimpleDateFormat birthdayFormat = new SimpleDateFormat("yyyy-MM-dd");
+    /**
+     * 鏂规硶鎻忚堪: 鏃ユ湡绫诲瀷鏍煎紡杞崲
+     * eg锛�20240428163146 杞崲涓� 鑷畾涔夋棩鏈熸牸寮�
+     *
+     **/
+    public static String longToStr(Long time,String fmt) {
+        DateTimeFormatter defaultFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        if(StringUtils.isNotBlank(fmt)){
+            defaultFormatter = DateTimeFormatter.ofPattern(fmt);
+        }
+        if(time.toString().length() == 8) {
+            LocalDate start = LocalDate.parse(time.toString(), dayFormatter);
+            return start.format(defaultFormatter);
+        } else {
+            LocalDateTime start = LocalDateTime.parse(time.toString(), timeFormatter);
+            return start.format(defaultFormatter);
+        }
+    }
+
+    /**
+     * 鏍规嵁鐢熸棩鑾峰彇骞撮緞
+     * eg锛氬嚭鐢熷勾鏈堟棩=2000-04-30锛涘綋鍓嶆椂闂�=2024-04-29锛涘垯age=24
+     * @param birthday  鍑虹敓鏃ユ湡
+     * @return
+     */
+    private static int getAgeByBirth(String birthday) {
+        int age = 0;
+        try {
+            Date date = birthdayFormat.parse(birthday);
+            Calendar now = Calendar.getInstance();
+            // 褰撳墠鏃堕棿
+            now.setTime(new Date());
+            Calendar birth = Calendar.getInstance();
+            birth.setTime(date);
+            //濡傛灉浼犲叆鐨勬椂闂达紝鍦ㄥ綋鍓嶆椂闂寸殑鍚庨潰锛岃繑鍥�0宀�
+            if (birth.after(now)) {
+                age = 0;
+            } else {
+                age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
+                if (now.get(Calendar.DAY_OF_YEAR) > birth.get(Calendar.DAY_OF_YEAR)) {
+                    age += 1;
+                }
+            }
+            return age;
+        } catch (Exception e) {
+            e.getStackTrace();
+            return 0;
+        }
+    }
+
+    /**
+     * 鏍规嵁骞撮緞鑾峰彇鐢熸棩
+     * eg锛歛ge=24锛涘綋鍓嶆椂闂�=2024-04-30锛涘垯鍑虹敓骞存湀鏃�=2000-04-30锛�
+     * @param age  骞撮緞
+     * @return
+     */
+    public static LocalDate getBirthByAge(int age){
+        LocalDate localDate = LocalDate.now();
+        return localDate.minusYears(age);
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鏃ユ湡
+     */
+    public static Long getNowTime(String fmt) {
+        if(StringUtils.isBlank(fmt)){
+            fmt = "yyyyMMddHHmmss";
+        }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(fmt);
+        if(fmt.length() == 8) {
+            LocalDate localTime = LocalDate.now();
+            String format = localTime.format(formatter);
+            return Long.parseLong(format);
+        } else {
+            LocalDateTime localTime = LocalDateTime.now();
+            String format = localTime.format(formatter);
+            return Long.parseLong(format);
+        }
+
+
+    }
+
+    /**
+     * 鍒ゆ柇褰撳墠鏃ユ湡鍦ㄦ煇涓尯闂�
+     * @param startDate 寮�濮嬫棩鏈�
+     * @param endDate   鎴鏃ユ湡
+     * @param fmt   鑷畾涔夋牸寮忥紱榛樿=yyyyMMddHHmmss
+     */
+    public static Boolean betweenNowDateTime(Long startDate, Long endDate,String fmt) {
+        Long nowDate = DateUtil.getNowTime(fmt);
+        if (startDate <= nowDate && endDate >= nowDate) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鏃堕棿鐨刲ong鍊�
+     * @param fmt   鑷畾涔夋牸寮�
+     * @return
+     */
+    public static Long getNowDateLong(String fmt) {
+        if(StringUtils.isBlank(fmt)) {
+            fmt = "yyyyMMddHHmmss";
+        }
+        DateFormat df = new SimpleDateFormat(fmt);
+        long currentTimeMillis = System.currentTimeMillis();
+        Date date = new Date(currentTimeMillis);
+        String format = df.format(date);
+        return new Long(format);
+    }
+
+    public static void main(String aaa[]){
+        //System.out.println(getAgeByBirth("2025-04-30"));
+
+//        System.out.println(betweenNowDateTime(20240429135709L,20240429170909L,""));
+//        System.out.println(getBirthByAge(23).toString());
+//        System.out.println(longToStr(20240515L,"yyyy-MM-dd"));
+        System.out.println(getNowDateLong("yyyyMMdd"));
+    }
+
+
+}
diff --git "a/deploy-jar-single/src/main/resources/import/\345\210\206\345\217\221\345\257\274\345\205\245.xls" "b/deploy-jar-single/src/main/resources/import/\345\210\206\345\217\221\345\257\274\345\205\245.xls"
new file mode 100644
index 0000000..fb416ed
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\345\210\206\345\217\221\345\257\274\345\205\245.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls" "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls"
index 9c7709e..9882375 100644
--- "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls"
+++ "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257old.xls" "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257old.xls"
new file mode 100644
index 0000000..c157c54
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257old.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\345\210\206\347\261\273.xls" "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\345\210\206\347\261\273.xls"
new file mode 100644
index 0000000..a6820a6
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\345\210\206\347\261\273.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls" "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls"
index 3a7ca55..91e1853 100644
--- "a/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls"
+++ "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245old.xls" "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245old.xls"
new file mode 100644
index 0000000..3a7ca55
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245old.xls"
Binary files differ

--
Gitblit v1.9.1