zss
2024-12-09 4bc7776bc6c063a9bfb9806e4bf6db5bf22985b1
电路试验的互调报告解析
已修改3个文件
已添加2个文件
224 ■■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/excel/HuTiaoData.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/excel/HuTiaoData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.yuanchu.mom.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class HuTiaoData {
    @ExcelProperty("测试日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime textTime;
    @ExcelProperty("天线序列号")
    private String code;
    @ExcelProperty("端口号")
    private String port;
    @ExcelProperty("测试频段")
    private String often;
    @ExcelProperty("P1")
    private String num1;
    @ExcelProperty("P2")
    private String num2;
    @ExcelProperty("F1")
    private String num3;
    @ExcelProperty("F2")
    private String num4;
    @ExcelProperty("IMF")
    private String num5;
    @ExcelProperty("测试模式")
    private String method;
    @ExcelProperty("互调阶数")
    private String hutiao;
    @ExcelProperty("下倾角")
    private String angle;
    @ExcelProperty("指标")
    private String ask;
    @ExcelProperty("测试结果")
    private String value;
    @ExcelProperty("判定结果")
    private String result;
}
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -47,7 +47,7 @@
    Map<String,Object> getFileList(Page page, InsOrderFile insOrderFile);
    int uploadFile(Integer orderId, MultipartFile file,String sonLaboratory,Integer sampleId);
    Object uploadFile(Integer orderId, MultipartFile file,String sonLaboratory,Integer sampleId);
    List<String> upPlanUser2(Integer sampleId);
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -129,6 +129,9 @@
    @Resource
    FuSheUtils fuSheUtils;
    @Resource
    DianLuUtils dianLuUtils;
    @Override
    public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
        Map<String, Object> map = new HashMap<>();
@@ -310,7 +313,7 @@
    }
    @Override
    public int uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) {
    public Object uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) {
        String urlString;
        String pathName;
        String path;
@@ -350,6 +353,8 @@
                fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile);
            } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("远场") && split[split.length - 1].equals("xlsx")) {
                fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile);
            }else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("电路试验") && split[split.length - 1].equals("xlsx") && filename.contains("交调")) {
               dianLuUtils.readDianLuFile1(sampleId,insOrderFile);
            }
        } catch (Exception e) {
            System.err.println("附件上传错误");
@@ -1042,7 +1047,10 @@
                    if (insOrder.getFormType().equals("原理样机")) {
                        //出库
                        try {
                            outInsOrderState(laboratory, insSample.getSampleCode(), insOrder.getEntrustCode());
                            List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
                            for (InsSample sample : insSamples) {
                                outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
                            }
                        } catch (Exception e) {
                        }
inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,135 @@
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> huTiaoData = readExcelData(excelFilePath);
        //查询该样品的互调项目id
        List<InsProduct> products = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsSampleId, sampleId)
                .eq(InsProduct::getInspectionItemSubclass, "互调"));
        //查询检验任务id
        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsSampleId, sampleId)
                .eq(InsOrderState::getLaboratory, "电路试验"));
        //查询原有检验数据
        List<InsProduct> productList = getInsProduct(sampleId, "电路试验");
        //根据频点分类
        Map<String, List<HuTiaoData>> collect = huTiaoData.stream().collect(Collectors.groupingBy(HuTiaoData::getOften,LinkedHashMap::new, Collectors.toList()));
        for (Map.Entry<String, List<HuTiaoData>> stringListEntry : collect.entrySet()) {
            InsProductResult2 insProductResult2 = new InsProductResult2();
            insProductResult2.setOften(stringListEntry.getKey()+"(M)");//频点
            //根据下倾角进行分类
            Map<String, List<HuTiaoData>> 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<String, List<HuTiaoData>> 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> string = new ArrayList<>();
            for (Map.Entry<String, List<HuTiaoData>> listEntry : collect1.entrySet()) {
                Map<String, List<HuTiaoData>> collect3 = listEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getPort,LinkedHashMap::new, Collectors.toList()));
                List<String> stringList = new ArrayList<>();
                for (Map.Entry<String, List<HuTiaoData>> 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<HuTiaoData> readExcelData(String filePath) {
        List<HuTiaoData> dataList = new ArrayList<>();
        // åˆå§‹åŒ–监听器
        AnalysisEventListener<HuTiaoData> listener = new AnalysisEventListener<HuTiaoData>() {
            @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<InsProduct> getInsProduct(Integer id, String laboratory) {
        List<InsProduct> insProducts = new ArrayList<>();
        //样品
        insProducts = insSampleMapper.getInsProduct1(id, laboratory);
        if (insProducts.size() == 0) {
            insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                    .eq(InsProduct::getInsSampleId, id)
                    .eq(InsProduct::getState, 1)
                    .eq(InsProduct::getSonLaboratory, laboratory));
            for (InsProduct insProduct : insProducts) {
                List<InsProductResult2> insProductResult2List = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
                        .eq(InsProductResult2::getInsProductId, insProduct.getId()).isNull(InsProductResult2::getNum));
                insProduct.setInsProductResult2(insProductResult2List);
            }
        }
        return insProducts;
    }
}
system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -3,11 +3,13 @@
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.utils.DianLuUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.el.lang.ExpressionBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.math.BigDecimal;
@@ -29,15 +31,12 @@
@SpringBootTest
class SystemRunApplicationTest {
    @Resource
    DianLuUtils dianLuUtils;
    @Test
    void contextLoads() {
        List<List<String>> outerList = new ArrayList<>();
        String str = "[[\"127\",\"123\",\"124\",\"123\",\"119\",\"122\",\"\",\"\",\"126\",\"112\"],[\"117\",\"124\",\"121\",\"122\",\"123\",\"127\",\"123\",\"112\"],[\"125\",\"125\",\"122\",\"123\",\"129\",\"124\",\"122\",\"118\"]]";
        String[] value = str.split("\\],\\[");
        String[] split = value[0].replaceAll("[\\[\\]\"]", "").split(",");
        String aa=split[6];
        System.out.println(aa);
        //dianLuUtils.readDianLuFile1();
    }