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/BaseCategoryController.java | 202 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 195 insertions(+), 7 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java b/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java index 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("瀵煎叆鎴愬姛!"); + } + } -- Gitblit v1.9.1