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");