From 726a0dae13c9166ba31e4d504440334c8db26fd5 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期三, 13 十二月 2023 13:55:04 +0800
Subject: [PATCH] 修改分类树

---
 consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java |   99 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 99 insertions(+), 0 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
index ff4f99a..991539d 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
@@ -1,8 +1,11 @@
 package com.consum.base.controller;
 
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,19 +15,29 @@
 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.EasyExcel;
+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.MapUtils;
 import com.consum.base.core.utils.MapperUtil;
 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;
 import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenant;
 import com.consum.model.po.FinSysTenantUser;
 import com.consum.model.po.SDictData;
 import com.consum.model.vo.BaseGoodsTemplateVo;
@@ -32,6 +45,7 @@
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.web.ResponseValue;
 
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -41,6 +55,7 @@
  * @Author 鍗㈠簡闃�
  * @Date 2023/10/24
  */
+@Api(value = "鐗╁搧妯℃澘", tags = "鐗╁搧妯℃澘")
 @RestController
 @RequestMapping("/pc/base/goods/template")
 public class BaseGoodsTemplateController extends BaseController {
@@ -53,6 +68,12 @@
 
     @Autowired
     private BaseWarehouseService baseWarehouseService;
+
+    @Autowired
+    private FinSysTenantService finSysTenantService;
+
+    @Autowired
+    private BaseCategoryService baseCategoryService;
 
     /**
      * @Description 鏂板鐗╁搧妯℃澘
@@ -266,4 +287,82 @@
         return ResponseValue.success("鏌ヨ鎴愬姛!", resultList);
     }
 
+    @PostMapping("/import")
+    public ResponseValue upload(MultipartFile file) throws IOException {
+        String originalFilename = file.getOriginalFilename();
+        if (!originalFilename.endsWith(".xls")) {
+            return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+        }
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        if (sysInfo == null) {
+            return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
+        }
+        EasyExcel.read(file.getInputStream(), ImportGoodsInfoTemplate.class,
+            new AnalysisEventListener<ImportGoodsInfoTemplate>() {
+                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();
+
+                    BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
+                    Long categoryId = baseCategory.getId();
+
+                    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);
+                    }
+                }
+
+                @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();
+
+        return ResponseValue.success("瀵煎叆鎴愬姛!");
+    }
 }

--
Gitblit v1.9.1