package com.yuanchu.mom.utils; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.yuanchu.mom.excel.HuTiaoData; import com.yuanchu.mom.mapper.InsOrderStateMapper; import com.yuanchu.mom.mapper.InsProductMapper; import com.yuanchu.mom.mapper.InsProductResult2Mapper; import com.yuanchu.mom.mapper.InsSampleMapper; import com.yuanchu.mom.pojo.*; import com.yuanchu.mom.service.InsOrderPlanService; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; @Component public class DianLuUtils { @Value("${wordUrl}") private String wordUrl; @Resource private InsProductMapper insProductMapper; @Resource private InsSampleMapper insSampleMapper; @Resource private InsProductResult2Mapper insProductResult2Mapper; @Resource private InsOrderStateMapper insOrderStateMapper; //读取互调的文件 public void readDianLuFile1(Integer sampleId,InsOrderFile insOrderFile) { String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 更新为你的文件路径 List huTiaoData = readExcelData(excelFilePath); //查询该样品的互调项目id List products = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState, 1) .eq(InsProduct::getInsSampleId, sampleId) .eq(InsProduct::getInspectionItemSubclass, "互调")); //查询检验任务id List orderStates = insOrderStateMapper.selectList(Wrappers.lambdaQuery() .eq(InsOrderState::getInsSampleId, sampleId) .eq(InsOrderState::getLaboratory, "电路试验")); //查询原有检验数据 List productList = getInsProduct(sampleId, "电路试验"); //根据频点分类 Map> collect = huTiaoData.stream().collect(Collectors.groupingBy(HuTiaoData::getOften,LinkedHashMap::new, Collectors.toList())); for (Map.Entry> stringListEntry : collect.entrySet()) { InsProductResult2 insProductResult2 = new InsProductResult2(); insProductResult2.setOften(stringListEntry.getKey()+"(M)");//频点 //根据下倾角进行分类 Map> collect1 = stringListEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getAngle,LinkedHashMap::new, Collectors.toList())); String angles = collect1.entrySet().stream().map(stringListEntry1 -> stringListEntry1.getKey() + "°").collect(Collectors.joining(",")); insProductResult2.setAngle(angles); //下倾角 //根据端口号进行分类 Map> collect2 = stringListEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getPort,LinkedHashMap::new, Collectors.toList())); String ports = collect2.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.joining(",")); insProductResult2.setPort(ports); //端口号 //通过同一端口号同一下倾角获取最大检验值 List string = new ArrayList<>(); for (Map.Entry> listEntry : collect1.entrySet()) { Map> collect3 = listEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getPort,LinkedHashMap::new, Collectors.toList())); List stringList = new ArrayList<>(); for (Map.Entry> entry : collect3.entrySet()) { OptionalDouble max = entry.getValue().stream().mapToDouble(value -> Double.parseDouble(value.getValue())).max(); stringList.add(String.valueOf(max.getAsDouble())); } string.add("[" + stringList.stream().collect(Collectors.joining(",")) + "]"); } String value = "[" + string.stream().collect(Collectors.joining(",")) + "]"; insProductResult2.setValue(value); insProductResult2.setInsProductId(products.get(0).getId()); //次数 insProductResult2.setNum(orderStates.get(0).getNum()); //频段(先判断原有数据是否有) if (ObjectUtils.isNotEmpty(productList.get(0).getInsProductResult2())) { insProductResult2.setFrequency(productList.get(0).getInsProductResult2().get(0).getFrequency()); } insProductResult2Mapper.insert(insProductResult2); } } public static List readExcelData(String filePath) { List dataList = new ArrayList<>(); // 初始化监听器 AnalysisEventListener listener = new AnalysisEventListener() { @Override public void invoke(HuTiaoData data, AnalysisContext context) { // 处理每行数据,这里简单地添加到数据列表中 dataList.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 所有数据解析完成后的操作,这里暂不实现 } }; // 读取Excel文件 EasyExcel.read(filePath, HuTiaoData.class, listener).sheet().doRead(); return dataList; } public List getInsProduct(Integer id, String laboratory) { List insProducts = new ArrayList<>(); //样品 insProducts = insSampleMapper.getInsProduct1(id, laboratory); if (insProducts.size() == 0) { insProducts = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getInsSampleId, id) .eq(InsProduct::getState, 1) .eq(InsProduct::getSonLaboratory, laboratory)); for (InsProduct insProduct : insProducts) { List insProductResult2List = insProductResult2Mapper.selectList(Wrappers.lambdaQuery() .eq(InsProductResult2::getInsProductId, insProduct.getId()).isNull(InsProductResult2::getNum)); insProduct.setInsProductResult2(insProductResult2List); } } return insProducts; } }