From 75b2904fbaf4fab6a9fb3baf065d2c927cc7a7a2 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 27 九月 2023 18:16:34 +0800
Subject: [PATCH] 基础数据-物料清单维护-导出
---
base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java | 141 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 139 insertions(+), 2 deletions(-)
diff --git a/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java b/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
index 81dd894..d92a843 100644
--- a/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
+++ b/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
@@ -1,17 +1,32 @@
package com.yuanchu.mom.service.impl;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.MbomModelMapper;
import com.yuanchu.mom.pojo.MbomModel;
import com.yuanchu.mom.pojo.dto.MbomModelDto;
import com.yuanchu.mom.pojo.dto.MbomModelDto2;
import com.yuanchu.mom.service.MbomModelService;
+import com.yuanchu.mom.service.TechnicalModelService;
+import com.yuanchu.mom.utils.StringUtils;
+import com.yuanchu.mom.utils.easyexcel.CustemHandler;
+import com.yuanchu.mom.utils.easyexcel.EasyExcelUtils;
+import com.yuanchu.mom.utils.easyexcel.ExcelMergeStrategy;
+import com.yuanchu.mom.utils.easyexcel.converter.LocalDateConverter;
+import com.yuanchu.mom.utils.easyexcel.template.ExcelMBomTemplate;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.map.HashedMap;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -25,6 +40,9 @@
@Resource
MbomModelMapper mbomModelMapper;
+
+ @Autowired
+ private TechnicalModelService technicalModelService;
//鏌ヨ鐗╂枡娓呭崟缁存姢鍒楄〃-->鍙宠竟灞曠ず璇ュ伐鑹烘墍闇�瑕佺殑鍘熸潗鏂�
@@ -61,5 +79,124 @@
public void delAllMbom(String ids) {
mbomModelMapper.delAllMbom(ids);
}
+
+ @Override
+ public void downloadTemplate(Map<String, Object> map,HttpServletResponse response) {
+ try{
+ List<String> typeList = getTypeList(map);
+ ExcelWriter excelWriter = EasyExcel.write(EasyExcelUtils.getResponse(response,"鐗╂枡娓呭崟瀵煎叆妯℃澘").getOutputStream())
+ .excelType(ExcelTypeEnum.XLS)
+ .build();
+ // 瀵煎嚭澶氫釜sheet椤�
+ for (int i = 0; i < typeList.size(); i++) {
+ WriteSheet sheet = EasyExcel.writerSheet(i, typeList.get(i))
+ .head(ExcelMBomTemplate.class)
+ .registerConverter(new LocalDateConverter())
+ .registerWriteHandler(new CustemHandler())
+ .registerWriteHandler(EasyExcelUtils.getStyleStrategy())
+ .build();
+ excelWriter.write(null, sheet);
+ }
+ // 鍏抽棴 ExcelWriter锛屽畬鎴愬鍑�
+ excelWriter.finish();
+ }catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ response.getOutputStream().close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void exportMBom(Map<String, Object> map,HttpServletResponse response) {
+ try{
+ //绫诲瀷鍒楄〃
+ List<String> typeList = getTypeList(map);
+ //sheet鏁版嵁
+ Map<String,List<ExcelMBomTemplate>> exportListByType = new HashedMap<>();
+ typeList.forEach((type)->{
+ List<Map<String,Object>> techTemList =
+ technicalModelService.selectAllTechTem(type, "");
+ List<ExcelMBomTemplate> list = new ArrayList<>();
+ techTemList.forEach(tech -> {
+ String father = "";
+ if(StringUtils.isNotEmpty(tech.get("name").toString())){
+ father = tech.get("name").toString();
+ }
+ if(StringUtils.isNotEmpty(tech.get("children").toString())){
+ List<Map<String,Object>> childrenList = (List<Map<String, Object>>) tech.get("children");
+ String finalFather = father;
+ childrenList.forEach(c -> {
+ String name = c.get("name").toString();
+ Integer id = Integer.parseInt(c.get("id").toString());
+ List<Map<String, Object>> mbom = mbomModelMapper.selectAllMbom(id);
+ if(CollectionUtils.isNotEmpty(mbom)){
+ mbom.forEach(m->{
+ ExcelMBomTemplate temp = new ExcelMBomTemplate();
+ temp.setFather(finalFather);
+ temp.setName(name);
+ temp.setMaterialName(m.get("name").toString());
+ temp.setUnit(m.get("unit").toString());
+ list.add(temp);
+ });
+ }
+ });
+ }
+ });
+ exportListByType.put(type,list);
+ });
+ ExcelWriter excelWriter = EasyExcel.write(
+ EasyExcelUtils.getResponse(response, "鐗╂枡娓呭崟瀵煎嚭").getOutputStream()
+ )
+ .excelType(ExcelTypeEnum.XLS)
+ .build();
+ // 瀵煎嚭澶氫釜sheet椤�
+ for (int i = 0; i < typeList.size(); i++) {
+ String type = typeList.get(i);
+ List<String> fathers = exportListByType.get(type).stream()
+ .map(ExcelMBomTemplate::getFather).collect(Collectors.toList());
+ List<String> names = exportListByType.get(type).stream()
+ .map(ExcelMBomTemplate::getName).collect(Collectors.toList());
+ WriteSheet sheet = EasyExcel.writerSheet(i, typeList.get(i))
+ .head(ExcelMBomTemplate.class)
+ .registerConverter(new LocalDateConverter())
+ .registerWriteHandler(new CustemHandler())
+ .registerWriteHandler(EasyExcelUtils.getStyleStrategy())
+ .registerWriteHandler(new ExcelMergeStrategy(fathers,0))
+ .registerWriteHandler(new ExcelMergeStrategy(names,1))
+ .build();
+ excelWriter.write(exportListByType.get(type), sheet);
+ }
+ // 鍏抽棴 ExcelWriter锛屽畬鎴愬鍑�
+ excelWriter.finish();
+ }catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ response.getOutputStream().close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ /**
+ * 鑾峰彇绫诲瀷鍒楄〃
+ * @param map
+ * @return
+ */
+ private List<String> getTypeList(Map<String, Object> map){
+ if(!map.isEmpty()){
+ String arrStr = String.valueOf(map.get("typeList"));
+ String[] strings = arrStr.split(",");
+ return Arrays.asList(strings);
+ }
+ return null;
+ }
+
}
--
Gitblit v1.9.3