From aa4a6ed94ea6861a6ce634550d2f05f528529098 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期四, 05 九月 2024 09:07:53 +0800
Subject: [PATCH] 修改

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java               |   24 +
 web/src/views/modules/taskReliability/Task-AddOrUpdate.vue                                                              |    2 
 web/src/views/modules/taskReliability/ReliabilityAssess.vue                                                             |  116 +++++++
 modules/mainPart/src/main/resources/mapper/basicInfo/TyProductModelDao.xml                                              |   26 +
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java                   |  158 ++++++---
 web/src/views/modules/taskReliability/SchemeCompar.vue                                                                  |    4 
 web/src/views/modules/taskReliability/OperatCondit.vue                                                                  |    2 
 web/src/views/modules/taskReliability/OperatConditModel.vue                                                             |   19 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java           |    6 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ResultDto.java                               |   12 
 web/src/views/modules/taskReliability/ModelRbd-AddOrUpdate.vue                                                          |    2 
 web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue                                                          |    6 
 web/src/views/modules/basicInfo/TyProductModel-AddOrUpdate.vue                                                          |    6 
 web/src/views/modules/taskReliability/RelisbilityAssess-AddOrUpdate.vue                                                 |  141 ++++++++
 web/packages/components/zt-dialog/src/zt-dialog.vue                                                                     |    5 
 web/src/views/modules/basicInfo/XhProductModel.vue                                                                      |    2 
 web/src/views/modules/taskReliability/PlanMake.vue                                                                      |   17 
 web/src/views/modules/taskReliability/TaskPhase-AddOrUpdate.vue                                                         |    2 
 web/src/views/modules/taskReliability/TaskPhase.vue                                                                     |    1 
 modules/mainPart/src/main/resources/mapper/taskReliability/AssessItemDao.xml                                            |    6 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/AssessItemDao.java                      |   21 +
 modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml                                     |   18 +
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java       |  175 ++++++++++
 web/src/views/modules/basicInfo/TyProductModel.vue                                                                      |    2 
 web/src/views/modules/taskReliability/OperatCondit-AddOrUpdate.vue                                                      |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/AssessItem.java                       |   16 +
 web/src/views/modules/basicInfo/SelectTyModel.vue                                                                       |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java                            |    4 
 modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml                                              |    1 
 web/src/views/modules/taskReliability/SimulatAssess.vue                                                                 |    3 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java |   90 +++++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ReliabilityAssess.java                |   22 +
 web/src/views/modules/basicInfo/ProductImport.vue                                                                       |    2 
 33 files changed, 797 insertions(+), 118 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java
index 5f158cb..ed0f39c 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ConditionDto.java
@@ -11,7 +11,7 @@
     private String tjlx;
     private Double specifiedValue;
     private Double minAccepValue;
-    private BigDecimal productionRisk;
-    private BigDecimal userRisk;
+    private Double productionRisk;
+    private Double userRisk;
     private Integer showFailureTime;
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ResultDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ResultDto.java
index 34643e9..feaab5b 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ResultDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/dto/ResultDto.java
@@ -10,19 +10,19 @@
 @Data
 public class ResultDto {
 
-	@ApiModelProperty(value = "")
+	@ApiModelProperty(value = "鎺ュ彈鍊�")
 	private int acceptNumber;
 
-	@ApiModelProperty(value = "")
+	@ApiModelProperty(value = "鎬诲疄楠屾椂闂�")
 	private String totalTestTime;
 
-	@ApiModelProperty(value = "")
-	private String number;
+	@ApiModelProperty(value = "妫�楠屼笂闄�")
+	private String specifiedValue;
 
-	@ApiModelProperty(value = "")
+	@ApiModelProperty(value = "鐢熸垚鏂归闄╁疄闄呭��")
 	private String productionRiskReal;
 
-	@ApiModelProperty(value = "")
+	@ApiModelProperty(value = "浣跨敤鏂归闄╁疄闄呭��")
 	private String userRiskReal;
 
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java
index 439e250..3c1ce06 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/TestScheme/service/TestSchemeService.java
@@ -1,10 +1,12 @@
 package com.zt.life.modules.mainPart.TestScheme.service;
 
+import cn.hutool.core.convert.Convert;
 import com.zt.common.service.BaseService;
 import com.zt.life.modules.mainPart.TestScheme.dao.TestSchemeDao;
 import com.zt.life.modules.mainPart.TestScheme.dto.ConditionDto;
 import com.zt.life.modules.mainPart.TestScheme.dto.ResultDto;
 import com.zt.life.modules.mainPart.TestScheme.model.TestScheme;
+import org.apache.commons.math3.distribution.ChiSquaredDistribution;
 import org.springframework.stereotype.Service;
 import com.zt.common.db.query.QueryFilter;
 
@@ -48,34 +50,61 @@
 
     public List<ResultDto> getResult(ConditionDto dto) {
         List<ResultDto> result = new ArrayList<>();
-        List<TestScheme> list = baseDao.getList();
-        if (dto.getTjlx().equals("鎸夐闄╁悕涔夊�兼煡璇�")) {
-            result = this.getCondition1(dto, list);
-        } else if (dto.getTjlx().equals("涓嶉檺瀹氱敓浜ф柟椋庨櫓鏌ヨ")) {
-            result = this.getCondition2(dto, list);
-        } else if (dto.getTjlx().equals("涓嶉檺瀹氳瀹氬�兼煡璇�")) {
-            result = this.getCondition3(dto, list);
+        switch (dto.getTjlx()) {
+            case "鎸夐闄╁悕涔夊�兼煡璇�":
+                result = this.getCondition1(dto);
+                break;
+            case "涓嶉檺瀹氱敓浜ф柟椋庨櫓鏌ヨ":
+                result = this.getCondition2(dto);
+                break;
+            case "涓嶉檺瀹氳瀹氬�兼煡璇�":
+                result = this.getCondition3(dto);
+                break;
         }
         return result;
     }
 
-    private List<ResultDto> getCondition1(ConditionDto dto, List<TestScheme> list) {
+    private List<ResultDto> getCondition1(ConditionDto dto) {
         List<ResultDto> result = new ArrayList<>();
-        int C = 0;
+        int C = 1;
         double oldvalue = 0;
-        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(BigDecimal.ONE.subtract(dto.getUserRisk())) && k.getPc() == (2 * finalI + 2)).findFirst().get();//
+        double strate = dto.getMinAccepValue() / dto.getSpecifiedValue();
+        for (int i = 1; i <= 10000; i++) {
+            Double data1 = getUpperQuantile(1 - dto.getProductionRisk(), 2 * i + 2);
+            Double data2 = getUpperQuantile(dto.getUserRisk(), 2 * i + 2);//绠楁硶璁$畻
             if (data1 != null && data2 != null) {
-                Double value = data2.getValue() / data1.getValue();
-                double strate = dto.getMinAccepValue() / dto.getSpecifiedValue();
-
-                if (value >= strate) {
-                    C = i;
-                    if (strate - oldvalue < value - strate)
-                        C = i - 1;
-                    break;
+                double value = data1 / data2;
+                System.out.println(value);
+                if (dto.getUserRisk() < 1 - dto.getProductionRisk()) {
+                    if (oldvalue != 0) {
+                        if (value > strate) {
+                            C = i;
+                            if (strate - oldvalue < value - strate) {
+                                C = i - 1;
+                            }
+                            break;
+                        }
+                    } else {
+                        if (value > strate) {
+                            C = i;
+                            break;
+                        }
+                    }
+                } else {
+                    if (oldvalue != 0) {
+                        if (value < strate) {
+                            C = i;
+                            if (oldvalue - strate < strate - value) {
+                                C = i - 1;
+                            }
+                            break;
+                        }
+                    } else {
+                        if (value < strate) {
+                            C = i;
+                            break;
+                        }
+                    }
                 }
                 oldvalue = value;
             }
@@ -84,11 +113,9 @@
         double T = 0;     //鎬昏瘯楠屾椂闂�
         double TST1 = 0;  //T/胃1
         double TST0 = 0;  //T/胃0
-        Integer finalC = C;
-        Stream<TestScheme> testSchemeStream = list.stream().filter(k -> k.getPa().equals(dto.getUserRisk()) && k.getPc() == (2 * finalC + 2));
-        TestScheme data3 = testSchemeStream.findFirst().get();
+        Double data3 = getUpperQuantile(dto.getUserRisk(), 2 * C + 2);
         if (data3 != null) {
-            TST1 = data3.getValue() / 2; //T/胃1
+            TST1 = data3 / 2; //T/胃1
             //TST1 = Convert.ToDouble(TST1.ToString("G2")); //鍙栦袱浣嶆湁鏁堟暟瀛�
             if (TST1 < 10) {
                 TST1 = TST1 + 0.1;
@@ -102,11 +129,16 @@
         double e = 2.71828182845904523536;  //鑷劧鏁癳
 
         for (int r = 0; r <= C; r++) {
-            productionRisk = productionRisk + Math.pow(TST0, r) * Math.pow(e, -TST0) / getjc(r);
+            double a = Math.pow(TST0, r) * Math.pow(e, -TST0) / getjc(r);
+           /* if (r>35){
+                System.out.println(111);
+            }*/
+            productionRisk = productionRisk + a;
             userRisk = userRisk + Math.pow(TST1, r) * Math.pow(e, -TST1) / getjc(r);
         }
-        ResultDto resultDto = new ResultDto();
         productionRisk = 1 - productionRisk;
+
+        ResultDto resultDto = new ResultDto();
         resultDto.setAcceptNumber(C);
         resultDto.setTotalTestTime(String.valueOf(Math.round(T)));
         resultDto.setProductionRiskReal(new Formatter().format("%.2f", productionRisk * 100).toString());
@@ -115,20 +147,19 @@
         return result;
     }
 
-    public List<ResultDto> getCondition2(ConditionDto dto, List<TestScheme> list) {
+    public List<ResultDto> getCondition2(ConditionDto dto) {
         List<ResultDto> result = new ArrayList<>();
-        for (Integer 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());//
-            ResultDto resultDto = new ResultDto();
-            double T = 0;
-            double TST1 = 0; //  T/胃1
-            double TST0 = 0;//  T/胃0
-            for (TestScheme item : data) {
-                TST1 = item.getValue() / 2;
-                T = TST1 * dto.getMinAccepValue();
-                TST0 = T / dto.getSpecifiedValue(); //  T/胃0
-            }
+        for (int i = 0; i < dto.getShowFailureTime(); i++) {
+            double T;
+            double TST1; //  T/胃1
+            double TST0;//  T/胃0
+
+            Double data2 = getUpperQuantile(dto.getUserRisk(), 2 * i + 2);
+            TST1 = data2 / 2;
+            T = TST1 * dto.getMinAccepValue();
+            TST0 = T / dto.getSpecifiedValue(); //  T/胃0
+
+
             double productionRisk = 0;
             double userRisk = 0;
             double e = 2.71828182845904523536;
@@ -138,6 +169,7 @@
             }
             productionRisk = 1 - productionRisk;
 
+            ResultDto resultDto = new ResultDto();
             resultDto.setAcceptNumber(i + 1);
             resultDto.setTotalTestTime(String.valueOf(Math.round(T)));
             resultDto.setProductionRiskReal(new Formatter().format("%.2f", productionRisk * 100).toString());
@@ -147,24 +179,21 @@
         return result;
     }
 
-    private List<ResultDto> getCondition3(ConditionDto dto, List<TestScheme> list) {
+    private List<ResultDto> getCondition3(ConditionDto dto) {
         List<ResultDto> result = new ArrayList<>();
         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(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
-            double ST0 = 0; // 胃0
-            for (TestScheme item : data) {
-                TST1 = item.getValue() / 2;
-                T = TST1 * dto.getMinAccepValue();
-                for (TestScheme item2 : data2) {
-                    ST0 = item.getValue() * dto.getMinAccepValue() / item2.getValue();
-                }
-                TST0 = T / ST0;
-            }
+            double T;
+            double TST1; //  T/胃1
+            double TST0;//  T/胃0
+            double ST0; // 胃0
+
+            Double data1 = getUpperQuantile(dto.getUserRisk(), 2 * i + 2);
+            Double data2 = getUpperQuantile(1 - dto.getProductionRisk(), 2 * i + 2);
+            TST1 = data1 / 2;
+            T = TST1 * dto.getMinAccepValue();
+            ST0 = data1 * dto.getMinAccepValue() / data2;
+            TST0 = T / ST0;
+
 
             double productionRisk = 0;
             double userRisk = 0;
@@ -173,10 +202,12 @@
                 productionRisk = productionRisk + Math.pow(TST0, r) * Math.pow(e, -TST0) / getjc(r);
                 userRisk = userRisk + Math.pow(TST1, r) * Math.pow(e, -TST1) / getjc(r);
             }
+            productionRisk = 1 - productionRisk;
+
             ResultDto resultDto = new ResultDto();
             resultDto.setAcceptNumber(i + 1);
             resultDto.setTotalTestTime(String.valueOf(Math.round(T)));
-            resultDto.setNumber(String.valueOf(Math.round(ST0)));
+            resultDto.setSpecifiedValue(String.valueOf(Math.round(ST0)));//妫�楠屼笂闄�
             resultDto.setProductionRiskReal(new Formatter().format("%.2f", productionRisk * 100).toString());
             resultDto.setUserRiskReal(new Formatter().format("%.2f", userRisk * 100).toString());
             result.add(resultDto);
@@ -185,10 +216,19 @@
     }
 
     //璁$畻闃朵箻
-    int getjc(int a) {
-        int result = 1;
+    Double getjc(int a) {
+        double result = 1.0;
         for (int i = a; i > 0; i--)
             result = result * i;
         return result;
     }
+
+    //鍗℃柟鍒嗗竷鐨勪笂渚卞垎浣嶆暟绠楁硶
+    public Double getUpperQuantile(Double alpha, Integer degreesOfFreedom) {
+        ChiSquaredDistribution chiSquaredDistribution = new ChiSquaredDistribution(degreesOfFreedom);
+        Double upperQuantile = chiSquaredDistribution.inverseCumulativeProbability(1 - alpha);
+        String str = String.format("%.4f", upperQuantile);
+        upperQuantile = Convert.toDouble(str);
+        return upperQuantile;
+    }
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java
new file mode 100644
index 0000000..b7036ca
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java
@@ -0,0 +1,90 @@
+package com.zt.life.modules.mainPart.taskReliability.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.constant.Constant;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.Result;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.life.dto.ImportErrDto;
+import com.zt.life.modules.mainPart.baseReliability.service.ParamDataBasicService;
+import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
+import com.zt.life.modules.mainPart.taskReliability.dao.AssessItemDao;
+import com.zt.life.modules.mainPart.taskReliability.model.AssessItem;
+import com.zt.life.modules.mainPart.taskReliability.model.OperatCondit;
+import com.zt.life.modules.mainPart.taskReliability.model.ReliabilityAssess;
+import com.zt.life.modules.mainPart.taskReliability.service.ReliabilityAssessService;
+import com.zt.life.util.ImportUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+import java.util.Map;
+
+
+@RestController
+@RequestMapping("/taskReliability/ReliabilityAssess/")
+public class ReliabilityAssessController {
+    @Autowired
+    ReliabilityAssessService reliabilityAssessService;
+
+    @Autowired
+    AssessItemDao assessItemDao;
+
+    @GetMapping("page")
+    @ApiOperation("鍒嗛〉")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+            @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+    })
+    public Result<List<ReliabilityAssess>> page(@ApiIgnore @QueryParam QueryFilter queryFilter) {
+
+        return Result.ok(null);
+    }
+
+    @PostMapping("importProductExcel")
+    public Result importProductExcel(MultipartFile file, String progressId, Long pid, Long itemId) {
+        Result<List<ImportErrDto>> result = Result.ok();
+        try {
+            List<Map<String, Object>> importResults = reliabilityAssessService.importProductExcel(file, progressId, pid, itemId);
+            StringBuilder str = new StringBuilder();
+            ImportUtil.importResult(result, importResults, str);
+            ImportUtil.ImportErrResult(result, importResults, str);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    @PostMapping("add")
+    @ApiOperation("鏂板")
+    @LogOperation("鏂板")
+    public Result insert(@RequestBody AssessItem assessItem){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(assessItem, AddGroup.class, DefaultGroup.class);
+        assessItemDao.insert(assessItem);
+
+        return Result.ok();
+    }
+
+    @GetMapping("getAssessDataList")
+    public Result<List<AssessItem>> getAssessDataList(Long productId){
+        List<AssessItem> dataList = reliabilityAssessService.getAssessDataList(productId);
+
+        return Result.ok(dataList);
+    }
+
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/AssessItemDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/AssessItemDao.java
new file mode 100644
index 0000000..86bac5a
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/AssessItemDao.java
@@ -0,0 +1,21 @@
+package com.zt.life.modules.mainPart.taskReliability.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
+import com.zt.life.modules.mainPart.taskReliability.model.AssessItem;
+import com.zt.life.modules.mainPart.taskReliability.model.ReliabilityAssess;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+
+/**
+ * task
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-03-15
+ */
+@Mapper
+public interface AssessItemDao extends BaseDao<AssessItem> {
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java
new file mode 100644
index 0000000..c75aacc
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java
@@ -0,0 +1,24 @@
+package com.zt.life.modules.mainPart.taskReliability.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
+import com.zt.life.modules.mainPart.taskReliability.model.AssessItem;
+import com.zt.life.modules.mainPart.taskReliability.model.ReliabilityAssess;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+
+/**
+ * task
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-03-15
+ */
+@Mapper
+public interface ReliabilityAssessDao extends BaseDao<ReliabilityAssess> {
+
+    List<XhProductModel> getProductPath(Long shipId);
+
+    List<AssessItem> getAssessDataList(Long productId);
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/AssessItem.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/AssessItem.java
new file mode 100644
index 0000000..0afa594
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/AssessItem.java
@@ -0,0 +1,16 @@
+package com.zt.life.modules.mainPart.taskReliability.model;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("assess_item")
+public class AssessItem extends BusiEntity {
+	private String name;
+	private Long id;
+	private Long productId;
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ReliabilityAssess.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ReliabilityAssess.java
new file mode 100644
index 0000000..ef1a43d
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ReliabilityAssess.java
@@ -0,0 +1,22 @@
+package com.zt.life.modules.mainPart.taskReliability.model;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("assess_data")
+public class ReliabilityAssess extends BusiEntity {
+	private Double runTimes;
+	private Integer runNum;
+	private Integer failNum;
+	private String assessResult;
+	private Long itemId;
+	private Long productId;
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
new file mode 100644
index 0000000..9d3531b
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
@@ -0,0 +1,175 @@
+package com.zt.life.modules.mainPart.taskReliability.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.zt.common.constant.Constant;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.service.BaseService;
+import com.zt.common.utils.CacheUtils;
+import com.zt.common.utils.CommonUtils;
+import com.zt.common.utils.TreeUtils;
+import com.zt.common.utils.UUIDUtil;
+import com.zt.core.shiro.ImportUtil;
+import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao;
+import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
+import com.zt.life.modules.mainPart.basicInfo.model.ProductImg;
+import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
+import com.zt.life.modules.mainPart.basicInfo.service.ParamDataService;
+import com.zt.life.modules.mainPart.sysPictureBase.service.SysPictureBaseService;
+import com.zt.life.modules.mainPart.taskReliability.dao.ReliabilityAssessDao;
+import com.zt.life.modules.mainPart.taskReliability.model.AssessItem;
+import com.zt.life.modules.mainPart.taskReliability.model.ReliabilityAssess;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.*;
+
+
+/**
+ * product_model
+ *
+ * @author zt generator
+ * @since 1.0.0 2024-02-29
+ */
+@Service
+public class ReliabilityAssessService extends BaseService<ReliabilityAssessDao, ReliabilityAssess> {
+    public List<Map<String, Object>> importProductExcel(MultipartFile mutFile, String progressId, Long shipId, Long itemId) {
+        Date beginDate = new Date();
+        List<Map<String, Object>> list = new ArrayList<>();//瀛樺偍鎵�鏈夌殑瀵煎叆鐘舵��
+        Map<String, Object> map;//瀛樺偍姣忎竴琛岀殑鐘舵��
+        Integer sum = 0; // 鎬诲叡鐨勬潯鏁�
+        Integer suc = 0; // 鎴愬姛鐨勬潯鏁�
+        Integer err = 0; // 澶辫触鐨勬潯鏁�
+        int row1 = 0;
+        Map<String, Object> errMap = new HashMap<>();
+
+        try {
+            // 鑾峰彇瀵煎叆鏂囦欢鐨勫悗缂�鍚�
+            String fileName = mutFile.getOriginalFilename();
+            Workbook workbook = null;
+            //瑙e喅excel鐗堟湰闂
+            if (fileName != null && fileName.endsWith(".xls")) {
+                workbook = new HSSFWorkbook(mutFile.getInputStream());
+            } else if (fileName != null && fileName.endsWith(".xlsx")) {
+                workbook = new XSSFWorkbook(mutFile.getInputStream());
+            }
+            assert workbook != null; //鏂█濡傛灉[boolean琛ㄨ揪寮廬涓簍rue锛屽垯绋嬪簭缁х画鎵ц銆� 濡傛灉涓篺alse锛屽垯绋嬪簭鎶涘嚭AssertionError锛屽苟缁堟鎵ц銆�
+            int sheets = workbook.getNumberOfSheets();
+
+            Map<String, XhProductModel> modelMap = new HashMap<>();
+            List<XhProductModel> prductList = baseDao.getProductPath(shipId);
+
+            for (XhProductModel product : prductList) {
+                if (StringUtils.isNotBlank(product.getNamePath())) {
+                    modelMap.put(product.getNamePath(), product);
+                }
+            }
+
+            String shipPath = "";
+            String xtPath = "";
+            String fxtPath = "";
+            String sbPath = "";
+            String path = "";
+            for (int i = 0; i < sheets; i++) {
+                Sheet sheet = workbook.getSheetAt(i);
+                int num = sheet.getLastRowNum(); // 涓�鍏辨湁澶氬皯琛�
+                String sheetName = sheet.getSheetName(); //鑾峰彇褰撳墠sheet鍚嶇О
+                for (int j = 1; j <= num; j++) {
+                    CacheUtils.put(progressId, "speed", CommonUtils.getPercent(j, num));
+                    CacheUtils.put(progressId, "msg", "鍏�" + num + "琛岋紝宸插畬鎴愮" + j + "琛�");
+
+                    row1 = j;
+                    String pattern = "yyyy-MM-dd";
+                    Row row = sheet.getRow(row1);
+                   // String sort = ImportUtil.getCellValue(row, 0, pattern); //搴忓彿
+
+                    String name = ImportUtil.getCellValue(row, 1, pattern); //鑺傜偣鍚嶇О
+                    String type = ImportUtil.getCellValue(row, 2, pattern);//鑺傜偣绫诲瀷
+                    String runTime = ImportUtil.getCellValue(row, 3, pattern); //杩愯鏃堕暱
+                    String runNum = ImportUtil.getCellValue(row, 4, pattern); //杩愯娆℃暟
+                    String failNum = ImportUtil.getCellValue(row, 5, pattern); //澶辫触娆℃暟
+
+                    if (StringUtils.isBlank(name) || StringUtils.isBlank(type))
+                        continue;
+
+                    Long productId = null;
+                    if (type.equals("鎬讳綋")) {
+                        path = shipPath = name;
+                        xtPath = "";
+                        fxtPath = "";
+                        sbPath = "";
+                        productId = shipId;
+                    }else {
+                        if (type.equals("绯荤粺")) {
+                            if (StringUtils.isNotBlank(shipPath)) {
+                                path = xtPath = name;
+                                fxtPath = "";
+                                sbPath = "";
+                            } else {
+                                continue;
+                            }
+                        }
+                        if (type.equals("鍒嗙郴缁�")) {
+                            if (StringUtils.isNotBlank(xtPath)) {
+                                path = fxtPath = xtPath + "," + name;
+                                sbPath = "";
+                            } else {
+                                continue;
+                            }
+                        }
+                        if (type.equals("璁惧")) {
+                            if ((StringUtils.isNotBlank(xtPath) || StringUtils.isNotBlank(fxtPath))) {
+                                path = sbPath = StringUtils.isNotBlank(fxtPath) ? fxtPath + "," + name : xtPath + "," + name;
+                            } else {
+                                continue;
+                            }
+                        }
+                        if (modelMap.get(path) != null) {
+                            productId = modelMap.get(path).getId();
+                        }
+                    }
+
+
+
+                    ReliabilityAssess assess = new ReliabilityAssess();
+                    assess.setFailNum(Integer.valueOf(failNum));
+                    if (StringUtils.isNotBlank(runNum)){
+                        assess.setRunNum(Integer.valueOf(runNum));
+                    }
+                    if (StringUtils.isNotBlank(runTime)){
+                        assess.setRunTimes(Double.valueOf(runTime));
+                    }
+                    assess.setItemId(itemId);
+                    assess.setProductId(productId);
+                    this.insert(assess);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            ImportUtil.updateErrMap(errMap, "瀵煎叆寮傚父" + e.getMessage(), "", row1);
+            //err++;
+        }
+
+        Date nowDate = new Date();
+        String msg = "浜у搧妯″瀷瀵煎叆鏃堕棿锛�" + CommonUtils.getDatePoor(nowDate, beginDate) + "\r\n";
+        System.out.println(msg);
+        suc = sum - err;
+        map = new HashMap<>();
+        map.put("sum", sum + ""); // 鎵�鏈夊鍏ョ殑鏉℃暟
+        map.put("suc", suc + ""); // 鎴愬姛鐨勬潯鏁�
+        map.put("err", err + ""); // 澶辫触鐨勬潯鏁�
+        list.add(map);
+        list.add(errMap);
+        return list;
+    }
+
+    public List<AssessItem> getAssessDataList(Long productId) {
+        return baseDao.getAssessDataList(productId);
+    }
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
index 8047000..ea18bfb 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
@@ -1023,7 +1023,7 @@
         String filePath = path + "/" + fzId + "/" + "result.xml";
         List<WeakDto> list = new ArrayList<>();
         Map<Long, WeakDto> map = new HashMap<>();
-        String xml = null;
+        String xml;
         InputStream in = null;
         try {
             in = new FileInputStream(filePath);
@@ -1047,7 +1047,7 @@
         JSONArray jsonArray = xmlJSONObj.getJSONObject("ResultNodes").getJSONArray("ResultNode");
         for (int i = 0; i < jsonArray.size(); i++) {
             WeakDto data = new WeakDto();
-            Long productId1 = null;
+            Long productId1;
             Object nameValue = jsonArray.getJSONObject(i).get("name");
             if (nameValue instanceof Long) {
                 productId1 = (Long) nameValue;
@@ -1147,7 +1147,7 @@
             this.update(simulatAssess);
         }
         String filePath = path + "/" + simulatAssess.getId() + "/" + "result.xml";
-        String xml = null;
+        String xml;
         InputStream in = null;
 
         try {
diff --git a/modules/mainPart/src/main/resources/mapper/basicInfo/TyProductModelDao.xml b/modules/mainPart/src/main/resources/mapper/basicInfo/TyProductModelDao.xml
index 344618a..fafc06e 100644
--- a/modules/mainPart/src/main/resources/mapper/basicInfo/TyProductModelDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/basicInfo/TyProductModelDao.xml
@@ -4,22 +4,28 @@
 <mapper namespace="com.zt.life.modules.mainPart.basicInfo.dao.TyProductModelDao">
 
     <select id="getList" resultType="com.zt.life.modules.mainPart.basicInfo.model.TyProductModel">
-        SELECT PMC.*
-        FROM product_model_common PMC
+        SELECT a.*
+        FROM product_model_common a
                  JOIN (SELECT product_type, src_id
                        FROM product_model
-                       WHERE id = ${pid} AND is_delete = 0) AS PM ON TRUE
-        WHERE PMC.is_delete = 0
+                       WHERE id = ${pid} AND is_delete = 0) AS b
+        WHERE a.is_delete = 0
           AND (
-                    PM.product_type = 3
-                    AND (CASE WHEN pm.src_id IS NULL THEN node_type > 3 ELSE pid IN (src_id) END)
+                    b.product_type = 3
+                    AND a.node_type &lt;&gt; 3
                 OR (
-                            PM.product_type != 3
-                            AND (CASE WHEN pm.src_id IS NULL THEN pid IS NULL ELSE pid IN (src_id) END)
+                            b.product_type = 4
+                            AND a.node_type = 5
+                        )
+                OR (
+                            b.product_type = 2
+                            AND a.node_type &lt;&gt; 4
                         )
             )
-        ORDER BY PMC.node_type,
-                 PMC.sort;
+        ORDER BY a.node_type,
+                 a.sort;
+
+
     </select>
     <select id="getProductList" resultType="com.zt.life.modules.mainPart.basicInfo.model.TyProductModel">
         select a.name, a.id
diff --git a/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml b/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml
index afa52bf..91e3d92 100644
--- a/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml
@@ -46,7 +46,6 @@
         select a.name, a.id
         from product_model a
         where a.is_delete = 0
-          and a.product_type = 1
     </select>
     <select id="getProduct" resultType="com.zt.life.modules.mainPart.basicInfo.model.ProductImg">
         SELECT a.operat_img                 as imgPath,
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/AssessItemDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/AssessItemDao.xml
new file mode 100644
index 0000000..8bd3cc0
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/AssessItemDao.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.mainPart.taskReliability.dao.AssessItemDao">
+
+</mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml
new file mode 100644
index 0000000..c606ba3
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.mainPart.taskReliability.dao.ReliabilityAssessDao">
+    <select id="getProductPath" resultType="com.zt.life.modules.mainPart.basicInfo.model.XhProductModel">
+        select a.*
+        from product_model a
+        where a.IS_DELETE = 0
+          and a.ship_id = ${shipId}
+    </select>
+    <select id="getAssessDataList" resultType="com.zt.life.modules.mainPart.taskReliability.model.AssessItem">
+        select a.name,a.id
+        from assess_item a
+        where a.IS_DELETE = 0
+          and a.product_id = ${productId}
+        order by CREATE_DATE desc
+    </select>
+</mapper>
diff --git a/web/packages/components/zt-dialog/src/zt-dialog.vue b/web/packages/components/zt-dialog/src/zt-dialog.vue
index 513cb98..edfeda4 100644
--- a/web/packages/components/zt-dialog/src/zt-dialog.vue
+++ b/web/packages/components/zt-dialog/src/zt-dialog.vue
@@ -82,10 +82,13 @@
     computed: {
       _title() {
         if (this.title) {
+          console.log(this.title,'this.title')
           return this.title
-        } else if (!this.editAble) {
+        } else if (this.isView) {
+          console.log(this.editAble,'this.editAble')
           return this.$t('view')
         } else if (this.$parent.dataForm !== undefined) {
+          console.log(this.$parent.dataForm,'this.$parent.dataForm')
           return !this.$parent.dataForm.id ? this.$t('add') : this.$t('update')
         }
       }
diff --git a/web/src/views/modules/basicInfo/ProductImport.vue b/web/src/views/modules/basicInfo/ProductImport.vue
index 4f7a586..b1b4d38 100644
--- a/web/src/views/modules/basicInfo/ProductImport.vue
+++ b/web/src/views/modules/basicInfo/ProductImport.vue
@@ -1,5 +1,5 @@
 <template>
-  <zt-dialog ref="dialog" title="瀵煎叆浜у搧妯″瀷" :hasConfirm="false" :editAble="false" append-to-body>
+  <zt-dialog ref="dialog" title="瀵煎叆浜у搧缁撴瀯鏍�" :hasConfirm="false" :editAble="false" append-to-body>
     <el-form>
       <zt-form-item style="width:100%;" label="" prop="remark">
         <el-upload
diff --git a/web/src/views/modules/basicInfo/SelectTyModel.vue b/web/src/views/modules/basicInfo/SelectTyModel.vue
index 9260214..4b1da4a 100644
--- a/web/src/views/modules/basicInfo/SelectTyModel.vue
+++ b/web/src/views/modules/basicInfo/SelectTyModel.vue
@@ -1,5 +1,5 @@
 <template>
-  <zt-dialog ref="dialog" column="2" title="閫夋嫨閫氱敤妯″瀷" append-to-body :editAble="false" :hasConfirm="true"
+  <zt-dialog ref="dialog" column="2" title="閫夋嫨閫氱敤浜у搧鑺傜偣" append-to-body :editAble="false" :hasConfirm="true"
              @confirm="formSubmit">
     <el-card shadow="never" class="aui-card--fill">
       <div class="mod-tyProductModel-tyProductModel}">
diff --git a/web/src/views/modules/basicInfo/TyProductModel-AddOrUpdate.vue b/web/src/views/modules/basicInfo/TyProductModel-AddOrUpdate.vue
index cda8fca..ea08f92 100644
--- a/web/src/views/modules/basicInfo/TyProductModel-AddOrUpdate.vue
+++ b/web/src/views/modules/basicInfo/TyProductModel-AddOrUpdate.vue
@@ -1,7 +1,7 @@
 <template>
-  <zt-dialog ref="dialog" @confirm="formSubmit" append-to-body>
+  <zt-dialog ref="dialog" append-to-body @confirm="formSubmit" :hasConfirm="true">
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
-      <zt-form-item label="涓婄骇绯荤粺" prop="pid">
+      <zt-form-item label="涓婄骇鑺傜偣" prop="pid">
         <zt-select v-model="dataForm.pid" placeholder=" " :datas="productList" @input="selectDefaultProduct"/>
       </zt-form-item>
       <zt-form-item label="鍚嶇О" prop="name" rules="required">
@@ -69,7 +69,7 @@
         this.getProductList()
       },
       selectDefaultProduct() {
-        this.dataForm.nodeType = 1
+        this.dataForm.nodeType = 5
         this.getDefaultImg(this.dataForm.nodeType)
       },
       // 鑾峰彇绯荤粺鍒楄〃
diff --git a/web/src/views/modules/basicInfo/TyProductModel.vue b/web/src/views/modules/basicInfo/TyProductModel.vue
index 7c0fc07..0023a00 100644
--- a/web/src/views/modules/basicInfo/TyProductModel.vue
+++ b/web/src/views/modules/basicInfo/TyProductModel.vue
@@ -35,7 +35,7 @@
             </template>
           </el-table-column>
           <el-table-column prop="sort" label="鎺掑簭" align="center"/>
-          <zt-table-column-handle :table="table" width="150" />
+          <zt-table-column-handle :table="table" width="150"/>
         </el-table>
         <!-- 寮圭獥, 鏂板 / 淇敼 -->
         <add-or-update @refreshDataList="table.query"/>
diff --git a/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue b/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue
index 976797f..8812cec 100644
--- a/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue
+++ b/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue
@@ -1,7 +1,7 @@
 <template>
-  <zt-dialog ref="dialog" @confirm="formSubmit">
+  <zt-dialog ref="dialog" @confirm="formSubmit" :hasConfirm="true">
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
-      <zt-form-item label="涓婄骇绯荤粺" prop="pid" v-if="isShow">
+      <zt-form-item label="涓婄骇鑺傜偣" prop="pid" v-if="isShow">
         <zt-combo-tree v-model="dataForm.pid" :datas="productList"/>
       </zt-form-item>
       <zt-form-item label="鍚嶇О" prop="name" rules="required">
@@ -58,6 +58,7 @@
     },
     methods: {
       init(id, params) {
+        this.getProductList()
         if (params.shipId) {
           this.dataForm.shipId = params.shipId
         }
@@ -69,7 +70,6 @@
         } else if (params.type === 'zt') {
           this.dataForm.pid = params.pid
           this.dataForm.productType = 2
-          this.getProductList()
           this.getDefaultImg(this.dataForm.productType)
         } else {
           this.dataForm.pid = params.pid
diff --git a/web/src/views/modules/basicInfo/XhProductModel.vue b/web/src/views/modules/basicInfo/XhProductModel.vue
index 047fc4a..54bb502 100644
--- a/web/src/views/modules/basicInfo/XhProductModel.vue
+++ b/web/src/views/modules/basicInfo/XhProductModel.vue
@@ -39,7 +39,7 @@
                 </template>
               </el-table-column>
               <el-table-column prop="sort" label="鎺掑簭" width="100px" align="center"/>
-              <zt-table-column-handle :table="table" width="180px">
+              <zt-table-column-handle :table="table" width="180px" >
                 <template v-slot="{ row }">
                   <zt-table-button v-if="productType==='1'" size="small" type="primary"
                                    @click="importData(row)">瀵煎叆
diff --git a/web/src/views/modules/taskReliability/ModelRbd-AddOrUpdate.vue b/web/src/views/modules/taskReliability/ModelRbd-AddOrUpdate.vue
index e1a0d6d..5bede61 100644
--- a/web/src/views/modules/taskReliability/ModelRbd-AddOrUpdate.vue
+++ b/web/src/views/modules/taskReliability/ModelRbd-AddOrUpdate.vue
@@ -1,5 +1,5 @@
 <template>
-  <zt-dialog ref="dialog" @confirm="formSubmit">
+  <zt-dialog ref="dialog" @confirm="formSubmit" :hasConfirm="true">
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
       <zt-form-item label="妯″瀷鍚嶇О" prop="modelName" rules="required">
         <el-input v-model="dataForm.modelName"></el-input>
diff --git a/web/src/views/modules/taskReliability/OperatCondit-AddOrUpdate.vue b/web/src/views/modules/taskReliability/OperatCondit-AddOrUpdate.vue
index 66d6522..30f806b 100644
--- a/web/src/views/modules/taskReliability/OperatCondit-AddOrUpdate.vue
+++ b/web/src/views/modules/taskReliability/OperatCondit-AddOrUpdate.vue
@@ -1,5 +1,5 @@
 <template>
-  <zt-dialog ref="dialog" @confirm="formSubmit">
+  <zt-dialog ref="dialog" @confirm="formSubmit" :hasConfirm="true">
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
       <zt-form-item label="宸ュ喌鍚嶇О" prop="name" rules="required">
         <el-input v-model="dataForm.name"></el-input>
diff --git a/web/src/views/modules/taskReliability/OperatCondit.vue b/web/src/views/modules/taskReliability/OperatCondit.vue
index e0f9934..f968740 100644
--- a/web/src/views/modules/taskReliability/OperatCondit.vue
+++ b/web/src/views/modules/taskReliability/OperatCondit.vue
@@ -13,7 +13,7 @@
                              v-slot="{ table }" :paging='false'>
               <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
                 <el-form-item>
-                  <zt-button v-if="dataForm.productId" type="query" @click="table.query()"/>
+                  <!--<zt-button v-if="dataForm.productId" type="query" @click="table.query()"/>-->
                   <zt-button v-if="dataForm.productId" type="add" @click="add()"/>
                   <zt-button v-if="dataForm.productId" type="delete" @click="table.deleteHandle()"/>
                 </el-form-item>
diff --git a/web/src/views/modules/taskReliability/OperatConditModel.vue b/web/src/views/modules/taskReliability/OperatConditModel.vue
index 5d30233..78e4fd2 100644
--- a/web/src/views/modules/taskReliability/OperatConditModel.vue
+++ b/web/src/views/modules/taskReliability/OperatConditModel.vue
@@ -18,7 +18,7 @@
           <template slot-scope="scope">
             <el-select v-model="scope.row.modelId" :disabled="scope.row.isDisabled == 1" placeholder="璇烽�夋嫨"
                        style="width:100%" @change="modelChanged(scope.row)">
-              <el-option on
+              <el-option
                          v-for="item in scope.row.modelList"
                          :key="item.id"
                          :label="item.modelName"
@@ -33,15 +33,15 @@
           </template>
         </el-table-column>
       </el-table>
-      <el-dialog v-dialogDrag title="妯″瀷璁捐" top="1vh" width='95%' :visible.sync="dialogVisible2" v-if="dialogVisible2">
-        <RBDEditImg ref="rbdEditImg"></RBDEditImg>
+      <el-dialog v-dialogDrag :title="title" top="1vh" width='95%' :visible.sync="dialogVisible2" v-if="dialogVisible2">
+        <model-view ref="modelView"></model-view>
       </el-dialog>
     </zt-table-wraper>
   </div>
 </template>
 
 <script>
-  import RBDEditImg from './RBD-edit-img'
+  import ModelView from "./ModelView";
   import cloneDeep from 'lodash/cloneDeep'
 
   export default {
@@ -57,10 +57,11 @@
         modelList: [],
         dialogVisible2: false,
         isChange: false,
+        title: ''
       }
     },
     components: {
-      RBDEditImg
+      ModelView
     },
     mounted() {
       this.getModelNodes()
@@ -110,8 +111,8 @@
         console.log(row.children, 'row.children')
 
         for (let subRow of row.children) {
-          console.log(subRow,'subRow')
-          console.log(subRow.productId,'subRow.productId')
+          console.log(subRow, 'subRow')
+          console.log(subRow.productId, 'subRow.productId')
           if (modelNodes.indexOf(subRow.productId) != -1) {
             subRow.isDisabled = 0
             if (subRow.modelList.length == 1) {
@@ -144,13 +145,13 @@
       },
       drawRBD(row) {
         this.dialogVisible2 = true
+        this.title=row.modelName + '妯″瀷璁捐'
         let param = {
           id: row.modelId,
           modelName: row.modelName,
-          productId: row.productId
         }
         this.$nextTick(() => {
-          this.$refs.rbdEditImg.init(param)
+          this.$refs.modelView.init(param)
         })
       }
     }
diff --git a/web/src/views/modules/taskReliability/PlanMake.vue b/web/src/views/modules/taskReliability/PlanMake.vue
index d2bab9f..5a0e77c 100644
--- a/web/src/views/modules/taskReliability/PlanMake.vue
+++ b/web/src/views/modules/taskReliability/PlanMake.vue
@@ -3,12 +3,12 @@
     <el-table ref="table" :data="tjDataList" height="230px" border>
       <el-table-column align="center" prop="tjlx" label="鏌ヨ绫诲瀷">
       </el-table-column>
-      <el-table-column align="center" prop="specifiedValue" label="宸茬煡瑙勫畾鍊�">
+      <el-table-column align="center" prop="specifiedValue" label="妫�楠屼笂闄�">
         <template v-slot="{ row }">
           <el-input v-model="row.specifiedValue" style="width:100%" :disabled="row.tjlx==='涓嶉檺瀹氳瀹氬�兼煡璇�'"></el-input>
         </template>
       </el-table-column>
-      <el-table-column align="center" prop="minAccepValue" label="鏈�浣庡彲鎺ュ彈鍊�">
+      <el-table-column align="center" prop="minAccepValue" label="妫�楠屼笅闄�">
         <template v-slot="{ row }">
           <el-input v-model="row.minAccepValue" style="width:100%"></el-input>
         </template>
@@ -37,7 +37,7 @@
       </el-table-column>
       <el-table-column align="center" width="100" label="鎿嶄綔">
         <template v-slot="{ row }">
-          <el-button type="primary" @click="check(row)">鏌ヨ</el-button>
+          <el-button type="primary" @click="check(row)">{{row.btnName}}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -47,7 +47,7 @@
       </el-table-column>
       <el-table-column align="center" prop="totalTestTime" label="鎬昏瘯楠屾椂闂�(h)">
       </el-table-column>
-      <el-table-column v-if="isShow" align="center" prop="number" label="瑙勫畾鍊�">
+      <el-table-column v-if="isShow" align="center" prop="specifiedValue" label="妫�楠屼笂闄�">
       </el-table-column>
       <el-table-column align="center" prop="productionRiskReal" label="鐢熶骇鏂归闄╁疄闄呭��(%)">
       </el-table-column>
@@ -69,6 +69,7 @@
         isShow: false,
         tjDataList: [{
           tjlx: '鎸夐闄╁悕涔夊�兼煡璇�',
+          btnName: '鏌ヨ涓�',
           specifiedValue: null,
           minAccepValue: null,
           productionRisk: null,
@@ -77,19 +78,21 @@
         },
           {
             tjlx: '涓嶉檺瀹氱敓浜ф柟椋庨櫓鏌ヨ',
+            btnName: '鏌ヨ浜�',
             specifiedValue: null,
             minAccepValue: null,
             productionRisk: null,
             userRisk: null,
-            showFailureTime: null
+            showFailureTime: 10
           },
           {
             tjlx: '涓嶉檺瀹氳瀹氬�兼煡璇�',
+            btnName: '鏌ヨ涓�',
             specifiedValue: null,
             minAccepValue: null,
             productionRisk: null,
             userRisk: null,
-            showFailureTime: null
+            showFailureTime: 10
           }
         ],
         riskList: [
@@ -161,6 +164,8 @@
         this.dataList = res.data
         if (row.tjlx === "涓嶉檺瀹氳瀹氬�兼煡璇�") {
           this.isShow = true
+        }else{
+          this.isShow = false
         }
       }
     }
diff --git a/web/src/views/modules/taskReliability/ReliabilityAssess.vue b/web/src/views/modules/taskReliability/ReliabilityAssess.vue
new file mode 100644
index 0000000..78ac8bb
--- /dev/null
+++ b/web/src/views/modules/taskReliability/ReliabilityAssess.vue
@@ -0,0 +1,116 @@
+<template>
+  <div>
+    <div class="mod-baseReliability-paramDataBasic fa-card-a" style="margin-left: 5px;">
+      <zt-table-wraper :defaultNotQuery='true' ref="tableObj" query-url="/taskReliability/ReliabilityAssess/page"
+                       v-slot="{ table }" :paging='false'>
+        <el-form :inline="true" :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="80px">
+          <zt-form-item label="浜у搧鑺傜偣" prop="productId">
+            <zt-select v-model="dataForm.productId" :datas="productList" @change="onProductSelected"/>
+          </zt-form-item>
+          <zt-form-item label="鎬讳綋浠诲姟" prop="taskModelId">
+            <zt-select v-model="dataForm.taskModelId" :datas="taskList" @change="onTaskSelected"/>
+          </zt-form-item>
+          <zt-form-item label="璇勫畾鏁版嵁" prop="taskModelId">
+            <zt-select v-model="dataForm.itemId" :datas="assessDataList" @change="onAssessDataSelected"/>
+          </zt-form-item>
+          <zt-form-item label="缃俊搴�" prop="confidence">
+            <el-input v-model="dataForm.confidence" placeholder="缃俊搴�" clearable></el-input>
+           </zt-form-item>
+          <el-button type="primary">璇勫畾</el-button>
+          <el-button type="primary" @click="add()">鏂板璇勫畾鏁版嵁</el-button>
+        </el-form>
+        <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}"
+                  row-key="id"
+                  :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+                  :header-cell-style="{'text-align':'center'}"
+                  border @selection-change="table.selectionChangeHandle">
+          <el-table-column prop="name" label="鍚嶇О"/>
+          <el-table-column prop="runTimes" label="杩愯鏃堕暱" align="right">
+          </el-table-column>
+          <el-table-column prop="runNum" label="杩愯娆℃暟" align="right">
+          </el-table-column>
+          <el-table-column prop="failNum" label="澶辫触娆℃暟" align="right">
+          </el-table-column>
+          <el-table-column prop="assessResult" label="璇勫畾缁撴灉" align="right">
+          </el-table-column>
+        </el-table>
+        <add-or-update @refreshDataList="refreshData" ref="AddOrUpdate"/>
+      </zt-table-wraper>
+    </div>
+  </div>
+</template>
+<script>
+  import AddOrUpdate from './RelisbilityAssess-AddOrUpdate'
+
+  export default {
+    data() {
+      return {
+        dataForm: {
+          productId:'',
+          shipName:'',
+          taskModelId:'',
+          itemId:'',
+          name:'',
+          runTimes:'',
+          failNum:'',
+          runNum:'',
+          assessResult:'',
+          confidence:'',
+        },
+        productList: [],
+        taskList: [],
+        assessDataList: [],
+      }
+    },
+    components: {
+      AddOrUpdate
+    },
+    mounted() {
+      this.getProductList()
+    },
+    methods: {
+      // 鑾峰彇淇℃伅
+      onProductSelected(data) {
+        console.log(data, ' onProductSelected(data)')
+        this.dataForm.productId = data.id
+        this.dataForm.shipName = data.name
+        this.getTaskList()
+        this.getAssessDataList();
+      },
+      onTaskSelected(data) {
+        console.log(data, ' onProductSelected(data)')
+        this.dataForm.taskModelId = data.id
+      },
+      onAssessDataSelected(data){
+        this.dataForm.itemId = data.id
+      },
+      refreshData(){
+       this.getAssessDataList();
+      },
+      async getAssessDataList() {
+        let params={
+          productId:this.dataForm.productId
+        }
+        let res = await this.$http.get('/taskReliability/ReliabilityAssess/getAssessDataList',{params: params})
+        this.assessDataList = res.data
+        this.dataForm.itemId = this.assessDataList[0].id
+      },
+      add(){
+        this.$refs.AddOrUpdate.$refs.dialog.init(null, {productId: this.dataForm.productId,shipName: this.dataForm.shipName})
+      },
+      async getProductList() {
+        let res = await this.$http.get('/basicInfo/XhProductModel/getTaskProductList')
+        this.productList = res.data
+        this.onProductSelected(this.productList[0])
+      },
+      async getTaskList() {
+        let params = {
+          productId: this.dataForm.productId
+        }
+        let res = await this.$http.get('/taskReliability/Task/getTaskList', {params: params})
+        console.log(res.data)
+        this.taskList = res.data
+      },
+    }
+  }
+</script>
diff --git a/web/src/views/modules/taskReliability/RelisbilityAssess-AddOrUpdate.vue b/web/src/views/modules/taskReliability/RelisbilityAssess-AddOrUpdate.vue
new file mode 100644
index 0000000..fd6debc
--- /dev/null
+++ b/web/src/views/modules/taskReliability/RelisbilityAssess-AddOrUpdate.vue
@@ -0,0 +1,141 @@
+<template>
+  <zt-dialog ref="dialog" @confirm="formSubmit" :hasConfirm="true">
+    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
+      <zt-form-item label="鎬讳綋" prop="shipName">
+        <el-input v-model="dataForm.shipName"></el-input>
+      </zt-form-item>
+      <zt-form-item label="鍚嶇О" prop="name" rules="required">
+        <el-input v-model="dataForm.name"></el-input>
+      </zt-form-item>
+      <zt-form-item style="width:100%;" label="">
+        <el-upload
+          style="width: 600px"
+          class="upload-demo"
+          ref="upload"
+          :action="apiURL"
+          :on-success="succ"
+          :on-exceed="uploadExceed"
+          :on-error="err"
+          :limit="1"
+          :file-list="fileList"
+          :auto-upload="false">
+          <div style="display:inline-block;font-size: 14px;" class="el-upload__tip">&nbsp;&nbsp;&nbsp;鍙兘涓婁紶.xlsx鎴�.xls鐨勬枃浠讹紝涓斾笉瓒呰繃2G</div>
+          <el-button slot="trigger" size="small" type="primary" style="font-size: 15px">閫夊彇鏂囦欢</el-button>
+          <el-button type="primary" size="small" style="margin-left:20px;font-size: 15px" @click="submitUpload()">鎻� 浜�</el-button>
+        </el-upload>
+      </zt-form-item>
+      <el-progress :text-inside="true" :stroke-width="30" :percentage="progress.speed"></el-progress>
+    </el-form>
+  </zt-dialog>
+</template>
+
+<script>
+  import {guid} from "../../../commonJS/common";
+  import qs from "qs";
+  import Cookies from "js-cookie";
+
+  export default {
+    data() {
+      return {
+        dataForm: {
+          name:'',
+          productId:''
+        },
+        progress: {
+          id: null,
+          speed: 0,
+          text: '',
+          start: false,
+          timer: null
+        },
+        start: 0,
+        fileType: ['xlsx', 'xls'],
+        fileList:[],
+        apiURL:'',
+        itemId:''
+      }
+    },
+    methods: {
+      async init(id, param) {
+        let result = await this.$http.get(`/basicInfo/TyProductModel/getUuid`)
+        this.dataForm.itemId = result.data
+        this.dataForm.productId = param.productId
+        this.dataForm.shipName = param.shipName
+        this.fileList = []
+        this.resultData = []
+        this.progress.id = guid()
+        let params = qs.stringify({
+          token: Cookies.get('token'),
+          progressId: this.progress.id,
+          pid: this.dataForm.productId,
+          itemId: this.dataForm.itemId,
+        })
+        this.apiURL = `${window.SITE_CONFIG['apiURL']}/taskReliability/ReliabilityAssess/importProductExcel?${params}`
+      },
+      uploadExceed(files, fileList) {
+        this.$set(fileList[0], 'raw', files[0])
+        this.$set(fileList[0], 'name', files[0].name)
+        this.$refs.upload.clearFiles()
+        this.$refs.upload.handleStart(files[0])
+      },
+      succ(res, file, fileList) {
+        clearInterval(this.timer)
+        this.dataForm.speed = 100
+        this.$refs.upload.clearFiles()
+        this.fileList = []
+        this.$emit('refreshDataList')
+      },
+      err(res, file, fileList) {
+        clearInterval(this.timer)
+        this.dataForm.speed = 0
+        this.$tip.error(res.msg)
+      },
+      submitUpload() {
+        this.dataForm.speed = 0
+        this.progress.speed = 0
+        this.progress.start = true
+        this.progress.timer = window.setInterval(this.getStroke, 1000)
+        this.uploadQuery()
+      },
+      uploadQuery() {
+        if (this.$refs.upload.uploadFiles.length === 1) {
+          this.start = 1
+          this.$refs.upload.submit()
+        } else {
+          this.$tip.error('璇烽�夋嫨闇�瑕佷笂浼犵殑.xlsx鎴�.xls鐨勬枃浠�')
+        }
+      },
+      getStroke() {
+        //console.log('getStroke:',this.progress.start,"锛�",this.progress.speed)
+        if (this.progress.start && this.progress.speed < 100) {
+          //console.log('getStroke2')
+          this.$http.get(`sys/common/stroke?progressId=${this.progress.id}`).then(
+            res => {
+              if (res.success) {
+                this.progress.speed = parseFloat(res.data.speed)
+                this.progress.text = res.data.text
+              }
+            }
+          )
+        } else {
+          clearInterval(this.timer)
+        }
+      },
+      // 琛ㄥ崟鎻愪氦
+      async formSubmit() {
+        let param={
+          id:this.dataForm.itemId,
+          name:this.dataForm.name,
+          productId:this.dataForm.productId
+        }
+        let res = await this.$http.post('/taskReliability/ReliabilityAssess/add', param)
+        if (res.success) {
+          await this.$tip.success()
+          this.$refs.dialog.close()
+          this.$emit('refreshDataList')
+        }
+      }
+
+    }
+  }
+</script>
diff --git a/web/src/views/modules/taskReliability/SchemeCompar.vue b/web/src/views/modules/taskReliability/SchemeCompar.vue
index ffada1d..350ca76 100644
--- a/web/src/views/modules/taskReliability/SchemeCompar.vue
+++ b/web/src/views/modules/taskReliability/SchemeCompar.vue
@@ -64,7 +64,7 @@
             </div>
           </div>
           <div :disabled="isShow">
-            <div class="echart" id="myChart" :style="myChartStyle"></div>
+            <div class="echart" id="SchemeCompar" :style="myChartStyle"></div>
           </div>
         </div>
       </el-col>
@@ -191,7 +191,7 @@
           },
           series: this.seriesList
         };
-        this.myChart = echart.init(document.getElementById("myChart"));
+        this.myChart = echart.init(document.getElementById("SchemeCompar"));
         console.log(this.option, ' this.option ')
         this.myChart.setOption(this.option);
         //闅忕潃灞忓箷澶у皬璋冭妭鍥捐〃
diff --git a/web/src/views/modules/taskReliability/SimulatAssess.vue b/web/src/views/modules/taskReliability/SimulatAssess.vue
index 692e6b2..d312e46 100644
--- a/web/src/views/modules/taskReliability/SimulatAssess.vue
+++ b/web/src/views/modules/taskReliability/SimulatAssess.vue
@@ -118,12 +118,9 @@
         this.taskList = res.data
       },
       getStroke() {
-        //console.log('getStroke:',this.progress.start,"锛�",this.progress.speed)
         if (this.percentage < 100) {
-          //console.log('getStroke2')
           this.$http.get(`/taskReliability/SimulatAssess/getCalcProgress?taskId=${this.dataForm.id}`).then(
             res => {
-              // console.log(res.data, 'res.data')
               if (res.data) {
                 this.percentage = parseFloat(res.data)
               }
diff --git a/web/src/views/modules/taskReliability/Task-AddOrUpdate.vue b/web/src/views/modules/taskReliability/Task-AddOrUpdate.vue
index a7ead35..762cc36 100644
--- a/web/src/views/modules/taskReliability/Task-AddOrUpdate.vue
+++ b/web/src/views/modules/taskReliability/Task-AddOrUpdate.vue
@@ -1,5 +1,5 @@
 <template>
-  <zt-dialog ref="dialog" @confirm="formSubmit">
+  <zt-dialog ref="dialog" @confirm="formSubmit" :hasConfirm="true">
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
       <zt-form-item label="浠诲姟鍚嶇О" prop="taskName" rules="required">
         <el-input v-model="dataForm.taskName"></el-input>
diff --git a/web/src/views/modules/taskReliability/TaskPhase-AddOrUpdate.vue b/web/src/views/modules/taskReliability/TaskPhase-AddOrUpdate.vue
index 243e337..4e0a0be 100644
--- a/web/src/views/modules/taskReliability/TaskPhase-AddOrUpdate.vue
+++ b/web/src/views/modules/taskReliability/TaskPhase-AddOrUpdate.vue
@@ -1,5 +1,5 @@
 <template>
-  <zt-dialog ref="dialog" @confirm="formSubmit">
+  <zt-dialog ref="dialog" @confirm="formSubmit" :hasConfirm="true">
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
       <zt-form-item label="浠诲姟闃舵鍚嶇О" prop="phaseName" rules="required">
         <el-input v-model="dataForm.phaseName"></el-input>
diff --git a/web/src/views/modules/taskReliability/TaskPhase.vue b/web/src/views/modules/taskReliability/TaskPhase.vue
index b2b9a27..00c2ab5 100644
--- a/web/src/views/modules/taskReliability/TaskPhase.vue
+++ b/web/src/views/modules/taskReliability/TaskPhase.vue
@@ -85,7 +85,6 @@
         console.log(this.time)
       },
       add() {
-        console.log(this.time)
         this.$refs.AddOrUpdate.$refs.dialog.init(null, {
           taskId: this.dataForm.taskId,
           productId: this.dataForm.productId,

--
Gitblit v1.9.1