zss
2024-12-30 97bb7a8832281eafe0ef947ea095258d355e52f5
inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java
@@ -1,19 +1,20 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.dto.FactoryDto;
import com.yuanchu.mom.dto.LaboratoryDto;
import com.yuanchu.mom.dto.SampleTypeDto;
import com.yuanchu.mom.dto.*;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.StandardProductListMapper;
import com.yuanchu.mom.mapper.StandardTreeMapper;
import com.yuanchu.mom.pojo.StandardProductList;
import com.yuanchu.mom.pojo.StandardTemplate;
import com.yuanchu.mom.pojo.StandardTree;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.*;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
@@ -21,12 +22,16 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
 * @author Administrator
@@ -63,6 +68,23 @@
            }
        }
        return factoryDtos;
    }
    @Override
    public List<SampleTypeDto> selectStandardTreeList2() {
        List<SampleTypeDto> sampleTypeDtos= new ArrayList<>();
        List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeList();
        for (FactoryDto factoryDto : factoryDtos) {
            for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
                for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
                    if (sampleTypeDto.getChildren().size() == 0) {
                        sampleTypeDto.setChildren(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
                    }
                    sampleTypeDtos.add(sampleTypeDto);
                }
            }
        }
        return sampleTypeDtos;
    }
    @Override
@@ -420,6 +442,33 @@
        });
    }
    //导出
    @Override
    public void exportStandTree(HttpServletResponse response) throws IOException  {
        //查询标准库数据,按照产品大类分类
        List<standardTreeDto> standardTreeDtos = standardTreeMapper.exportStandTree();
        Map<String, List<standardTreeDto>> collect = standardTreeDtos.stream().collect(Collectors.groupingBy(standardTreeDto -> standardTreeDto.getSampleType()));
        List<Map.Entry<String, List<standardTreeDto>>> entryList = new ArrayList<>(collect.entrySet());
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
        String fileName = URLEncoder.encode("标准库导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // 新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            for (int i = 0; i < collect.size(); i++) {
                Map.Entry<String, List<standardTreeDto>> entry = entryList.get(i);
                WriteSheet mainSheet = EasyExcel.writerSheet(i, entry.getKey()+"标准库导出").head(standardTreeDto.class).build();
                excelWriter.write(entry.getValue(), mainSheet);
            }
            // 关闭流
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public void resetTreeOfPrice(String tree, Integer standardId) {
        standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getPrice, null));