浏览代码

新增:风险清单图表数据功能

sunzf 2 周之前
父节点
当前提交
0c32b50f4f
共有 49 个文件被更改,包括 5127 次插入3 次删除
  1. 44 0
      construction-ui/src/api/construction/riskregister/gasinspectionreformanalysis.js
  2. 44 0
      construction-ui/src/api/construction/riskregister/monitor.js
  3. 44 0
      construction-ui/src/api/construction/riskregister/pipedamagestats.js
  4. 44 0
      construction-ui/src/api/construction/riskregister/satisfaction.js
  5. 44 0
      construction-ui/src/api/construction/riskregister/smartcoveragerate.js
  6. 44 0
      construction-ui/src/api/construction/riskregister/wateranalysis.js
  7. 334 0
      construction-ui/src/views/construction/riskregister/gasinspectionreformanalysis/index.vue
  8. 322 0
      construction-ui/src/views/construction/riskregister/monitor/index.vue
  9. 348 0
      construction-ui/src/views/construction/riskregister/pipedamagestats/index.vue
  10. 323 0
      construction-ui/src/views/construction/riskregister/satisfaction/index.vue
  11. 302 0
      construction-ui/src/views/construction/riskregister/smartcoveragerate/index.vue
  12. 286 0
      construction-ui/src/views/construction/riskregister/wateranalysis/index.vue
  13. 91 0
      src/main/java/com/sooka/sponest/construction/riskregister/controller/DangerousBridgeSatisfactionController.java
  14. 105 0
      src/main/java/com/sooka/sponest/construction/riskregister/controller/GasInspectionReformAnalysisController.java
  15. 94 0
      src/main/java/com/sooka/sponest/construction/riskregister/controller/PipeDamageStatsController.java
  16. 91 0
      src/main/java/com/sooka/sponest/construction/riskregister/controller/PipeMunicipalMonitorController.java
  17. 91 0
      src/main/java/com/sooka/sponest/construction/riskregister/controller/ResidentWaterAnalysisController.java
  18. 91 0
      src/main/java/com/sooka/sponest/construction/riskregister/controller/SmartCoverageRateController.java
  19. 127 0
      src/main/java/com/sooka/sponest/construction/riskregister/domain/DangerousBridgeSatisfaction.java
  20. 113 0
      src/main/java/com/sooka/sponest/construction/riskregister/domain/GasInspectionReformAnalysis.java
  21. 103 0
      src/main/java/com/sooka/sponest/construction/riskregister/domain/PipeDamageStats.java
  22. 99 0
      src/main/java/com/sooka/sponest/construction/riskregister/domain/PipeMunicipalMonitor.java
  23. 43 0
      src/main/java/com/sooka/sponest/construction/riskregister/domain/ResidentWaterAnalysis.java
  24. 113 0
      src/main/java/com/sooka/sponest/construction/riskregister/domain/SmartCoverageRate.java
  25. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/mapper/DangerousBridgeSatisfactionMapper.java
  26. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/mapper/GasInspectionReformAnalysisMapper.java
  27. 62 0
      src/main/java/com/sooka/sponest/construction/riskregister/mapper/PipeDamageStatsMapper.java
  28. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/mapper/PipeMunicipalMonitorMapper.java
  29. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/mapper/ResidentWaterAnalysisMapper.java
  30. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/mapper/SmartCoverageRateMapper.java
  31. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/IDangerousBridgeSatisfactionService.java
  32. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/IGasInspectionReformAnalysisService.java
  33. 62 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/IPipeDamageStatsService.java
  34. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/IPipeMunicipalMonitorService.java
  35. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/IResidentWaterAnalysisService.java
  36. 61 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/ISmartCoverageRateService.java
  37. 96 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/impl/DangerousBridgeSatisfactionServiceImpl.java
  38. 90 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/impl/GasInspectionReformAnalysisServiceImpl.java
  39. 96 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/impl/PipeDamageStatsServiceImpl.java
  40. 96 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/impl/PipeMunicipalMonitorServiceImpl.java
  41. 96 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/impl/ResidentWaterAnalysisServiceImpl.java
  42. 96 0
      src/main/java/com/sooka/sponest/construction/riskregister/service/impl/SmartCoverageRateServiceImpl.java
  43. 4 3
      src/main/resources/mapper/construction/community/BuildingMapper.xml
  44. 85 0
      src/main/resources/mapper/construction/riskregister/DangerousBridgeSatisfactionMapper.xml
  45. 84 0
      src/main/resources/mapper/construction/riskregister/GasInspectionReformAnalysisMapper.xml
  46. 78 0
      src/main/resources/mapper/construction/riskregister/PipeDamageStatsMapper.xml
  47. 79 0
      src/main/resources/mapper/construction/riskregister/PipeMunicipalMonitorMapper.xml
  48. 69 0
      src/main/resources/mapper/construction/riskregister/ResidentWaterAnalysisMapper.xml
  49. 84 0
      src/main/resources/mapper/construction/riskregister/SmartCoverageRateMapper.xml

+ 44 - 0
construction-ui/src/api/construction/riskregister/gasinspectionreformanalysis.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询燃气查改分析数据列表
+export function listGasinspectionreformanalysis(query) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/gasinspectionreformanalysis/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询燃气查改分析数据详细
+export function getGasinspectionreformanalysis(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/gasinspectionreformanalysis/' + id,
+    method: 'get'
+  })
+}
+
+// 新增燃气查改分析数据
+export function addGasinspectionreformanalysis(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/gasinspectionreformanalysis',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改燃气查改分析数据
+export function updateGasinspectionreformanalysis(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/gasinspectionreformanalysis',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除燃气查改分析数据
+export function delGasinspectionreformanalysis(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/gasinspectionreformanalysis/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
construction-ui/src/api/construction/riskregister/monitor.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询管网智能化监测列表
+export function listMonitor(query) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/monitor/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询管网智能化监测详细
+export function getMonitor(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/monitor/' + id,
+    method: 'get'
+  })
+}
+
+// 新增管网智能化监测
+export function addMonitor(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/monitor',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改管网智能化监测
+export function updateMonitor(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/monitor',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除管网智能化监测
+export function delMonitor(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/monitor/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
construction-ui/src/api/construction/riskregister/pipedamagestats.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询管道破损统计数据列表
+export function listPipedamagestats(query) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/pipedamagestats/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询管道破损统计数据详细
+export function getPipedamagestats(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/pipedamagestats/' + id,
+    method: 'get'
+  })
+}
+
+// 新增管道破损统计数据
+export function addPipedamagestats(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/pipedamagestats',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改管道破损统计数据
+export function updatePipedamagestats(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/pipedamagestats',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除管道破损统计数据
+export function delPipedamagestats(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/pipedamagestats/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
construction-ui/src/api/construction/riskregister/satisfaction.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询危旧桥梁满意度调查数据列表
+export function listSatisfaction(query) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/satisfaction/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询危旧桥梁满意度调查数据详细
+export function getSatisfaction(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/satisfaction/' + id,
+    method: 'get'
+  })
+}
+
+// 新增危旧桥梁满意度调查数据
+export function addSatisfaction(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/satisfaction',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改危旧桥梁满意度调查数据
+export function updateSatisfaction(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/satisfaction',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除危旧桥梁满意度调查数据
+export function delSatisfaction(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/satisfaction/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
construction-ui/src/api/construction/riskregister/smartcoveragerate.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询普查覆盖率列表
+export function listSmartcoveragerate(query) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/smartcoveragerate/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询普查覆盖率详细
+export function getSmartcoveragerate(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/smartcoveragerate/' + id,
+    method: 'get'
+  })
+}
+
+// 新增普查覆盖率
+export function addSmartcoveragerate(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/smartcoveragerate',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改普查覆盖率
+export function updateSmartcoveragerate(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/smartcoveragerate',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除普查覆盖率
+export function delSmartcoveragerate(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/smartcoveragerate/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
construction-ui/src/api/construction/riskregister/wateranalysis.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询居民用水分析数据列表
+export function listWateranalysis(query) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/wateranalysis/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询居民用水分析数据详细
+export function getWateranalysis(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/wateranalysis/' + id,
+    method: 'get'
+  })
+}
+
+// 新增居民用水分析数据
+export function addWateranalysis(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/wateranalysis',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改居民用水分析数据
+export function updateWateranalysis(data) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/wateranalysis',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除居民用水分析数据
+export function delWateranalysis(id) {
+  return request({
+    url: '/sooka-digital-construction/riskregister/wateranalysis/' + id,
+    method: 'delete'
+  })
+}

+ 334 - 0
construction-ui/src/views/construction/riskregister/gasinspectionreformanalysis/index.vue

@@ -0,0 +1,334 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="燃气普及率" prop="gasPenetrationRate">
+        <el-input
+          v-model="queryParams.gasPenetrationRate"
+          placeholder="请输入燃气普及率"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="燃气改造率" prop="gasConversionRate">
+        <el-input
+          v-model="queryParams.gasConversionRate"
+          placeholder="请输入燃气改造率"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="统计日期" prop="statsPeriod">
+        <el-date-picker clearable size="small"
+                        v-model="queryParams.statsPeriod"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择统计日期">
+        </el-date-picker>
+      </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"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="gasinspectionreformanalysisList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <!--                    <el-table-column label="主键ID" align="center" prop="id" />-->
+      <el-table-column label="燃气普及率" align="center" prop="gasPenetrationRate">
+        <template slot-scope="scope">
+          <span>{{ scope.row.gasPenetrationRate }}%</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="燃气改造率" align="center" prop="gasConversionRate">
+        <template slot-scope="scope">
+          <span>{{ scope.row.gasConversionRate }}%</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="统计日期" align="center" prop="statsPeriod" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.statsPeriod, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="燃气普及率环比变化值" align="center" prop="gasPenetrationMom">
+        <template slot-scope="scope">
+          <span>{{ scope.row.gasPenetrationMom }}%</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="燃气改造率环比变化值" align="center" prop="gasConversionMom">
+        <template slot-scope="scope">
+          <span>{{ scope.row.gasConversionMom }}%</span>
+        </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)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除
+          </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="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="燃气普及率" prop="gasPenetrationRate">
+          <el-input v-model="form.gasPenetrationRate" placeholder="请输入燃气普及率" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="燃气改造率" prop="gasConversionRate">
+          <el-input v-model="form.gasConversionRate" placeholder="请输入燃气改造率" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="统计日期" prop="statsPeriod">
+          <el-date-picker clearable size="small"
+                          v-model="form.statsPeriod"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择统计日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="燃气普及率环比变化值" prop="gasPenetrationMom">
+          <el-input v-model="form.gasPenetrationMom" placeholder="请输入燃气普及率环比变化值" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="燃气改造率环比变化值" prop="gasConversionMom">
+          <el-input v-model="form.gasConversionMom" placeholder="请输入燃气改造率环比变化值" style="width: 200px"/>
+        </el-form-item>
+      </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 {
+  listGasinspectionreformanalysis,
+  getGasinspectionreformanalysis,
+  delGasinspectionreformanalysis,
+  addGasinspectionreformanalysis,
+  updateGasinspectionreformanalysis
+} from "@/api/construction/riskregister/gasinspectionreformanalysis";
+
+export default {
+  name: "Gasinspectionreformanalysis",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 燃气查改分析数据表格数据
+      gasinspectionreformanalysisList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        gasPenetrationRate: null,
+        gasConversionRate: null,
+        statsPeriod: null,
+        gasPenetrationMom: null,
+        gasConversionMom: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        gasPenetrationRate: [
+          {required: true, message: "燃气普及率不能为空", trigger: "blur"}
+        ],
+        gasConversionRate: [
+          {required: true, message: "燃气改造率不能为空", trigger: "blur"}
+        ],
+        statsPeriod: [
+          {required: true, message: "统计日期不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询燃气查改分析数据列表 */
+    getList() {
+      this.loading = true;
+      listGasinspectionreformanalysis(this.queryParams).then(response => {
+        this.gasinspectionreformanalysisList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        gasPenetrationRate: null,
+        gasConversionRate: null,
+        statsPeriod: null,
+        gasPenetrationMom: null,
+        gasConversionMom: null,
+        createTime: null,
+        updateTime: 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
+      getGasinspectionreformanalysis(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) {
+            updateGasinspectionreformanalysis(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addGasinspectionreformanalysis(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 delGasinspectionreformanalysis(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('riskregister/gasinspectionreformanalysis/export', {
+        ...this.queryParams
+      }, `gasinspectionreformanalysis_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 322 - 0
construction-ui/src/views/construction/riskregister/monitor/index.vue

@@ -0,0 +1,322 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="监测日期" prop="monitorPeriod">
+        <el-date-picker clearable size="small"
+                        v-model="queryParams.monitorPeriod"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择监测日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="管道类型" prop="pipelineType">
+        <el-select v-model="queryParams.pipelineType" placeholder="请选择管道类型" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.lifeline_industry"
+            :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"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="monitorList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+<!--      <el-table-column label="主键ID" align="center" prop="id"/>-->
+      <el-table-column label="监测日期" align="center" prop="monitorPeriod" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.monitorPeriod, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="管道类型" align="center" prop="pipelineType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.lifeline_industry" :value="scope.row.pipelineType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="监测数值" align="center" prop="monitorValue"/>
+      <el-table-column label="环比变化值" align="center" prop="mom"/>
+      <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)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除
+          </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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="监测日期" prop="monitorPeriod">
+          <el-date-picker clearable size="small"
+                          v-model="form.monitorPeriod"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择监测日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="管道类型" prop="pipelineType">
+          <el-select v-model="form.pipelineType" placeholder="请选择管道类型">
+            <el-option
+              v-for="dict in dict.type.lifeline_industry"
+              :key="dict.value"
+              :label="dict.label"
+              :value="parseInt(dict.value)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="监测数值" prop="monitorValue">
+          <el-input v-model="form.monitorValue" placeholder="请输入监测数值" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="环比变化值" prop="mom">
+          <el-input v-model="form.mom" placeholder="请输入环比变化值" style="width: 200px"/>
+        </el-form-item>
+      </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 {listMonitor, getMonitor, delMonitor, addMonitor, updateMonitor} from "@/api/construction/riskregister/monitor";
+
+export default {
+  name: "Monitor",
+  dicts: ['lifeline_industry'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 管网智能化监测表格数据
+      monitorList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        monitorPeriod: null,
+        pipelineType: null,
+        monitorValue: null,
+        mom: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        monitorPeriod: [
+          {required: true, message: "监测日期不能为空", trigger: "blur"}
+        ],
+        pipelineType: [
+          {required: true, message: "管道类型不能为空", trigger: "change"}
+        ],
+        monitorValue: [
+          {required: true, validator: this.validateNumber, trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    // 自定义数值类型校验
+    validateNumber(rule, value, callback) {
+      if (value != null && value !== '') {
+        if (!/^[1-9]\d*$/.test(value)) {
+          callback(new Error('必须为正整数值'))
+        } else {
+          if (value && (value < 0 || value > 999999)) {
+            callback(new Error('必须在0到999999之间'));
+          } else {
+            callback();
+          }
+        }
+      } else {
+        callback(new Error('破损数量不能为空'));
+      }
+    },
+    /** 查询管网智能化监测列表 */
+    getList() {
+      this.loading = true;
+      listMonitor(this.queryParams).then(response => {
+        this.monitorList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        monitorPeriod: null,
+        pipelineType: null,
+        monitorValue: null,
+        mom: null,
+        createTime: null,
+        updateTime: 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
+      getMonitor(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) {
+            updateMonitor(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addMonitor(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 delMonitor(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('riskregister/monitor/export', {
+        ...this.queryParams
+      }, `monitor_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 348 - 0
construction-ui/src/views/construction/riskregister/pipedamagestats/index.vue

@@ -0,0 +1,348 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="统计日期" prop="statsPeriod">
+        <el-date-picker clearable size="small"
+                        v-model="queryParams.statsPeriod"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择统计日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="归属行业" prop="pipeType">
+        <el-select v-model="queryParams.pipeType" placeholder="请选择归属行业" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.lifeline_industry"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="破损数量" prop="damageCount">
+        <el-input
+          v-model="queryParams.damageCount"
+          placeholder="请输入破损数量"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </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"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="pipedamagestatsList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <!--                    <el-table-column label="主键ID" align="center" prop="id" />-->
+      <el-table-column label="统计日期" align="center" prop="statsPeriod" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.statsPeriod, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="归属行业" align="center" prop="pipeType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.lifeline_industry" :value="scope.row.pipeType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="破损数量" align="center" prop="damageCount"/>
+      <el-table-column label="环比变化值" align="center" prop="mom" />
+      <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)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除
+          </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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="统计日期" prop="statsPeriod">
+          <el-date-picker clearable size="small"
+                          v-model="form.statsPeriod"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择统计日期"
+                          :picker-options="pickerOptions">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属行业" prop="pipeType">
+          <el-select v-model="form.pipeType" placeholder="请选择归属行业">
+            <el-option
+              v-for="dict in dict.type.lifeline_industry"
+              :key="dict.value"
+              :label="dict.label"
+              :value="parseInt(dict.value)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="破损数量" prop="damageCount">
+          <el-input v-model="form.damageCount" placeholder="请输入破损数量" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="环比变化值" prop="mom">
+          <el-input v-model="form.mom" placeholder="请输入破损数量" style="width: 200px"/>
+        </el-form-item>
+      </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 {
+  listPipedamagestats,
+  getPipedamagestats,
+  delPipedamagestats,
+  addPipedamagestats,
+  updatePipedamagestats
+} from "@/api/construction/riskregister/pipedamagestats";
+
+export default {
+  name: "Pipedamagestats",
+  dicts: ['lifeline_industry'],
+  data() {
+    return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now();
+        }
+      },
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 管道破损统计数据表格数据
+      pipedamagestatsList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        statsPeriod: null,
+        pipeType: null,
+        damageCount: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        statsPeriod: [
+          {required: true, message: "统计日期不能为空", trigger: "blur"}
+        ],
+        pipeType: [
+          {required: true, message: "归属行业不能为空", trigger: "change"}
+        ],
+        damageCount: [
+          {required: true, validator: this.validateNumber, trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    // 自定义数值类型校验
+    validateNumber(rule, value, callback) {
+      if (value != null && value !== '') {
+        if (!/^[1-9]\d*$/.test(value)) {
+          callback(new Error('必须为正整数值'))
+        } else {
+          if (value && (value < 0 || value > 999999)) {
+            callback(new Error('必须在0到999999之间'));
+          } else {
+            callback();
+          }
+        }
+      } else {
+        callback(new Error('破损数量不能为空'));
+      }
+    },
+    /** 查询管道破损统计数据列表 */
+    getList() {
+      this.loading = true;
+      listPipedamagestats(this.queryParams).then(response => {
+        this.pipedamagestatsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      const today = new Date();
+      const yyyy = today.getFullYear();
+      const mm = String(today.getMonth() + 1).padStart(2, '0');
+      const dd = String(today.getDate()).padStart(2, '0');
+      const currentDate = `${yyyy}-${mm}-${dd}`;
+
+      this.form = {
+        id: null,
+        statsPeriod: currentDate,
+        pipeType: null,
+        damageCount: null,
+        mom: null,
+        createTime: null,
+        updateTime: 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
+      getPipedamagestats(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) {
+            updatePipedamagestats(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addPipedamagestats(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 delPipedamagestats(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('riskregister/pipedamagestats/export', {
+        ...this.queryParams
+      }, `pipedamagestats_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 323 - 0
construction-ui/src/views/construction/riskregister/satisfaction/index.vue

@@ -0,0 +1,323 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="调查日期" prop="surveyPeriod">
+        <el-date-picker clearable size="small"
+                        v-model="queryParams.surveyPeriod"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择调查日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="满意度等级" prop="satisfactionLevel">
+        <el-select v-model="queryParams.satisfactionLevel" placeholder="请选择满意度等级" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.satisfaction_level"
+            :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"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="satisfactionList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+<!--      <el-table-column label="主键ID" align="center" prop="id"/>-->
+      <el-table-column label="调查日期" align="center" prop="surveyPeriod" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.surveyPeriod, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="满意度等级" align="center" prop="satisfactionLevel">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.satisfaction_level" :value="scope.row.satisfactionLevel"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="调查人数" align="center" prop="satisfactionCount"/>
+      <el-table-column label="调查人数的百分比" align="center" prop="percentage"/>
+      <el-table-column label="环比变化率" align="center" prop="qoqChange"/>
+      <el-table-column label="本周期总调查人数" align="center" prop="totalRespondents"/>
+      <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)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除
+          </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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="180px">
+        <el-form-item label="调查日期" prop="surveyPeriod">
+          <el-date-picker clearable size="small"
+                          v-model="form.surveyPeriod"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择调查日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="满意度等级" prop="satisfactionLevel">
+          <el-select v-model="form.satisfactionLevel" placeholder="请选择满意度等级">
+            <el-option
+              v-for="dict in dict.type.satisfaction_level"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="调查人数" prop="satisfactionCount">
+          <el-input v-model="form.satisfactionCount" placeholder="请输入调查人数" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="调查人数的百分比" prop="percentage">
+          <el-input v-model="form.percentage" placeholder="请输入调查人数的百分比" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="环比变化率" prop="qoqChange">
+          <el-input v-model="form.qoqChange" placeholder="请输入环比变化率" style="width: 200px"/>
+        </el-form-item>
+        <el-form-item label="本周期总调查人数" prop="totalRespondents">
+          <el-input v-model="form.totalRespondents" placeholder="请输入本周期总调查人数" style="width: 200px"/>
+        </el-form-item>
+      </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 {
+  listSatisfaction,
+  getSatisfaction,
+  delSatisfaction,
+  addSatisfaction,
+  updateSatisfaction
+} from "@/api/construction/riskregister/satisfaction";
+
+export default {
+  name: "Satisfaction",
+  dicts: ['satisfaction_level'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 危旧桥梁满意度调查数据表格数据
+      satisfactionList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        surveyPeriod: null,
+        satisfactionLevel: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        surveyPeriod: [
+          {required: true, message: "调查日期不能为空", trigger: "blur"}
+        ],
+        satisfactionLevel: [
+          {required: true, message: "满意度等级不能为空", trigger: "change"}
+        ],
+        satisfactionCount: [
+          {required: true, message: "调查人数不能为空", trigger: "blur"}
+        ],
+        percentage: [
+          {required: true, message: "调查人数的百分比不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询危旧桥梁满意度调查数据列表 */
+    getList() {
+      this.loading = true;
+      listSatisfaction(this.queryParams).then(response => {
+        this.satisfactionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        surveyPeriod: null,
+        satisfactionLevel: null,
+        satisfactionCount: null,
+        percentage: null,
+        qoqChange: null,
+        totalRespondents: null,
+        createTime: null,
+        updateTime: 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
+      getSatisfaction(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) {
+            updateSatisfaction(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSatisfaction(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 delSatisfaction(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('riskregister/satisfaction/export', {
+        ...this.queryParams
+      }, `satisfaction_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 302 - 0
construction-ui/src/views/construction/riskregister/smartcoveragerate/index.vue

@@ -0,0 +1,302 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="统计日期" prop="statisticsDate">
+        <el-date-picker clearable size="small"
+                        v-model="queryParams.statisticsDate"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择统计日期">
+        </el-date-picker>
+      </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"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="smartcoveragerateList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+<!--      <el-table-column label="主键ID" align="center" prop="id"/>-->
+      <el-table-column label="排水管网普查覆盖率" align="center" prop="drainagePipelineSurveyRate"/>
+      <el-table-column label="供热管网普查覆盖率" align="center" prop="heatingPipelineSurveyRate"/>
+      <el-table-column label="城市生活污水集中收集率" align="center" prop="urbanSewageCollectionRate"/>
+      <el-table-column label="应急供水保障率" align="center" prop="emergencyWaterSupplyRate"/>
+      <el-table-column label="统计日期" align="center" prop="statisticsDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.statisticsDate, '{y}-{m}-{d}') }}</span>
+        </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)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除
+          </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="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="240px">
+        <el-form-item label="排水管网普查覆盖率" prop="drainagePipelineSurveyRate">
+          <el-input v-model="form.drainagePipelineSurveyRate" placeholder="请输入排水管网普查覆盖率" style="width: 400px"/>
+        </el-form-item>
+        <el-form-item label="供热管网普查覆盖率" prop="heatingPipelineSurveyRate">
+          <el-input v-model="form.heatingPipelineSurveyRate" placeholder="请输入供热管网普查覆盖率" style="width: 400px"/>
+        </el-form-item>
+        <el-form-item label="城市生活污水集中收集率" prop="urbanSewageCollectionRate">
+          <el-input v-model="form.urbanSewageCollectionRate" placeholder="请输入城市生活污水集中收集率" style="width: 400px"/>
+        </el-form-item>
+        <el-form-item label="应急供水保障率" prop="emergencyWaterSupplyRate">
+          <el-input v-model="form.emergencyWaterSupplyRate" placeholder="请输入应急供水保障率" style="width: 400px"/>
+        </el-form-item>
+        <el-form-item label="统计日期" prop="statisticsDate">
+          <el-date-picker clearable size="small"
+                          v-model="form.statisticsDate"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择统计日期">
+          </el-date-picker>
+        </el-form-item>
+      </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 {
+  listSmartcoveragerate,
+  getSmartcoveragerate,
+  delSmartcoveragerate,
+  addSmartcoveragerate,
+  updateSmartcoveragerate
+} from "@/api/construction/riskregister/smartcoveragerate";
+
+export default {
+  name: "Smartcoveragerate",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 普查覆盖率表格数据
+      smartcoveragerateList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        drainagePipelineSurveyRate: null,
+        heatingPipelineSurveyRate: null,
+        urbanSewageCollectionRate: null,
+        emergencyWaterSupplyRate: null,
+        statisticsDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        drainagePipelineSurveyRate: [
+          {required: true, message: "排水管网普查覆盖率不能为空", trigger: "blur"}
+        ],
+        heatingPipelineSurveyRate: [
+          {required: true, message: "供热管网普查覆盖率不能为空", trigger: "blur"}
+        ],
+        urbanSewageCollectionRate: [
+          {required: true, message: "城市生活污水集中收集率不能为空", trigger: "blur"}
+        ],
+        emergencyWaterSupplyRate: [
+          {required: true, message: "应急供水保障率不能为空", trigger: "blur"}
+        ],
+        statisticsDate: [
+          {required: true, message: "统计日期不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询普查覆盖率列表 */
+    getList() {
+      this.loading = true;
+      listSmartcoveragerate(this.queryParams).then(response => {
+        this.smartcoveragerateList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        drainagePipelineSurveyRate: null,
+        heatingPipelineSurveyRate: null,
+        urbanSewageCollectionRate: null,
+        emergencyWaterSupplyRate: null,
+        statisticsDate: null,
+        createTime: null,
+        updateTime: 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
+      getSmartcoveragerate(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) {
+            updateSmartcoveragerate(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSmartcoveragerate(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 delSmartcoveragerate(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('riskregister/smartcoveragerate/export', {
+        ...this.queryParams
+      }, `smartcoveragerate_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 286 - 0
construction-ui/src/views/construction/riskregister/wateranalysis/index.vue

@@ -0,0 +1,286 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="统计日期" prop="periodDate">
+        <el-date-picker clearable size="small"
+                        v-model="queryParams.periodDate"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择统计日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="居民用水量" prop="waterUsage">
+        <el-input
+          v-model="queryParams.waterUsage"
+          placeholder="请输入居民用水量"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </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"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="wateranalysisList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+<!--      <el-table-column label="主键ID" align="center" prop="id"/>-->
+      <el-table-column label="统计日期" align="center" prop="periodDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.periodDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="居民用水量" align="center" prop="waterUsage"/>
+      <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="['riskregister:wateranalysis:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['riskregister:wateranalysis: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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="统计日期" prop="periodDate">
+          <el-date-picker clearable size="small"
+                          v-model="form.periodDate"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择统计日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="居民用水量" prop="waterUsage">
+          <el-input v-model="form.waterUsage" placeholder="请输入居民用水量" style="width: 200px"/>
+        </el-form-item>
+      </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 {
+  listWateranalysis,
+  getWateranalysis,
+  delWateranalysis,
+  addWateranalysis,
+  updateWateranalysis
+} from "@/api/construction/riskregister/wateranalysis";
+
+export default {
+  name: "Wateranalysis",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 居民用水分析数据表格数据
+      wateranalysisList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        periodDate: null,
+        waterUsage: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        periodDate: [
+          {required: true, message: "统计日期不能为空", trigger: "blur"}
+        ],
+        waterUsage: [
+          {required: true, message: "居民用水量不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询居民用水分析数据列表 */
+    getList() {
+      this.loading = true;
+      listWateranalysis(this.queryParams).then(response => {
+        this.wateranalysisList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        periodDate: null,
+        waterUsage: null,
+        createTime: null,
+        updateTime: 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
+      getWateranalysis(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) {
+            updateWateranalysis(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addWateranalysis(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 delWateranalysis(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('riskregister/wateranalysis/export', {
+        ...this.queryParams
+      }, `wateranalysis_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 91 - 0
src/main/java/com/sooka/sponest/construction/riskregister/controller/DangerousBridgeSatisfactionController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.construction.riskregister.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.sooka.sponest.construction.riskregister.domain.DangerousBridgeSatisfaction;
+import com.sooka.sponest.construction.riskregister.service.IDangerousBridgeSatisfactionService;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+
+/**
+ * 危旧桥梁满意度调查数据Controller
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+@RestController
+@RequestMapping("/riskregister/satisfaction")
+public class DangerousBridgeSatisfactionController extends BaseController {
+    @Autowired
+    private IDangerousBridgeSatisfactionService dangerousBridgeSatisfactionService;
+
+    /**
+     * 查询危旧桥梁满意度调查数据列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(DangerousBridgeSatisfaction dangerousBridgeSatisfaction) {
+        startPage();
+        List<DangerousBridgeSatisfaction> list = dangerousBridgeSatisfactionService.selectDangerousBridgeSatisfactionList(dangerousBridgeSatisfaction);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出危旧桥梁满意度调查数据列表
+     */
+    @Log(title = "危旧桥梁满意度调查数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DangerousBridgeSatisfaction dangerousBridgeSatisfaction) {
+        List<DangerousBridgeSatisfaction> list = dangerousBridgeSatisfactionService.selectDangerousBridgeSatisfactionList(dangerousBridgeSatisfaction);
+        ExcelUtil<DangerousBridgeSatisfaction> util = new ExcelUtil<DangerousBridgeSatisfaction>(DangerousBridgeSatisfaction.class);
+        util.exportExcel(response, list, "危旧桥梁满意度调查数据数据");
+    }
+
+    /**
+     * 获取危旧桥梁满意度调查数据详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(dangerousBridgeSatisfactionService.selectDangerousBridgeSatisfactionById(id));
+    }
+
+    /**
+     * 新增危旧桥梁满意度调查数据
+     */
+    @Log(title = "危旧桥梁满意度调查数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DangerousBridgeSatisfaction dangerousBridgeSatisfaction) {
+        return toAjax(dangerousBridgeSatisfactionService.insertDangerousBridgeSatisfaction(dangerousBridgeSatisfaction));
+    }
+
+    /**
+     * 修改危旧桥梁满意度调查数据
+     */
+    @Log(title = "危旧桥梁满意度调查数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DangerousBridgeSatisfaction dangerousBridgeSatisfaction) {
+        return toAjax(dangerousBridgeSatisfactionService.updateDangerousBridgeSatisfaction(dangerousBridgeSatisfaction));
+    }
+
+    /**
+     * 删除危旧桥梁满意度调查数据
+     */
+    @Log(title = "危旧桥梁满意度调查数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(dangerousBridgeSatisfactionService.deleteDangerousBridgeSatisfactionByIds(ids));
+    }
+}

+ 105 - 0
src/main/java/com/sooka/sponest/construction/riskregister/controller/GasInspectionReformAnalysisController.java

@@ -0,0 +1,105 @@
+package com.sooka.sponest.construction.riskregister.controller;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+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.construction.riskregister.domain.GasInspectionReformAnalysis;
+import com.sooka.sponest.construction.riskregister.service.IGasInspectionReformAnalysisService;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+
+/**
+ * 燃气查改分析数据Controller
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@RestController
+@RequestMapping("/riskregister/gasinspectionreformanalysis")
+public class GasInspectionReformAnalysisController extends BaseController
+{
+    @Autowired
+    private IGasInspectionReformAnalysisService gasInspectionReformAnalysisService;
+
+/**
+ * 查询燃气查改分析数据列表
+ */
+@RequiresPermissions("riskregister:gasinspectionreformanalysis:list")
+@GetMapping("/list")
+    public TableDataInfo list(GasInspectionReformAnalysis gasInspectionReformAnalysis)
+    {
+        startPage();
+        List<GasInspectionReformAnalysis> list = gasInspectionReformAnalysisService.selectGasInspectionReformAnalysisList(gasInspectionReformAnalysis);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出燃气查改分析数据列表
+     */
+    @RequiresPermissions("riskregister:gasinspectionreformanalysis:export")
+    @Log(title = "燃气查改分析数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, GasInspectionReformAnalysis gasInspectionReformAnalysis)
+    {
+        List<GasInspectionReformAnalysis> list = gasInspectionReformAnalysisService.selectGasInspectionReformAnalysisList(gasInspectionReformAnalysis);
+        ExcelUtil<GasInspectionReformAnalysis> util = new ExcelUtil<GasInspectionReformAnalysis>(GasInspectionReformAnalysis.class);
+        util.exportExcel(response, list, "燃气查改分析数据数据");
+    }
+
+    /**
+     * 获取燃气查改分析数据详细信息
+     */
+    @RequiresPermissions("riskregister:gasinspectionreformanalysis:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(gasInspectionReformAnalysisService.selectGasInspectionReformAnalysisById(id));
+    }
+
+    /**
+     * 新增燃气查改分析数据
+     */
+    @RequiresPermissions("riskregister:gasinspectionreformanalysis:add")
+    @Log(title = "燃气查改分析数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody GasInspectionReformAnalysis gasInspectionReformAnalysis)
+    {
+        return toAjax(gasInspectionReformAnalysisService.insertGasInspectionReformAnalysis(gasInspectionReformAnalysis));
+    }
+
+    /**
+     * 修改燃气查改分析数据
+     */
+    @RequiresPermissions("riskregister:gasinspectionreformanalysis:edit")
+    @Log(title = "燃气查改分析数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody GasInspectionReformAnalysis gasInspectionReformAnalysis)
+    {
+        return toAjax(gasInspectionReformAnalysisService.updateGasInspectionReformAnalysis(gasInspectionReformAnalysis));
+    }
+
+    /**
+     * 删除燃气查改分析数据
+     */
+    @RequiresPermissions("riskregister:gasinspectionreformanalysis:remove")
+    @Log(title = "燃气查改分析数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(gasInspectionReformAnalysisService.deleteGasInspectionReformAnalysisByIds(ids));
+    }
+}

+ 94 - 0
src/main/java/com/sooka/sponest/construction/riskregister/controller/PipeDamageStatsController.java

@@ -0,0 +1,94 @@
+package com.sooka.sponest.construction.riskregister.controller;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+import com.sooka.sponest.construction.riskregister.domain.PipeDamageStats;
+import com.sooka.sponest.construction.riskregister.service.IPipeDamageStatsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+
+/**
+ * 管道破损统计数据Controller
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@RestController
+@RequestMapping("/riskregister/pipedamagestats")
+public class PipeDamageStatsController extends BaseController {
+
+    @Autowired
+    private IPipeDamageStatsService pipeDamageStatsService;
+
+    /**
+     * 查询管道破损统计数据列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(PipeDamageStats pipeDamageStats) {
+        startPage();
+        List<PipeDamageStats> list = pipeDamageStatsService.selectPipeDamageStatsList(pipeDamageStats);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出管道破损统计数据列表
+     */
+    @Log(title = "管道破损统计数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, PipeDamageStats pipeDamageStats) {
+        List<PipeDamageStats> list = pipeDamageStatsService.selectPipeDamageStatsList(pipeDamageStats);
+        ExcelUtil<PipeDamageStats> util = new ExcelUtil<PipeDamageStats>(PipeDamageStats.class);
+        util.exportExcel(response, list, "管道破损统计数据数据");
+    }
+
+    /**
+     * 获取管道破损统计数据详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(pipeDamageStatsService.selectPipeDamageStatsById(id));
+    }
+
+    /**
+     * 新增管道破损统计数据
+     */
+    @Log(title = "管道破损统计数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PipeDamageStats pipeDamageStats) {
+        return toAjax(pipeDamageStatsService.insertPipeDamageStats(pipeDamageStats));
+    }
+
+    /**
+     * 修改管道破损统计数据
+     */
+    @Log(title = "管道破损统计数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PipeDamageStats pipeDamageStats) {
+        return toAjax(pipeDamageStatsService.updatePipeDamageStats(pipeDamageStats));
+    }
+
+    /**
+     * 删除管道破损统计数据
+     */
+    @Log(title = "管道破损统计数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(pipeDamageStatsService.deletePipeDamageStatsByIds(ids));
+    }
+}

+ 91 - 0
src/main/java/com/sooka/sponest/construction/riskregister/controller/PipeMunicipalMonitorController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.construction.riskregister.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.sooka.sponest.construction.riskregister.domain.PipeMunicipalMonitor;
+import com.sooka.sponest.construction.riskregister.service.IPipeMunicipalMonitorService;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+
+/**
+ * 管网智能化监测Controller
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@RestController
+@RequestMapping("/riskregister/monitor")
+public class PipeMunicipalMonitorController extends BaseController {
+    @Autowired
+    private IPipeMunicipalMonitorService pipeMunicipalMonitorService;
+
+    /**
+     * 查询管网智能化监测列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(PipeMunicipalMonitor pipeMunicipalMonitor) {
+        startPage();
+        List<PipeMunicipalMonitor> list = pipeMunicipalMonitorService.selectPipeMunicipalMonitorList(pipeMunicipalMonitor);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出管网智能化监测列表
+     */
+    @Log(title = "管网智能化监测", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, PipeMunicipalMonitor pipeMunicipalMonitor) {
+        List<PipeMunicipalMonitor> list = pipeMunicipalMonitorService.selectPipeMunicipalMonitorList(pipeMunicipalMonitor);
+        ExcelUtil<PipeMunicipalMonitor> util = new ExcelUtil<PipeMunicipalMonitor>(PipeMunicipalMonitor.class);
+        util.exportExcel(response, list, "管网智能化监测数据");
+    }
+
+    /**
+     * 获取管网智能化监测详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(pipeMunicipalMonitorService.selectPipeMunicipalMonitorById(id));
+    }
+
+    /**
+     * 新增管网智能化监测
+     */
+    @Log(title = "管网智能化监测", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PipeMunicipalMonitor pipeMunicipalMonitor) {
+        return toAjax(pipeMunicipalMonitorService.insertPipeMunicipalMonitor(pipeMunicipalMonitor));
+    }
+
+    /**
+     * 修改管网智能化监测
+     */
+    @Log(title = "管网智能化监测", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PipeMunicipalMonitor pipeMunicipalMonitor) {
+        return toAjax(pipeMunicipalMonitorService.updatePipeMunicipalMonitor(pipeMunicipalMonitor));
+    }
+
+    /**
+     * 删除管网智能化监测
+     */
+    @Log(title = "管网智能化监测", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(pipeMunicipalMonitorService.deletePipeMunicipalMonitorByIds(ids));
+    }
+}

+ 91 - 0
src/main/java/com/sooka/sponest/construction/riskregister/controller/ResidentWaterAnalysisController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.construction.riskregister.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.sooka.sponest.construction.riskregister.domain.ResidentWaterAnalysis;
+import com.sooka.sponest.construction.riskregister.service.IResidentWaterAnalysisService;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+
+/**
+ * 居民用水分析数据Controller
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@RestController
+@RequestMapping("/riskregister/wateranalysis")
+public class ResidentWaterAnalysisController extends BaseController {
+    @Autowired
+    private IResidentWaterAnalysisService residentWaterAnalysisService;
+
+    /**
+     * 查询居民用水分析数据列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(ResidentWaterAnalysis residentWaterAnalysis) {
+        startPage();
+        List<ResidentWaterAnalysis> list = residentWaterAnalysisService.selectResidentWaterAnalysisList(residentWaterAnalysis);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出居民用水分析数据列表
+     */
+    @Log(title = "居民用水分析数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ResidentWaterAnalysis residentWaterAnalysis) {
+        List<ResidentWaterAnalysis> list = residentWaterAnalysisService.selectResidentWaterAnalysisList(residentWaterAnalysis);
+        ExcelUtil<ResidentWaterAnalysis> util = new ExcelUtil<ResidentWaterAnalysis>(ResidentWaterAnalysis.class);
+        util.exportExcel(response, list, "居民用水分析数据数据");
+    }
+
+    /**
+     * 获取居民用水分析数据详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(residentWaterAnalysisService.selectResidentWaterAnalysisById(id));
+    }
+
+    /**
+     * 新增居民用水分析数据
+     */
+    @Log(title = "居民用水分析数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ResidentWaterAnalysis residentWaterAnalysis) {
+        return toAjax(residentWaterAnalysisService.insertResidentWaterAnalysis(residentWaterAnalysis));
+    }
+
+    /**
+     * 修改居民用水分析数据
+     */
+    @Log(title = "居民用水分析数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ResidentWaterAnalysis residentWaterAnalysis) {
+        return toAjax(residentWaterAnalysisService.updateResidentWaterAnalysis(residentWaterAnalysis));
+    }
+
+    /**
+     * 删除居民用水分析数据
+     */
+    @Log(title = "居民用水分析数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(residentWaterAnalysisService.deleteResidentWaterAnalysisByIds(ids));
+    }
+}

+ 91 - 0
src/main/java/com/sooka/sponest/construction/riskregister/controller/SmartCoverageRateController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.construction.riskregister.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.sooka.sponest.construction.riskregister.domain.SmartCoverageRate;
+import com.sooka.sponest.construction.riskregister.service.ISmartCoverageRateService;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+
+/**
+ * 普查覆盖率Controller
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+@RestController
+@RequestMapping("/riskregister/smartcoveragerate")
+public class SmartCoverageRateController extends BaseController {
+    @Autowired
+    private ISmartCoverageRateService smartCoverageRateService;
+
+    /**
+     * 查询普查覆盖率列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(SmartCoverageRate smartCoverageRate) {
+        startPage();
+        List<SmartCoverageRate> list = smartCoverageRateService.selectSmartCoverageRateList(smartCoverageRate);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出普查覆盖率列表
+     */
+    @Log(title = "普查覆盖率", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SmartCoverageRate smartCoverageRate) {
+        List<SmartCoverageRate> list = smartCoverageRateService.selectSmartCoverageRateList(smartCoverageRate);
+        ExcelUtil<SmartCoverageRate> util = new ExcelUtil<SmartCoverageRate>(SmartCoverageRate.class);
+        util.exportExcel(response, list, "普查覆盖率数据");
+    }
+
+    /**
+     * 获取普查覆盖率详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(smartCoverageRateService.selectSmartCoverageRateById(id));
+    }
+
+    /**
+     * 新增普查覆盖率
+     */
+    @Log(title = "普查覆盖率", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody SmartCoverageRate smartCoverageRate) {
+        return toAjax(smartCoverageRateService.insertSmartCoverageRate(smartCoverageRate));
+    }
+
+    /**
+     * 修改普查覆盖率
+     */
+    @Log(title = "普查覆盖率", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody SmartCoverageRate smartCoverageRate) {
+        return toAjax(smartCoverageRateService.updateSmartCoverageRate(smartCoverageRate));
+    }
+
+    /**
+     * 删除普查覆盖率
+     */
+    @Log(title = "普查覆盖率", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(smartCoverageRateService.deleteSmartCoverageRateByIds(ids));
+    }
+}

+ 127 - 0
src/main/java/com/sooka/sponest/construction/riskregister/domain/DangerousBridgeSatisfaction.java

@@ -0,0 +1,127 @@
+package com.sooka.sponest.construction.riskregister.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 危旧桥梁满意度调查数据对象 dangerous_bridge_satisfaction
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+public class DangerousBridgeSatisfaction extends BaseEntity
+        {
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private Long id;
+
+    /** 调查日期 */
+            @JsonFormat(pattern = "yyyy-MM-dd")
+            @Excel(name = "调查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date surveyPeriod;
+
+    /** 满意度等级 */
+            @Excel(name = "满意度等级")
+    private String satisfactionLevel;
+
+    /** 调查人数 */
+            @Excel(name = "调查人数")
+    private Long satisfactionCount;
+
+    /** 调查人数的百分比(%) */
+            @Excel(name = "调查人数的百分比", readConverterExp = "%=")
+    private BigDecimal percentage;
+
+    /** 环比变化率(%) */
+            @Excel(name = "环比变化率", readConverterExp = "%=")
+    private BigDecimal qoqChange;
+
+    /** 本周期总调查人数 */
+            @Excel(name = "本周期总调查人数")
+    private Long totalRespondents;
+
+    public void setId(Long id)
+            {
+            this.id = id;
+            }
+
+    public Long getId()
+            {
+            return id;
+            }
+    public void setSurveyPeriod(Date surveyPeriod)
+            {
+            this.surveyPeriod = surveyPeriod;
+            }
+
+    public Date getSurveyPeriod()
+            {
+            return surveyPeriod;
+            }
+    public void setSatisfactionLevel(String satisfactionLevel)
+            {
+            this.satisfactionLevel = satisfactionLevel;
+            }
+
+    public String getSatisfactionLevel()
+            {
+            return satisfactionLevel;
+            }
+    public void setSatisfactionCount(Long satisfactionCount)
+            {
+            this.satisfactionCount = satisfactionCount;
+            }
+
+    public Long getSatisfactionCount()
+            {
+            return satisfactionCount;
+            }
+    public void setPercentage(BigDecimal percentage)
+            {
+            this.percentage = percentage;
+            }
+
+    public BigDecimal getPercentage()
+            {
+            return percentage;
+            }
+    public void setQoqChange(BigDecimal qoqChange)
+            {
+            this.qoqChange = qoqChange;
+            }
+
+    public BigDecimal getQoqChange()
+            {
+            return qoqChange;
+            }
+    public void setTotalRespondents(Long totalRespondents)
+            {
+            this.totalRespondents = totalRespondents;
+            }
+
+    public Long getTotalRespondents()
+            {
+            return totalRespondents;
+            }
+
+@Override
+public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("surveyPeriod", getSurveyPeriod())
+            .append("satisfactionLevel", getSatisfactionLevel())
+            .append("satisfactionCount", getSatisfactionCount())
+            .append("percentage", getPercentage())
+            .append("qoqChange", getQoqChange())
+            .append("totalRespondents", getTotalRespondents())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+        .toString();
+        }
+        }

+ 113 - 0
src/main/java/com/sooka/sponest/construction/riskregister/domain/GasInspectionReformAnalysis.java

@@ -0,0 +1,113 @@
+package com.sooka.sponest.construction.riskregister.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 燃气查改分析数据对象 gas_inspection_reform_analysis
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public class GasInspectionReformAnalysis extends BaseEntity
+        {
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private Long id;
+
+    /** 燃气普及率 */
+            @Excel(name = "燃气普及率")
+    private BigDecimal gasPenetrationRate;
+
+    /** 燃气改造率 */
+            @Excel(name = "燃气改造率")
+    private BigDecimal gasConversionRate;
+
+    /** 统计日期 */
+            @JsonFormat(pattern = "yyyy-MM-dd")
+            @Excel(name = "统计日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date statsPeriod;
+
+    /** 燃气普及率环比变化值 */
+            @Excel(name = "燃气普及率环比变化值")
+    private BigDecimal gasPenetrationMom;
+
+    /** 燃气改造率环比变化值 */
+            @Excel(name = "燃气改造率环比变化值")
+    private BigDecimal gasConversionMom;
+
+    public void setId(Long id)
+            {
+            this.id = id;
+            }
+
+    public Long getId()
+            {
+            return id;
+            }
+    public void setGasPenetrationRate(BigDecimal gasPenetrationRate)
+            {
+            this.gasPenetrationRate = gasPenetrationRate;
+            }
+
+    public BigDecimal getGasPenetrationRate()
+            {
+            return gasPenetrationRate;
+            }
+    public void setGasConversionRate(BigDecimal gasConversionRate)
+            {
+            this.gasConversionRate = gasConversionRate;
+            }
+
+    public BigDecimal getGasConversionRate()
+            {
+            return gasConversionRate;
+            }
+    public void setStatsPeriod(Date statsPeriod)
+            {
+            this.statsPeriod = statsPeriod;
+            }
+
+    public Date getStatsPeriod()
+            {
+            return statsPeriod;
+            }
+    public void setGasPenetrationMom(BigDecimal gasPenetrationMom)
+            {
+            this.gasPenetrationMom = gasPenetrationMom;
+            }
+
+    public BigDecimal getGasPenetrationMom()
+            {
+            return gasPenetrationMom;
+            }
+    public void setGasConversionMom(BigDecimal gasConversionMom)
+            {
+            this.gasConversionMom = gasConversionMom;
+            }
+
+    public BigDecimal getGasConversionMom()
+            {
+            return gasConversionMom;
+            }
+
+@Override
+public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("gasPenetrationRate", getGasPenetrationRate())
+            .append("gasConversionRate", getGasConversionRate())
+            .append("statsPeriod", getStatsPeriod())
+            .append("gasPenetrationMom", getGasPenetrationMom())
+            .append("gasConversionMom", getGasConversionMom())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+        .toString();
+        }
+        }

+ 103 - 0
src/main/java/com/sooka/sponest/construction/riskregister/domain/PipeDamageStats.java

@@ -0,0 +1,103 @@
+package com.sooka.sponest.construction.riskregister.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 管道破损统计数据对象 pipe_damage_stats
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public class PipeDamageStats extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 统计日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "统计日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date statsPeriod;
+
+    /**
+     * 归属行业
+     */
+    @Excel(name = "归属行业")
+    private Integer pipeType;
+
+    /**
+     * 破损数量
+     */
+    @Excel(name = "破损数量")
+    private Long damageCount;
+
+    /**
+     * 环比变化值
+     */
+    @Excel(name = "环比变化值")
+    private BigDecimal mom;
+
+    public BigDecimal getMom() {
+        return mom;
+    }
+
+    public void setMom(BigDecimal mom) {
+        this.mom = mom;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setStatsPeriod(Date statsPeriod) {
+        this.statsPeriod = statsPeriod;
+    }
+
+    public Date getStatsPeriod() {
+        return statsPeriod;
+    }
+
+    public void setPipeType(Integer pipeType) {
+        this.pipeType = pipeType;
+    }
+
+    public Integer getPipeType() {
+        return pipeType;
+    }
+
+    public void setDamageCount(Long damageCount) {
+        this.damageCount = damageCount;
+    }
+
+    public Long getDamageCount() {
+        return damageCount;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("statsPeriod", getStatsPeriod())
+                .append("pipeType", getPipeType())
+                .append("damageCount", getDamageCount())
+                .append("mom", getMom())
+                .append("createTime", getCreateTime())
+                .append("updateTime", getUpdateTime())
+                .toString();
+    }
+}

+ 99 - 0
src/main/java/com/sooka/sponest/construction/riskregister/domain/PipeMunicipalMonitor.java

@@ -0,0 +1,99 @@
+package com.sooka.sponest.construction.riskregister.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 管网智能化监测对象 pipe_municipal_monitor
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public class PipeMunicipalMonitor extends BaseEntity
+        {
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private Long id;
+
+    /** 监测日期 */
+            @JsonFormat(pattern = "yyyy-MM-dd")
+            @Excel(name = "监测日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date monitorPeriod;
+
+    /** 管道类型 */
+            @Excel(name = "管道类型")
+    private Integer pipelineType;
+
+    /** 监测数值 */
+            @Excel(name = "监测数值")
+    private Long monitorValue;
+
+    /** 环比变化值 */
+            @Excel(name = "环比变化值")
+    private BigDecimal mom;
+
+    public void setId(Long id)
+            {
+            this.id = id;
+            }
+
+    public Long getId()
+            {
+            return id;
+            }
+    public void setMonitorPeriod(Date monitorPeriod)
+            {
+            this.monitorPeriod = monitorPeriod;
+            }
+
+    public Date getMonitorPeriod()
+            {
+            return monitorPeriod;
+            }
+    public void setPipelineType(Integer pipelineType)
+            {
+            this.pipelineType = pipelineType;
+            }
+
+    public Integer getPipelineType()
+            {
+            return pipelineType;
+            }
+    public void setMonitorValue(Long monitorValue)
+            {
+            this.monitorValue = monitorValue;
+            }
+
+    public Long getMonitorValue()
+            {
+            return monitorValue;
+            }
+    public void setMom(BigDecimal mom)
+            {
+            this.mom = mom;
+            }
+
+    public BigDecimal getMom()
+            {
+            return mom;
+            }
+
+@Override
+public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("monitorPeriod", getMonitorPeriod())
+            .append("pipelineType", getPipelineType())
+            .append("monitorValue", getMonitorValue())
+            .append("mom", getMom())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+        .toString();
+        }
+        }

+ 43 - 0
src/main/java/com/sooka/sponest/construction/riskregister/domain/ResidentWaterAnalysis.java

@@ -0,0 +1,43 @@
+package com.sooka.sponest.construction.riskregister.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 居民用水分析数据对象 resident_water_analysis
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResidentWaterAnalysis extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 统计日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "统计日期")
+    private Date periodDate;
+
+    /**
+     * 居民用水量(立方)
+     */
+    @Excel(name = "居民用水量", readConverterExp = "立=方")
+    private Long waterUsage;
+
+}

+ 113 - 0
src/main/java/com/sooka/sponest/construction/riskregister/domain/SmartCoverageRate.java

@@ -0,0 +1,113 @@
+package com.sooka.sponest.construction.riskregister.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 普查覆盖率对象 smart_coverage_rate
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+public class SmartCoverageRate extends BaseEntity
+        {
+private static final long serialVersionUID = 1L;
+
+    /** 自增主键,唯一标识每条记录 */
+    private Long id;
+
+    /** 排水管网普查覆盖率 */
+            @Excel(name = "排水管网普查覆盖率")
+    private BigDecimal drainagePipelineSurveyRate;
+
+    /** 供热管网普查覆盖率 */
+            @Excel(name = "供热管网普查覆盖率")
+    private BigDecimal heatingPipelineSurveyRate;
+
+    /** 城市生活污水集中收集率 */
+            @Excel(name = "城市生活污水集中收集率")
+    private BigDecimal urbanSewageCollectionRate;
+
+    /** 应急供水保障率 */
+            @Excel(name = "应急供水保障率")
+    private BigDecimal emergencyWaterSupplyRate;
+
+    /** 统计日期 */
+            @JsonFormat(pattern = "yyyy-MM-dd")
+            @Excel(name = "统计日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date statisticsDate;
+
+    public void setId(Long id)
+            {
+            this.id = id;
+            }
+
+    public Long getId()
+            {
+            return id;
+            }
+    public void setDrainagePipelineSurveyRate(BigDecimal drainagePipelineSurveyRate)
+            {
+            this.drainagePipelineSurveyRate = drainagePipelineSurveyRate;
+            }
+
+    public BigDecimal getDrainagePipelineSurveyRate()
+            {
+            return drainagePipelineSurveyRate;
+            }
+    public void setHeatingPipelineSurveyRate(BigDecimal heatingPipelineSurveyRate)
+            {
+            this.heatingPipelineSurveyRate = heatingPipelineSurveyRate;
+            }
+
+    public BigDecimal getHeatingPipelineSurveyRate()
+            {
+            return heatingPipelineSurveyRate;
+            }
+    public void setUrbanSewageCollectionRate(BigDecimal urbanSewageCollectionRate)
+            {
+            this.urbanSewageCollectionRate = urbanSewageCollectionRate;
+            }
+
+    public BigDecimal getUrbanSewageCollectionRate()
+            {
+            return urbanSewageCollectionRate;
+            }
+    public void setEmergencyWaterSupplyRate(BigDecimal emergencyWaterSupplyRate)
+            {
+            this.emergencyWaterSupplyRate = emergencyWaterSupplyRate;
+            }
+
+    public BigDecimal getEmergencyWaterSupplyRate()
+            {
+            return emergencyWaterSupplyRate;
+            }
+    public void setStatisticsDate(Date statisticsDate)
+            {
+            this.statisticsDate = statisticsDate;
+            }
+
+    public Date getStatisticsDate()
+            {
+            return statisticsDate;
+            }
+
+@Override
+public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("drainagePipelineSurveyRate", getDrainagePipelineSurveyRate())
+            .append("heatingPipelineSurveyRate", getHeatingPipelineSurveyRate())
+            .append("urbanSewageCollectionRate", getUrbanSewageCollectionRate())
+            .append("emergencyWaterSupplyRate", getEmergencyWaterSupplyRate())
+            .append("statisticsDate", getStatisticsDate())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+        .toString();
+        }
+        }

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/mapper/DangerousBridgeSatisfactionMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.mapper;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.DangerousBridgeSatisfaction;
+
+/**
+ * 危旧桥梁满意度调查数据Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+public interface DangerousBridgeSatisfactionMapper
+{
+    /**
+     * 查询危旧桥梁满意度调查数据
+     *
+     * @param id 危旧桥梁满意度调查数据主键
+     * @return 危旧桥梁满意度调查数据
+     */
+    public DangerousBridgeSatisfaction selectDangerousBridgeSatisfactionById(Long id);
+
+    /**
+     * 查询危旧桥梁满意度调查数据列表
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 危旧桥梁满意度调查数据集合
+     */
+    public List<DangerousBridgeSatisfaction> selectDangerousBridgeSatisfactionList(DangerousBridgeSatisfaction dangerousBridgeSatisfaction);
+
+    /**
+     * 新增危旧桥梁满意度调查数据
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 结果
+     */
+    public int insertDangerousBridgeSatisfaction(DangerousBridgeSatisfaction dangerousBridgeSatisfaction);
+
+    /**
+     * 修改危旧桥梁满意度调查数据
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 结果
+     */
+    public int updateDangerousBridgeSatisfaction(DangerousBridgeSatisfaction dangerousBridgeSatisfaction);
+
+    /**
+     * 删除危旧桥梁满意度调查数据
+     *
+     * @param id 危旧桥梁满意度调查数据主键
+     * @return 结果
+     */
+    public int deleteDangerousBridgeSatisfactionById(Long id);
+
+    /**
+     * 批量删除危旧桥梁满意度调查数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDangerousBridgeSatisfactionByIds(Long[] ids);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/mapper/GasInspectionReformAnalysisMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.mapper;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.GasInspectionReformAnalysis;
+
+/**
+ * 燃气查改分析数据Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface GasInspectionReformAnalysisMapper
+{
+    /**
+     * 查询燃气查改分析数据
+     *
+     * @param id 燃气查改分析数据主键
+     * @return 燃气查改分析数据
+     */
+    public GasInspectionReformAnalysis selectGasInspectionReformAnalysisById(Long id);
+
+    /**
+     * 查询燃气查改分析数据列表
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 燃气查改分析数据集合
+     */
+    public List<GasInspectionReformAnalysis> selectGasInspectionReformAnalysisList(GasInspectionReformAnalysis gasInspectionReformAnalysis);
+
+    /**
+     * 新增燃气查改分析数据
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 结果
+     */
+    public int insertGasInspectionReformAnalysis(GasInspectionReformAnalysis gasInspectionReformAnalysis);
+
+    /**
+     * 修改燃气查改分析数据
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 结果
+     */
+    public int updateGasInspectionReformAnalysis(GasInspectionReformAnalysis gasInspectionReformAnalysis);
+
+    /**
+     * 删除燃气查改分析数据
+     *
+     * @param id 燃气查改分析数据主键
+     * @return 结果
+     */
+    public int deleteGasInspectionReformAnalysisById(Long id);
+
+    /**
+     * 批量删除燃气查改分析数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteGasInspectionReformAnalysisByIds(Long[] ids);
+}

+ 62 - 0
src/main/java/com/sooka/sponest/construction/riskregister/mapper/PipeDamageStatsMapper.java

@@ -0,0 +1,62 @@
+package com.sooka.sponest.construction.riskregister.mapper;
+
+import com.sooka.sponest.construction.riskregister.domain.PipeDamageStats;
+
+import java.util.List;
+
+/**
+ * 管道破损统计数据Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface PipeDamageStatsMapper
+{
+    /**
+     * 查询管道破损统计数据
+     *
+     * @param id 管道破损统计数据主键
+     * @return 管道破损统计数据
+     */
+    public PipeDamageStats selectPipeDamageStatsById(Long id);
+
+    /**
+     * 查询管道破损统计数据列表
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 管道破损统计数据集合
+     */
+    public List<PipeDamageStats> selectPipeDamageStatsList(PipeDamageStats pipeDamageStats);
+
+    /**
+     * 新增管道破损统计数据
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 结果
+     */
+    public int insertPipeDamageStats(PipeDamageStats pipeDamageStats);
+
+    /**
+     * 修改管道破损统计数据
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 结果
+     */
+    public int updatePipeDamageStats(PipeDamageStats pipeDamageStats);
+
+    /**
+     * 删除管道破损统计数据
+     *
+     * @param id 管道破损统计数据主键
+     * @return 结果
+     */
+    public int deletePipeDamageStatsById(Long id);
+
+    /**
+     * 批量删除管道破损统计数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deletePipeDamageStatsByIds(Long[] ids);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/mapper/PipeMunicipalMonitorMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.mapper;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.PipeMunicipalMonitor;
+
+/**
+ * 管网智能化监测Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface PipeMunicipalMonitorMapper
+{
+    /**
+     * 查询管网智能化监测
+     *
+     * @param id 管网智能化监测主键
+     * @return 管网智能化监测
+     */
+    public PipeMunicipalMonitor selectPipeMunicipalMonitorById(Long id);
+
+    /**
+     * 查询管网智能化监测列表
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 管网智能化监测集合
+     */
+    public List<PipeMunicipalMonitor> selectPipeMunicipalMonitorList(PipeMunicipalMonitor pipeMunicipalMonitor);
+
+    /**
+     * 新增管网智能化监测
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 结果
+     */
+    public int insertPipeMunicipalMonitor(PipeMunicipalMonitor pipeMunicipalMonitor);
+
+    /**
+     * 修改管网智能化监测
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 结果
+     */
+    public int updatePipeMunicipalMonitor(PipeMunicipalMonitor pipeMunicipalMonitor);
+
+    /**
+     * 删除管网智能化监测
+     *
+     * @param id 管网智能化监测主键
+     * @return 结果
+     */
+    public int deletePipeMunicipalMonitorById(Long id);
+
+    /**
+     * 批量删除管网智能化监测
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deletePipeMunicipalMonitorByIds(Long[] ids);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/mapper/ResidentWaterAnalysisMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.mapper;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.ResidentWaterAnalysis;
+
+/**
+ * 居民用水分析数据Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface ResidentWaterAnalysisMapper
+{
+    /**
+     * 查询居民用水分析数据
+     *
+     * @param id 居民用水分析数据主键
+     * @return 居民用水分析数据
+     */
+    public ResidentWaterAnalysis selectResidentWaterAnalysisById(Long id);
+
+    /**
+     * 查询居民用水分析数据列表
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 居民用水分析数据集合
+     */
+    public List<ResidentWaterAnalysis> selectResidentWaterAnalysisList(ResidentWaterAnalysis residentWaterAnalysis);
+
+    /**
+     * 新增居民用水分析数据
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 结果
+     */
+    public int insertResidentWaterAnalysis(ResidentWaterAnalysis residentWaterAnalysis);
+
+    /**
+     * 修改居民用水分析数据
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 结果
+     */
+    public int updateResidentWaterAnalysis(ResidentWaterAnalysis residentWaterAnalysis);
+
+    /**
+     * 删除居民用水分析数据
+     *
+     * @param id 居民用水分析数据主键
+     * @return 结果
+     */
+    public int deleteResidentWaterAnalysisById(Long id);
+
+    /**
+     * 批量删除居民用水分析数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteResidentWaterAnalysisByIds(Long[] ids);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/mapper/SmartCoverageRateMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.mapper;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.SmartCoverageRate;
+
+/**
+ * 普查覆盖率Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+public interface SmartCoverageRateMapper
+{
+    /**
+     * 查询普查覆盖率
+     *
+     * @param id 普查覆盖率主键
+     * @return 普查覆盖率
+     */
+    public SmartCoverageRate selectSmartCoverageRateById(Long id);
+
+    /**
+     * 查询普查覆盖率列表
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 普查覆盖率集合
+     */
+    public List<SmartCoverageRate> selectSmartCoverageRateList(SmartCoverageRate smartCoverageRate);
+
+    /**
+     * 新增普查覆盖率
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 结果
+     */
+    public int insertSmartCoverageRate(SmartCoverageRate smartCoverageRate);
+
+    /**
+     * 修改普查覆盖率
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 结果
+     */
+    public int updateSmartCoverageRate(SmartCoverageRate smartCoverageRate);
+
+    /**
+     * 删除普查覆盖率
+     *
+     * @param id 普查覆盖率主键
+     * @return 结果
+     */
+    public int deleteSmartCoverageRateById(Long id);
+
+    /**
+     * 批量删除普查覆盖率
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSmartCoverageRateByIds(Long[] ids);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/IDangerousBridgeSatisfactionService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.service;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.DangerousBridgeSatisfaction;
+
+/**
+ * 危旧桥梁满意度调查数据Service接口
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+public interface IDangerousBridgeSatisfactionService
+{
+    /**
+     * 查询危旧桥梁满意度调查数据
+     *
+     * @param id 危旧桥梁满意度调查数据主键
+     * @return 危旧桥梁满意度调查数据
+     */
+    public DangerousBridgeSatisfaction selectDangerousBridgeSatisfactionById(Long id);
+
+    /**
+     * 查询危旧桥梁满意度调查数据列表
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 危旧桥梁满意度调查数据集合
+     */
+    public List<DangerousBridgeSatisfaction> selectDangerousBridgeSatisfactionList(DangerousBridgeSatisfaction dangerousBridgeSatisfaction);
+
+    /**
+     * 新增危旧桥梁满意度调查数据
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 结果
+     */
+    public int insertDangerousBridgeSatisfaction(DangerousBridgeSatisfaction dangerousBridgeSatisfaction);
+
+    /**
+     * 修改危旧桥梁满意度调查数据
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 结果
+     */
+    public int updateDangerousBridgeSatisfaction(DangerousBridgeSatisfaction dangerousBridgeSatisfaction);
+
+    /**
+     * 批量删除危旧桥梁满意度调查数据
+     *
+     * @param ids 需要删除的危旧桥梁满意度调查数据主键集合
+     * @return 结果
+     */
+    public int deleteDangerousBridgeSatisfactionByIds(Long[] ids);
+
+    /**
+     * 删除危旧桥梁满意度调查数据信息
+     *
+     * @param id 危旧桥梁满意度调查数据主键
+     * @return 结果
+     */
+    public int deleteDangerousBridgeSatisfactionById(Long id);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/IGasInspectionReformAnalysisService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.service;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.GasInspectionReformAnalysis;
+
+/**
+ * 燃气查改分析数据Service接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface IGasInspectionReformAnalysisService
+{
+    /**
+     * 查询燃气查改分析数据
+     *
+     * @param id 燃气查改分析数据主键
+     * @return 燃气查改分析数据
+     */
+    public GasInspectionReformAnalysis selectGasInspectionReformAnalysisById(Long id);
+
+    /**
+     * 查询燃气查改分析数据列表
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 燃气查改分析数据集合
+     */
+    public List<GasInspectionReformAnalysis> selectGasInspectionReformAnalysisList(GasInspectionReformAnalysis gasInspectionReformAnalysis);
+
+    /**
+     * 新增燃气查改分析数据
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 结果
+     */
+    public int insertGasInspectionReformAnalysis(GasInspectionReformAnalysis gasInspectionReformAnalysis);
+
+    /**
+     * 修改燃气查改分析数据
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 结果
+     */
+    public int updateGasInspectionReformAnalysis(GasInspectionReformAnalysis gasInspectionReformAnalysis);
+
+    /**
+     * 批量删除燃气查改分析数据
+     *
+     * @param ids 需要删除的燃气查改分析数据主键集合
+     * @return 结果
+     */
+    public int deleteGasInspectionReformAnalysisByIds(Long[] ids);
+
+    /**
+     * 删除燃气查改分析数据信息
+     *
+     * @param id 燃气查改分析数据主键
+     * @return 结果
+     */
+    public int deleteGasInspectionReformAnalysisById(Long id);
+}

+ 62 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/IPipeDamageStatsService.java

@@ -0,0 +1,62 @@
+package com.sooka.sponest.construction.riskregister.service;
+
+import com.sooka.sponest.construction.riskregister.domain.PipeDamageStats;
+
+import java.util.List;
+
+/**
+ * 管道破损统计数据Service接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface IPipeDamageStatsService
+{
+    /**
+     * 查询管道破损统计数据
+     *
+     * @param id 管道破损统计数据主键
+     * @return 管道破损统计数据
+     */
+    public PipeDamageStats selectPipeDamageStatsById(Long id);
+
+    /**
+     * 查询管道破损统计数据列表
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 管道破损统计数据集合
+     */
+    public List<PipeDamageStats> selectPipeDamageStatsList(PipeDamageStats pipeDamageStats);
+
+    /**
+     * 新增管道破损统计数据
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 结果
+     */
+    public int insertPipeDamageStats(PipeDamageStats pipeDamageStats);
+
+    /**
+     * 修改管道破损统计数据
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 结果
+     */
+    public int updatePipeDamageStats(PipeDamageStats pipeDamageStats);
+
+    /**
+     * 批量删除管道破损统计数据
+     *
+     * @param ids 需要删除的管道破损统计数据主键集合
+     * @return 结果
+     */
+    public int deletePipeDamageStatsByIds(Long[] ids);
+
+    /**
+     * 删除管道破损统计数据信息
+     *
+     * @param id 管道破损统计数据主键
+     * @return 结果
+     */
+    public int deletePipeDamageStatsById(Long id);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/IPipeMunicipalMonitorService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.service;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.PipeMunicipalMonitor;
+
+/**
+ * 管网智能化监测Service接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface IPipeMunicipalMonitorService
+{
+    /**
+     * 查询管网智能化监测
+     *
+     * @param id 管网智能化监测主键
+     * @return 管网智能化监测
+     */
+    public PipeMunicipalMonitor selectPipeMunicipalMonitorById(Long id);
+
+    /**
+     * 查询管网智能化监测列表
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 管网智能化监测集合
+     */
+    public List<PipeMunicipalMonitor> selectPipeMunicipalMonitorList(PipeMunicipalMonitor pipeMunicipalMonitor);
+
+    /**
+     * 新增管网智能化监测
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 结果
+     */
+    public int insertPipeMunicipalMonitor(PipeMunicipalMonitor pipeMunicipalMonitor);
+
+    /**
+     * 修改管网智能化监测
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 结果
+     */
+    public int updatePipeMunicipalMonitor(PipeMunicipalMonitor pipeMunicipalMonitor);
+
+    /**
+     * 批量删除管网智能化监测
+     *
+     * @param ids 需要删除的管网智能化监测主键集合
+     * @return 结果
+     */
+    public int deletePipeMunicipalMonitorByIds(Long[] ids);
+
+    /**
+     * 删除管网智能化监测信息
+     *
+     * @param id 管网智能化监测主键
+     * @return 结果
+     */
+    public int deletePipeMunicipalMonitorById(Long id);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/IResidentWaterAnalysisService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.service;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.ResidentWaterAnalysis;
+
+/**
+ * 居民用水分析数据Service接口
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+public interface IResidentWaterAnalysisService
+{
+    /**
+     * 查询居民用水分析数据
+     *
+     * @param id 居民用水分析数据主键
+     * @return 居民用水分析数据
+     */
+    public ResidentWaterAnalysis selectResidentWaterAnalysisById(Long id);
+
+    /**
+     * 查询居民用水分析数据列表
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 居民用水分析数据集合
+     */
+    public List<ResidentWaterAnalysis> selectResidentWaterAnalysisList(ResidentWaterAnalysis residentWaterAnalysis);
+
+    /**
+     * 新增居民用水分析数据
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 结果
+     */
+    public int insertResidentWaterAnalysis(ResidentWaterAnalysis residentWaterAnalysis);
+
+    /**
+     * 修改居民用水分析数据
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 结果
+     */
+    public int updateResidentWaterAnalysis(ResidentWaterAnalysis residentWaterAnalysis);
+
+    /**
+     * 批量删除居民用水分析数据
+     *
+     * @param ids 需要删除的居民用水分析数据主键集合
+     * @return 结果
+     */
+    public int deleteResidentWaterAnalysisByIds(Long[] ids);
+
+    /**
+     * 删除居民用水分析数据信息
+     *
+     * @param id 居民用水分析数据主键
+     * @return 结果
+     */
+    public int deleteResidentWaterAnalysisById(Long id);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/ISmartCoverageRateService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.construction.riskregister.service;
+
+import java.util.List;
+import com.sooka.sponest.construction.riskregister.domain.SmartCoverageRate;
+
+/**
+ * 普查覆盖率Service接口
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+public interface ISmartCoverageRateService
+{
+    /**
+     * 查询普查覆盖率
+     *
+     * @param id 普查覆盖率主键
+     * @return 普查覆盖率
+     */
+    public SmartCoverageRate selectSmartCoverageRateById(Long id);
+
+    /**
+     * 查询普查覆盖率列表
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 普查覆盖率集合
+     */
+    public List<SmartCoverageRate> selectSmartCoverageRateList(SmartCoverageRate smartCoverageRate);
+
+    /**
+     * 新增普查覆盖率
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 结果
+     */
+    public int insertSmartCoverageRate(SmartCoverageRate smartCoverageRate);
+
+    /**
+     * 修改普查覆盖率
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 结果
+     */
+    public int updateSmartCoverageRate(SmartCoverageRate smartCoverageRate);
+
+    /**
+     * 批量删除普查覆盖率
+     *
+     * @param ids 需要删除的普查覆盖率主键集合
+     * @return 结果
+     */
+    public int deleteSmartCoverageRateByIds(Long[] ids);
+
+    /**
+     * 删除普查覆盖率信息
+     *
+     * @param id 普查覆盖率主键
+     * @return 结果
+     */
+    public int deleteSmartCoverageRateById(Long id);
+}

+ 96 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/impl/DangerousBridgeSatisfactionServiceImpl.java

@@ -0,0 +1,96 @@
+package com.sooka.sponest.construction.riskregister.service.impl;
+
+import java.util.List;
+        import com.ruoyi.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.sooka.sponest.construction.riskregister.mapper.DangerousBridgeSatisfactionMapper;
+import com.sooka.sponest.construction.riskregister.domain.DangerousBridgeSatisfaction;
+import com.sooka.sponest.construction.riskregister.service.IDangerousBridgeSatisfactionService;
+
+/**
+ * 危旧桥梁满意度调查数据Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+@Service
+public class DangerousBridgeSatisfactionServiceImpl implements IDangerousBridgeSatisfactionService
+{
+    @Autowired
+    private DangerousBridgeSatisfactionMapper dangerousBridgeSatisfactionMapper;
+
+    /**
+     * 查询危旧桥梁满意度调查数据
+     *
+     * @param id 危旧桥梁满意度调查数据主键
+     * @return 危旧桥梁满意度调查数据
+     */
+    @Override
+    public DangerousBridgeSatisfaction selectDangerousBridgeSatisfactionById(Long id)
+    {
+        return dangerousBridgeSatisfactionMapper.selectDangerousBridgeSatisfactionById(id);
+    }
+
+    /**
+     * 查询危旧桥梁满意度调查数据列表
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 危旧桥梁满意度调查数据
+     */
+    @Override
+    public List<DangerousBridgeSatisfaction> selectDangerousBridgeSatisfactionList(DangerousBridgeSatisfaction dangerousBridgeSatisfaction)
+    {
+        return dangerousBridgeSatisfactionMapper.selectDangerousBridgeSatisfactionList(dangerousBridgeSatisfaction);
+    }
+
+    /**
+     * 新增危旧桥梁满意度调查数据
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 结果
+     */
+    @Override
+    public int insertDangerousBridgeSatisfaction(DangerousBridgeSatisfaction dangerousBridgeSatisfaction)
+    {
+                dangerousBridgeSatisfaction.setCreateTime(DateUtils.getNowDate());
+            return dangerousBridgeSatisfactionMapper.insertDangerousBridgeSatisfaction(dangerousBridgeSatisfaction);
+    }
+
+    /**
+     * 修改危旧桥梁满意度调查数据
+     *
+     * @param dangerousBridgeSatisfaction 危旧桥梁满意度调查数据
+     * @return 结果
+     */
+    @Override
+    public int updateDangerousBridgeSatisfaction(DangerousBridgeSatisfaction dangerousBridgeSatisfaction)
+    {
+                dangerousBridgeSatisfaction.setUpdateTime(DateUtils.getNowDate());
+        return dangerousBridgeSatisfactionMapper.updateDangerousBridgeSatisfaction(dangerousBridgeSatisfaction);
+    }
+
+    /**
+     * 批量删除危旧桥梁满意度调查数据
+     *
+     * @param ids 需要删除的危旧桥梁满意度调查数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDangerousBridgeSatisfactionByIds(Long[] ids)
+    {
+        return dangerousBridgeSatisfactionMapper.deleteDangerousBridgeSatisfactionByIds(ids);
+    }
+
+    /**
+     * 删除危旧桥梁满意度调查数据信息
+     *
+     * @param id 危旧桥梁满意度调查数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDangerousBridgeSatisfactionById(Long id)
+    {
+        return dangerousBridgeSatisfactionMapper.deleteDangerousBridgeSatisfactionById(id);
+    }
+}

+ 90 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/impl/GasInspectionReformAnalysisServiceImpl.java

@@ -0,0 +1,90 @@
+package com.sooka.sponest.construction.riskregister.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.sooka.sponest.construction.riskregister.mapper.GasInspectionReformAnalysisMapper;
+import com.sooka.sponest.construction.riskregister.domain.GasInspectionReformAnalysis;
+import com.sooka.sponest.construction.riskregister.service.IGasInspectionReformAnalysisService;
+
+/**
+ * 燃气查改分析数据Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@Service
+public class GasInspectionReformAnalysisServiceImpl implements IGasInspectionReformAnalysisService {
+    @Autowired
+    private GasInspectionReformAnalysisMapper gasInspectionReformAnalysisMapper;
+
+    /**
+     * 查询燃气查改分析数据
+     *
+     * @param id 燃气查改分析数据主键
+     * @return 燃气查改分析数据
+     */
+    @Override
+    public GasInspectionReformAnalysis selectGasInspectionReformAnalysisById(Long id) {
+        return gasInspectionReformAnalysisMapper.selectGasInspectionReformAnalysisById(id);
+    }
+
+    /**
+     * 查询燃气查改分析数据列表
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 燃气查改分析数据
+     */
+    @Override
+    public List<GasInspectionReformAnalysis> selectGasInspectionReformAnalysisList(GasInspectionReformAnalysis gasInspectionReformAnalysis) {
+        return gasInspectionReformAnalysisMapper.selectGasInspectionReformAnalysisList(gasInspectionReformAnalysis);
+    }
+
+    /**
+     * 新增燃气查改分析数据
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 结果
+     */
+    @Override
+    public int insertGasInspectionReformAnalysis(GasInspectionReformAnalysis gasInspectionReformAnalysis) {
+        gasInspectionReformAnalysis.setCreateTime(DateUtils.getNowDate());
+        return gasInspectionReformAnalysisMapper.insertGasInspectionReformAnalysis(gasInspectionReformAnalysis);
+    }
+
+    /**
+     * 修改燃气查改分析数据
+     *
+     * @param gasInspectionReformAnalysis 燃气查改分析数据
+     * @return 结果
+     */
+    @Override
+    public int updateGasInspectionReformAnalysis(GasInspectionReformAnalysis gasInspectionReformAnalysis) {
+        gasInspectionReformAnalysis.setUpdateTime(DateUtils.getNowDate());
+        return gasInspectionReformAnalysisMapper.updateGasInspectionReformAnalysis(gasInspectionReformAnalysis);
+    }
+
+    /**
+     * 批量删除燃气查改分析数据
+     *
+     * @param ids 需要删除的燃气查改分析数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGasInspectionReformAnalysisByIds(Long[] ids) {
+        return gasInspectionReformAnalysisMapper.deleteGasInspectionReformAnalysisByIds(ids);
+    }
+
+    /**
+     * 删除燃气查改分析数据信息
+     *
+     * @param id 燃气查改分析数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGasInspectionReformAnalysisById(Long id) {
+        return gasInspectionReformAnalysisMapper.deleteGasInspectionReformAnalysisById(id);
+    }
+}

+ 96 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/impl/PipeDamageStatsServiceImpl.java

@@ -0,0 +1,96 @@
+package com.sooka.sponest.construction.riskregister.service.impl;
+
+import java.util.List;
+        import com.ruoyi.common.core.utils.DateUtils;
+import com.sooka.sponest.construction.riskregister.domain.PipeDamageStats;
+import com.sooka.sponest.construction.riskregister.mapper.PipeDamageStatsMapper;
+import com.sooka.sponest.construction.riskregister.service.IPipeDamageStatsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 管道破损统计数据Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@Service
+public class PipeDamageStatsServiceImpl implements IPipeDamageStatsService
+{
+    @Autowired
+    private PipeDamageStatsMapper pipeDamageStatsMapper;
+
+    /**
+     * 查询管道破损统计数据
+     *
+     * @param id 管道破损统计数据主键
+     * @return 管道破损统计数据
+     */
+    @Override
+    public PipeDamageStats selectPipeDamageStatsById(Long id)
+    {
+        return pipeDamageStatsMapper.selectPipeDamageStatsById(id);
+    }
+
+    /**
+     * 查询管道破损统计数据列表
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 管道破损统计数据
+     */
+    @Override
+    public List<PipeDamageStats> selectPipeDamageStatsList(PipeDamageStats pipeDamageStats)
+    {
+        return pipeDamageStatsMapper.selectPipeDamageStatsList(pipeDamageStats);
+    }
+
+    /**
+     * 新增管道破损统计数据
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 结果
+     */
+    @Override
+    public int insertPipeDamageStats(PipeDamageStats pipeDamageStats)
+    {
+                pipeDamageStats.setCreateTime(DateUtils.getNowDate());
+            return pipeDamageStatsMapper.insertPipeDamageStats(pipeDamageStats);
+    }
+
+    /**
+     * 修改管道破损统计数据
+     *
+     * @param pipeDamageStats 管道破损统计数据
+     * @return 结果
+     */
+    @Override
+    public int updatePipeDamageStats(PipeDamageStats pipeDamageStats)
+    {
+                pipeDamageStats.setUpdateTime(DateUtils.getNowDate());
+        return pipeDamageStatsMapper.updatePipeDamageStats(pipeDamageStats);
+    }
+
+    /**
+     * 批量删除管道破损统计数据
+     *
+     * @param ids 需要删除的管道破损统计数据主键
+     * @return 结果
+     */
+    @Override
+    public int deletePipeDamageStatsByIds(Long[] ids)
+    {
+        return pipeDamageStatsMapper.deletePipeDamageStatsByIds(ids);
+    }
+
+    /**
+     * 删除管道破损统计数据信息
+     *
+     * @param id 管道破损统计数据主键
+     * @return 结果
+     */
+    @Override
+    public int deletePipeDamageStatsById(Long id)
+    {
+        return pipeDamageStatsMapper.deletePipeDamageStatsById(id);
+    }
+}

+ 96 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/impl/PipeMunicipalMonitorServiceImpl.java

@@ -0,0 +1,96 @@
+package com.sooka.sponest.construction.riskregister.service.impl;
+
+import java.util.List;
+        import com.ruoyi.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.sooka.sponest.construction.riskregister.mapper.PipeMunicipalMonitorMapper;
+import com.sooka.sponest.construction.riskregister.domain.PipeMunicipalMonitor;
+import com.sooka.sponest.construction.riskregister.service.IPipeMunicipalMonitorService;
+
+/**
+ * 管网智能化监测Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@Service
+public class PipeMunicipalMonitorServiceImpl implements IPipeMunicipalMonitorService
+{
+    @Autowired
+    private PipeMunicipalMonitorMapper pipeMunicipalMonitorMapper;
+
+    /**
+     * 查询管网智能化监测
+     *
+     * @param id 管网智能化监测主键
+     * @return 管网智能化监测
+     */
+    @Override
+    public PipeMunicipalMonitor selectPipeMunicipalMonitorById(Long id)
+    {
+        return pipeMunicipalMonitorMapper.selectPipeMunicipalMonitorById(id);
+    }
+
+    /**
+     * 查询管网智能化监测列表
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 管网智能化监测
+     */
+    @Override
+    public List<PipeMunicipalMonitor> selectPipeMunicipalMonitorList(PipeMunicipalMonitor pipeMunicipalMonitor)
+    {
+        return pipeMunicipalMonitorMapper.selectPipeMunicipalMonitorList(pipeMunicipalMonitor);
+    }
+
+    /**
+     * 新增管网智能化监测
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 结果
+     */
+    @Override
+    public int insertPipeMunicipalMonitor(PipeMunicipalMonitor pipeMunicipalMonitor)
+    {
+                pipeMunicipalMonitor.setCreateTime(DateUtils.getNowDate());
+            return pipeMunicipalMonitorMapper.insertPipeMunicipalMonitor(pipeMunicipalMonitor);
+    }
+
+    /**
+     * 修改管网智能化监测
+     *
+     * @param pipeMunicipalMonitor 管网智能化监测
+     * @return 结果
+     */
+    @Override
+    public int updatePipeMunicipalMonitor(PipeMunicipalMonitor pipeMunicipalMonitor)
+    {
+                pipeMunicipalMonitor.setUpdateTime(DateUtils.getNowDate());
+        return pipeMunicipalMonitorMapper.updatePipeMunicipalMonitor(pipeMunicipalMonitor);
+    }
+
+    /**
+     * 批量删除管网智能化监测
+     *
+     * @param ids 需要删除的管网智能化监测主键
+     * @return 结果
+     */
+    @Override
+    public int deletePipeMunicipalMonitorByIds(Long[] ids)
+    {
+        return pipeMunicipalMonitorMapper.deletePipeMunicipalMonitorByIds(ids);
+    }
+
+    /**
+     * 删除管网智能化监测信息
+     *
+     * @param id 管网智能化监测主键
+     * @return 结果
+     */
+    @Override
+    public int deletePipeMunicipalMonitorById(Long id)
+    {
+        return pipeMunicipalMonitorMapper.deletePipeMunicipalMonitorById(id);
+    }
+}

+ 96 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/impl/ResidentWaterAnalysisServiceImpl.java

@@ -0,0 +1,96 @@
+package com.sooka.sponest.construction.riskregister.service.impl;
+
+import java.util.List;
+        import com.ruoyi.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.sooka.sponest.construction.riskregister.mapper.ResidentWaterAnalysisMapper;
+import com.sooka.sponest.construction.riskregister.domain.ResidentWaterAnalysis;
+import com.sooka.sponest.construction.riskregister.service.IResidentWaterAnalysisService;
+
+/**
+ * 居民用水分析数据Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-11-25
+ */
+@Service
+public class ResidentWaterAnalysisServiceImpl implements IResidentWaterAnalysisService
+{
+    @Autowired
+    private ResidentWaterAnalysisMapper residentWaterAnalysisMapper;
+
+    /**
+     * 查询居民用水分析数据
+     *
+     * @param id 居民用水分析数据主键
+     * @return 居民用水分析数据
+     */
+    @Override
+    public ResidentWaterAnalysis selectResidentWaterAnalysisById(Long id)
+    {
+        return residentWaterAnalysisMapper.selectResidentWaterAnalysisById(id);
+    }
+
+    /**
+     * 查询居民用水分析数据列表
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 居民用水分析数据
+     */
+    @Override
+    public List<ResidentWaterAnalysis> selectResidentWaterAnalysisList(ResidentWaterAnalysis residentWaterAnalysis)
+    {
+        return residentWaterAnalysisMapper.selectResidentWaterAnalysisList(residentWaterAnalysis);
+    }
+
+    /**
+     * 新增居民用水分析数据
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 结果
+     */
+    @Override
+    public int insertResidentWaterAnalysis(ResidentWaterAnalysis residentWaterAnalysis)
+    {
+                residentWaterAnalysis.setCreateTime(DateUtils.getNowDate());
+            return residentWaterAnalysisMapper.insertResidentWaterAnalysis(residentWaterAnalysis);
+    }
+
+    /**
+     * 修改居民用水分析数据
+     *
+     * @param residentWaterAnalysis 居民用水分析数据
+     * @return 结果
+     */
+    @Override
+    public int updateResidentWaterAnalysis(ResidentWaterAnalysis residentWaterAnalysis)
+    {
+                residentWaterAnalysis.setUpdateTime(DateUtils.getNowDate());
+        return residentWaterAnalysisMapper.updateResidentWaterAnalysis(residentWaterAnalysis);
+    }
+
+    /**
+     * 批量删除居民用水分析数据
+     *
+     * @param ids 需要删除的居民用水分析数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteResidentWaterAnalysisByIds(Long[] ids)
+    {
+        return residentWaterAnalysisMapper.deleteResidentWaterAnalysisByIds(ids);
+    }
+
+    /**
+     * 删除居民用水分析数据信息
+     *
+     * @param id 居民用水分析数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteResidentWaterAnalysisById(Long id)
+    {
+        return residentWaterAnalysisMapper.deleteResidentWaterAnalysisById(id);
+    }
+}

+ 96 - 0
src/main/java/com/sooka/sponest/construction/riskregister/service/impl/SmartCoverageRateServiceImpl.java

@@ -0,0 +1,96 @@
+package com.sooka.sponest.construction.riskregister.service.impl;
+
+import java.util.List;
+        import com.ruoyi.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.sooka.sponest.construction.riskregister.mapper.SmartCoverageRateMapper;
+import com.sooka.sponest.construction.riskregister.domain.SmartCoverageRate;
+import com.sooka.sponest.construction.riskregister.service.ISmartCoverageRateService;
+
+/**
+ * 普查覆盖率Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-11-26
+ */
+@Service
+public class SmartCoverageRateServiceImpl implements ISmartCoverageRateService
+{
+    @Autowired
+    private SmartCoverageRateMapper smartCoverageRateMapper;
+
+    /**
+     * 查询普查覆盖率
+     *
+     * @param id 普查覆盖率主键
+     * @return 普查覆盖率
+     */
+    @Override
+    public SmartCoverageRate selectSmartCoverageRateById(Long id)
+    {
+        return smartCoverageRateMapper.selectSmartCoverageRateById(id);
+    }
+
+    /**
+     * 查询普查覆盖率列表
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 普查覆盖率
+     */
+    @Override
+    public List<SmartCoverageRate> selectSmartCoverageRateList(SmartCoverageRate smartCoverageRate)
+    {
+        return smartCoverageRateMapper.selectSmartCoverageRateList(smartCoverageRate);
+    }
+
+    /**
+     * 新增普查覆盖率
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 结果
+     */
+    @Override
+    public int insertSmartCoverageRate(SmartCoverageRate smartCoverageRate)
+    {
+                smartCoverageRate.setCreateTime(DateUtils.getNowDate());
+            return smartCoverageRateMapper.insertSmartCoverageRate(smartCoverageRate);
+    }
+
+    /**
+     * 修改普查覆盖率
+     *
+     * @param smartCoverageRate 普查覆盖率
+     * @return 结果
+     */
+    @Override
+    public int updateSmartCoverageRate(SmartCoverageRate smartCoverageRate)
+    {
+                smartCoverageRate.setUpdateTime(DateUtils.getNowDate());
+        return smartCoverageRateMapper.updateSmartCoverageRate(smartCoverageRate);
+    }
+
+    /**
+     * 批量删除普查覆盖率
+     *
+     * @param ids 需要删除的普查覆盖率主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSmartCoverageRateByIds(Long[] ids)
+    {
+        return smartCoverageRateMapper.deleteSmartCoverageRateByIds(ids);
+    }
+
+    /**
+     * 删除普查覆盖率信息
+     *
+     * @param id 普查覆盖率主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSmartCoverageRateById(Long id)
+    {
+        return smartCoverageRateMapper.deleteSmartCoverageRateById(id);
+    }
+}

+ 4 - 3
src/main/resources/mapper/construction/community/BuildingMapper.xml

@@ -175,15 +175,16 @@
         SELECT
             c.street_name as streetName,
             c.community_name as communityName,
-            COUNT(b.id) AS houseCount
+            COUNT(DISTINCT hrrtb.building_id) AS houseCount
         FROM
             community c
                 LEFT JOIN
             building b ON b.community_id = c.id
+                LEFT JOIN
+            heating_risk_register_type_building hrrtb ON hrrtb.building_id = b.id
         WHERE
             c.type = '2'
         GROUP BY
-            c.street_name,
-            c.community_name
+            c.street_name, c.community_name;
     </select>
 </mapper>

+ 85 - 0
src/main/resources/mapper/construction/riskregister/DangerousBridgeSatisfactionMapper.xml

@@ -0,0 +1,85 @@
+<?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.construction.riskregister.mapper.DangerousBridgeSatisfactionMapper">
+    
+    <resultMap type="com.sooka.sponest.construction.riskregister.domain.DangerousBridgeSatisfaction" id="DangerousBridgeSatisfactionResult">
+        <result property="id"    column="id"    />
+        <result property="surveyPeriod"    column="survey_period"    />
+        <result property="satisfactionLevel"    column="satisfaction_level"    />
+        <result property="satisfactionCount"    column="satisfaction_count"    />
+        <result property="percentage"    column="percentage"    />
+        <result property="qoqChange"    column="qoq_change"    />
+        <result property="totalRespondents"    column="total_respondents"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectDangerousBridgeSatisfactionVo">
+        select id, survey_period, satisfaction_level, satisfaction_count, percentage, qoq_change, total_respondents, create_time, update_time from dangerous_bridge_satisfaction
+    </sql>
+
+    <select id="selectDangerousBridgeSatisfactionList" parameterType="DangerousBridgeSatisfaction" resultMap="DangerousBridgeSatisfactionResult">
+        <include refid="selectDangerousBridgeSatisfactionVo"/>
+        <where>  
+            <if test="surveyPeriod != null "> and survey_period = #{surveyPeriod}</if>
+            <if test="satisfactionLevel != null  and satisfactionLevel != ''"> and satisfaction_level = #{satisfactionLevel}</if>
+        </where>
+    </select>
+    
+    <select id="selectDangerousBridgeSatisfactionById" parameterType="Long" resultMap="DangerousBridgeSatisfactionResult">
+        <include refid="selectDangerousBridgeSatisfactionVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDangerousBridgeSatisfaction" parameterType="DangerousBridgeSatisfaction" useGeneratedKeys="true" keyProperty="id">
+        insert into dangerous_bridge_satisfaction
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="surveyPeriod != null">survey_period,</if>
+            <if test="satisfactionLevel != null and satisfactionLevel != ''">satisfaction_level,</if>
+            <if test="satisfactionCount != null">satisfaction_count,</if>
+            <if test="percentage != null">percentage,</if>
+            <if test="qoqChange != null">qoq_change,</if>
+            <if test="totalRespondents != null">total_respondents,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="surveyPeriod != null">#{surveyPeriod},</if>
+            <if test="satisfactionLevel != null and satisfactionLevel != ''">#{satisfactionLevel},</if>
+            <if test="satisfactionCount != null">#{satisfactionCount},</if>
+            <if test="percentage != null">#{percentage},</if>
+            <if test="qoqChange != null">#{qoqChange},</if>
+            <if test="totalRespondents != null">#{totalRespondents},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDangerousBridgeSatisfaction" parameterType="DangerousBridgeSatisfaction">
+        update dangerous_bridge_satisfaction
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="surveyPeriod != null">survey_period = #{surveyPeriod},</if>
+            <if test="satisfactionLevel != null and satisfactionLevel != ''">satisfaction_level = #{satisfactionLevel},</if>
+            <if test="satisfactionCount != null">satisfaction_count = #{satisfactionCount},</if>
+            <if test="percentage != null">percentage = #{percentage},</if>
+            <if test="qoqChange != null">qoq_change = #{qoqChange},</if>
+            <if test="totalRespondents != null">total_respondents = #{totalRespondents},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDangerousBridgeSatisfactionById" parameterType="Long">
+        delete from dangerous_bridge_satisfaction where id = #{id}
+    </delete>
+
+    <delete id="deleteDangerousBridgeSatisfactionByIds" parameterType="String">
+        delete from dangerous_bridge_satisfaction where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 84 - 0
src/main/resources/mapper/construction/riskregister/GasInspectionReformAnalysisMapper.xml

@@ -0,0 +1,84 @@
+<?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.construction.riskregister.mapper.GasInspectionReformAnalysisMapper">
+    
+    <resultMap type="com.sooka.sponest.construction.riskregister.domain.GasInspectionReformAnalysis" id="GasInspectionReformAnalysisResult">
+        <result property="id"    column="id"    />
+        <result property="gasPenetrationRate"    column="gas_penetration_rate"    />
+        <result property="gasConversionRate"    column="gas_conversion_rate"    />
+        <result property="statsPeriod"    column="stats_period"    />
+        <result property="gasPenetrationMom"    column="gas_penetration_mom"    />
+        <result property="gasConversionMom"    column="gas_conversion_mom"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectGasInspectionReformAnalysisVo">
+        select id, gas_penetration_rate, gas_conversion_rate, stats_period, gas_penetration_mom, gas_conversion_mom, create_time, update_time from gas_inspection_reform_analysis
+    </sql>
+
+    <select id="selectGasInspectionReformAnalysisList" parameterType="GasInspectionReformAnalysis" resultMap="GasInspectionReformAnalysisResult">
+        <include refid="selectGasInspectionReformAnalysisVo"/>
+        <where>  
+            <if test="gasPenetrationRate != null "> and gas_penetration_rate = #{gasPenetrationRate}</if>
+            <if test="gasConversionRate != null "> and gas_conversion_rate = #{gasConversionRate}</if>
+            <if test="statsPeriod != null "> and stats_period = #{statsPeriod}</if>
+            <if test="gasPenetrationMom != null "> and gas_penetration_mom = #{gasPenetrationMom}</if>
+            <if test="gasConversionMom != null "> and gas_conversion_mom = #{gasConversionMom}</if>
+        </where>
+    </select>
+    
+    <select id="selectGasInspectionReformAnalysisById" parameterType="Long" resultMap="GasInspectionReformAnalysisResult">
+        <include refid="selectGasInspectionReformAnalysisVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertGasInspectionReformAnalysis" parameterType="GasInspectionReformAnalysis" useGeneratedKeys="true" keyProperty="id">
+        insert into gas_inspection_reform_analysis
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="gasPenetrationRate != null">gas_penetration_rate,</if>
+            <if test="gasConversionRate != null">gas_conversion_rate,</if>
+            <if test="statsPeriod != null">stats_period,</if>
+            <if test="gasPenetrationMom != null">gas_penetration_mom,</if>
+            <if test="gasConversionMom != null">gas_conversion_mom,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="gasPenetrationRate != null">#{gasPenetrationRate},</if>
+            <if test="gasConversionRate != null">#{gasConversionRate},</if>
+            <if test="statsPeriod != null">#{statsPeriod},</if>
+            <if test="gasPenetrationMom != null">#{gasPenetrationMom},</if>
+            <if test="gasConversionMom != null">#{gasConversionMom},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateGasInspectionReformAnalysis" parameterType="GasInspectionReformAnalysis">
+        update gas_inspection_reform_analysis
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="gasPenetrationRate != null">gas_penetration_rate = #{gasPenetrationRate},</if>
+            <if test="gasConversionRate != null">gas_conversion_rate = #{gasConversionRate},</if>
+            <if test="statsPeriod != null">stats_period = #{statsPeriod},</if>
+            <if test="gasPenetrationMom != null">gas_penetration_mom = #{gasPenetrationMom},</if>
+            <if test="gasConversionMom != null">gas_conversion_mom = #{gasConversionMom},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteGasInspectionReformAnalysisById" parameterType="Long">
+        delete from gas_inspection_reform_analysis where id = #{id}
+    </delete>
+
+    <delete id="deleteGasInspectionReformAnalysisByIds" parameterType="String">
+        delete from gas_inspection_reform_analysis where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 78 - 0
src/main/resources/mapper/construction/riskregister/PipeDamageStatsMapper.xml

@@ -0,0 +1,78 @@
+<?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.construction.riskregister.mapper.PipeDamageStatsMapper">
+    
+    <resultMap type="com.sooka.sponest.construction.riskregister.domain.PipeDamageStats" id="PipeDamageStatsResult">
+        <result property="id"    column="id"    />
+        <result property="statsPeriod"    column="stats_period"    />
+        <result property="pipeType"    column="pipe_type"    />
+        <result property="damageCount"    column="damage_count"    />
+        <result property="mom"    column="mom"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectPipeDamageStatsVo">
+        select id, stats_period, pipe_type, damage_count, mom, create_time, update_time from pipe_damage_stats
+    </sql>
+
+    <select id="selectPipeDamageStatsList" parameterType="PipeDamageStats" resultMap="PipeDamageStatsResult">
+        <include refid="selectPipeDamageStatsVo"/>
+        <where>  
+            <if test="statsPeriod != null "> and stats_period = #{statsPeriod}</if>
+            <if test="pipeType != null "> and pipe_type = #{pipeType}</if>
+            <if test="damageCount != null "> and damage_count = #{damageCount}</if>
+        </where>
+    </select>
+    
+    <select id="selectPipeDamageStatsById" parameterType="Long" resultMap="PipeDamageStatsResult">
+        <include refid="selectPipeDamageStatsVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertPipeDamageStats" parameterType="PipeDamageStats" useGeneratedKeys="true" keyProperty="id">
+        insert into pipe_damage_stats
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="statsPeriod != null">stats_period,</if>
+            <if test="pipeType != null">pipe_type,</if>
+            <if test="damageCount != null">damage_count,</if>
+            <if test="mom != null">mom,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="statsPeriod != null">#{statsPeriod},</if>
+            <if test="pipeType != null">#{pipeType},</if>
+            <if test="damageCount != null">#{damageCount},</if>
+            <if test="mom != null">#{mom},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updatePipeDamageStats" parameterType="PipeDamageStats">
+        update pipe_damage_stats
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="statsPeriod != null">stats_period = #{statsPeriod},</if>
+            <if test="pipeType != null">pipe_type = #{pipeType},</if>
+            <if test="damageCount != null">damage_count = #{damageCount},</if>
+            <if test="mom != null">mom = #{mom},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deletePipeDamageStatsById" parameterType="Long">
+        delete from pipe_damage_stats where id = #{id}
+    </delete>
+
+    <delete id="deletePipeDamageStatsByIds" parameterType="String">
+        delete from pipe_damage_stats where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 79 - 0
src/main/resources/mapper/construction/riskregister/PipeMunicipalMonitorMapper.xml

@@ -0,0 +1,79 @@
+<?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.construction.riskregister.mapper.PipeMunicipalMonitorMapper">
+    
+    <resultMap type="com.sooka.sponest.construction.riskregister.domain.PipeMunicipalMonitor" id="PipeMunicipalMonitorResult">
+        <result property="id"    column="id"    />
+        <result property="monitorPeriod"    column="monitor_period"    />
+        <result property="pipelineType"    column="pipeline_type"    />
+        <result property="monitorValue"    column="monitor_value"    />
+        <result property="mom"    column="mom"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectPipeMunicipalMonitorVo">
+        select id, monitor_period, pipeline_type, monitor_value, mom, create_time, update_time from pipe_municipal_monitor
+    </sql>
+
+    <select id="selectPipeMunicipalMonitorList" parameterType="PipeMunicipalMonitor" resultMap="PipeMunicipalMonitorResult">
+        <include refid="selectPipeMunicipalMonitorVo"/>
+        <where>  
+            <if test="monitorPeriod != null "> and monitor_period = #{monitorPeriod}</if>
+            <if test="pipelineType != null "> and pipeline_type = #{pipelineType}</if>
+            <if test="monitorValue != null "> and monitor_value = #{monitorValue}</if>
+            <if test="mom != null "> and mom = #{mom}</if>
+        </where>
+    </select>
+    
+    <select id="selectPipeMunicipalMonitorById" parameterType="Long" resultMap="PipeMunicipalMonitorResult">
+        <include refid="selectPipeMunicipalMonitorVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertPipeMunicipalMonitor" parameterType="PipeMunicipalMonitor" useGeneratedKeys="true" keyProperty="id">
+        insert into pipe_municipal_monitor
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="monitorPeriod != null">monitor_period,</if>
+            <if test="pipelineType != null">pipeline_type,</if>
+            <if test="monitorValue != null">monitor_value,</if>
+            <if test="mom != null">mom,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="monitorPeriod != null">#{monitorPeriod},</if>
+            <if test="pipelineType != null">#{pipelineType},</if>
+            <if test="monitorValue != null">#{monitorValue},</if>
+            <if test="mom != null">#{mom},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updatePipeMunicipalMonitor" parameterType="PipeMunicipalMonitor">
+        update pipe_municipal_monitor
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="monitorPeriod != null">monitor_period = #{monitorPeriod},</if>
+            <if test="pipelineType != null">pipeline_type = #{pipelineType},</if>
+            <if test="monitorValue != null">monitor_value = #{monitorValue},</if>
+            <if test="mom != null">mom = #{mom},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deletePipeMunicipalMonitorById" parameterType="Long">
+        delete from pipe_municipal_monitor where id = #{id}
+    </delete>
+
+    <delete id="deletePipeMunicipalMonitorByIds" parameterType="String">
+        delete from pipe_municipal_monitor where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 69 - 0
src/main/resources/mapper/construction/riskregister/ResidentWaterAnalysisMapper.xml

@@ -0,0 +1,69 @@
+<?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.construction.riskregister.mapper.ResidentWaterAnalysisMapper">
+    
+    <resultMap type="com.sooka.sponest.construction.riskregister.domain.ResidentWaterAnalysis" id="ResidentWaterAnalysisResult">
+        <result property="id"    column="id"    />
+        <result property="periodDate"    column="period_date"    />
+        <result property="waterUsage"    column="water_usage"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectResidentWaterAnalysisVo">
+        select id, period_date, water_usage, create_time, update_time from resident_water_analysis
+    </sql>
+
+    <select id="selectResidentWaterAnalysisList" parameterType="ResidentWaterAnalysis" resultMap="ResidentWaterAnalysisResult">
+        <include refid="selectResidentWaterAnalysisVo"/>
+        <where>  
+            <if test="periodDate != null "> and period_date = #{periodDate}</if>
+            <if test="waterUsage != null "> and water_usage = #{waterUsage}</if>
+        </where>
+    </select>
+    
+    <select id="selectResidentWaterAnalysisById" parameterType="Long" resultMap="ResidentWaterAnalysisResult">
+        <include refid="selectResidentWaterAnalysisVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertResidentWaterAnalysis" parameterType="ResidentWaterAnalysis" useGeneratedKeys="true" keyProperty="id">
+        insert into resident_water_analysis
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="periodDate != null">period_date,</if>
+            <if test="waterUsage != null">water_usage,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="periodDate != null">#{periodDate},</if>
+            <if test="waterUsage != null">#{waterUsage},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateResidentWaterAnalysis" parameterType="ResidentWaterAnalysis">
+        update resident_water_analysis
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="periodDate != null">period_date = #{periodDate},</if>
+            <if test="waterUsage != null">water_usage = #{waterUsage},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteResidentWaterAnalysisById" parameterType="Long">
+        delete from resident_water_analysis where id = #{id}
+    </delete>
+
+    <delete id="deleteResidentWaterAnalysisByIds" parameterType="String">
+        delete from resident_water_analysis where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 84 - 0
src/main/resources/mapper/construction/riskregister/SmartCoverageRateMapper.xml

@@ -0,0 +1,84 @@
+<?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.construction.riskregister.mapper.SmartCoverageRateMapper">
+    
+    <resultMap type="com.sooka.sponest.construction.riskregister.domain.SmartCoverageRate" id="SmartCoverageRateResult">
+        <result property="id"    column="id"    />
+        <result property="drainagePipelineSurveyRate"    column="drainage_pipeline_survey_rate"    />
+        <result property="heatingPipelineSurveyRate"    column="heating_pipeline_survey_rate"    />
+        <result property="urbanSewageCollectionRate"    column="urban_sewage_collection_rate"    />
+        <result property="emergencyWaterSupplyRate"    column="emergency_water_supply_rate"    />
+        <result property="statisticsDate"    column="statistics_date"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectSmartCoverageRateVo">
+        select id, drainage_pipeline_survey_rate, heating_pipeline_survey_rate, urban_sewage_collection_rate, emergency_water_supply_rate, statistics_date, create_time, update_time from smart_coverage_rate
+    </sql>
+
+    <select id="selectSmartCoverageRateList" parameterType="SmartCoverageRate" resultMap="SmartCoverageRateResult">
+        <include refid="selectSmartCoverageRateVo"/>
+        <where>  
+            <if test="drainagePipelineSurveyRate != null "> and drainage_pipeline_survey_rate = #{drainagePipelineSurveyRate}</if>
+            <if test="heatingPipelineSurveyRate != null "> and heating_pipeline_survey_rate = #{heatingPipelineSurveyRate}</if>
+            <if test="urbanSewageCollectionRate != null "> and urban_sewage_collection_rate = #{urbanSewageCollectionRate}</if>
+            <if test="emergencyWaterSupplyRate != null "> and emergency_water_supply_rate = #{emergencyWaterSupplyRate}</if>
+            <if test="statisticsDate != null "> and statistics_date = #{statisticsDate}</if>
+        </where>
+    </select>
+    
+    <select id="selectSmartCoverageRateById" parameterType="Long" resultMap="SmartCoverageRateResult">
+        <include refid="selectSmartCoverageRateVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertSmartCoverageRate" parameterType="SmartCoverageRate" useGeneratedKeys="true" keyProperty="id">
+        insert into smart_coverage_rate
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="drainagePipelineSurveyRate != null">drainage_pipeline_survey_rate,</if>
+            <if test="heatingPipelineSurveyRate != null">heating_pipeline_survey_rate,</if>
+            <if test="urbanSewageCollectionRate != null">urban_sewage_collection_rate,</if>
+            <if test="emergencyWaterSupplyRate != null">emergency_water_supply_rate,</if>
+            <if test="statisticsDate != null">statistics_date,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="drainagePipelineSurveyRate != null">#{drainagePipelineSurveyRate},</if>
+            <if test="heatingPipelineSurveyRate != null">#{heatingPipelineSurveyRate},</if>
+            <if test="urbanSewageCollectionRate != null">#{urbanSewageCollectionRate},</if>
+            <if test="emergencyWaterSupplyRate != null">#{emergencyWaterSupplyRate},</if>
+            <if test="statisticsDate != null">#{statisticsDate},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateSmartCoverageRate" parameterType="SmartCoverageRate">
+        update smart_coverage_rate
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="drainagePipelineSurveyRate != null">drainage_pipeline_survey_rate = #{drainagePipelineSurveyRate},</if>
+            <if test="heatingPipelineSurveyRate != null">heating_pipeline_survey_rate = #{heatingPipelineSurveyRate},</if>
+            <if test="urbanSewageCollectionRate != null">urban_sewage_collection_rate = #{urbanSewageCollectionRate},</if>
+            <if test="emergencyWaterSupplyRate != null">emergency_water_supply_rate = #{emergencyWaterSupplyRate},</if>
+            <if test="statisticsDate != null">statistics_date = #{statisticsDate},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSmartCoverageRateById" parameterType="Long">
+        delete from smart_coverage_rate where id = #{id}
+    </delete>
+
+    <delete id="deleteSmartCoverageRateByIds" parameterType="String">
+        delete from smart_coverage_rate where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>