From c2f855eb59e9d19d4957bc4cb51e3ca63d4ce4c4 Mon Sep 17 00:00:00 2001 From: jinlin <jinlin> Date: 星期二, 16 七月 2024 14:51:24 +0800 Subject: [PATCH] 修改 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/controller/ParamDataBasicController.java | 97 +++++++++++++ modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java | 8 - modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java | 2 web/src/views/modules/basicInfo/XhProductModel.vue | 1 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ParamData.java | 13 + modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/service/ParamDataBasicService.java | 49 +++++++ modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml | 91 +++++++++++++ modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml | 5 web/src/views/modules/baseReliability/ParamDataBasic.vue | 120 +++++++++++++++++ web/src/views/modules/basicInfo/ParamData.vue | 4 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/dao/ParamDataBasicDao.java | 26 +++ 11 files changed, 403 insertions(+), 13 deletions(-) diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/controller/ParamDataBasicController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/controller/ParamDataBasicController.java new file mode 100644 index 0000000..3886d12 --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/controller/ParamDataBasicController.java @@ -0,0 +1,97 @@ +package com.zt.life.modules.mainPart.baseReliability.controller; + + +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.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.baseReliability.service.ParamDataBasicService; +import com.zt.life.modules.mainPart.basicInfo.model.ParamData; +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 java.util.List; + + +/** + * param_data_basic + * + * @author zt generator + * @since 1.0.0 2024-07-11 + */ +@RestController +@RequestMapping("/baseReliability/ParamDataBasic/") +@Api(tags="param_data_basic") +public class ParamDataBasicController { + @Autowired + private ParamDataBasicService paramDataBasicService; + + @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), + @ApiImplicitParam(name = "shipId", value = "鑸笽D", dataType = Constant.QT.LONG), + @ApiImplicitParam(name = "isRecal", value = "鏄惁閲嶆柊璁$畻", dataType = Constant.QT.INT), + }) + public Result<List<ParamData>> page(@ApiIgnore @QueryParam QueryFilter queryFilter){ + if ((Integer) queryFilter.getParams().get("isRecal")==1){ + Long shipId =(Long) queryFilter.getParams().get("shipId"); + paramDataBasicService.compute(shipId); + } + return Result.ok(paramDataBasicService.page(queryFilter)); + } + + @GetMapping("{id}") + @ApiOperation("淇℃伅") + public Result<ParamData> get(@PathVariable("id") Long id){ + ParamData data = paramDataBasicService.get(id); + + return Result.ok(data); + } + + @PostMapping + @ApiOperation("鏂板") + @LogOperation("鏂板") + public Result insert(@RequestBody ParamData paramDataBasic){ + //鏁堥獙鏁版嵁 + ValidatorUtils.validateEntity(paramDataBasic, AddGroup.class, DefaultGroup.class); + paramDataBasicService.insert(paramDataBasic); + + return Result.ok(); + } + + @PutMapping + @ApiOperation("淇敼") + @LogOperation("淇敼") + public Result update(@RequestBody ParamData paramDataBasic){ + //鏁堥獙鏁版嵁 + ValidatorUtils.validateEntity(paramDataBasic, UpdateGroup.class, DefaultGroup.class); + paramDataBasicService.update(paramDataBasic); + + return Result.ok(); + } + + @DeleteMapping + @ApiOperation("鍒犻櫎") + @LogOperation("鍒犻櫎") + public Result delete(@RequestBody Long[] ids){ + //鏁堥獙鏁版嵁 + AssertUtils.isArrayEmpty(ids, "id"); + paramDataBasicService.delete(ids); + + return Result.ok(); + } + +} diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/dao/ParamDataBasicDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/dao/ParamDataBasicDao.java new file mode 100644 index 0000000..668bcf3 --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/dao/ParamDataBasicDao.java @@ -0,0 +1,26 @@ +package com.zt.life.modules.mainPart.baseReliability.dao; + +import com.zt.common.dao.BaseDao; +import com.zt.life.modules.mainPart.basicInfo.model.ParamData; +import org.apache.ibatis.annotations.Mapper; + + +import java.util.List; +import java.util.Map; + + +/** + * param_data_basic + * + * @author zt generator + * @since 1.0.0 2024-07-11 + */ +@Mapper +public interface ParamDataBasicDao extends BaseDao<ParamData> { + + List<ParamData> getAI(Map<String, Object> params); + + void compute(Long shipId,Integer productType); + + void compute2(Long shipId); +} diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/service/ParamDataBasicService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/service/ParamDataBasicService.java new file mode 100644 index 0000000..76647fb --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/baseReliability/service/ParamDataBasicService.java @@ -0,0 +1,49 @@ +package com.zt.life.modules.mainPart.baseReliability.service; + +import com.zt.common.service.BaseService; +import com.zt.common.utils.TreeUtils; +import com.zt.common.utils.TreeUtils2; +import com.zt.life.modules.mainPart.baseReliability.dao.ParamDataBasicDao; +import com.zt.life.modules.mainPart.basicInfo.model.ParamData; +import org.springframework.stereotype.Service; +import com.zt.common.db.query.QueryFilter; + +import java.util.List; + + +/** + * param_data_basic + * + * @author zt generator + * @since 1.0.0 2024-07-11 + */ +@Service +public class ParamDataBasicService extends BaseService<ParamDataBasicDao, ParamData> { + + /** + * 鍒嗛〉鏌ヨ + * + * @param queryFilter + * @return + */ + public List<ParamData> page(QueryFilter queryFilter) { + List<ParamData> list = baseDao.getAI(queryFilter.getQueryParams()); + return TreeUtils.build(list); + } + + /** + * 鍒犻櫎 + * + * @param ids + */ + public void delete(Long[] ids) { + super.deleteLogic(ids); + } + + public void compute(Long shipId) { + baseDao.compute(shipId,4); + baseDao.compute(shipId,3); + baseDao.compute(shipId,2); + baseDao.compute2(shipId); + } +} diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java index fa7a623..bc3297c 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java @@ -24,4 +24,6 @@ List<ParamData> getByShipId(Long shipId); void deleteByShipId(Long shipId); + + void recalculate(Long shipId); } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ParamData.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ParamData.java index ca143f3..31cfd74 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ParamData.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ParamData.java @@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.zt.common.entity.BusiEntity; +import com.zt.common.entity.TreeNode; +import com.zt.common.entity.TreeNode2; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.ArrayList; import java.util.List; /** @@ -18,7 +21,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("param_data") -public class ParamData extends BusiEntity { +public class ParamData extends BusiEntity implements TreeNode<ParamData> { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "婧怚D") @@ -106,6 +109,8 @@ @ApiModelProperty(value = "杩愯鏃堕棿") private Double runTime; + private Double ai; + @TableField(exist = false) private Long productIdInit; @@ -114,4 +119,10 @@ @TableField(exist = false) private List<ParamData> dataThreeList; + @TableField(exist = false) + private Long pid; + + @ApiModelProperty(value = "瀛愯妭鐐�") + @TableField(exist = false) + private List<ParamData> children = new ArrayList<>(); } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java index 61a0a01..31d1a1e 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java @@ -228,14 +228,6 @@ com.zt.life.util.ImportUtil.updateErrMap(errMap, "娌℃湁濉啓鏄惁鍙傚姞璁$畻", sheetName, row1); continue; } - if (StringUtils.isEmpty(basicMtbfRegulate)) { - com.zt.life.util.ImportUtil.updateErrMap(errMap, "娌℃湁濉啓mtbf", sheetName, row1); - continue; - } - if (StringUtils.isEmpty(taskMtbcfRegulate)) { - com.zt.life.util.ImportUtil.updateErrMap(errMap, "娌℃湁濉啓mtbcf", sheetName, row1); - continue; - } if (StringUtils.isEmpty(repairable)) { com.zt.life.util.ImportUtil.updateErrMap(errMap, "娌℃湁濉啓鏄惁鍙淮淇�", sheetName, row1); continue; diff --git a/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml b/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml new file mode 100644 index 0000000..fe5ab9c --- /dev/null +++ b/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml @@ -0,0 +1,91 @@ +<?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.baseReliability.dao.ParamDataBasicDao"> + <update id="compute"> + update param_data f, + ( + SELECT + c.*, + CASE + WHEN WeightedFailure IS NOT NULL + AND WeightedFailure > 0 THEN + 1 / WeightedFailure ELSE 0 + END AS basic_mtbf_regulate, + CASE + WHEN WeightedFailure IS NOT NULL + AND WeightedFailure > 0 THEN + WeightedMTTR / WeightedFailure ELSE 0 + END AS repair_mttcr + FROM + ( + SELECT + c.id, + c.name, + sum( + CASE + WHEN b.product_type < 5 THEN + 1 * 1 / basic_mtbf_regulate + WHEN a.reliab_distrib_type = 1 THEN + 1 * a.basic_mtbf_operating_ratio / a.basic_mtbf_regulate + WHEN a.reliab_distrib_type = 2 THEN + 1 * a.basic_mtbf_operating_ratio / a.basic_mtbf_regul_succ_rate + ELSE 0 END + ) AS WeightedFailure, + sum( + CASE + WHEN b.product_type < 5 THEN + 1 * 1 * a.repair_mttcr / a.basic_mtbf_regulate + WHEN a.repairable = 1 and a.reliab_distrib_type = 1 THEN + 1 * a.basic_mtbf_operating_ratio * a.repair_mttcr / a.basic_mtbf_regulate + WHEN a.repairable = 1 and a.reliab_distrib_type = 2 THEN + 1 * a.basic_mtbf_operating_ratio * a.repair_mttcr / a.basic_mtbf_regul_succ_rate + ELSE 0 + END + ) AS WeightedMttr + FROM + param_data a, + product_model b, + product_model c + WHERE 1 = 1 + and c.ship_id = ${shipId} and c.product_type = ${productType} and c.is_delete = 0 + and b.ship_id = ${shipId} and b.pid = c.id and b.is_delete = 0 + and a.IS_DELETE = 0 and a.product_id = b.id + AND (b.product_type =5 AND a.basic_join_compute = 1 || b.product_type < 5) + AND ((a.reliab_distrib_type =1 + AND a.basic_mtbf_regulate > 0 + ) + OR ( a.reliab_distrib_type = 2 + AND a.basic_mtbf_regul_succ_rate > 0 + )) + + GROUP BY c.id,c.name + ) c + )d set f.basic_mtbf_regulate = d.basic_mtbf_regulate, + f.repair_mttcr = d.repair_mttcr + where f.product_id = d.id; + </update> + + <update id="compute2"> + UPDATE param_data a, product_model b + SET ai = basic_mtbf_regulate / (basic_mtbf_regulate + repair_mttcr) + where b.ship_id = ${shipId} + </update> + + <select id="getAI" resultType="com.zt.life.modules.mainPart.basicInfo.model.ParamData"> + SELECT a.NAME, + a.id, + a.pid, + b.ai, + b.basic_mtbf_regulate, + b.repair_mttcr, + b.basic_mtbf_operating_ratio + FROM product_model a + LEFT JOIN param_data b ON b.product_id = a.id and b.is_delete = 0 + where a.is_delete = 0 + and a.ship_id = ${shipId} + or a.id =${shipId} + ORDER BY a.product_type, a.sort + </select> + +</mapper> diff --git a/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml b/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml index 78c92b2..02d292a 100644 --- a/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml +++ b/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml @@ -2,8 +2,11 @@ <!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.basicInfo.dao.ParamDataDao"> + <delete id="deleteByShipId"> - delete from param_data where ship_id =${shipId} + delete + from param_data + where ship_id = ${shipId} </delete> <select id="getList" resultType="com.zt.life.modules.mainPart.basicInfo.model.ParamData"> diff --git a/web/src/views/modules/baseReliability/ParamDataBasic.vue b/web/src/views/modules/baseReliability/ParamDataBasic.vue new file mode 100644 index 0000000..36aa965 --- /dev/null +++ b/web/src/views/modules/baseReliability/ParamDataBasic.vue @@ -0,0 +1,120 @@ +<template> + <div> + <el-row :gutter="5"> + <el-col :span="5"> + <div class="fa-card-a" style="margin-right: 5px;height: calc(100vh - 123px)"> + <product-model-tree ref="modelTree" @on-selected="onProductSelected" @on-default="onDefault" showXdy="false" + basic="3"/> + </div> + </el-col> + <el-col :span="19"> + <div class="mod-baseReliability-paramDataBasic fa-card-a" style="margin-left: 5px;"> + <zt-table-wraper :defaultNotQuery='true' ref="tableObj" query-url="/baseReliability/ParamDataBasic/page" + delete-url="/baseReliability/ParamDataBasic" + v-slot="{ table }" :paging='false'> + <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()"> + <el-form-item> + <!--<zt-button type="query" @click="table.query()"/> + <zt-button type="add" perm="baseReliability:add" @click="table.editHandle()"/> + <zt-button type="delete" perm="baseReliability:delete" @click="table.deleteHandle()"/>--> + <zt-button type="primary" @click="recalculate()">閲嶆柊璁$畻</zt-button> + </el-form-item> + </el-form> + <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" + row-key="id" + :expand-row-keys="defultKey" + :tree-props="{children: 'children', hasChildren: 'hasChildren'}" + border @selection-change="table.selectionChangeHandle"> + <!--<el-table-column type="selection" width="40"/>--> + <el-table-column prop="name" label="鍚嶇О"/> + <el-table-column prop="basicMtbfRegulate" label="MTBF" align="right"> + <template slot-scope="scope"> + <span>{{ scope.row.basicMtbfRegulate | keepNumber }}</span> + </template> + </el-table-column> + <el-table-column prop="repairMttcr" label="MTTR" align="right"> + <template slot-scope="scope"> + <span>{{ scope.row.repairMttcr | keepNumber }}</span> + </template> + </el-table-column> + <el-table-column prop="basicMtbfOperatingRatio" label="杩愯姣�" align="right"> + <template slot-scope="scope"> + <span>{{ scope.row.basicMtbfOperatingRatio | keepNumber }}</span> + </template> + </el-table-column> + <el-table-column prop="ai" label="鍙敤搴�" align="right"> + <template slot-scope="scope"> + <span>{{ scope.row.ai | keepNumber }}</span> + </template> + </el-table-column> + </el-table> + </zt-table-wraper> + </div> + </el-col> + </el-row> + </div> +</template> +<script> + import ProductModelTree from "../basicInfo/ProductModelTree"; + + export default { + data() { + return { + dataForm: { + shipId: '', + isRecal: 0, + basicMtbfRegulate: '', + repairMttcr: '', + basicMtbfOperatingRatio: '', + ai: '' + }, + defultKey: [] + } + }, + components: { + ProductModelTree, + }, + filters: { + keepNumber(value) { //杩囨护鍣ㄤ繚鐣�4涓哄皬鏁� + const numM = Number(value).toFixed(5); + if (numM === "NaN") { + return "0.0000"; + } + if (numM === '0.0000' && value > 0) { + + } + const realVal = numM.substring(0, numM.length - 1); + return realVal; + }, + }, + methods: { + onProductSelected(data) { + this.defultKey = [] + this.dataForm.shipId = data.id + this.dataForm.productType = data.productType + console.log(data, 'onProductSelected(data)') + this.$nextTick(() => { + this.$refs.tableObj.query() + this.setDefultKey() + }) + }, + setDefultKey() { + console.log(this.$refs.tableObj.dataList[0].id,'this.$refs.tableObj.dataList[0].id') + this.defultKey.push(this.dataForm.shipId + "") + }, + onDefault(defaultId) { + this.dataForm.shipId = defaultId + this.$nextTick(() => { + this.$refs.tableObj.query() + this.setDefultKey() + }) + }, + async recalculate() { + this.dataForm.isRecal = 1 + this.$nextTick(() => { + this.$refs.tableObj.query() + }) + }, + } + } +</script> diff --git a/web/src/views/modules/basicInfo/ParamData.vue b/web/src/views/modules/basicInfo/ParamData.vue index 59f7a63..78efdca 100644 --- a/web/src/views/modules/basicInfo/ParamData.vue +++ b/web/src/views/modules/basicInfo/ParamData.vue @@ -1,12 +1,12 @@ <template> <div> <el-row :gutter="5"> - <el-col :span="4"> + <el-col :span="5"> <div class="fa-card-a" style="margin-right: 5px;height: calc(100vh - 123px)"> <product-model-tree @on-selected="onProductSelected" showXdy="false"/> </div> </el-col> - <el-col :span="20"> + <el-col :span="19"> <div class="mod-basicInfo-paramData fa-card-a" style="margin-left: 5px;"> <zt-table-wraper ref="tableObj" defaultNotQuery="true" query-url="/basicInfo/ParamData/page" delete-url="/basicInfo/ParamData/" diff --git a/web/src/views/modules/basicInfo/XhProductModel.vue b/web/src/views/modules/basicInfo/XhProductModel.vue index 2909167..1ef5428 100644 --- a/web/src/views/modules/basicInfo/XhProductModel.vue +++ b/web/src/views/modules/basicInfo/XhProductModel.vue @@ -85,7 +85,6 @@ methods: { add() { this.dataForm.type = this.productType - alert(this.dataForm.type ) if (this.dataForm.type !== '1') { if (this.dataForm.type !== '3') { this.dataForm.type = this.dataForm.type - 1 -- Gitblit v1.9.1