zss
2024-07-31 0e2e829f10a5e5b239d6583d6be3afbcaed0dcc0
cnas-server/src/main/java/com/yuanchu/mom/service/impl/PkMasterServiceImpl.java
@@ -23,6 +23,7 @@
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
@@ -76,9 +77,8 @@
                .eq(PkMaster::getSampleCode, pkMaster.getSampleCode())
                .eq(PkMaster::getModel, pkMaster.getModel())
                .eq(PkMaster::getTemperature, pkMaster.getTemperature()));
        if (ObjectUtils.isEmpty(master)) {
            throw new ErrorException("没有找到对应委托单" + pkMaster.getEntrustCode() + "的数采数据");
        }
        if (ObjectUtils.isNotEmpty(master)) {
            //throw new ErrorException("没有找到对应委托单" + pkMaster.getEntrustCode() + "的数采数据");
        List<PkSlave> pkSlaves = pkSlaveMapper.selectList1(master.getIsid());
        if (CollectionUtils.isEmpty(pkSlaves)) {
            throw new ErrorException("没有找到对应委托单" + pkMaster.getEntrustCode() + "的数采子数据");
@@ -99,10 +99,7 @@
        //查询对应检验项目
        Map<String, Object> map = insOrderPlanService.temCycle(insSample.getId(), pkMaster.getCycles(), pkMaster.getTemperature());
        List<ProductVo> productVos = (List<ProductVo>) map.get("productVos");
        if (CollectionUtils.isEmpty(map)) {
            throw new ErrorException("没有找到对应委托单下该样品的相关温度循环检验项目的循环" + pkMaster.getCycles() + "次+温度" + pkMaster.getTemperature());
        }
            if (CollectionUtils.isNotEmpty(productVos)) {
        //todo 如果温度循环的项目nm有改动这里需要改动 @zss
        for (PkSlave pkSlave : pkSlaves) {
            for (ProductVo productVo : productVos) {
@@ -124,16 +121,25 @@
                        //1310nm外端
                        Map<String, Object> map1 = new HashMap<>();
                        map1.put("u", userId + "");
                        map1.put("v", pkSlave.getWeaken1310A().toString());
                                map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1310A()) ? pkSlave.getWeaken1310A().toString() : null);
                        iv.add(map1);
                        //1310nm内端
                        Map<String, Object> map2 = new HashMap<>();
                        map2.put("u", userId + "");
                        map2.put("v", pkSlave.getWeaken1310B().toString());
                                map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1310B()) ? pkSlave.getWeaken1310B().toString() : null);
                        iv.add(map2);
                        //1310nm衰减系数
                        Map<String, Object> map3 = new HashMap<>();
                        double v = (pkSlave.getWeaken1310A() + pkSlave.getWeaken1310B()) / 2;
                                double v = 0.0;
                                if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1310A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1310B())) {
                                    v = (pkSlave.getWeaken1310A() + pkSlave.getWeaken1310B()) / 2;
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1310A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1310B())) {
                                    v = pkSlave.getWeaken1310A();
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1310B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1310A())) {
                                    v = pkSlave.getWeaken1310B();
                                } else {
                                    throw new ErrorException("1310的两端都没有数据!!!");
                                }
                        BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP);
                        map3.put("v", String.valueOf(decimal));
                        cv.add(map3);
@@ -141,16 +147,25 @@
                        //1550nm外端
                        Map<String, Object> map1 = new HashMap<>();
                        map1.put("u", userId + "");
                        map1.put("v", pkSlave.getWeaken1550A().toString());
                                map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1550A()) ? pkSlave.getWeaken1550A().toString() : null);
                        iv.add(map1);
                        //1550nm内端
                        Map<String, Object> map2 = new HashMap<>();
                        map2.put("u", userId + "");
                        map2.put("v", pkSlave.getWeaken1550B().toString());
                                map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1550B()) ? pkSlave.getWeaken1550B().toString() : null);
                        iv.add(map2);
                        //1550nm衰减系数
                        Map<String, Object> map3 = new HashMap<>();
                        double v = (pkSlave.getWeaken1550A() + pkSlave.getWeaken1550B()) / 2;
                                double v = 0.0;
                                if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1550A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1550B())) {
                                    v = (pkSlave.getWeaken1550A() + pkSlave.getWeaken1550B()) / 2;
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1550A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1550B())) {
                                    v = pkSlave.getWeaken1550A();
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1550B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1550A())) {
                                    v = pkSlave.getWeaken1550B();
                                } else {
                                    throw new ErrorException("1550的两端都没有数据!!!");
                                }
                        BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP);
                        map3.put("v", String.valueOf(decimal));
                        cv.add(map3);
@@ -158,16 +173,25 @@
                        //1625nm外端
                        Map<String, Object> map1 = new HashMap<>();
                        map1.put("u", userId + "");
                        map1.put("v", pkSlave.getWeaken1625A().toString());
                                map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1625A()) ? pkSlave.getWeaken1625A().toString() : null);
                        iv.add(map1);
                        //1625nm内端
                        Map<String, Object> map2 = new HashMap<>();
                        map2.put("u", userId + "");
                        map2.put("v", pkSlave.getWeaken1625B().toString());
                                map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1625B()) ? pkSlave.getWeaken1625B().toString() : null);
                        iv.add(map2);
                        //1625nm衰减系数
                        Map<String, Object> map3 = new HashMap<>();
                        double v = (pkSlave.getWeaken1625A() + pkSlave.getWeaken1625B()) / 2;
                                double v = 0.0;
                                if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1625A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1625B())) {
                                    v = (pkSlave.getWeaken1625A() + pkSlave.getWeaken1625B()) / 2;
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1625A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1625B())) {
                                    v = pkSlave.getWeaken1625A();
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1625B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1625A())) {
                                    v = pkSlave.getWeaken1625B();
                                } else {
                                    throw new ErrorException("1625的两端都没有数据!!!");
                                }
                        BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP);
                        map3.put("v", String.valueOf(decimal));
                        cv.add(map3);
@@ -175,16 +199,25 @@
                        //1383nm外端
                        Map<String, Object> map1 = new HashMap<>();
                        map1.put("u", userId + "");
                        map1.put("v", pkSlave.getWeaken1383A().toString());
                                map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1383A()) ? pkSlave.getWeaken1383A().toString() : null);
                        iv.add(map1);
                        //1383nm内端
                        Map<String, Object> map2 = new HashMap<>();
                        map2.put("u", userId + "");
                        map2.put("v", pkSlave.getWeaken1383B().toString());
                                map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1383B()) ? pkSlave.getWeaken1383B().toString() : null);
                        iv.add(map2);
                        //1383nm衰减系数
                        Map<String, Object> map3 = new HashMap<>();
                        double v = (pkSlave.getWeaken1383A() + pkSlave.getWeaken1383B()) / 2;
                                double v = 0.0;
                                if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1383A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1383B())) {
                                    v = (pkSlave.getWeaken1383A() + pkSlave.getWeaken1310B()) / 2;
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1383A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1383B())) {
                                    v = pkSlave.getWeaken1383A();
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1383B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1383A())) {
                                    v = pkSlave.getWeaken1383B();
                                } else {
                                    throw new ErrorException("1383的两端都没有数据!!!");
                                }
                        BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP);
                        map3.put("v", String.valueOf(decimal));
                        cv.add(map3);
@@ -192,16 +225,25 @@
                        //1490nm外端
                        Map<String, Object> map1 = new HashMap<>();
                        map1.put("u", userId + "");
                        map1.put("v", pkSlave.getWeaken1490A().toString());
                                map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1490A()) ? pkSlave.getWeaken1490A().toString() : null);
                        iv.add(map1);
                        //1490nm内端
                        Map<String, Object> map2 = new HashMap<>();
                        map2.put("u", userId + "");
                        map2.put("v", pkSlave.getWeaken1490B().toString());
                                map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1490B()) ? pkSlave.getWeaken1490B().toString() : null);
                        iv.add(map2);
                        //1490nm衰减系数
                        Map<String, Object> map3 = new HashMap<>();
                        double v = (pkSlave.getWeaken1490A() + pkSlave.getWeaken1490B()) / 2;
                                double v = 0.0;
                                if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1490A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1490B())) {
                                    v = (pkSlave.getWeaken1490A() + pkSlave.getWeaken1310B()) / 2;
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1490A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1490B())) {
                                    v = pkSlave.getWeaken1490A();
                                } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1490B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1490A())) {
                                    v = pkSlave.getWeaken1490B();
                                } else {
                                    throw new ErrorException("1490的两端都没有数据!!!");
                                }
                        BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP);
                        map3.put("v", String.valueOf(decimal));
                        cv.add(map3);
@@ -341,16 +383,20 @@
                }
            }
        }
            }
        //给温度循环的检验项目绑定设备
        InsProduct product = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getInspectionItem, "温度循环"));
        if (ObjectUtils.isEmpty(map)) {
            if (ObjectUtils.isEmpty(product)) {
            throw new ErrorException("没有找到对应委托单下该样品的相关温度循环检验项目");
        }
        InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, product.getId()));
            if (ObjectUtils.isEmpty(insProductResult)) {
                insProductResult = new InsProductResult();
                insProductResult.setInsProductId(product.getId());
            }
        if(ObjectUtils.isEmpty(insProductResult.getEquipValue())) {
            List<Map<String, Object>> dv = new ArrayList<>();
            Map<String, Object> map4 = new HashMap<>();
@@ -368,7 +414,16 @@
            map7.put("v", "步入式高低温试验箱");
            dn.add(map7);
            insProductResult.setEquipName(JSON.toJSONString(dn));
                if (BeanUtil.isEmpty(insProductResult.getId())) {
                    insProductResult.setCreateUser(userId);
                    insProductResult.setUpdateUser(userId);
                    insProductResultMapper.insert(insProductResult);
                } else {
                    insProductResult.setUpdateUser(userId);
                    insProductResult.setUpdateTime(LocalDateTime.now());
            insProductResultMapper.updateById(insProductResult);
                }
            }
        }
        return 0;
    }
@@ -377,6 +432,40 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int temDataAcquisition2(PkMaster pkMaster) {
        //查询出所有循环次数和温度,然后循环调用temDataAcquisition接口
        //查询对应的检验单表
        InsOrder insOrder = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getState, 1).eq(InsOrder::getEntrustCode, pkMaster.getEntrustCode()));
        if (ObjectUtils.isEmpty(insOrder)) {
            throw new ErrorException("没有找到对应委托单" + pkMaster.getEntrustCode());
        }
        //查询对应检验样品id
        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, insOrder.getId())
                .eq(InsSample::getSampleCode, pkMaster.getSampleCode())
                .eq(InsSample::getModel, pkMaster.getModel()));
        if (ObjectUtils.isEmpty(insSample)) {
            throw new ErrorException("没有找到对应委托单下的该样品" + pkMaster.getSampleCode());
        }
        //查找样品下所有温度循环的项目
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getState, 1)
                .isNull(InsProduct::getTemplateId)
                .isNotNull(InsProduct::getInspectionItemClass));
        //过滤出所有循环次数和温度
        List<String> collect1 = insProducts.stream().map(InsProduct::getInspectionItem).distinct().collect(Collectors.toList());
        List<String> collect2 = insProducts.stream().map(InsProduct::getInspectionItemSubclass).distinct().collect(Collectors.toList());
        for (String s : collect1) {
            for (String s1 : collect2) {
                PkMaster master = new PkMaster();
                master.setEntrustCode(pkMaster.getEntrustCode());
                master.setSampleCode(pkMaster.getSampleCode());
                master.setModel(pkMaster.getModel());
                master.setCycles(s);
                master.setTemperature(s1);
                temDataAcquisition(master);
            }
        }
        return 0;
    }
}