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 <> 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 <> 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"> 鍙兘涓婁紶.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