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