From 58a518f8bc23ed382f4da2a86b09024b063a620c Mon Sep 17 00:00:00 2001
From: 黎星凯 <13949086503@163.com>
Date: 星期一, 13 五月 2024 15:40:47 +0800
Subject: [PATCH] 20240511修改: 分发单优化, 分类,物品,分发单明细,采购单明细数据导入

---
 consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java |  381 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 345 insertions(+), 36 deletions(-)

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 f0cc2f3..1ac5ca9 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
@@ -1,42 +1,64 @@
 package com.consum.base.controller;
 
-import cn.afterturn.easypoi.excel.ExcelExportUtil;
-import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
-import cn.hutool.core.util.ReflectUtil;
+import java.io.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;
+import com.alibaba.excel.exception.ExcelDataConvertException;
 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;
 import com.consum.base.pojo.query.FormProcureQry;
-import com.consum.base.pojo.response.*;
-import com.consum.base.service.LWhFormProcureGoodsService;
-import com.consum.base.service.LWhFormProcureService;
-import com.consum.base.service.LWhProcureModelService;
-import com.consum.base.service.impl.LWhFormProcureCoreService;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhFormProcureGoods;
+import com.consum.base.pojo.response.FormProcureVO;
+import com.consum.base.pojo.response.GoodsModelVO;
+import com.consum.base.pojo.response.GoodsTemplateCountVO;
+import com.consum.base.pojo.response.GoodsTemplateInfoVO;
+import com.consum.base.pojo.response.LWhFormProcureExtendVO;
+import com.consum.base.service.core.LWhFormProcureCoreService;
 import com.iplatform.model.po.S_user_core;
 import com.walker.db.page.GenericPager;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.web.ResponseValue;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import cn.hutool.core.util.ReflectUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.compress.utils.Lists;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.springframework.beans.BeanUtils;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.lang.reflect.Field;
-import java.util.*;
 
 /**
  * @ClassName LWhFormProcureController
@@ -57,6 +79,26 @@
     private LWhFormProcureCoreService lWhFormProcureCoreService;
     @Resource
     private LWhProcureModelService lWhProcureModelService;
+    @Resource
+    private BaseCategoryService baseCategoryService;
+
+    /**
+     * 浠撳簱鏈嶅姟
+     */
+    @Autowired
+    private BaseWarehouseService baseWarehouseService;
+
+    /**
+     * 鍏ュ簱id
+     */
+    @Autowired
+    private BaseGoodsTemplateService baseGoodsTemplateService;
+
+    /**
+     * 鐗╁搧model鏈嶅姟
+     */
+    @Autowired
+    private BaseGoodsModelsService baseGoodsModelsService;
 
     /**
      * @Description 鏂板
@@ -90,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);
@@ -117,7 +159,7 @@
 
                 // 鏌ヨ鍨嬪彿鏁伴噺
                 List<GoodsTemplateCountVO> procureCount =
-                    lWhProcureModelService.getProcureCountByBusinessId(item.getId());
+                        lWhProcureModelService.getProcureCountByBusinessId(item.getId());
                 fromProcureVO.setFromProcureTemplateInfoList(procureCount);
 
                 result.add(fromProcureVO);
@@ -125,8 +167,6 @@
         }
         try {
             Field fieldDatas = GenericPager.class.getDeclaredField("datas");
-            // fieldDatas.setAccessible(true);
-            // fieldDatas.set(genericPager, result);
             ReflectUtil.setFieldValue(genericPager, fieldDatas, result);
         } catch (Exception e) {
             e.printStackTrace();
@@ -192,7 +232,7 @@
      * 鏍规嵁id鏌ヨ璇︽儏
      */
     @GetMapping("/detail")
-    public ResponseValue getById(Long id) throws IllegalAccessException {
+    public ResponseValue getById(Long id) throws Exception {
         if (id == null) {
             return ResponseValue.error("閲囪喘鍗昳d涓虹┖");
         }
@@ -214,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;
             }
@@ -244,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());
@@ -253,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);
@@ -265,16 +305,16 @@
         if (sysInfo == null) {
             return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
         }
-        formProcureQry.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
+        // formProcureQry.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
         GenericPager genericPager = lWhFormProcureService.queryFormProcureDetailList(formProcureQry);
         return ResponseValue.success(genericPager);
     }
 
     @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 String export(Long id, HttpServletResponse response) throws Exception {
+    public ResponseValue<String> export(Long id, HttpServletResponse response) throws Exception {
         TemplateExportParams params = new TemplateExportParams("import/閲囪喘鍏ュ簱鍗�.xls");
         params.setHeadingStartRow(2);
         FinSysTenantUser sysInfo = this.getSysInfo();
@@ -288,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();
@@ -305,7 +345,276 @@
         map.put("totalAmount", totalAmount);
 
         Workbook workbook = ExcelExportUtil.exportExcel(params, ProcureExcelTemplate.class, exportList, map);
-        return downLoadExcel("閲囪喘鍏ュ簱鍗�", response, workbook);
+        String filePath = downLoadExcel("閲囪喘鍏ュ簱鍗�", workbook);
+        return ResponseValue.success("瀵煎嚭鎴愬姛", filePath);
 
     }
+
+    /**
+     * 閲囪喘鍗曞鍏�
+     *
+     * @param file
+     * @return
+     */
+    @ApiOperation(value = "閲囪喘鍗曞鍏�", notes = "閲囪喘鍗曞鍏�")
+    @PostMapping("/import")
+    public ResponseValue upload(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(), ImportProcureOrderTemplate.class,
+                    new AnalysisEventListener<ImportProcureOrderTemplate>() {
+                        /**
+                         * 鑷噰閲囪喘鍗曠殑鍐呭眰鏁版嵁
+                         */
+                        final List<LWhFormProcureGoodsInfoParam> zcList = Lists.newArrayList();
+
+                        /**
+                         * 闆嗛噰閲囪喘鍗曠殑鍐呭眰鏁版嵁
+                         */
+                        final List<LWhFormProcureGoodsInfoParam> jcList = Lists.newArrayList();
+
+                        /**
+                         * 閲囪喘鍗曠殑涓绘暟鎹�
+                         */
+                        final LWhFormProcureParam lWhFormProcureParam = new LWhFormProcureParam();
+
+                        /**
+                         * 绗嚑鏉℃暟鎹�
+                         */
+                        Integer index = 0;
+
+                        /**
+                         * 琛ㄥご淇℃伅
+                         * @param headMap
+                         * @param context
+                         */
+                        @Override
+                        public void invokeHeadMap(Map headMap, AnalysisContext context) {
+                            // 楠岃瘉琛ㄥご鏁伴噺
+                            logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+                            if (headMap.size() != 12) {
+                                throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+                            }
+                        }
+
+                        /**
+                         * 鏁版嵁澶勭悊
+                         * @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(!"鑷噰".equals(goodsType) && !"闆嗛噰".equals(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("瀵煎叆鎴愬姛!");
+    }
+
 }

--
Gitblit v1.9.1