Переглянути джерело

完成报警级别前端界面的编写,后台接口的编写,数据库表设计

zhoupeng 1 рік тому
батько
коміт
19acdebec2
19 змінених файлів з 656 додано та 11 видалено
  1. 78 0
      industry-admin/src/api/system/alarmLevel.js
  2. 1 1
      industry-admin/src/components/commonTable/index.vue
  3. 1 0
      industry-admin/src/icons/svg/alarmLevelsvg.svg
  4. 0 1
      industry-admin/src/views/source/dataModel/addModel.vue
  5. 1 1
      industry-admin/src/views/source/itemGroup/index.vue
  6. 2 3
      industry-admin/src/views/source/itemGroup/item.vue
  7. 1 1
      industry-admin/src/views/source/itemGroup/itemChooseTree.vue
  8. 1 3
      industry-admin/src/views/source/itemGroup/itemConfigModel.vue
  9. 117 0
      industry-admin/src/views/system/alarmLevel/alarmLevel.vue
  10. 150 0
      industry-admin/src/views/system/alarmLevel/index.vue
  11. 4 0
      industry-system/cqcy-ei-common/pom.xml
  12. 28 0
      industry-system/cqcy-ei-common/src/main/java/com/example/opc_common/entity/AlarmLevel.java
  13. 1 0
      industry-system/cqcy-ei-common/src/main/java/com/example/opc_common/enums/ModelEnum.java
  14. 91 0
      industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/controller/AlarmLevelController.java
  15. 1 1
      industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/controller/ChartController.java
  16. 27 0
      industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/dao/AlarmLevelDao.java
  17. 17 0
      industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/service/AlarmLevelService.java
  18. 70 0
      industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/service/impl/AlarmLevelServiceImpl.java
  19. 65 0
      industry-system/cqcy-ei-da/src/main/resources/mapper/AlarmLevelDao.xml

+ 78 - 0
industry-admin/src/api/system/alarmLevel.js

@@ -0,0 +1,78 @@
+import request from '@/utils/request'
+
+/**
+ * 分页查看报警级别
+ * @returns {AxiosPromise}
+ */
+export function getAlarmLevelPage(params) {
+    return request({
+        url: '/alarmLevel/getAlarmLevelPage',
+        headers: {
+            isToken: true
+        },
+        method: 'get',
+        params: params
+    })
+}
+
+/**
+ * 通过id查看报警级别信息
+ * @param {*} id 
+ * @returns 
+ */
+export function getAlarmLevelById(id) {
+    return request({
+        url: '/alarmLevel/getAlarmLevelById?id=' + id,
+        headers: {
+            isToken: true
+        },
+        method: 'get'
+    })
+}
+
+/**
+ * 删除报警级别
+ * @param id
+ * @returns {AxiosPromise}
+ */
+export function delAlarmLevelById(id) {
+    return request({
+        url: '/alarmLevel/delAlarmLevelById?id=' + id,
+        headers: {
+            isToken: true
+        },
+        method: 'post'
+    })
+}
+
+/**
+ * 新增保存报警级别
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function addAlarmLevel(data) {
+    return request({
+        url: '/alarmLevel/addAlarmLevel',
+        headers: {
+            isToken: true
+        },
+        method: 'post',
+        data
+    })
+}
+
+/**
+ * 修改保存报警级别
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function updateAlarmLevel(data) {
+    return request({
+        url: '/alarmLevel/updateAlarmLevel',
+        headers: {
+            isToken: true
+        },
+        method: 'post',
+        data
+    })
+}

+ 1 - 1
industry-admin/src/components/commonTable/index.vue

@@ -4,7 +4,7 @@
         <el-table-column align="center" v-if="isShowIndex" label="序号" type="index" width="60" fixed>
         </el-table-column>
         <el-table-column align="center" :prop="item.propName" :label="item.labelName"
-            v-for="(item, index) in tableHeaderTitle" :key="index">
+            v-for="(item, index) in tableHeaderTitle" :key="index" :formatter="item.formatter">
         </el-table-column>
         <el-table-column v-if="tableOperate && tableOperate.length !== 0" label="操作" align="center">
             <template slot-scope="scope">

+ 1 - 0
industry-admin/src/icons/svg/alarmLevelsvg.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1700797679055" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4118" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M639.2 727.3c-13.5 0-24.5 11-24.5 24.5v0.2c0 13.5 11 24.5 24.5 24.5s24.5-11 24.5-24.5v-0.2c0-13.5-10.9-24.5-24.5-24.5z" p-id="4119"></path><path d="M859 72.1H170.4c-34.5 0-62.8 28.3-62.8 62.8V888c0 34.5 28.3 62.8 62.8 62.8H859c34.5 0 62.8-28.3 62.8-62.8V134.9c0-34.5-28.2-62.8-62.8-62.8zM324.8 229.7h376c17.4 0 31.4 14 31.4 31.4s-14.1 31.4-31.5 31.4H324.8c-17.4 0-31.4-14-31.4-31.4s14-31.4 31.4-31.4z m0 125.5h376c17.4 0 31.4 14 31.4 31.4S718.1 418 700.7 418H324.8c-17.4 0-31.4-14-31.4-31.4s14-31.4 31.4-31.4z m0 189.5c-17.4 0-31.4-14-31.4-31.4s14-31.4 31.4-31.4h125.6c17.4 0 31.4 14 31.4 31.4s-14 31.4-31.4 31.4H324.8z m490.4 271.6c-3.4 6-9.9 9.7-16.9 9.7l-319.2-0.5c-7 0-13.4-3.7-17-9.8-3.5-6.1-3.4-13.5 0-19.6l160-276.1c3.5-6.1 10-9.8 17-9.8s13.4 3.7 17 9.8l159.1 276.7c3.5 6.1 3.4 13.6 0 19.6z" p-id="4120"></path><path d="M639.2 719.6c10.9 0 19.6-8.8 19.6-19.6v-66.7c0-10.8-8.8-19.6-19.6-19.6s-19.6 8.8-19.6 19.6V700c0 10.8 8.8 19.6 19.6 19.6z" p-id="4121"></path></svg>

+ 0 - 1
industry-admin/src/views/source/dataModel/addModel.vue

@@ -169,7 +169,6 @@ export default {
         /** 保存数据模型 */
         saveDataModelEvent() {
             this.$refs['dataModelForm'].validate((valid) => {
-                console.log(valid)
                 if (valid) {
                     const val1 = parseInt(this.dataModelForm.replacingValue)
                     if (val1 < 0 || val1 > 99) {

+ 1 - 1
industry-admin/src/views/source/itemGroup/index.vue

@@ -30,7 +30,7 @@
 import { showConfirmWin } from '@/utils/cqcy'
 import { getAllDataSource } from '@/api/source/dataSource'
 import { getAllItemGroup, getItemGroupById, delItemGroupById } from '@/api/source/itemGroup';
-import CommonTable from '../../../components/commonTable/index.vue'
+import CommonTable from '@/components/CommonTable/index.vue'
 import ItemChoose from './itemChoose.vue'
 import Item from './item.vue'
 

+ 2 - 3
industry-admin/src/views/source/itemGroup/item.vue

@@ -9,8 +9,7 @@
                 </el-input>
                 <el-checkbox size="mini" style="margin-left: 20px;" @change="groupRunCheckboxEvent"
                     title="固定每5秒刷新一次数据">实时数据</el-checkbox>
-                <el-button type="danger" size="mini" @click="multipleDelItemEvent"
-                    style="float: right;">批量删除</el-button>
+                <el-button type="danger" size="mini" @click="multipleDelItemEvent" style="float: right;">批量删除</el-button>
                 <el-button type="primary" icon="el-icon-s-tools" size="mini" @click="multipleModelItemEvent"
                     style="float: right; margin-right: 15px;">批量设置表达式</el-button>
                 <el-button type="primary" icon="el-icon-plus" size="mini" @click="addGroupItemEvent"
@@ -34,7 +33,7 @@
 
 <script>
 import { showLoading, showConfirmWin } from '@/utils/cqcy'
-import CommonTable from '../../../components/commonTable/index.vue'
+import CommonTable from '@/components/CommonTable/index.vue'
 import { getAllDataSource } from '@/api/source/dataSource'
 import { getItemGroupById, getItemValueById, deleteItemByIdList } from '@/api/source/itemGroup';
 import UpdateItem from './updateItem.vue'

+ 1 - 1
industry-admin/src/views/source/itemGroup/itemChooseTree.vue

@@ -116,7 +116,7 @@
 <script>
 
 import { extractDataItemValues, getNodeAllPath } from '@/utils/cqcy'
-import PVirtualCheck from "../../../components/PVirtualCheck/index.vue";
+import PVirtualCheck from "@/components/PVirtualCheck/index.vue";
 import { getNextAllItem, getCompositeScreen } from '@/api/source/itemGroup';
 import { getAllDataModel } from '@/api/source/dataModel';
 import ItemConfigModel from './itemConfigModel.vue'

+ 1 - 3
industry-admin/src/views/source/itemGroup/itemConfigModel.vue

@@ -37,7 +37,7 @@
     </div>
 </template>
 <script>
-import CommonTable from '../../../components/commonTable/index.vue'
+import CommonTable from '@/components/CommonTable/index.vue'
 import ChooseModel from './chooseModel.vue'
 
 export default {
@@ -142,8 +142,6 @@ export default {
         },
         /** 保存数据模型事件 */
         saveDataModelEvent(itemNameList, dataModelId) {
-            console.log(itemNameList)
-            console.log(dataModelId)
             let remark = '';
             for (let i = 0; i < this.dataModelList.length; i++) {
                 if (this.dataModelList[i].id == dataModelId) {

+ 117 - 0
industry-admin/src/views/system/alarmLevel/alarmLevel.vue

@@ -0,0 +1,117 @@
+<template>
+    <!-- 报警级别全部信息 -->
+    <el-dialog v-if="visible" :title="title" width="30%" custom-class="dialog-med" top="10vh" center
+        :before-close="dialogClose" :visible.sync="visible" :close-on-click-modal="false" :append-to-body="true">
+        <el-form ref="alarmLevelForm" :model="alarmLevelForm" :rules="alarmLevelRules" label-width="180px"
+            label-position="top">
+            <el-form-item label="报警名称" prop="levelName">
+                <el-input v-model="alarmLevelForm.levelName" placeholder="请输入名称" maxlength="20" />
+            </el-form-item>
+            <el-row>
+                <el-col :span="12">
+                    <el-form-item label="报警颜色" prop="alarmColor">
+                        <el-col :span="8">
+                            <el-input type="color" v-model="alarmLevelForm.alarmColor" placeholder="请输入名称" maxlength="20" />
+                        </el-col>
+                        <el-col :span="12">
+                            <el-input v-model="alarmLevelForm.alarmColor" disabled maxlength="20" />
+                        </el-col>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="排序号" prop="sortNum">
+                        <el-input v-model="alarmLevelForm.sortNum" placeholder="排序号" maxlength="10" />
+                    </el-form-item>
+                </el-col></el-row>
+            <el-form-item label="备注" prop="alarmRemark">
+                <el-input type="textarea" v-model="alarmLevelForm.alarmRemark" placeholder="请输入备注"
+                    maxlength="100"></el-input>
+            </el-form-item>
+            <el-form-item style="text-align: center;">
+                <el-button type="primary" @click="saveDataModelEvent">确定</el-button>
+                <!-- <el-button type="primary" @click="resetForm('alarmLevelForm')">重置</el-button> -->
+                <el-button @click="dialogClose">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </el-dialog>
+</template>
+
+<script>
+
+import { addAlarmLevel, updateAlarmLevel } from '@/api/system/alarmLevel'
+
+export default {
+    data() {
+        return {
+            visible: false,
+            title: '新增报警级别',
+            alarmLevelForm: {
+                id: null,
+                levelName: '',
+                alarmColor: '',
+                sortNum: null,
+                alarmRemark: ''
+            },
+            alarmLevelRules: {
+                levelName: [{ required: true, message: '报警名称不能为空', trigger: 'blur' }],
+                alarmColor: [{ required: true, message: '报警颜色不能为空', trigger: 'blur' }],
+                sortNum: [{ required: true, message: '排序号不能为空', trigger: 'blur' }]
+            }
+        }
+    },
+    methods: {
+        /** 关闭弹出层 */
+        dialogClose() {
+            this.resetForm('alarmLevelForm')
+            this.$emit('getAlarmLevelPage')
+            this.visible = false
+        },
+        /** 重置表单 */
+        resetForm(formName) {
+            this.$refs[formName].resetFields();
+        },
+        /** 保存报警级别 */
+        saveDataModelEvent() {
+            this.$refs['alarmLevelForm'].validate((valid) => {
+                if (valid) {
+                    if (!this.alarmLevelForm.id) {
+                        this.addAlarmLevel()
+                    } else {
+                        this.updateAlarmLevel()
+                    }
+                }
+            })
+        },
+        /** 新增报警级别 */
+        addAlarmLevel() {
+            let params = JSON.parse(JSON.stringify(this.alarmLevelForm));
+            addAlarmLevel(params).then(res => {
+                if (res.data) {
+                    this.$message({
+                        message: '新增报警级别成功!',
+                        type: 'success'
+                    })
+                    this.dialogClose()
+                }
+            }).catch((e) => {
+
+            })
+        },
+        /** 修改报警级别 */
+        updateAlarmLevel() {
+            let params = JSON.parse(JSON.stringify(this.alarmLevelForm));
+            updateAlarmLevel(params).then(res => {
+                if (res.data) {
+                    this.$message({
+                        message: '修改报警级别成功!',
+                        type: 'success'
+                    })
+                    this.dialogClose()
+                }
+            }).catch((e) => {
+
+            })
+        }
+    }
+}
+</script>

+ 150 - 0
industry-admin/src/views/system/alarmLevel/index.vue

@@ -0,0 +1,150 @@
+<template>
+    <div class="sy-content">
+        <el-row>
+            <el-col>
+                <!-- 操作按钮 -->
+                <el-row class="czBtns">
+                    <el-col :span="1.5">
+                        <el-button type="primary" plain icon="el-icon-circle-plus-outline" size="mini"
+                            @click="addAlarmLevelEvent">新增</el-button>
+                    </el-col>
+                </el-row>
+                <!-- 数据组表格信息 -->
+                <CommonTable ref="alarmLevelTable" :tableHeaderTitle="tableHeaderTitle" :tableData="tableData"
+                    :isShowCheckbox="isShowCheckbox" :isShowIndex="isShowIndex" :tableOperate="tableOperate"
+                    @receiveCheckedData="receiveCheckedData" @updateAlarmLevelEvent="updateAlarmLevelEvent"
+                    @delAlarmLevelEvent="delAlarmLevelEvent">
+                </CommonTable>
+                <!-- 分页信息 -->
+                <pagination v-show="tableTotal > 0" small :total="tableTotal" :page.sync="queryParams.page"
+                    :limit.sync="queryParams.limit" align="right" @pagination="getAlarmLevelPage" />
+            </el-col>
+        </el-row>
+
+        <!-- 报警级别,新增修改详情界面 -->
+        <AlarmLevel ref="alarmLevel" @getAlarmLevelPage="getAlarmLevelPage"></AlarmLevel>
+    </div>
+</template>
+
+<script>
+import { showConfirmWin } from '@/utils/cqcy'
+import { getAlarmLevelPage, delAlarmLevelById } from '@/api/system/alarmLevel'
+import CommonTable from '@/components/CommonTable/index.vue'
+import AlarmLevel from './alarmLevel.vue'
+
+export default {
+    name: 'Index',
+    components: {
+        CommonTable,
+        AlarmLevel
+    },
+    created() {
+        this.getAlarmLevelPage()
+    },
+    data() {
+        return {
+            // 是否展示复选框列
+            isShowCheckbox: false,
+            // 是否展示序号索引列
+            isShowIndex: true,
+            tableHeaderTitle: [
+                {
+                    propName: "levelName",
+                    labelName: "报警名称",
+                },
+                {
+                    propName: "alarmColor",
+                    labelName: "报警颜色",
+                },
+                {
+                    propName: "sortNum",
+                    labelName: "排序号",
+                },
+                {
+                    propName: "alarmRemark",
+                    labelName: "备注",
+                },
+                {
+                    propName: "createTime",
+                    labelName: "创建时间",
+                }
+            ],
+            tableData: [],
+            tableOperate: [
+                {
+                    btnName: '编辑',
+                    size: "mini",
+                    style: '',
+                    icon: 'el-icon-edit',
+                    methodName: "updateAlarmLevelEvent",
+                },
+                {
+                    btnName: '删除',
+                    size: "mini",
+                    style: 'color: red;',
+                    icon: 'el-icon-delete',
+                    methodName: "delAlarmLevelEvent",
+                }
+            ],
+            queryParams: {
+                page: 1,
+                limit: 10
+            },
+            tableTotal: 0
+        }
+    },
+    methods: {
+        // 接收子组件勾选的行的数据
+        receiveCheckedData(checked) {
+            console.log('checked', checked);
+        },
+        /** 分页获取报警级别 */
+        getAlarmLevelPage() {
+            getAlarmLevelPage(this.queryParams).then(res => {
+                if (!res || !res.data) {
+                    this.$message({
+                        message: '数据查询失败!',
+                        type: 'warning'
+                    })
+                    return
+                }
+                this.tableTotal = res.data.count
+                this.tableData = res.data.alarmLevelList
+            }).catch((e) => {
+               
+            })
+        },
+        /** 新增报警级别事件 */
+        addAlarmLevelEvent() {
+            this.$refs.alarmLevel.title = '新增报警级别'
+            this.$refs.alarmLevel.visible = true
+        },
+        /** 修改报警级别事件 */
+        updateAlarmLevelEvent(row) {
+            this.$refs.alarmLevel.title = '修改报警级别'
+            this.$refs.alarmLevel.visible = true
+            this.$refs.alarmLevel.alarmLevelForm.id = row.id
+            this.$refs.alarmLevel.alarmLevelForm.levelName = row.levelName
+            this.$refs.alarmLevel.alarmLevelForm.alarmColor = row.alarmColor
+            this.$refs.alarmLevel.alarmLevelForm.sortNum = row.sortNum
+            this.$refs.alarmLevel.alarmLevelForm.alarmRemark = row.alarmRemark
+        },
+        /** 删除报警级别事件 */
+        delAlarmLevelEvent(row) {
+            showConfirmWin(this, null, '您确定要删除该报警级别吗?', () => {
+                delAlarmLevelById(row.id).then(res => {
+                    if (res.data) {
+                        this.$message({
+                            message: '删除报警级别成功!',
+                            type: 'success'
+                        })
+                        this.getAlarmLevelPage()
+                    }
+                }).catch((e) => {
+                    
+                })
+            })
+        },
+    }
+}
+</script>

+ 4 - 0
industry-system/cqcy-ei-common/pom.xml

@@ -89,6 +89,10 @@
             <groupId>com.mpobjects</groupId>
             <artifactId>bdparsii</artifactId>
         </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 28 - 0
industry-system/cqcy-ei-common/src/main/java/com/example/opc_common/entity/AlarmLevel.java

@@ -0,0 +1,28 @@
+package com.example.opc_common.entity;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * 报警级别实体类
+ */
+@Data
+public class AlarmLevel implements Serializable {
+
+    //主键
+    private Integer id;
+    //级别名称
+    @NotBlank(message = "级别名称不能为空字符串")
+    private String levelName;
+    //报警颜色
+    @NotBlank(message = "报警颜色不能为空")
+    private String alarmColor;
+    //排序号
+    private Integer sortNum;
+    //报警备注
+    private String alarmRemark;
+    //创建时间
+    private String createTime;
+}

+ 1 - 0
industry-system/cqcy-ei-common/src/main/java/com/example/opc_common/enums/ModelEnum.java

@@ -16,6 +16,7 @@ public enum ModelEnum {
     DATAMODEL("数据模型", "DATAMODEL"),
     RUNSETUP("运行配置", "RUNSETUP"),
     MAINCHART("首页统计图", "MAINCHART"),
+    ALARMLEVEL("报警级别", "ALARMLEVEL"),
     USERGROUP("用户组", "USERGROUP"),
     MESSAGENOTICE("消息通知", "MESSAGENOTICE"),
 

+ 91 - 0
industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/controller/AlarmLevelController.java

@@ -0,0 +1,91 @@
+package com.example.opc_da.controller;
+
+import com.example.opc_common.entity.AlarmLevel;
+import com.example.opc_common.enums.ModelEnum;
+import com.example.opc_common.enums.OperationEnum;
+import com.example.opc_common.enums.ResultEnum;
+import com.example.opc_common.enums.ServerEnum;
+import com.example.opc_common.util.Blank;
+import com.example.opc_common.util.Result;
+import com.example.opc_da.annotation.WebLog;
+import com.example.opc_da.service.AlarmLevelService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+
+@RestController
+@RequestMapping("alarmLevel")
+@Slf4j
+public class AlarmLevelController {
+
+    @Autowired
+    private AlarmLevelService alarmLevelService;
+
+    /**
+     * 新增报警级别
+     *
+     * @param alarmLevel
+     * @return
+     */
+    @PostMapping("/addAlarmLevel")
+    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.ALARMLEVEL, OperationEnum = OperationEnum.ADD)
+    public Result addAlarmLevel(@RequestBody @Valid AlarmLevel alarmLevel) {
+        return alarmLevelService.addAlarmLevel(alarmLevel);
+    }
+
+    /**
+     * 修改报警级别
+     *
+     * @param alarmLevel
+     * @return
+     */
+    @PostMapping("/updateAlarmLevel")
+    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.ALARMLEVEL, OperationEnum = OperationEnum.UPDATE)
+    public Result updateAlarmLevel(@RequestBody @Valid AlarmLevel alarmLevel) {
+        if (Blank.isEmpty(alarmLevel.getId())) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "修改时主键不能为空");
+        }
+        return alarmLevelService.updateAlarmLevel(alarmLevel);
+    }
+
+    /**
+     * 分页查询报警级别
+     *
+     * @param page
+     * @param limit
+     * @return
+     */
+    @GetMapping("/getAlarmLevelPage")
+    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.ALARMLEVEL, OperationEnum = OperationEnum.SELECT)
+    public Result getAlarmLevelPage(@Min(value = 1, message = "必须大于0") Integer page,
+                                    @Min(value = 1, message = "必须大于0") Integer limit) {
+        return alarmLevelService.getAlarmLevelPage(page, limit);
+    }
+
+    /**
+     * 通过id获取报警级别
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("/getAlarmLevelById")
+    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.ALARMLEVEL, OperationEnum = OperationEnum.SELECT)
+    public Result getAlarmLevelById(@RequestParam Integer id) {
+        return alarmLevelService.getAlarmLevelById(id);
+    }
+
+    /**
+     * 通过id删除报警级别
+     *
+     * @param id
+     * @return
+     */
+    @PostMapping("/delAlarmLevelById")
+    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.ALARMLEVEL, OperationEnum = OperationEnum.DELETE)
+    public Result delAlarmLevelById(@RequestParam Integer id) {
+        return alarmLevelService.delAlarmLevelById(id);
+    }
+}

+ 1 - 1
industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/controller/ChartController.java

@@ -44,7 +44,7 @@ public class ChartController {
      * @return
      */
     @PostMapping("/updateChart")
-    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.MAINCHART, OperationEnum = OperationEnum.ADD)
+    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.MAINCHART, OperationEnum = OperationEnum.UPDATE)
     public Result updateChart(@RequestBody Chart chart) {
         if (Blank.isEmpty(chart, chart.getId(), chart.getChartType(), chart.getValueType(), chart.getChartName(),
                 chart.getValueTakingMode(), chart.getBucketType(), chart.getBucketValue(), chart.getChartItemList())) {

+ 27 - 0
industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/dao/AlarmLevelDao.java

@@ -0,0 +1,27 @@
+package com.example.opc_da.dao;
+
+import com.example.opc_common.entity.AlarmLevel;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface AlarmLevelDao {
+
+    AlarmLevel getAlarmLevelByName(String levelName);
+
+    Integer addAlarmLevel(AlarmLevel alarmLevel);
+
+    AlarmLevel getAlarmLevelByNameNoId(Integer id, String levelName);
+
+    Integer updateAlarmLevel(AlarmLevel alarmLevel);
+
+    Integer getAlarmLevelCount();
+
+    List<AlarmLevel> getAlarmLevelPage(Integer startNum, Integer limitNum);
+
+    AlarmLevel getAlarmLevelById(Integer id);
+
+    Integer delAlarmLevelById(Integer id);
+
+}

+ 17 - 0
industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/service/AlarmLevelService.java

@@ -0,0 +1,17 @@
+package com.example.opc_da.service;
+
+import com.example.opc_common.entity.AlarmLevel;
+import com.example.opc_common.util.Result;
+
+public interface AlarmLevelService {
+
+    Result addAlarmLevel(AlarmLevel alarmLevel);
+
+    Result updateAlarmLevel(AlarmLevel alarmLevel);
+
+    Result getAlarmLevelPage(Integer page, Integer limit);
+
+    Result getAlarmLevelById(Integer id);
+
+    Result delAlarmLevelById(Integer id);
+}

+ 70 - 0
industry-system/cqcy-ei-da/src/main/java/com/example/opc_da/service/impl/AlarmLevelServiceImpl.java

@@ -0,0 +1,70 @@
+package com.example.opc_da.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.example.opc_common.entity.AlarmLevel;
+import com.example.opc_common.enums.ResultEnum;
+import com.example.opc_common.util.Blank;
+import com.example.opc_common.util.Result;
+import com.example.opc_da.dao.AlarmLevelDao;
+import com.example.opc_da.service.AlarmLevelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@Transactional
+public class AlarmLevelServiceImpl implements AlarmLevelService {
+
+    @Autowired
+    private AlarmLevelDao alarmLevelDao;
+
+    @Override
+    public synchronized Result addAlarmLevel(AlarmLevel alarmLevel) {
+        AlarmLevel oldAlarmLevel = alarmLevelDao.getAlarmLevelByName(alarmLevel.getLevelName());
+        if (Blank.isNotEmpty(oldAlarmLevel)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报警级别名称已存在,请更换名称再试");
+        }
+        if (alarmLevelDao.addAlarmLevel(alarmLevel) <= 0) {
+            return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "添加报警级别失败");
+        }
+        return Result.ok("添加报警级别成功");
+    }
+
+    @Override
+    public synchronized Result updateAlarmLevel(AlarmLevel alarmLevel) {
+        AlarmLevel oldAlarmLevel = alarmLevelDao.getAlarmLevelByNameNoId(alarmLevel.getId(), alarmLevel.getLevelName());
+        if (Blank.isNotEmpty(oldAlarmLevel)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报警级别名称已存在,请更换名称再试");
+        }
+        if (alarmLevelDao.updateAlarmLevel(alarmLevel) <= 0) {
+            return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "修改报警级别失败");
+        }
+        return Result.ok("修改报警级别成功");
+    }
+
+    @Override
+    public Result getAlarmLevelPage(Integer page, Integer limit) {
+        JSONObject jsonObject = new JSONObject();
+        Integer count = alarmLevelDao.getAlarmLevelCount();
+        Integer startNum = (page - 1) * limit;
+        List<AlarmLevel> alarmLevelList = alarmLevelDao.getAlarmLevelPage(startNum, limit);
+        jsonObject.put("count", count);
+        jsonObject.put("alarmLevelList", alarmLevelList);
+        return Result.ok(jsonObject);
+    }
+
+    @Override
+    public Result getAlarmLevelById(Integer id) {
+        return Result.ok(alarmLevelDao.getAlarmLevelById(id));
+    }
+
+    @Override
+    public Result delAlarmLevelById(Integer id) {
+        if (alarmLevelDao.delAlarmLevelById(id) <= 0) {
+            return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "删除报警级别失败");
+        }
+        return Result.ok("删除报警级别成功");
+    }
+}

+ 65 - 0
industry-system/cqcy-ei-da/src/main/resources/mapper/AlarmLevelDao.xml

@@ -0,0 +1,65 @@
+<?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.example.opc_da.dao.AlarmLevelDao">
+
+    <sql id="alarmLevel">
+        id
+        ,level_name,alarm_color,sort_num,alarm_remark,create_time
+    </sql>
+
+    <insert id="addAlarmLevel">
+        insert into t_alarm_level (level_name, alarm_color, sort_num, alarm_remark, create_time)
+            VALUE (#{levelName}, #{alarmColor}, #{sortNum}, #{alarmRemark},now())
+    </insert>
+
+    <update id="updateAlarmLevel">
+        update t_alarm_level
+        set level_name=#{levelName},
+            alarm_color=#{alarmColor},
+            sort_num=#{sortNum},
+            alarm_remark=#{alarmRemark}
+        where id = #{id}
+    </update>
+
+    <delete id="delAlarmLevelById">
+        delete
+        from t_alarm_level
+        where id = #{id}
+    </delete>
+
+    <select id="getAlarmLevelByName" resultType="com.example.opc_common.entity.AlarmLevel">
+        select
+        <include refid="alarmLevel"/>
+        from t_alarm_level
+        where level_name=#{levelName}
+    </select>
+
+    <select id="getAlarmLevelByNameNoId" resultType="com.example.opc_common.entity.AlarmLevel">
+        select
+        <include refid="alarmLevel"/>
+        from t_alarm_level
+        where level_name=#{levelName}
+        and id !=#{id}
+    </select>
+
+    <select id="getAlarmLevelCount" resultType="java.lang.Integer">
+        select count(*)
+        from t_alarm_level
+    </select>
+
+    <select id="getAlarmLevelPage" resultType="com.example.opc_common.entity.AlarmLevel">
+        select
+        <include refid="alarmLevel"/>
+        from t_alarm_level
+        order by sort_num
+        limit #{startNum},#{limitNum}
+    </select>
+
+    <select id="getAlarmLevelById" resultType="com.example.opc_common.entity.AlarmLevel">
+        select
+        <include refid="alarmLevel"/>
+        from t_alarm_level
+        where id=#{id}
+    </select>
+
+</mapper>