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/controller/LWhFormProcureController.java |  374 ++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 285 insertions(+), 89 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 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("瀵煎叆鎴愬姛!");
     }
 

--
Gitblit v1.9.1