jinlin
2024-03-26 21dff46677c9172c98d38192bc2982a8764f65fc
修改
1个文件已修改
8个文件已添加
519 ■■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/taskReliability/SimulatAssess.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/taskReliability/SimulatCurve.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/taskReliability/SimulatData.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/core/config/shiro/ShiroConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java
New file
@@ -0,0 +1,117 @@
package com.zt.life.modules.mainPart.taskReliability.controller;
import cn.hutool.http.HttpUtil;
import com.zt.common.annotation.LogOperation;
import com.zt.common.constant.Constant;
import com.zt.common.annotation.QueryParam;
import com.zt.common.db.query.QueryFilter;
import com.zt.common.servlet.Result;
import com.zt.common.servlet.PageResult;
import com.zt.common.utils.UUIDUtil;
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.modules.mainPart.taskReliability.model.SimulatAssess;
import com.zt.life.modules.mainPart.taskReliability.service.SimulatAssessService;
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 springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
/**
 * simulat_assess
 *
 * @author zt generator
 * @since 1.0.0 2024-03-20
 */
@RestController
@RequestMapping("/taskReliability/SimulatAssess/")
@Api(tags = "simulat_assess")
public class SimulatAssessController {
    @Autowired
    private SimulatAssessService simulatAssessService;
    @GetMapping("page")
    @ApiOperation("分页")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
            @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
            @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 PageResult<SimulatAssess> page(@ApiIgnore @QueryParam QueryFilter queryFilter) {
        return PageResult.ok(simulatAssessService.page(queryFilter));
    }
    @GetMapping("{id}")
    @ApiOperation("信息")
    public Result<SimulatAssess> get(@PathVariable("id") Long id) {
        SimulatAssess data = simulatAssessService.get(id);
        return Result.ok(data);
    }
    @PostMapping("analyze")
    public Result<Long> analyze(@RequestBody SimulatAssess simulatAssess) {
        //效验数据
        ValidatorUtils.validateEntity(simulatAssess, AddGroup.class, DefaultGroup.class);
        Long taskId = UUIDUtil.generateId();
        Integer time = simulatAssess.getSamplPeriod();
        Integer Frequency = simulatAssess.getSimulatFrequency();
        HashMap<String, Object> paramMap = new HashMap<>();
        paramMap.put("taskId", taskId);
        paramMap.put("time", time);
        paramMap.put("Frequency", Frequency);
        paramMap.put("url", "http://localhost:8050/test-project//taskReliability/SimulatAssess/calculate");
        String result1 = HttpUtil.get("http://localhost:8080/system/user/get", paramMap);
        return Result.ok(taskId);
    }
    @GetMapping("calculate")
    public Result calculate(Long taskId, String List, String code, String errorMsg) {
        SimulatAssess simulatAssess = new SimulatAssess();
        simulatAssess.setId(taskId);
        simulatAssess.setCurveData(List);
        simulatAssess.setCode(code);
        simulatAssess.setErrorMsg(errorMsg);
        simulatAssessService.insert(simulatAssess);
        return Result.ok();
    }
    @PutMapping
    @ApiOperation("修改")
    @LogOperation("修改")
    public Result update(@RequestBody SimulatAssess simulatAssess) {
        //效验数据
        ValidatorUtils.validateEntity(simulatAssess, UpdateGroup.class, DefaultGroup.class);
        simulatAssessService.update(simulatAssess);
        return Result.ok();
    }
    @DeleteMapping
    @ApiOperation("删除")
    @LogOperation("删除")
    public Result delete(@RequestBody Long[] ids) {
        //效验数据
        AssertUtils.isArrayEmpty(ids, "id");
        simulatAssessService.delete(ids);
        return Result.ok();
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/SimulatAssessDao.java
New file
@@ -0,0 +1,23 @@
package com.zt.life.modules.mainPart.taskReliability.dao;
import com.zt.common.dao.BaseDao;
import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
 * simulat_assess
 *
 * @author zt generator
 * @since 1.0.0 2024-03-20
 */
@Mapper
public interface SimulatAssessDao extends BaseDao<SimulatAssess> {
    List<SimulatAssess> getList(Map<String, Object> params);
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java
New file
@@ -0,0 +1,54 @@
package com.zt.life.modules.mainPart.taskReliability.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zt.common.entity.BusiEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
 * simulat_assess
 *
 * @author zt generator
 * @since 1.0.0 2024-03-20
 */
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("simulat_assess")
public class SimulatAssess extends BusiEntity {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "上级ID")
    private Long pid;
    @ApiModelProperty(value = "产品节点ID")
    private Long productId;
    @ApiModelProperty(value = "总体任务")
    private String task;
    @ApiModelProperty(value = "数据类型")
    private Integer dataType;
    @ApiModelProperty(value = "是否可修")
    private Integer isRepair;
    @ApiModelProperty(value = "采样周期")
    private Integer samplPeriod;
    @ApiModelProperty(value = "仿真次数")
    private Integer simulatFrequency;
    @ApiModelProperty(value = "")
    private Integer status;
    private String code;
    private String errorMsg;
    private String curveData;
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
New file
@@ -0,0 +1,40 @@
package com.zt.life.modules.mainPart.taskReliability.service;
import com.zt.common.service.BaseService;
import com.zt.life.modules.mainPart.taskReliability.dao.SimulatAssessDao;
import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess;
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
import javax.annotation.Resource;
import java.util.List;
/**
 * simulat_assess
 *
 * @author zt generator
 * @since 1.0.0 2024-03-20
 */
@Service
public class SimulatAssessService  extends BaseService<SimulatAssessDao, SimulatAssess> {
    /**
     * 分页查询
     *
     * @param queryFilter
     * @return
     */
    public List<SimulatAssess> page(QueryFilter queryFilter) {
        return baseDao.getList(queryFilter.getQueryParams());
    }
    /**
     * 删除
     *
     * @param ids
     */
    public void delete(Long[] ids) {
        super.deleteLogic(ids);
    }
}
modules/mainPart/src/main/resources/mapper/taskReliability/SimulatAssessDao.xml
New file
@@ -0,0 +1,20 @@
<?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.SimulatAssessDao">
    <select id="getList" resultType="com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess">
        select a.*
        from simulat_assess a
        <where>
            a.is_delete = 0
            <if test="whereSql!=null">
                and ${whereSql}
            </if>
        </where>
        <if test="orderBySql!=null">
            ORDER BY ${orderBySql}
        </if>
    </select>
</mapper>
web/src/views/modules/taskReliability/SimulatAssess.vue
New file
@@ -0,0 +1,153 @@
<template>
  <div>
    <el-row :gutter="10">
      <el-col :span="6">
        <div class="fa-card-a">
          <div class="mod-taskReliability-simulatAssess">
            <el-form :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="task">
                <zt-select v-model="dataForm.task" :datas="taskList" @change="onTaskSelected"/>
              </zt-form-item>
              <zt-form-item label="数据类型" prop="dataType">
                <zt-dict v-model="dataForm.dataType" dict="dataType"></zt-dict>
              </zt-form-item>
              <zt-form-item label="是否可修" prop="isRepair">
                <zt-dict v-model="dataForm.isRepair" dict="is_or_not"></zt-dict>
              </zt-form-item>
              <zt-form-item label="采样周期" prop="samplPeriod">
                <el-input type="number" :min="1" v-model="dataForm.samplPeriod">
                  <template slot="append">分钟</template>
                </el-input>
              </zt-form-item>
              <zt-form-item label="仿真次数" prop="simulatFrequency">
                <el-input type="number" :min="1" v-model="dataForm.simulatFrequency">
                  <template slot="append">次数</template>
                </el-input>
              </zt-form-item>
              <zt-form-item>
                <zt-button @click="analyze()">仿真分析</zt-button>
                <zt-button>分析结果</zt-button>
              </zt-form-item>
            </el-form>
          </div>
        </div>
      </el-col>
      <el-col :span="17">
        <div style="height: calc(100vh - 165px);background: white">
          <SimulatCurve ref="SimulatCurve"></SimulatCurve>
          <SimulatData></SimulatData>
        </div>
      </el-col>
    </el-row>
  </div>
</template>
<script>
  import SimulatCurve from "./SimulatCurve";
  import SimulatData from "./SimulatData";
  export default {
    data() {
      return {
        productList: [],
        taskList: [],
        dataForm: {
          id: '',
          pid: '',
          productId: '',
          task: '',
          dataType: '',
          isRepair: '',
          samplPeriod: '',
          simulatFrequency: '',
        }
      }
    },
    mounted() {
      this.getProductList()
    },
    components: {
      SimulatCurve,
      SimulatData
    },
    methods: {
      // 获取信息
      onProductSelected(data) {
        console.log(data, ' onProductSelected(data)')
        this.dataForm.productId = data.id
        this.getTaskList()
      },
      onTaskSelected(data) {
        console.log(data, ' onProductSelected(data)')
        this.dataForm.task = data.id
      },
      async getProductList() {
        let res = await this.$http.get('/basicInfo/XhProductModel/getTaskProductList')
        this.productList = res.data
      },
      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
      },
      async analyze() {
        let res = await this.$http.post('/taskReliability/SimulatAssess/analyze', this.dataForm)
        if (res.success) {
          console.log(res.data, 'analyze')
          let stopPolling = false
          if (!stopPolling) {
            let timer = setInterval(async () => {
              let res2 = await this.$http.get(`/taskReliability/SimulatAssess/${res.data}`)
              console.log(res2.data, 'setInterval')
              if (res2.data) {
                if (res2.data.code === '0' || res2.data.errorMsg === '0') {
                  stopPolling = true
                  // 中止轮询
                  clearInterval(timer)
                  alert('已获取')
                  this.$refs.SimulatCurve.initEcharts(res2.data.curveData);
                  // 清除定时器
                } else {
                  stopPolling = true
                  // 中止轮询
                  clearInterval(timer)
                  alert('数据有误,重新输入')
                }
              }
            }, 400)
          }
        }
      }
    }
  }
</script>
<style>
  .mod-taskReliability-simulatAssess {
    height: calc(100vh - 165px);
  }
  .mod-taskReliability-simulatAssess .el-form-item__label {
    line-height: calc((100vh - 165px) / 7);
  }
  .mod-taskReliability-simulatAssess .el-form-item__content {
    line-height: calc((100vh - 165px) / 7);
  }
  .mod-taskReliability-simulatAssess .el-form-item__content > .el-input-group--append {
    vertical-align: baseline;
  }
  div.el-col.el-col-17 {
    background: white;
  }
</style>
web/src/views/modules/taskReliability/SimulatCurve.vue
New file
@@ -0,0 +1,47 @@
<template>
  <div class="mod-taskReliability-taskPhase">
    <div class="echart" id="mychart" :style="myChartStyle"></div>
  </div>
</template>
<script>
  import * as echarts from "echarts";
  export default {
    name: 'SimulatCurve',
    data() {
      return {
        myChart: {},
        myChartStyle: {float: "left", width: "100%", height: "400px"} //图表样式
      }
    },
    components: {},
    methods: {
      initEcharts(CurveData) {
        console.log(eval(CurveData), 'initEcharts(CurveData)')
        const option = {
          xAxis: {
            data: eval(CurveData)[0]
          },
          yAxis: {},
          series: [
            {
              data: eval(CurveData)[1],
              type: 'line',
              smooth: true
            }
          ]
        };
        this.myChart = echarts.init(document.getElementById("mychart"));
        this.myChart.setOption(option);
        //随着屏幕大小调节图表
        window.addEventListener("resize", () => {
          this.myChart.resize();
        });
      }
    }
  }
</script>
<style>
</style>
web/src/views/modules/taskReliability/SimulatData.vue
New file
@@ -0,0 +1,64 @@
<template>
    <zt-table-wraper ref="tableObj" defaultNotQuery="true" query-url=""
                     :paging='false'
                     delete-url="" v-slot="{ table }">
      <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
      </el-form>
      <el-table v-loading="table.dataLoading" :data="table.dataList" height="400"
                 @selection-change="table.selectionChangeHandle">
        <el-table-column prop="name" label="名称" />
        <el-table-column prop="totalTime" label="总时间"/>
        <el-table-column prop="faultNum" label="故障次数"/>
        <el-table-column prop="repairTime" label="修理时间"/>
        <el-table-column prop="availability" label="可用度"/>
        <el-table-column prop="mtbcf" label="MTBCF"/>
        <el-table-column prop="mttcr" label="MTTCR"/>
      </el-table>
    </zt-table-wraper>
</template>
<script>
  export default {
    name: 'SimulatData',
    data() {
      return {
        productList: [],
        dataForm: {
          productId: ''
        }
      }
    },
    components: {
    },
    mounted() {
      this.getTaskProductList()
    },
    methods: {
      init() {
      },
      add() {
        this.$refs.AddOrUpdate.$refs.dialog.init(null,{productId: this.dataForm.productId})
      },
      selectTask(row){
        this.$emit('onTaskSelected',row)
      },
      async getTaskProductList() {
        let res = await this.$http.get('/basicInfo/XhProductModel/getTaskProductList')
        this.productList = res.data
        console.log(this.productList, ' async getTaskProductList()')
      },
      onProductSelected(data){
        console.log(data, ' onProductSelected(data)')
        this.dataForm.productId = data.id
        this.$refs.tableObj.query()
      }
    }
  }
</script>
<style>
</style>
zt/core/src/main/java/com/zt/core/config/shiro/ShiroConfig.java
@@ -115,6 +115,7 @@
        filterMap.put("/product/getShipList","anon");
        filterMap.put("/teamGroup/class/tree","anon");
        filterMap.put("/taskReliability/SimulatAssess/calculate","anon");