| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | |
| | | @Resource |
| | | MbomModelMapper mbomModelMapper; |
| | | |
| | | @Autowired |
| | | private TechnicalModelService technicalModelService; |
| | | |
| | | |
| | | //查询物料清单维护列表-->右边展示该工艺所需要的原材料 |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
| | | |