jinlin
2024-08-12 658f06778c80893e8618d62357cebf49aea9346e
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java
@@ -8,10 +8,13 @@
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -46,11 +49,11 @@
    public List<ResultDto> getResult(ConditionDto dto) {
        List<ResultDto> result = new ArrayList<>();
        List<TestScheme> list = baseDao.getList();
        if (dto.getTjlx().equals("条件1")) {
        if (dto.getTjlx().equals("按风险名义值查询")) {
            result = this.getCondition1(dto, list);
        } else if (dto.getTjlx().equals("条件2")) {
        } else if (dto.getTjlx().equals("不限定生产方风险查询")) {
            result = this.getCondition2(dto, list);
        } else if (dto.getTjlx().equals("条件3")) {
        } else if (dto.getTjlx().equals("不限定规定值查询")) {
            result = this.getCondition3(dto, list);
        }
        return result;
@@ -63,7 +66,7 @@
        for (int i = 1; i <= 10; i++) {
            Integer finalI = i;
            TestScheme data1 = list.stream().filter(k -> k.getPa().equals(dto.getUserRisk()) && k.getPc() == (2 * finalI + 2)).findFirst().get();//
            TestScheme data2 = list.stream().filter(k -> k.getPa().equals(1 - dto.getUserRisk()) && k.getPc() == (2 * finalI + 2)).findFirst().get();//
            TestScheme data2 = list.stream().filter(k -> k.getPa().equals(BigDecimal.ONE.subtract(dto.getUserRisk())) && k.getPc() == (2 * finalI + 2)).findFirst().get();//
            if (data1 != null && data2 != null) {
                Double value = data2.getValue() / data1.getValue();
                double strate = dto.getMinAccepValue() / dto.getSpecifiedValue();
@@ -82,11 +85,14 @@
        double TST1 = 0;  //T/θ1
        double TST0 = 0;  //T/θ0
        Integer finalC = C;
        TestScheme data3 = list.stream().filter(k -> k.getPa().equals(1 - dto.getUserRisk()) && k.getPc() == (2 * finalC + 2)).findFirst().get();//
        Stream<TestScheme> testSchemeStream = list.stream().filter(k -> k.getPa().equals(dto.getUserRisk()) && k.getPc() == (2 * finalC + 2));
        TestScheme data3 = testSchemeStream.findFirst().get();
        if (data3 != null) {
            TST1 = data3.getValue() / 2; //T/θ1
            //TST1 = Convert.ToDouble(TST1.ToString("G2")); //取两位有效数字
            if (TST1 < 10) TST1 = TST1 + 0.1;
            if (TST1 < 10) {
                TST1 = TST1 + 0.1;
            }
            T = TST1 * dto.getMinAccepValue();  //总试验时间
            TST0 = T / dto.getSpecifiedValue(); //T/θ0    TST1 * minAccepValue / specifiedValue
        }
@@ -143,10 +149,10 @@
    private List<ResultDto> getCondition3(ConditionDto dto, List<TestScheme> list) {
        List<ResultDto> result = new ArrayList<>();
        for (int i = 0; i <= dto.getShowFailureTime(); i++) {
        for (int i = 0; i < dto.getShowFailureTime(); i++) {
            Integer finalI = i;
            List<TestScheme> data = list.stream().filter(k -> k.getPa().equals(dto.getUserRisk()) && k.getPc() == (2 * finalI + 2)).collect(Collectors.toList());//
            List<TestScheme> data2 = list.stream().filter(k -> k.getPa().equals(1 - dto.getProductionRisk()) && k.getPc() == (2 * finalI + 2)).collect(Collectors.toList());//
            List<TestScheme> data2 = list.stream().filter(k -> k.getPa().equals(BigDecimal.ONE.subtract(dto.getProductionRisk())) && k.getPc() == (2 * finalI + 2)).collect(Collectors.toList());//
            double T = 0;
            double TST1 = 0; //  T/θ1
            double TST0 = 0;//  T/θ0
@@ -168,7 +174,7 @@
                userRisk = userRisk + Math.pow(TST1, r) * Math.pow(e, -TST1) / getjc(r);
            }
            ResultDto resultDto = new ResultDto();
            resultDto.setAcceptNumber(i);
            resultDto.setAcceptNumber(i + 1);
            resultDto.setTotalTestTime(String.valueOf(Math.round(T)));
            resultDto.setNumber(String.valueOf(Math.round(ST0)));
            resultDto.setProductionRiskReal(new Formatter().format("%.2f", productionRisk * 100).toString());