xyc
2024-08-02 a43fd8f15c7da7f4a14ba4ebb79970dad4ce1fae
Merge remote-tracking branch 'origin/master'

# Conflicts:
# modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
8个文件已修改
378 ■■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/XhProductModelDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/XhProductModel.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java 139 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/taskReliability/TimeDiagram.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/XhProductModelDao.java
@@ -36,4 +36,6 @@
    List<XhProductModel> getProductTree(Long shipId);
    void deleteByShipId(Long shipId);
    List<XhProductModel> getProductPath(Long shipId);
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/XhProductModel.java
@@ -49,10 +49,15 @@
    private String equipType;
    private String namePath;
    @ApiModelProperty(value = "排序")
    private Integer sort;
    @ApiModelProperty(value = "子节点")
    @TableField(exist = false)
    private List<XhProductModel> children = new ArrayList<>();
    @TableField(exist = false)
    private Long paramId;
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java
@@ -136,8 +136,8 @@
        Map<String, Object> errMap = new HashMap<>();
        Map<String, Integer> reliabType = new HashMap<>();
        reliabType.put("指数分布", 1);
        reliabType.put("二项分布", 2);
        reliabType.put("威布尔分布", 3);
        reliabType.put("二项分布", 3);
        reliabType.put("威布尔分布", 2);
        Map<String, Integer> repairType = new HashMap<>();
        repairType.put("指数分布", 1);
        repairType.put("威布尔分布", 2);
@@ -146,14 +146,14 @@
        isOrNot.put("否", 0);
        //获取是否有数据,如果有则删除数据
        List<XhProductModel> productList = this.getByShipId(shipId);
     /*   List<XhProductModel> productList = this.getByShipId(shipId);
        List<ParamData> dataList = paramDataService.getByShipId(shipId);
        if (productList.size() > 0) {
            this.deleteByShipId(shipId);
        }
        if (dataList.size() > 0) {
            paramDataService.deleteByShipId(shipId);
        }
        }*/
        try {
            // 获取导入文件的后缀名
@@ -169,33 +169,41 @@
            int sheets = workbook.getNumberOfSheets();
            //List<LifeManagement> lifeManagementList = new ArrayList<LifeManagement>();
            String xt = null;
            String fxt = null;
            Long xtId = null;
            Long fxtId = null;
            Long curXtId = null;
            Long curFxtId = null;
            Long curSbId = null;
            String curXtName = "";
            String curFxtName = "";
            Map<String, XhProductModel> modelMap = new HashMap<>();
            List<XhProductModel> prductList = baseDao.getProductPath(shipId);
            //导入预计参数
            ParamData itemEntity1 = new ParamData();
            itemEntity1.setShipId(shipId);
            itemEntity1.setProductId(shipId);
            itemEntity1.setPageCode("expect");
            paramDataService.insert(itemEntity1);
            for (XhProductModel product : prductList) {
                if (StringUtils.isNotBlank(product.getNamePath())) {
                    modelMap.put(product.getNamePath(), product);
                }
            }
            boolean insertXt;
            boolean insertFxt;
            Boolean insertSb;
            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++) {
                    insertXt = false;
                    insertFxt = false;
                    insertSb = false;
                    CacheUtils.put(progressId, "speed", CommonUtils.getPercent(j, num));
                    CacheUtils.put(progressId, "msg", "共" + num + "行,已完成第" + j + "行");
                    boolean isToggleXt = false;
                    boolean isToggleFxt = false;
                  /*  boolean isToggleXt = false;
                    boolean isToggleFxt = false;*/
                    row1 = j + 1;
                    String pattern = "yyyy-MM-dd";
                    Row row = sheet.getRow(row1);
                    String sort = com.zt.core.shiro.ImportUtil.getCellValue(row, 0, pattern); //序号
                    if (StringUtils.isNotBlank(com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern))) {
/*                    if (StringUtils.isNotBlank(com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern))) {
                        if (!com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern).equals(xt)) {
                            isToggleXt = true;
                            xtId = UUIDUtil.generateId();
@@ -216,8 +224,10 @@
                            fxt = null;
                            isToggleFxt = true;
                        }
                    }
                    }*/
                    String xt = com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern); //系统
                    String fxt = com.zt.core.shiro.ImportUtil.getCellValue(row, 2, pattern);
                    String sb = com.zt.core.shiro.ImportUtil.getCellValue(row, 3, pattern); //设备
                    String equipType = com.zt.core.shiro.ImportUtil.getCellValue(row, 4, pattern); //设备类型
                    String reliabDistribType = com.zt.core.shiro.ImportUtil.getCellValue(row, 5, pattern); //可靠性分布类型
@@ -236,10 +246,54 @@
                    String repairMttcrOtherParams2 = com.zt.core.shiro.ImportUtil.getCellValue(row, 18, pattern); //mttcr其他参数2
                    String repairMttcrOtherParams3 = com.zt.core.shiro.ImportUtil.getCellValue(row, 19, pattern); //mttcr其他参数3
                    if (StringUtils.isBlank(sb))
                        continue;
                    if (StringUtils.isBlank(xt)) {
                        if (StringUtils.isBlank(curXtName))
                            continue;
                        else
                            xt = curXtName;
                    } else {
                        if (StringUtils.isBlank(curXtName) || !xt.equals(curXtName)) {
                            curXtName = xt;
                            if (modelMap.get(curXtName) == null) {
                                curXtId = UUIDUtil.generateId();
                                insertXt = true;
                            } else {
                                curXtId = modelMap.get(curXtName).getId();
                            }
                            curFxtId = null;
                            curFxtName = "";
                        }
                    }
                    String fxtPath = "";
                    if (StringUtils.isNotBlank(fxt) && !fxt.equals(curFxtName)) {
                        curFxtName = fxt;
                        fxtPath = curXtName + "," + curFxtName;
                        if (modelMap.get(fxtPath) == null) {
                            curFxtId = UUIDUtil.generateId();
                            insertFxt = true;
                        } else {
                            curFxtId = modelMap.get(fxtPath).getId();
                        }
                    }
                    Long paramId = null;
                    String sbPath = curXtName + "," + (StringUtils.isBlank(curFxtName) ? "" : curFxtName + ",") + sb;
                    if (modelMap.get(sbPath) == null) {
                        curSbId = UUIDUtil.generateId();
                        insertSb = true;
                    } else {
                        curSbId = modelMap.get(sbPath).getId();
                        paramId = modelMap.get(sbPath).getParamId();
                    }
                    if (StringUtils.isEmpty(sb)) {
                        com.zt.life.util.ImportUtil.updateErrMap(errMap, "没有填写设备名称", sheetName, row1);
                        continue;
                    }
                    //导入型号产品结果库
                    XhProductModel xhProductModel = new XhProductModel();
@@ -247,63 +301,63 @@
                    xhProductModel.setShipId(shipId);
                    //添加系统
                    if (isToggleXt) {
                    if (insertXt) {
                        xhProductModel.setPid(shipId);
                        xhProductModel.setId(xtId);
                        xhProductModel.setId(curXtId);
                        xhProductModel.setName(xt);
                        xhProductModel.setProductType("3");
                        xhProductModel.setSort(Integer.valueOf(sort));
                        defultImg = sysPictureBaseService.getDefaultImg(3).getId();
                        xhProductModel.setOperatImg(defultImg);
                        xhProductModel.setNamePath(curXtName);
                        this.insert(xhProductModel);
                        //导入预计参数
                        ParamData itemEntity = new ParamData();
                        itemEntity.setShipId(shipId);
                        itemEntity.setProductId(xtId);
                        itemEntity.setProductId(curXtId);
                        itemEntity.setPageCode("expect");
                        paramDataService.insert(itemEntity);
                    }
                    if (StringUtils.isNotBlank(fxt) && isToggleFxt) {
                        xhProductModel.setPid(xtId);
                        xhProductModel.setId(fxtId);
                    if (insertFxt) {
                        xhProductModel.setPid(curXtId);
                        xhProductModel.setId(curFxtId);
                        xhProductModel.setName(fxt);
                        xhProductModel.setProductType("4");
                        xhProductModel.setSort(Integer.valueOf(sort));
                        defultImg = sysPictureBaseService.getDefaultImg(4).getId();
                        xhProductModel.setOperatImg(defultImg);
                        xhProductModel.setNamePath(fxtPath);
                        this.insert(xhProductModel);
                        //导入预计参数
                        ParamData itemEntity = new ParamData();
                        itemEntity.setShipId(shipId);
                        itemEntity.setProductId(fxtId);
                        itemEntity.setProductId(curFxtId);
                        itemEntity.setPageCode("expect");
                        paramDataService.insert(itemEntity);
                    }
                    Long sbId = UUIDUtil.generateId();
                    if (StringUtils.isNotBlank(fxt)) {
                        xhProductModel.setPid(fxtId);
                    } else {
                        xhProductModel.setPid(xtId);
                    if (insertSb) {
                        xhProductModel.setPid(curFxtId == null ? curXtId : curFxtId);
                        xhProductModel.setId(curSbId);
                        xhProductModel.setName(sb);
                        xhProductModel.setEquipType(equipType);
                        xhProductModel.setProductType("5");
                        xhProductModel.setSort(Integer.valueOf(sort));
                        defultImg = sysPictureBaseService.getDefaultImg(5).getId();
                        xhProductModel.setOperatImg(defultImg);
                        xhProductModel.setNamePath(sbPath);
                        this.insert(xhProductModel);
                    }
                    xhProductModel.setId(sbId);
                    xhProductModel.setName(sb);
                    xhProductModel.setEquipType(equipType);
                    xhProductModel.setProductType("5");
                    xhProductModel.setSort(Integer.valueOf(sort));
                    defultImg = sysPictureBaseService.getDefaultImg(5).getId();
                    xhProductModel.setOperatImg(defultImg);
                    this.insert(xhProductModel);
                    //导入预计参数
                    ParamData itemEntity = new ParamData();
                    //绑定设备ID
                    itemEntity.setShipId(shipId);
                    itemEntity.setProductId(sbId);
                    itemEntity.setProductId(curSbId);
                    itemEntity.setPageCode("expect");
                    itemEntity.setReliabDistribType(reliabType.get(reliabDistribType));
                    itemEntity.setBasicJoinCompute(isOrNot.get(basicJoinCompute));
@@ -346,7 +400,12 @@
                    if (StringUtils.isNotBlank(repairMttcrOtherParams3)) {
                        itemEntity.setRepairMttcrOtherParams3(Double.valueOf(repairMttcrOtherParams3));
                    }
                    paramDataService.insert(itemEntity);
                    if (modelMap.get(sbPath) == null) {
                        paramDataService.insert(itemEntity);
                    } else {
                        itemEntity.setId(paramId);
                        paramDataService.update(itemEntity);
                    }
                }
            }
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java
@@ -3,6 +3,7 @@
import com.zt.common.dao.BaseDao;
import com.zt.life.modules.mainPart.taskReliability.dto.ModelDto;
import com.zt.life.modules.mainPart.taskReliability.dto.ProductStatusDto;
import com.zt.life.modules.mainPart.taskReliability.model.ModelRbd;
import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess;
import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssessTaskPhaseModel;
import com.zt.life.modules.mainPart.taskReliability.model.TimeDiagram;
@@ -36,4 +37,6 @@
    List<TimeDiagram> getTimeDiagram(Map<String, Object> params);
    List<SimulatAssessTaskPhaseModel> getModelList(Long productId, Long fzId);
    ModelRbd getModelByProductGk(Long gkId, Long productId);
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
@@ -27,6 +27,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zt.life.modules.mainPart.taskReliability.dto.StatusDto;
import com.zt.life.modules.mainPart.taskReliability.model.ModelRbd;
import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess;
import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssessTaskPhaseModel;
import com.zt.life.modules.mainPart.taskReliability.model.TimeDiagram;
@@ -44,9 +45,10 @@
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.stream.Collectors;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -101,7 +103,6 @@
    @Value("${data.reliaSimLib.resultHome}")
    private String path;
    private JSONObject dialgramJson;
@@ -254,13 +255,21 @@
            } else {
                setlineXy(modelJson2, x2, y1, x2, y2, null);
            }
            jsonArray.add(modelJson2);
            //判断是否有模型
            ModelRbd modelRbd = baseDao.getModelByProductGk(modelDto.getGkId(), productId);
            String modelName = "未用";
            String modelId = "";
            if (modelRbd != null) {
                modelName = modelRbd.getModelName();
                modelId = modelRbd.getId().toString();
            }
            JSONObject textJson = new JSONObject(templetsStrMap.get("text"));
            JsonUtils2.setJsonValueByPath(textJson, "data/dataId".split("/"), modelDto.getGkId());
            JsonUtils2.setJsonValueByPath(textJson, "data/dataId".split("/"), modelId);
            JsonUtils2.setJsonValueByPath(textJson, "id".split("/"), UUIDUtil.generateId().toString());
            JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/text".split("/"), modelDto.getGkName());
            JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/text".split("/"), modelName);
            JsonUtils2.setJsonValueByPath(textJson, "position/x".split("/"), x1 + 30);
            JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y1);
            jsonArray.add(textJson);
modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml
@@ -3,7 +3,10 @@
<mapper namespace="com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao">
    <delete id="deleteByShipId">
        delete from product_model where ship_id =${shipId} and product_type &gt; 2
        delete
        from product_model
        where ship_id = ${shipId}
          and product_type &gt; 2
    </delete>
    <select id="getList" resultType="com.zt.life.modules.mainPart.basicInfo.model.XhProductModel">
@@ -46,23 +49,23 @@
          and a.product_type = 1
    </select>
    <select id="getProduct" resultType="com.zt.life.modules.mainPart.basicInfo.model.ProductImg">
        SELECT a.operat_img                as imgPath,
               a.`NAME`                    as imgName,
               'node'                      as nodeType,
               ''                          as nodeTypeExt,
               s.svg_content               as svgContent,
               s.width                     as imgWidth,
               s.height                    as imgHeight,
               a.id                        as dataId,
               ''                          as statusImg,
               d.dict_code                 as productType,
               p.repairable                as isRepair,
               p.task_mtbcf_accept         as taskMtbcf,
        SELECT a.operat_img                 as imgPath,
               a.`NAME`                     as imgName,
               'node'                       as nodeType,
               ''                           as nodeTypeExt,
               s.svg_content                as svgContent,
               s.width                      as imgWidth,
               s.height                     as imgHeight,
               a.id                         as dataId,
               ''                           as statusImg,
               d.dict_code                  as productType,
               p.repairable                 as isRepair,
               p.task_mtbcf_accept          as taskMtbcf,
               p.task_mtbcf_other_params2   as taskMtbcfOtherParams2,
               p.task_mtbcf_other_params3   as taskMtbcfOtherParams3,
               p.reliab_distrib_type       as reliabDistribType,
               p.repair_distrib_type       as repairDistribType,
               p.repair_mttcr              as repairMttcr,
               p.reliab_distrib_type        as reliabDistribType,
               p.repair_distrib_type        as repairDistribType,
               p.repair_mttcr               as repairMttcr,
               p.repair_mttcr_other_params2 as repairMttcrOtherParams2,
               p.repair_mttcr_other_params3 as repairMttcrOtherParams3
        FROM product_model a
@@ -94,10 +97,10 @@
            where product_id in (
                select id
                from product_model
                where is_delete = 0 and pid = ${productId}
                where is_delete = 0
                  and pid = ${productId}
            )
        )
    </select>
@@ -129,4 +132,13 @@
            and a.ship_id = #{shipId}
        </if>
    </select>
    <select id="getProductPath" resultType="com.zt.life.modules.mainPart.basicInfo.model.XhProductModel">
        select a.*, b.id as paramId
        from product_model a,
             param_data b
        where a.IS_DELETE = 0
          and b.IS_DELETE = 0
          and a.ship_id = ${shipId}
          and a.id = b.product_id
    </select>
</mapper>
modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
@@ -104,11 +104,23 @@
          and d.model_id = e.id
        order by c.CREATE_DATE
    </select>
    <select id="getModelList" resultType="com.zt.life.modules.mainPart.taskReliability.model.SimulatAssessTaskPhaseModel">
    <select id="getModelList"
            resultType="com.zt.life.modules.mainPart.taskReliability.model.SimulatAssessTaskPhaseModel">
        SELECT *
        FROM simulat_assess_task_phase_model
        WHERE fz_id = ${fzId}
          AND is_delete = 0
        order by sort
    </select>
    <select id="getModelByProductGk" resultType="com.zt.life.modules.mainPart.taskReliability.model.ModelRbd">
        select a.*
        from model_rbd a,
             operat_condit_model b
        where a.id = b.model_id
          and b.operat_condit_id = ${gkId}
          and b.product_id = ${productId}
          and a.is_delete = 0
          and b.is_delete = 0
        limit 1
    </select>
</mapper>
web/src/views/modules/taskReliability/TimeDiagram.vue
@@ -118,7 +118,6 @@
    },
    mounted() {
      this.getProductList()
      this.init()
    },
    components: {
      ProductModelTree,
@@ -151,19 +150,6 @@
              })
            }
          },
          // translating: {
          //   restrict(view) {
          //     const cell = view.cell
          //     if (cell.isNode()) {
          //       const parent = cell.getParent()
          //       if (parent) {
          //         return parent.getBBox()
          //       }
          //     }
          //
          //     return null
          //   },
          // },
          onToolItemCreated({tool}) {
            const handle = tool
            const options = handle.options
@@ -173,9 +159,6 @@
          },
          autoResize: true,
          history: true,
          // panning: {
          //   enabled: true,
          // },
          scroller: {
            enabled: true,
            pageVisible: true,
@@ -230,21 +213,10 @@
                      text: ''
                    }
                  },
                  // position: {
                  //   distance: 0.5,
                  //   angle: 180,
                  //   options: {
                  //     keepGradient: true,
                  //     ensureLegibility: true
                  //   }
                  // }
                }],
                zIndex: 0,
              })
            },
            // validateConnection({targetMagnet}) {
            //   return !!targetMagnet
            // },
          },
          highlighting: {
            magnetAdsorbed: {
@@ -345,133 +317,14 @@
                stroke: '#5F95FF',
                fill: '#EFF4FF',
              },
              // title:{
              //   text:'',
              //   refX: 40,
              //   refY: 38,
              //   fontSize: 20,
              //   fill: '#262626',
              //   'text-anchor': 'start',
              // },
              text: {
                // refX: 40,
                // refY: 20,
                fontSize: 20,
                fill: '#262626',
                // 'text-anchor': 'start',
              },
            },
            // markup: [
            //   {
            //     tagName: 'polygon',
            //     selector: 'body',
            //   },
            //   {
            //     tagName: 'text',
            //     selector: 'title',
            //   },
            //   {
            //     tagName: 'text',
            //     selector: 'text',
            //   },
            // ],
            ports: {
              ...this.ports
              // items: [
              //   {
              //     group: 'top',
              //   },
              //   {
              //     group: 'bottom',
              //   },
              // ],
            },
          },
          true,
        )
        //
        Graph.registerNode(
          'custom-circle',
          {
            inherit: 'ellipse',
            width: 120,
            height: 120,
            data: {
              dataId: '',
              finishDate: ''
            },
            attrs: {
              body: {
                strokeWidth: 1,
                stroke: '#5F95FF',
                fill: '#EFF4FF',
              },
              //日期
              title: {
                text: '',
                fontSize: 12,
                fill: '#262626',
                refX: 0.5,
                refY: '100%',
                refY2: -10,
                textAnchor: 'middle',
                textVerticalAnchor: 'bottom',
              },
              // 名称
              text: {
                // fontFamily: '仿宋',
                fontSize: 20,
                fill: '#262626',
                textWrap: {
                  width: 80,      // 宽度为 80px换行
                  ellipsis: false,  // 文本超出显示范围时,自动添加省略号
                  breakWord: true, // 是否截断单词
                }
              },
            },
            markup: [
              {
                tagName: 'ellipse',
                selector: 'body',
              },
              {
                tagName: 'text',
                selector: 'title',
              },
              {
                tagName: 'text',
                selector: 'text',
              },
            ],
            ports: {...this.ports},
          },
          true,
        )
        Graph.registerNode(
          'custom-circle1',
          {
            inherit: 'ellipse',
            width: 65,
            height: 65,
            data: {
              dataId: '',
              finishDate: ''
            },
            attrs: {
              body: {
                strokeWidth: 1,
                stroke: '#5F95FF',
                fill: '#EFF4FF',
              },
              //日期
              text: {
                // fontFamily: '仿宋',
                fontSize: 12,
                text: '日期节点',
                fill: '#262626',
              },
            },
            ports: {...this.ports},
          },
          true,
        )
@@ -873,6 +726,7 @@
        this.dataForm.simulatFrequency = result.data.simulatFrequency
      },
      async getDiagram() {
        this.init()
        let params = {
          productId: this.dataForm.productId,
          taskId: this.dataForm.taskModelId,