From 3b3521961c246eda35cde1fde685e3931f8af529 Mon Sep 17 00:00:00 2001
From: wente <329538422@qq.com>
Date: 星期一, 28 十月 2024 08:46:25 +0800
Subject: [PATCH] 仿真字体 数量提示 箭头缝隙
---
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 246 ++++++++++++++++++++++++++++++-------------------
1 files changed, 151 insertions(+), 95 deletions(-)
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 81c21ba..0829c56 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
@@ -26,6 +26,7 @@
import com.zt.life.modules.mainPart.utils.GetStringSpace;
import io.swagger.models.auth.In;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
@@ -332,7 +333,8 @@
List<TimeDiagramStatusDto> statusDtoListNew = new ArrayList<>();
while (statusDtoListOld.size() > 0) {
- statusDtoListOld.stream().sorted(Comparator.comparing(TimeDiagramStatusDto::getX1)).collect(Collectors.toList());
+ //statusDtoListOld.stream().sorted(Comparator.comparing(TimeDiagramStatusDto::getX1)).collect(Collectors.toList());
+ statusDtoListOld.sort(Comparator.comparing(TimeDiagramStatusDto::getX1, Comparator.naturalOrder()));
TimeDiagramStatusDto nextStatusDto = statusDtoListOld.get(0);
if (statusDtoListNew.size() == 0) {
statusDtoListNew.add(nextStatusDto);
@@ -352,12 +354,14 @@
currentStatusDto.setX2(nextStatusDto.getX1());
statusDtoListNew.add(new TimeDiagramStatusDto(nextStatusDto.getX1(), nextStatusDto.getX2(), nextStatusDto.getStatus()));
} else if (nextStatusDto.getX1() > currentStatusDto.getX1() && nextStatusDto.getX2() < currentStatusDto.getX2()) {
- currentStatusDto.setX2(nextStatusDto.getX1());
statusDtoListNew.add(new TimeDiagramStatusDto(nextStatusDto.getX1(), nextStatusDto.getX2(), nextStatusDto.getStatus()));
statusDtoListOld.add(new TimeDiagramStatusDto(nextStatusDto.getX2(), currentStatusDto.getX2(), currentStatusDto.getStatus()));
+ currentStatusDto.setX2(nextStatusDto.getX1());
}
} else {
- if (nextStatusDto.getX2() > currentStatusDto.getX2()) {
+ if (nextStatusDto.getX1() >= currentStatusDto.getX2()) {
+ statusDtoListNew.add(new TimeDiagramStatusDto(nextStatusDto.getX1(), nextStatusDto.getX2(), nextStatusDto.getStatus()));
+ } else if (nextStatusDto.getX2() > currentStatusDto.getX2()) {
statusDtoListOld.add(new TimeDiagramStatusDto(currentStatusDto.getX2(), nextStatusDto.getX2(), nextStatusDto.getStatus()));
}
}
@@ -548,9 +552,31 @@
}
public List<ProductStatusDto> getStatusData(Long productId, Long taskId) {
- List<ProductStatusDto> childList = this.getProduct(productId, taskId);
+
+ List<ProductStatusDto> dbList = this.getProduct(productId, taskId);
+ List<ProductStatusDto> childList = new ArrayList<>();
+ for (ProductStatusDto item : dbList) {
+ if (item.getSameSbNum() > 1) {
+ for (int i = 1; i <= item.getSameSbNum(); i++) {
+ try {
+ ProductStatusDto newRow = item.clone();
+ newRow.setDeviceNo(i);
+ newRow.setName(item.getName() + "-" + i);
+ newRow.setDataId(item.getId().toString() + "-" + i);
+ childList.add(newRow);
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ }
+ } else {
+ item.setDeviceNo(0);
+ item.setDataId(item.getId().toString());
+ childList.add(item);
+ }
+ }
+ childList.sort(Comparator.comparing(ProductStatusDto::getDeviceNo, Comparator.naturalOrder()));
for (ProductStatusDto item : childList) {
- JSONArray jsonArray = dialgramJson.getJSONArray(String.valueOf(item.getId()));
+ JSONArray jsonArray = dialgramJson.getJSONArray(item.getDataId());
if (jsonArray != null) {
this.processJSONArray(jsonArray, item, taskId);
}
@@ -758,7 +784,8 @@
Element root = document.addElement("des");
root.addAttribute("name", "General system");
addTasksTag(taskPhaseModelAll, root);
- addModelsTag(taskId,
+ addModelsTag(simulatAssess,
+ taskId,
productId,
product.getName(),
product.getNamePath(),
@@ -895,6 +922,10 @@
ele = repairModelTag.addElement("shape");
ele.addAttribute("value", String.valueOf(repairModel.getParam3()));
break;
+ case RepairModel.TYPE_DIRAC:
+ ele = repairModelTag.addElement("repair-time");
+ ele.addAttribute("value", String.valueOf(repairModel.getParam1()));
+ break;
default:
break;
}
@@ -937,7 +968,8 @@
return taskPhases;
}
- private void addModelsTag(Long taskId,
+ private void addModelsTag(SimulatAssess simulatAssess,
+ Long taskId,
Long productId,
String productName,
String productNamePath,
@@ -963,7 +995,8 @@
"end".equals(item.getAlgorithmType())).collect(Collectors.toList()).get(0);
ModelNode computerNode = modelNodeAndVnodeList.stream().filter(item ->
endAlgo.getComputerList().equals(item.getId().toString())).collect(Collectors.toList()).get(0);
- node2DOM(taskId,
+ node2DOM(simulatAssess,
+ taskId,
taskPhaseModel,
gkModelTop.getModelId(),
productId,
@@ -981,7 +1014,8 @@
}
// 閫掑綊鍑芥暟
- private void node2DOM(Long taskId,
+ private void node2DOM(SimulatAssess simulatAssess,
+ Long taskId,
TaskPhaseModel taskPhaseModel,
Long modelId,
Long productId,
@@ -1011,7 +1045,8 @@
"end".equals(item.getAlgorithmType())).collect(Collectors.toList()).get(0);
ModelNode computerNode = modelNodeAndVnodeListSub.stream().filter(item ->
endAlgo.getComputerList().equals(item.getId().toString())).collect(Collectors.toList()).get(0);
- node2DOM(taskId,
+ node2DOM(simulatAssess,
+ taskId,
taskPhaseModel,
gkModel.getModelId(),
product.getId(),
@@ -1029,8 +1064,8 @@
// 璁惧
Integer deviceNo = node.getDeviceNo();
Element nodeTag = parent.addElement("node");
- nodeTag.addAttribute("name", deviceNo == 0 ? dataId.toString() : dataId.toString()+"-"+deviceNo);
- nodeTag.addAttribute("real_name", deviceNo == 0 ? product.getName() : product.getName()+"-"+deviceNo);
+ nodeTag.addAttribute("name", deviceNo == 0 ? dataId.toString() : dataId.toString() + "-" + deviceNo);
+ nodeTag.addAttribute("real_name", deviceNo == 0 ? product.getName() : product.getName() + "-" + deviceNo);
nodeTag.addAttribute("name_path", product.getNamePath());
nodeTag.addAttribute("type", "node");
@@ -1062,7 +1097,12 @@
if (1 == paramData.getRepairable()) {
// 鍙淮淇�
- RepairModel repairModel = createRepairModel(paramData);
+ RepairModel repairModel = null;
+ if (isRepairDirac(simulatAssess.getRepairDiracFlag(), taskPhaseModel, product.getId())) {
+ repairModel = createRepairModelDirac(0);
+ } else {
+ repairModel = createRepairModel(paramData);
+ }
repairModels.add(repairModel);
Element repairTag = nodeTag.addElement("repair_model");
repairTag.addAttribute("name", repairModel.getId().toString());
@@ -1097,7 +1137,8 @@
for (String nodeStr : computerNodeListStr) {
ModelNode mn = modelNodeAndVnodeList.stream().filter(item ->
nodeStr.equals(item.getId().toString())).collect(Collectors.toList()).get(0);
- node2DOM(taskId,
+ node2DOM(simulatAssess,
+ taskId,
taskPhaseModel,
modelId,
null,
@@ -1152,23 +1193,46 @@
return failureModel;
}
+ private boolean isRepairDirac(Boolean repairDiracFlag, TaskPhaseModel taskPhaseModel, Long productId) {
+ boolean result = false;
+
+ if (repairDiracFlag != null && repairDiracFlag) {
+ if (taskPhaseModel.getPhaseConstraints() == null) {
+ result = true;
+ } else {
+ List<TaskPhaseConstraintDto> list = taskPhaseModel.getPhaseConstraints().stream().filter(item ->
+ productId.equals(item.getProductId())).collect(Collectors.toList());
+ if (list.size() == 0) {
+ result = true;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ private RepairModel createRepairModelDirac(double time) {
+ RepairModel repairModel = new RepairModel();
+ repairModel.setId(UUIDUtil.generateId());
+ repairModel.setType(RepairModel.TYPE_DIRAC);
+ repairModel.setParam1(0);
+ return repairModel;
+ }
+
private RepairModel createRepairModel(ParamData paramData) {
RepairModel repairModel = new RepairModel();
repairModel.setId(UUIDUtil.generateId());
switch (paramData.getRepairDistribType()) {
case 1:
// 鎸囨暟鍒嗗竷
- repairModel.setType(FailureModel.TYPE_EXP);
+ repairModel.setType(RepairModel.TYPE_EXP);
repairModel.setParam1(1.0 / paramData.getRepairMttcr());
break;
case 2:
// 濞佸竷灏斿垎甯�
- repairModel.setType(FailureModel.TYPE_WBL);
+ repairModel.setType(RepairModel.TYPE_WBL);
repairModel.setParam2(paramData.getRepairMttcrOtherParams2());
repairModel.setParam3(paramData.getRepairMttcrOtherParams3());
- break;
- case 3:
- // 浜岄」鍒嗗竷锛堢淮淇病鏈夛級
break;
default:
break;
@@ -1179,8 +1243,7 @@
public List<WeakDto> getReliabilityWeakness(Long fzId, Long taskId, Long productId) {
String filePath = path + "/" + fzId + "/" + "result.xml";
- List<WeakDto> list = new ArrayList<>();
- Map<Long, WeakDto> map = new HashMap<>();
+
String xml;
InputStream in = null;
try {
@@ -1200,50 +1263,46 @@
}
- List<WeakDto> productList = baseDao.getProductList(taskId, productId);
- for (WeakDto dto : productList) {
- map.put(dto.getId(), dto);
- }
+ Map<Long, WeakDto> map = new HashMap<>();
JSONObject xmlJSONObj = XML.toJSONObject(xml);
JSONArray jsonArray = xmlJSONObj.getJSONObject("ResultNodes").getJSONArray("ResultNode");
for (int i = 0; i < jsonArray.size(); i++) {
WeakDto data = new WeakDto();
Long productId1;
- Object nameValue = jsonArray.getJSONObject(i).get("name");
- if (nameValue instanceof Long) {
- productId1 = (Long) nameValue;
- if (map.get(productId1) != null) {
- WeakDto weakDto = map.get(productId1);
- Double mtbfTime = null;
+ String nameValue = jsonArray.getJSONObject(i).get("name").toString();
+ if (StringUtils.isNotBlank(nameValue)) {
+ productId1 = Convert.toLong(nameValue.split("-")[0]);
- Double mtbf = (Double) jsonArray.getJSONObject(i).get("mttf");
- Double mttr = (Double) jsonArray.getJSONObject(i).get("mttr");
- Double msr = (Double) jsonArray.getJSONObject(i).get("msr");
-
- data.setMtbf(mtbf);
- data.setMttr(mttr);
- data.setMsr(msr);
-
- if (weakDto != null) {
- data.setId(weakDto.getId());
- data.setSort(weakDto.getSort());
- data.setPid(weakDto.getPid());
- data.setName(weakDto.getName());
- data.setProductType(weakDto.getProductType());
- data.setTimeRate(weakDto.getTimeRate());
- mtbfTime = mtbf / weakDto.getTimeRate();
+ Double mtbf = (Double) jsonArray.getJSONObject(i).get("mttf");
+ Double mttr = (Double) jsonArray.getJSONObject(i).get("mttr");
+ Double msr = (Double) jsonArray.getJSONObject(i).get("msr");
+ WeakDto weakDto = new WeakDto();
+ weakDto.setId(productId1);
+ weakDto.setMtbf(mtbf);
+ weakDto.setMttr(mttr);
+ weakDto.setMsr(msr);
+ if (map.get(productId1) == null) {
+ map.put(productId1, weakDto);
+ } else {
+ if (weakDto.getMsr() < map.get(productId1).getMsr()) {
+ map.put(productId1, weakDto);
}
-
- data.setMtbfTime(mtbfTime);
- data.setIsWeak(0);
-
- list.add(data);
}
}
}
+ List<WeakDto> productList = baseDao.getProductList(taskId, productId);
+ for (WeakDto item : productList) {
+ WeakDto dto = map.get(item.getId());
+ item.setMtbf(dto.getMtbf());
+ item.setMttr(dto.getMttr());
+ item.setMsr(dto.getMsr());
+ item.setMtbfTime(dto.getMtbf() / item.getTimeRate());
+ item.setIsWeak(0);
+ }
+
List<WeakDto> treeList = new ArrayList<>();
- if (list.size() > 0) {
- treeList = TreeUtils.build(list);
+ if (productList.size() > 0) {
+ treeList = TreeUtils.build(productList);
this.getIsweak(treeList.get(0).getChildren());
}
@@ -1301,7 +1360,7 @@
simulatAssessList.add(simulatAssess);
result = simulateChecK(simulatAssess);
- if (result!=null){
+ if (result != null) {
simulatResult.setType("errorList");
simulatResult.setErrList(result);
return simulatResult;
@@ -1345,7 +1404,7 @@
}
}
xmlJSONObj = XML.toJSONObject(xml);
- simulatAssess.setShowProductId(simulatAssess.getProductId());
+ simulatAssess.setShowProductId(simulatAssess.getProductId().toString());
SimulaDataDto data = this.getResultData(simulatAssess);
return data;
}
@@ -1357,50 +1416,47 @@
samplPeriod = samplPeriod / 60;
JSONArray jsonArray = xmlJSONObj.getJSONObject("ResultNodes").getJSONArray("ResultNode");
for (int i = 0; i < jsonArray.size(); i++) {
- Long productId = null;
- Object nameValue = jsonArray.getJSONObject(i).get("name");
- if (nameValue instanceof Long) {
- productId = (Long) nameValue;
- if (productId.equals(simulatAssess.getShowProductId())) {
- Object object = jsonArray.getJSONObject(i).get("phase");
- List<Double> doubleArray = new ArrayList<>();
- List<Double> xList = new ArrayList<>();
- String availability = null;
- if (object instanceof JSONArray) {
- JSONArray jsonArray2 = jsonArray.getJSONObject(i).getJSONArray("phase");
- for (int j = 0; j < jsonArray2.size(); j++) {
- if (availability != null) {
- availability = availability + " " + jsonArray2.getJSONObject(j).get("availability");
- } else {
- availability = (String) jsonArray2.getJSONObject(j).get("availability");
- }
+ String nameValue = jsonArray.getJSONObject(i).get("name").toString();
+ if (nameValue.equals(simulatAssess.getShowProductId())) {
+ Object object = jsonArray.getJSONObject(i).get("phase");
+ List<Double> doubleArray = new ArrayList<>();
+ List<Double> xList = new ArrayList<>();
+ String availability = null;
+ if (object instanceof JSONArray) {
+ JSONArray jsonArray2 = jsonArray.getJSONObject(i).getJSONArray("phase");
+ for (int j = 0; j < jsonArray2.size(); j++) {
+ if (availability != null) {
+ availability = availability + " " + jsonArray2.getJSONObject(j).get("availability");
+ } else {
+ availability = (String) jsonArray2.getJSONObject(j).get("availability");
}
- } else {
- JSONObject jsonObject2 = jsonArray.getJSONObject(i).getJSONObject("phase");
- availability = (String) jsonObject2.get("availability");
}
-
- String[] arr = availability.split(" ");
- // 閬嶅巻瀛愬瓧绗︿覆鏁扮粍锛屽皢姣忎釜鍏冪礌杞崲涓篸ouble骞跺瓨鍌ㄥ埌double鏁扮粍涓�
- Double j = 0.0;
- for (int a = 0; a < arr.length; a++) {
- j = samplPeriod + j;
- doubleArray.add(Double.parseDouble(arr[a]));
- xList.add(j);
- }
-
- param.setXData(xList);
- param.setYData(doubleArray);
- Double mtbf = (Double) jsonArray.getJSONObject(i).get("mttf");
- Double mttr = (Double) jsonArray.getJSONObject(i).get("mttr");
- Double msr = (Double) jsonArray.getJSONObject(i).get("msr");
- data.setMtbf(mtbf);
- data.setMttr(mttr);
- data.setMsr(msr);
+ } else {
+ JSONObject jsonObject2 = jsonArray.getJSONObject(i).getJSONObject("phase");
+ availability = (String) jsonObject2.get("availability");
}
- data.setCurveParam(param);
+
+ String[] arr = availability.split(" ");
+ // 閬嶅巻瀛愬瓧绗︿覆鏁扮粍锛屽皢姣忎釜鍏冪礌杞崲涓篸ouble骞跺瓨鍌ㄥ埌double鏁扮粍涓�
+ Double j = 0.0;
+ for (int a = 0; a < arr.length; a++) {
+ j = samplPeriod + j;
+ doubleArray.add(Double.parseDouble(arr[a]));
+ xList.add(j);
+ }
+
+ param.setXData(xList);
+ param.setYData(doubleArray);
+ Double mtbf = (Double) jsonArray.getJSONObject(i).get("mttf");
+ Double mttr = (Double) jsonArray.getJSONObject(i).get("mttr");
+ Double msr = (Double) jsonArray.getJSONObject(i).get("msr");
+ data.setMtbf(mtbf);
+ data.setMttr(mttr);
+ data.setMsr(msr);
}
+ data.setCurveParam(param);
}
+
return data;
}
--
Gitblit v1.9.1