Prechádzať zdrojové kódy

新增储罐运营,事件上报

Memory_LG 1 rok pred
rodič
commit
60315df8dc
15 zmenil súbory, kde vykonal 1151 pridanie a 8 odobranie
  1. 44 0
      data-ui/src/api/data/housingconstruction/log.js
  2. 370 0
      data-ui/src/views/data/housingconstruction/log/index.vue
  3. 15 7
      data-ui/src/views/data/housingconstruction/storagetank/index.vue
  4. 91 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionStoragetankLogController.java
  5. 51 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/SensorEventVo.java
  6. 29 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/StaticEntity.java
  7. 29 0
      src/main/java/com/sooka/sponest/data/housingconstruction/feignClient/factory/RemoteHousingconstructionEventServiceFallbackFactory.java
  8. 22 0
      src/main/java/com/sooka/sponest/data/housingconstruction/feignClient/service/RemoteHousingconstructionEventService.java
  9. 62 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionStoragetankLogMapper.java
  10. 5 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionStoragetankMapper.java
  11. 62 0
      src/main/java/com/sooka/sponest/data/housingconstruction/service/ICenterdataTHousingconstructionStoragetankLogService.java
  12. 194 0
      src/main/java/com/sooka/sponest/data/housingconstruction/service/impl/CenterdataTHousingconstructionStoragetankLogServiceImpl.java
  13. 1 1
      src/main/java/com/sooka/sponest/data/housingconstruction/service/impl/CenterdataTHousingconstructionStoragetankServiceImpl.java
  14. 148 0
      src/main/resources/mapper/housingconstruction/CenterdataTHousingconstructionStoragetankLogMapper.xml
  15. 28 0
      src/main/resources/mapper/housingconstruction/CenterdataTHousingconstructionStoragetankMapper.xml

+ 44 - 0
data-ui/src/api/data/housingconstruction/log.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询储罐存储数据日志列表
+export function listLog(query) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/log/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询储罐存储数据日志详细
+export function getLog(id) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/log/' + id,
+    method: 'get'
+  })
+}
+
+// 新增储罐存储数据日志
+export function addLog(data) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/log',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改储罐存储数据日志
+export function updateLog(data) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/log',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除储罐存储数据日志
+export function delLog(id) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/log/' + id,
+    method: 'delete'
+  })
+}

+ 370 - 0
data-ui/src/views/data/housingconstruction/log/index.vue

@@ -0,0 +1,370 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="储罐名称" prop="storagetankName">
+        <el-input
+          v-model="queryParams.storagetankName"
+          placeholder="请输入储罐名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="运行状态" prop="runState">
+        <el-select v-model="queryParams.runState" placeholder="请选择运行状态" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['housingconstruction:log:add']"
+        >新增
+        </el-button>
+      </el-col>
+<!--      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['housingconstruction:log:edit']"
+        >修改
+        </el-button>
+      </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['housingconstruction:log:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['housingconstruction:log:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="logList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="储罐名称" align="center" prop="storagetankName"/>
+      <el-table-column label="液体液位" align="center" prop="level"/>
+      <el-table-column label="温度" align="center" prop="heat"/>
+      <el-table-column label="内部气压" align="center" prop="pressure"/>
+      <el-table-column label="周边可燃性气体泄漏" align="center" prop="gasLeak"/>
+      <el-table-column label="运行状态" align="center" prop="runState">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.yes_no" :value="scope.row.runState"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+<!--          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['housingconstruction:log:edit']"
+          >修改
+          </el-button>-->
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['housingconstruction:log:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改储罐存储数据日志对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="150px">
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="储罐" prop="storagetankId">
+              <el-select v-model="form.storagetankId" placeholder="请选择储罐" @change="handleEnterpriseChange">
+                <el-option
+                  v-for="data in storagetankList"
+                  :key="data.id"
+                  :label="data.name"
+                  :value="data.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="运行状态" prop="runState">
+              <el-select v-model="form.runState" placeholder="请选择运行状态">
+                <el-option
+                  v-for="dict in dict.type.yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="液体液位" prop="level">
+              <el-input v-model="form.level" placeholder="请输入液体液位"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="温度" prop="heat">
+              <el-input v-model="form.heat" placeholder="请输入温度"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="内部气压" prop="pressure">
+              <el-input v-model="form.pressure" placeholder="请输入内部气压"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="周边可燃性气体泄漏" prop="gasLeak">
+              <el-input v-model="form.gasLeak" placeholder="请输入周边可燃性气体泄漏"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {addLog, delLog, getLog, listLog, updateLog} from "@/api/data/housingconstruction/log";
+import {getStoragetankList} from "@/api/data/housingconstruction/storagetank"
+
+export default {
+  name: "Log",
+  dicts: ['yes_no'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 储罐存储数据日志表格数据
+      logList: [],
+      //储罐列表
+      storagetankList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        storagetankName: null,
+        runState: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        storagetankId: [
+          {required: true, message: "储罐不能为空", trigger: "blur"}
+        ],
+        level: [
+          {required: true, message: "液位不能为空", trigger: "blur"}
+        ],
+        heat: [
+          {required: true, message: "温度不能为空", trigger: "blur"}
+        ],
+        pressure: [
+          {required: true, message: "内部气压不能为空", trigger: "blur"}
+        ],
+        gasLeak: [
+          {required: true, message: "周边可燃性气体泄漏不能为空", trigger: "blur"}
+        ],
+        runState: [
+          {required: true, message: "运行状态不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getStoragetankList();
+  },
+  methods: {
+    handleEnterpriseChange(newId) {
+      const selectedEnterprise = this.storagetankList.find(item => item.id === newId);
+      if (selectedEnterprise) {
+        this.form.storagetankName = selectedEnterprise.name;
+      } else {
+        this.form.storagetankName = '';
+      }
+    },
+    getStoragetankList(){
+      getStoragetankList().then(res=>{
+        this.storagetankList = res.data;
+      })
+    },
+    /** 查询储罐存储数据日志列表 */
+    getList() {
+      this.loading = true;
+      listLog(this.queryParams).then(response => {
+        this.logList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        storagetankId: null,
+        storagetankName: null,
+        level: null,
+        heat: null,
+        pressure: null,
+        gasLeak: null,
+        securityState: null,
+        runState: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加储罐存储数据日志";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getLog(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改储罐存储数据日志";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateLog(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addLog(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除储罐存储数据日志编号为"' + ids + '"的数据项?').then(function () {
+        return delLog(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('housingconstruction/log/export', {
+        ...this.queryParams
+      }, `log_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 15 - 7
data-ui/src/views/data/housingconstruction/storagetank/index.vue

@@ -119,7 +119,12 @@
         prop="pressure"
         :formatter="formatPressure"
       />
-      <el-table-column label="周边可燃性气体泄漏" align="center" prop="gasLeak"/>
+      <el-table-column
+        label="周边可燃性气体泄漏"
+        align="center"
+        prop="gasLeak"
+        :formatter="formatGasLeak"
+      />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -175,7 +180,7 @@
         <el-row :gutter="24">
           <el-col :span="12">
             <el-form-item label="存储量" prop="storageCapacity">
-              <el-input v-model="form.storageCapacity" placeholder="请输入存储量(单位为: t)"/>
+              <el-input v-model="form.storageCapacity" placeholder="请输入存储量(单位为: L)"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -199,12 +204,12 @@
         <el-row :gutter="24">
           <el-col :span="12">
             <el-form-item label="内部气压" prop="pressure">
-              <el-input v-model="form.pressure" placeholder="请输入内部气压(单位为: Ma)"/>
+              <el-input v-model="form.pressure" placeholder="请输入内部气压(单位为: PMa)"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="周边可燃性气体泄漏" prop="gasLeak">
-              <el-input v-model="form.gasLeak" placeholder="请输入周边可燃性气体泄漏"/>
+              <el-input v-model="form.gasLeak" placeholder="请输入周边可燃性气体泄漏(单位为: %LEL)"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -451,10 +456,10 @@ export default {
     handleExport() {
       this.download('system/storagetank/export', {
         ...this.queryParams
-      }, `storagetank_${new Date().getTime()}.xlsx`)
+      }, `储罐基础信息_${new Date().getTime()}.xlsx`)
     },
     formatStorageCapacity(cellValue) {
-      return `${cellValue.storageCapacity} t`;
+      return `${cellValue.storageCapacity} L`;
     },
     formatLevelCeiling(cellValue) {
       return `${cellValue.levelCeiling} m`;
@@ -466,7 +471,10 @@ export default {
       return `${cellValue.heat} ℃`;
     },
     formatPressure(cellValue) {
-      return `${cellValue.pressure} Ma`;
+      return `${cellValue.pressure} PMa`;
+    },
+    formatGasLeak(cellValue){
+      return `${cellValue.gasLeak} %LEL`;
     }
   }
 };

+ 91 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionStoragetankLogController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionStoragetankLog;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionStoragetankLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 储罐存储数据日志Controller
+ *
+ * @author LG
+ * @date 2024-08-02
+ */
+@RestController
+@RequestMapping("/housingconstruction/log")
+public class CenterdataTHousingconstructionStoragetankLogController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionStoragetankLogService centerdataTHousingconstructionStoragetankLogService;
+
+    /**
+     * 查询储罐存储数据日志列表
+     */
+    @RequiresPermissions("housingconstruction:log:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog) {
+        startPage();
+        List<CenterdataTHousingconstructionStoragetankLog> list = centerdataTHousingconstructionStoragetankLogService.selectCenterdataTHousingconstructionStoragetankLogList(centerdataTHousingconstructionStoragetankLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出储罐存储数据日志列表
+     */
+    @RequiresPermissions("housingconstruction:log:export")
+    @Log(title = "储罐存储数据日志", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog) {
+        List<CenterdataTHousingconstructionStoragetankLog> list = centerdataTHousingconstructionStoragetankLogService.selectCenterdataTHousingconstructionStoragetankLogList(centerdataTHousingconstructionStoragetankLog);
+        ExcelUtil<CenterdataTHousingconstructionStoragetankLog> util = new ExcelUtil<CenterdataTHousingconstructionStoragetankLog>(CenterdataTHousingconstructionStoragetankLog.class);
+        util.exportExcel(response, list, "储罐存储数据日志数据");
+    }
+
+    /**
+     * 获取储罐存储数据日志详细信息
+     */
+    @RequiresPermissions("housingconstruction:log:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionStoragetankLogService.selectCenterdataTHousingconstructionStoragetankLogById(id));
+    }
+
+    /**
+     * 新增储罐存储数据日志
+     */
+    @RequiresPermissions("housingconstruction:log:add")
+    @Log(title = "储罐存储数据日志", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog) {
+        return toAjax(centerdataTHousingconstructionStoragetankLogService.insertCenterdataTHousingconstructionStoragetankLog(centerdataTHousingconstructionStoragetankLog));
+    }
+
+    /**
+     * 修改储罐存储数据日志
+     */
+    @RequiresPermissions("housingconstruction:log:edit")
+    @Log(title = "储罐存储数据日志", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog) {
+        return toAjax(centerdataTHousingconstructionStoragetankLogService.updateCenterdataTHousingconstructionStoragetankLog(centerdataTHousingconstructionStoragetankLog));
+    }
+
+    /**
+     * 删除储罐存储数据日志
+     */
+    @RequiresPermissions("housingconstruction:log:remove")
+    @Log(title = "储罐存储数据日志", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(centerdataTHousingconstructionStoragetankLogService.deleteCenterdataTHousingconstructionStoragetankLogByIds(ids));
+    }
+}

+ 51 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/SensorEventVo.java

@@ -0,0 +1,51 @@
+package com.sooka.sponest.data.housingconstruction.domain.eventEntity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @Auther: mjq
+ * @Date: 2023/6/17 - 06 - 17 - 9:30
+ * @Description: com.sooka.sponest.event.centereventteventcatalogue.domain.sensor
+ * @version: 1.0
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SensorEventVo {
+
+    private String eventType;// 事件分类(大类)
+
+    private String eventTypeXl;// 事件分类(小类)
+
+    private String eventDescription;// 事件描述
+
+    private String longitude;// 经度
+
+    private String latitude;// 纬度
+
+    private String sensorId;// 传感器id
+
+    private String reportor;// 传感器名称
+
+    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
+    public Date reportTime;// 上报时间
+
+    private String address;// 地址
+
+    private String picture;// 图片
+
+    public SensorEventVo(String longitude, String latitude, String sensorId, String reportor, Date reportTime, String address) {
+        this.eventType = StaticEntity.EVENT_TYPE_CODE;
+        this.longitude = longitude;
+        this.latitude = latitude;
+        this.sensorId = sensorId;
+        this.reportor = reportor;
+        this.reportTime = reportTime;
+        this.address = address;
+    }
+}

+ 29 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/StaticEntity.java

@@ -0,0 +1,29 @@
+package com.sooka.sponest.data.housingconstruction.domain.eventEntity;
+
+public class StaticEntity {
+
+    public static final String EVENT_TYPE_CODE = "12";
+    public static final String PRESSURE_CODE = "1201";
+    public static final String PRESSURE_NAME = "超压力监控预警";
+    public static final String LEVEL_CEILING_CODE = "1202";
+    public static final String LEVEL_CEILING_NAME = "超液位上限预警";
+    public static final String LEVEL_FLOOR_CODE = "1203";
+    public static final String LEVEL_FLOOR_NAME = "超液位下限预警";
+    public static final String HEAT_CODE = "1204";
+    public static final String HEAT_NAME = "超温度监控预警";
+    public static final String GAS_LEAK_CODE = "1205";
+    public static final String GAS_LEAK_NAME = "可燃性气体监测预警";
+    public static final String ENTERPRISE_CODE = "1206";
+    public static final String ENTERPRISE_NAME = "企业运行预警";
+    public static final String INSPECT_CODE = "1207";
+    public static final String INSPECT_NAME = "气瓶存疑预警";
+
+
+
+    public static String setContent(String enterpriseName, String storagetankName, String eventName, String threshold, String current) {
+        // 定义模板
+//        String template = "【%s】的【%s】发生【%s】, 设定阈值【%s】:当前值【%s】";
+        String template = "%s的%s发生%s, 设定阈值:%s, 当前值:%s, 请及时处理!";
+        return String.format(template, enterpriseName, storagetankName, eventName, threshold, current);
+    }
+}

+ 29 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/feignClient/factory/RemoteHousingconstructionEventServiceFallbackFactory.java

@@ -0,0 +1,29 @@
+package com.sooka.sponest.data.housingconstruction.feignClient.factory;
+
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.SensorEventVo;
+import com.sooka.sponest.data.housingconstruction.feignClient.service.RemoteHousingconstructionEventService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class RemoteHousingconstructionEventServiceFallbackFactory implements FallbackFactory<RemoteHousingconstructionEventService> {
+
+    private static final Logger log = LoggerFactory.getLogger(RemoteHousingconstructionEventServiceFallbackFactory.class);
+
+
+    @Override
+    public RemoteHousingconstructionEventService create(Throwable cause) {
+        log.error("数字住建->事件中心->服务调用失败:{}", cause.getMessage());
+        return new RemoteHousingconstructionEventService() {
+
+            @Override
+            public AjaxResult sendEvent(SensorEventVo sensorEventVo) {
+                return AjaxResult.error("数字住建-上报事件调用失败:" + cause.getMessage());
+            }
+
+        };
+    }
+}

+ 22 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/feignClient/service/RemoteHousingconstructionEventService.java

@@ -0,0 +1,22 @@
+package com.sooka.sponest.data.housingconstruction.feignClient.service;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.SensorEventVo;
+import com.sooka.sponest.data.housingconstruction.feignClient.factory.RemoteHousingconstructionEventServiceFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+@FeignClient(
+        contextId = "RemoteHousingconstructionEnterpriseService",
+        value = ServiceNameConstants.EVENT_SERVICE,
+        fallbackFactory = RemoteHousingconstructionEventServiceFallbackFactory.class
+//        , url = "${sooka.service.data}"
+)
+public interface RemoteHousingconstructionEventService {
+
+    @PostMapping("/fireIncident/insertHousingConstructionEvent")
+    AjaxResult sendEvent(SensorEventVo sensorEventVo);
+
+}

+ 62 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionStoragetankLogMapper.java

@@ -0,0 +1,62 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionStoragetankLog;
+
+import java.util.List;
+
+/**
+ * 储罐存储数据日志Mapper接口
+ *
+ * @author LG
+ * @date 2024-08-02
+ */
+public interface CenterdataTHousingconstructionStoragetankLogMapper {
+    /**
+     * 查询储罐存储数据日志
+     *
+     * @param id 储罐存储数据日志主键
+     * @return 储罐存储数据日志
+     */
+    public CenterdataTHousingconstructionStoragetankLog selectCenterdataTHousingconstructionStoragetankLogById(String id);
+
+    /**
+     * 查询储罐存储数据日志列表
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 储罐存储数据日志集合
+     */
+    public List<CenterdataTHousingconstructionStoragetankLog> selectCenterdataTHousingconstructionStoragetankLogList(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog);
+
+    /**
+     * 新增储罐存储数据日志
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionStoragetankLog(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog);
+
+    /**
+     * 修改储罐存储数据日志
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionStoragetankLog(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog);
+
+    /**
+     * 删除储罐存储数据日志
+     *
+     * @param id 储罐存储数据日志主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionStoragetankLogById(String id);
+
+    /**
+     * 批量删除储罐存储数据日志
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionStoragetankLogByIds(String[] ids);
+}

+ 5 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionStoragetankMapper.java

@@ -3,6 +3,7 @@ package com.sooka.sponest.data.housingconstruction.mapper;
 import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionStoragetank;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 储罐存储数据Mapper接口
@@ -58,4 +59,8 @@ public interface CenterdataTHousingconstructionStoragetankMapper {
      * @return 结果
      */
     public int deleteCenterdataTHousingconstructionStoragetankByIds(String[] ids);
+
+    Map<String, Object> selectStoragetankById(String storagetankId);
+
+    List<CenterdataTHousingconstructionStoragetank> getStoragetankList(CenterdataTHousingconstructionStoragetank storagetank);
 }

+ 62 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/service/ICenterdataTHousingconstructionStoragetankLogService.java

@@ -0,0 +1,62 @@
+package com.sooka.sponest.data.housingconstruction.service;
+
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionStoragetankLog;
+
+import java.util.List;
+
+/**
+ * 储罐存储数据日志Service接口
+ *
+ * @author LG
+ * @date 2024-08-02
+ */
+public interface ICenterdataTHousingconstructionStoragetankLogService {
+    /**
+     * 查询储罐存储数据日志
+     *
+     * @param id 储罐存储数据日志主键
+     * @return 储罐存储数据日志
+     */
+    public CenterdataTHousingconstructionStoragetankLog selectCenterdataTHousingconstructionStoragetankLogById(String id);
+
+    /**
+     * 查询储罐存储数据日志列表
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 储罐存储数据日志集合
+     */
+    public List<CenterdataTHousingconstructionStoragetankLog> selectCenterdataTHousingconstructionStoragetankLogList(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog);
+
+    /**
+     * 新增储罐存储数据日志
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionStoragetankLog(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog);
+
+    /**
+     * 修改储罐存储数据日志
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionStoragetankLog(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog);
+
+    /**
+     * 批量删除储罐存储数据日志
+     *
+     * @param ids 需要删除的储罐存储数据日志主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionStoragetankLogByIds(String[] ids);
+
+    /**
+     * 删除储罐存储数据日志信息
+     *
+     * @param id 储罐存储数据日志主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionStoragetankLogById(String id);
+}

+ 194 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/service/impl/CenterdataTHousingconstructionStoragetankLogServiceImpl.java

@@ -0,0 +1,194 @@
+package com.sooka.sponest.data.housingconstruction.service.impl;
+
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.datascope.annotation.DataScopeMutiDept;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.sooka.sponest.data.base.service.impl.BaseServiceImpl;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionStoragetank;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionStoragetankLog;
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.SensorEventVo;
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.StaticEntity;
+import com.sooka.sponest.data.housingconstruction.feignClient.service.RemoteHousingconstructionEventService;
+import com.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconstructionStoragetankLogMapper;
+import com.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconstructionStoragetankMapper;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionStoragetankLogService;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * 储罐存储数据日志Service业务层处理
+ *
+ * @author LG
+ * @date 2024-08-02
+ */
+@Service
+public class CenterdataTHousingconstructionStoragetankLogServiceImpl extends BaseServiceImpl implements ICenterdataTHousingconstructionStoragetankLogService {
+    @Autowired
+    private CenterdataTHousingconstructionStoragetankLogMapper centerdataTHousingconstructionStoragetankLogMapper;
+
+    @Autowired
+    private CenterdataTHousingconstructionStoragetankMapper storagetankMapper;
+
+    @Autowired
+    private RemoteHousingconstructionEventService eventService;
+
+    /**
+     * 查询储罐存储数据日志
+     *
+     * @param id 储罐存储数据日志主键
+     * @return 储罐存储数据日志
+     */
+    @Override
+    public CenterdataTHousingconstructionStoragetankLog selectCenterdataTHousingconstructionStoragetankLogById(String id) {
+        return centerdataTHousingconstructionStoragetankLogMapper.selectCenterdataTHousingconstructionStoragetankLogById(id);
+    }
+
+    /**
+     * 查询储罐存储数据日志列表
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 储罐存储数据日志
+     */
+    @Override
+    @DataScopeMutiDept(deptAlias = "d")
+    public List<CenterdataTHousingconstructionStoragetankLog> selectCenterdataTHousingconstructionStoragetankLogList(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog) {
+        setSookaDataBase(centerdataTHousingconstructionStoragetankLog);
+        return centerdataTHousingconstructionStoragetankLogMapper.selectCenterdataTHousingconstructionStoragetankLogList(centerdataTHousingconstructionStoragetankLog);
+    }
+
+    /**
+     * 新增储罐存储数据日志
+     *
+     * @param storagetankLog 储罐存储数据日志
+     * @return 结果
+     */
+    @Override
+    public int insertCenterdataTHousingconstructionStoragetankLog(CenterdataTHousingconstructionStoragetankLog storagetankLog) {
+        storagetankLog.setId(IdUtils.fastSimpleUUID());
+        storagetankLog.setCreateTime(DateUtils.getNowDate());
+        storagetankLog.setCreateBy(SecurityUtils.getUserId().toString());
+        storagetankLog.setCreateName(SecurityUtils.getLoginUser().getSysUser().getNickName());
+
+        Map<String, Object> storagetank = storagetankMapper.selectStoragetankById(storagetankLog.getStoragetankId());
+        //数据比对
+        dataComparison(storagetankLog, storagetank);
+        return centerdataTHousingconstructionStoragetankLogMapper.insertCenterdataTHousingconstructionStoragetankLog(storagetankLog);
+    }
+
+    private void dataComparison(CenterdataTHousingconstructionStoragetankLog storagetankLog, Map<String, Object> storagetank){
+        //企业名称
+        String enterpriseName = MapUtils.getString(storagetank, "enterpriseName");
+        //储罐名称
+        String storagetankName = MapUtils.getString(storagetank, "name");
+        //设置储罐记录中出现预警的项
+        StringBuilder securityState = new StringBuilder();
+        //设置数值单位
+        List<String> units = Arrays.asList(new String[]{"m", "℃", "PMa", "%LEL"});
+
+        //设置基础模板
+        StringBuilder template = new StringBuilder();
+        template.append(enterpriseName).append("的").append(storagetankName).append("发生");
+
+        //创建事件实体类
+        SensorEventVo sensorEventVo = new SensorEventVo(
+                MapUtils.getString(storagetank, "longitude"),
+                MapUtils.getString(storagetank, "latitude"),
+                MapUtils.getString(storagetank, "enterpriseId"),
+                enterpriseName,
+                new Date(),
+                MapUtils.getString(storagetank, "registeredAddress")
+        );
+
+        //液位上限
+        if(storagetankLog.getLevel() >= MapUtils.getInteger(storagetank, "levelCeiling")){
+            //当前液位高于上限或低于下限, 触发时间告警
+            securityState.append("1").append(",");
+            sendEvent(template.toString(), StaticEntity.LEVEL_CEILING_NAME, MapUtils.getString(storagetank, "levelCeiling") + units.get(0), storagetankLog.getLevel() + units.get(0), sensorEventVo, StaticEntity.LEVEL_CEILING_CODE);
+        }
+
+        //液位下限
+        if(storagetankLog.getLevel() <= MapUtils.getInteger(storagetank, "levelFloor")){
+            //当前液位高于上限或低于下限, 触发时间告警
+            securityState.append("1").append(",");
+            sendEvent(template.toString(), StaticEntity.LEVEL_FLOOR_NAME, MapUtils.getString(storagetank, "levelFloor") + units.get(0), storagetankLog.getLevel() + units.get(0), sensorEventVo, StaticEntity.LEVEL_FLOOR_CODE);
+        }
+
+        //温度
+        if(storagetankLog.getHeat() >= MapUtils.getInteger(storagetank, "heat")){
+            //当前温度高于设定温度阈值
+            securityState.append("2").append(",");
+            sendEvent(template.toString(), StaticEntity.HEAT_NAME, MapUtils.getString(storagetank, "heat") + units.get(1), storagetankLog.getHeat() + units.get(1), sensorEventVo, StaticEntity.HEAT_CODE);
+        }
+
+        //内部气压
+        if(storagetankLog.getPressure() >= MapUtils.getInteger(storagetank, "pressure")){
+            //当前内部气压高于设定阈值
+            securityState.append("3").append(",");
+            sendEvent(template.toString(), StaticEntity.PRESSURE_NAME, MapUtils.getString(storagetank, "pressure") + units.get(2), storagetankLog.getPressure() + units.get(2), sensorEventVo, StaticEntity.PRESSURE_CODE);
+        }
+
+        //可燃气体
+        if(storagetankLog.getGasLeak() >= MapUtils.getInteger(storagetank, "gasLeak")){
+            //可燃性气体泄露值高于设定的阈值
+            securityState.append("4").append(",");
+            sendEvent(template.toString(), StaticEntity.GAS_LEAK_NAME, MapUtils.getString(storagetank, "gasLeak") + units.get(3), storagetankLog.getGasLeak() + units.get(3), sensorEventVo, StaticEntity.GAS_LEAK_CODE);
+        }
+
+        // 确保 StringBuilder 不为空
+        if (securityState.length() > 0) {
+            securityState.deleteCharAt(securityState.length() - 1);
+        }
+        storagetankLog.setSecurityState(securityState.toString());
+        storagetankLog.setDeptId(MapUtils.getLong(storagetank, "deptId"));
+        storagetankLog.setDeptName(MapUtils.getString(storagetank, "deptName"));
+    }
+
+    private void sendEvent(String title, String eventName, String threshold, String current, SensorEventVo eventVo, String eventCode){
+        String template = "%s%s, 设定阈值:%s, 当前值:%s, 请及时处理!";
+        String format = String.format(template, title, eventName, threshold, current);
+        eventVo.setEventTypeXl(eventCode);
+        eventVo.setEventDescription(format);
+        //发送事件
+        eventService.sendEvent(eventVo);
+    }
+
+    /**
+     * 修改储罐存储数据日志
+     *
+     * @param centerdataTHousingconstructionStoragetankLog 储罐存储数据日志
+     * @return 结果
+     */
+    @Override
+    public int updateCenterdataTHousingconstructionStoragetankLog(CenterdataTHousingconstructionStoragetankLog centerdataTHousingconstructionStoragetankLog) {
+        centerdataTHousingconstructionStoragetankLog.setUpdateTime(DateUtils.getNowDate());
+        centerdataTHousingconstructionStoragetankLog.setUpdateBy(SecurityUtils.getUserId());
+        centerdataTHousingconstructionStoragetankLog.setUpdateName(SecurityUtils.getLoginUser().getSysUser().getNickName());
+        return centerdataTHousingconstructionStoragetankLogMapper.updateCenterdataTHousingconstructionStoragetankLog(centerdataTHousingconstructionStoragetankLog);
+    }
+
+    /**
+     * 批量删除储罐存储数据日志
+     *
+     * @param ids 需要删除的储罐存储数据日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCenterdataTHousingconstructionStoragetankLogByIds(String[] ids) {
+        return centerdataTHousingconstructionStoragetankLogMapper.deleteCenterdataTHousingconstructionStoragetankLogByIds(ids);
+    }
+
+    /**
+     * 删除储罐存储数据日志信息
+     *
+     * @param id 储罐存储数据日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCenterdataTHousingconstructionStoragetankLogById(String id) {
+        return centerdataTHousingconstructionStoragetankLogMapper.deleteCenterdataTHousingconstructionStoragetankLogById(id);
+    }
+}

+ 1 - 1
src/main/java/com/sooka/sponest/data/housingconstruction/service/impl/CenterdataTHousingconstructionStoragetankServiceImpl.java

@@ -101,6 +101,6 @@ public class CenterdataTHousingconstructionStoragetankServiceImpl extends BaseSe
 
     @Override
     public List<CenterdataTHousingconstructionStoragetank> getStoragetankList(CenterdataTHousingconstructionStoragetank storagetank) {
-        return null;
+        return centerdataTHousingconstructionStoragetankMapper.getStoragetankList(storagetank);
     }
 }

+ 148 - 0
src/main/resources/mapper/housingconstruction/CenterdataTHousingconstructionStoragetankLogMapper.xml

@@ -0,0 +1,148 @@
+<?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.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconstructionStoragetankLogMapper">
+
+    <resultMap type="CenterdataTHousingconstructionStoragetankLog"
+               id="CenterdataTHousingconstructionStoragetankLogResult">
+        <result property="id" column="id"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createName" column="create_name"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateName" column="update_name"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="storagetankId" column="storagetank_id"/>
+        <result property="storagetankName" column="storagetank_name"/>
+        <result property="level" column="level"/>
+        <result property="heat" column="heat"/>
+        <result property="pressure" column="pressure"/>
+        <result property="gasLeak" column="gas_leak"/>
+        <result property="securityState" column="security_state"/>
+        <result property="runState" column="run_state"/>
+    </resultMap>
+
+    <sql id="selectCenterdataTHousingconstructionStoragetankLogVo">
+        select a.id,
+               a.create_by,
+               a.create_name,
+               a.create_time,
+               a.update_by,
+               a.update_name,
+               a.update_time,
+               a.dept_id,
+               a.dept_name,
+               a.storagetank_id,
+               a.storagetank_name,
+               a.level,
+               a.heat,
+               a.pressure,
+               a.gas_leak,
+               a.security_state,
+               a.run_state
+        from centerdata_t_housingconstruction_storagetank_log a
+    </sql>
+
+    <select id="selectCenterdataTHousingconstructionStoragetankLogList"
+            parameterType="CenterdataTHousingconstructionStoragetankLog"
+            resultMap="CenterdataTHousingconstructionStoragetankLogResult">
+        <include refid="selectCenterdataTHousingconstructionStoragetankLogVo"/>
+        left join ${database_system}.sys_dept d on a.dept_id = d.dept_id
+        <where>
+            <if test="storagetankName != null  and storagetankName != ''">and storagetank_name like concat('%',
+                #{storagetankName}, '%')
+            </if>
+            <if test="runState != null  and runState != ''">and run_state = #{runState}</if>
+            ${params.dataScope}
+        </where>
+    </select>
+
+    <select id="selectCenterdataTHousingconstructionStoragetankLogById" parameterType="String"
+            resultMap="CenterdataTHousingconstructionStoragetankLogResult">
+        <include refid="selectCenterdataTHousingconstructionStoragetankLogVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertCenterdataTHousingconstructionStoragetankLog"
+            parameterType="CenterdataTHousingconstructionStoragetankLog">
+        insert into centerdata_t_housingconstruction_storagetank_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null and id != ''">id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createName != null">create_name,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateName != null">update_name,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="deptName != null">dept_name,</if>
+            <if test="storagetankId != null">storagetank_id,</if>
+            <if test="storagetankName != null">storagetank_name,</if>
+            <if test="level != null">level,</if>
+            <if test="heat != null">heat,</if>
+            <if test="pressure != null">pressure,</if>
+            <if test="gasLeak != null">gas_leak,</if>
+            <if test="securityState != null">security_state,</if>
+            <if test="runState != null">run_state,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null and id != ''">#{id},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createName != null">#{createName},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateName != null">#{updateName},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="deptName != null">#{deptName},</if>
+            <if test="storagetankId != null">#{storagetankId},</if>
+            <if test="storagetankName != null">#{storagetankName},</if>
+            <if test="level != null">#{level},</if>
+            <if test="heat != null">#{heat},</if>
+            <if test="pressure != null">#{pressure},</if>
+            <if test="gasLeak != null">#{gasLeak},</if>
+            <if test="securityState != null">#{securityState},</if>
+            <if test="runState != null">#{runState},</if>
+        </trim>
+    </insert>
+
+    <update id="updateCenterdataTHousingconstructionStoragetankLog"
+            parameterType="CenterdataTHousingconstructionStoragetankLog">
+        update centerdata_t_housingconstruction_storagetank_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createName != null">create_name = #{createName},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateName != null">update_name = #{updateName},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+            <if test="storagetankId != null">storagetank_id = #{storagetankId},</if>
+            <if test="storagetankName != null">storagetank_name = #{storagetankName},</if>
+            <if test="level != null">level = #{level},</if>
+            <if test="heat != null">heat = #{heat},</if>
+            <if test="pressure != null">pressure = #{pressure},</if>
+            <if test="gasLeak != null">gas_leak = #{gasLeak},</if>
+            <if test="securityState != null">security_state = #{securityState},</if>
+            <if test="runState != null">run_state = #{runState},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCenterdataTHousingconstructionStoragetankLogById" parameterType="String">
+        delete
+        from centerdata_t_housingconstruction_storagetank_log
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteCenterdataTHousingconstructionStoragetankLogByIds" parameterType="String">
+        delete from centerdata_t_housingconstruction_storagetank_log where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 28 - 0
src/main/resources/mapper/housingconstruction/CenterdataTHousingconstructionStoragetankMapper.xml

@@ -156,4 +156,32 @@
             #{id}
         </foreach>
     </delete>
+
+
+    <select id="selectStoragetankById" parameterType="string" resultType="map">
+        select hs.id,
+               hs.name,
+               hs.enterprise_id as enterpriseId,
+               hs.enterprise_name as enterpriseName,
+               hs.storage_capacity as storageCapacity,
+               hs.level_ceiling as levelCeiling,
+               hs.level_floor as levelFloor,
+               hs.heat,
+               hs.pressure,
+               hs.gas_leak as gasLeak,
+               he.longitude,
+               he.latitude,
+               he.registered_address as registeredAddress,
+               he.dept_id as deptId,
+               he.dept_name as deptName
+        from centerdata_t_housingconstruction_storagetank hs
+        left join centerdata_t_housingconstruction_enterprise he on hs.enterprise_id = he.id
+        where hs.id = #{id}
+    </select>
+
+
+
+    <select id="getStoragetankList" parameterType="CenterdataTHousingconstructionStoragetank" resultMap="CenterdataTHousingconstructionStoragetankResult">
+        select * from centerdata_t_housingconstruction_storagetank
+    </select>
 </mapper>