瀏覽代碼

Merge branch 'dev' into dev-2.0_test

lyq 5 月之前
父節點
當前提交
4fc7a45ffb
共有 100 個文件被更改,包括 13285 次插入41 次删除
  1. 2 2
      data-ui/src/api/data/digitalresources/level.js
  2. 80 0
      data-ui/src/api/data/housingconstruction/car.js
  3. 60 0
      data-ui/src/api/data/housingconstruction/enterprise.js
  4. 44 0
      data-ui/src/api/data/housingconstruction/enterpriseproductionreport.js
  5. 44 0
      data-ui/src/api/data/housingconstruction/gassource.js
  6. 53 0
      data-ui/src/api/data/housingconstruction/inspect.js
  7. 44 0
      data-ui/src/api/data/housingconstruction/log.js
  8. 44 0
      data-ui/src/api/data/housingconstruction/personnel.js
  9. 44 0
      data-ui/src/api/data/housingconstruction/practitioner.js
  10. 44 0
      data-ui/src/api/data/housingconstruction/realnameuser.js
  11. 44 0
      data-ui/src/api/data/housingconstruction/safetyinspectionitem.js
  12. 78 0
      data-ui/src/api/data/housingconstruction/steelcylinder.js
  13. 22 0
      data-ui/src/api/data/housingconstruction/steelcylinderLog.js
  14. 54 0
      data-ui/src/api/data/housingconstruction/storagetank.js
  15. 1 0
      data-ui/src/components/ImageUpload/dataUpload.vue
  16. 14 0
      data-ui/src/router/index.js
  17. 1 1
      data-ui/src/views/data/digitaltraffic/level/IForm.vue
  18. 13 11
      data-ui/src/views/data/generalbusiness/keyProjects/index.vue
  19. 507 0
      data-ui/src/views/data/housingconstruction/car/index.vue
  20. 529 0
      data-ui/src/views/data/housingconstruction/enterprise/index.vue
  21. 393 0
      data-ui/src/views/data/housingconstruction/enterpriseproductionreport/index.vue
  22. 520 0
      data-ui/src/views/data/housingconstruction/gassource/index.vue
  23. 407 0
      data-ui/src/views/data/housingconstruction/inspect/index.vue
  24. 418 0
      data-ui/src/views/data/housingconstruction/log/index.vue
  25. 501 0
      data-ui/src/views/data/housingconstruction/personnel/index.vue
  26. 518 0
      data-ui/src/views/data/housingconstruction/practitioner/index.vue
  27. 529 0
      data-ui/src/views/data/housingconstruction/realnameuser/index.vue
  28. 312 0
      data-ui/src/views/data/housingconstruction/safetyinspectionitem/index.vue
  29. 990 0
      data-ui/src/views/data/housingconstruction/steelcylinder/index.vue
  30. 428 0
      data-ui/src/views/data/housingconstruction/steelcylinderLog/index.vue
  31. 492 0
      data-ui/src/views/data/housingconstruction/storagetank/index.vue
  32. 2 0
      src/main/java/com/sooka/sponest/data/SookaDataApplication.java
  33. 7 7
      src/main/java/com/sooka/sponest/data/digitalforest/controller/CenterdataTForestLinleaderController.java
  34. 3 3
      src/main/java/com/sooka/sponest/data/digitaltraffic/controller/CenterdataTSupermapLevelController.java
  35. 2 1
      src/main/java/com/sooka/sponest/data/digitaltraffic/mapper/CenterdataTLevelPersonNMapper.java
  36. 1 1
      src/main/java/com/sooka/sponest/data/digitaltraffic/service/ICenterdataTSupermapLevelService.java
  37. 9 6
      src/main/java/com/sooka/sponest/data/digitaltraffic/service/impl/CenterdataTSupermapLevelServiceImpl.java
  38. 6 6
      src/main/java/com/sooka/sponest/data/digitalwater/controller/CenterdataTHydraulicRiverLengthController.java
  39. 13 0
      src/main/java/com/sooka/sponest/data/generalbusiness/controller/CenterdataTKeyProjectsController.java
  40. 30 0
      src/main/java/com/sooka/sponest/data/generalbusiness/domain/CenterdataTKeyProjects.java
  41. 8 0
      src/main/java/com/sooka/sponest/data/generalbusiness/mapper/CenterdataTKeyProjectsMapper.java
  42. 8 0
      src/main/java/com/sooka/sponest/data/generalbusiness/service/ICenterdataTKeyProjectsService.java
  43. 5 3
      src/main/java/com/sooka/sponest/data/generalbusiness/service/impl/CenterdataTFileServiceImpl.java
  44. 12 0
      src/main/java/com/sooka/sponest/data/generalbusiness/service/impl/CenterdataTKeyProjectsServiceImpl.java
  45. 108 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionAttachController.java
  46. 103 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionCarController.java
  47. 114 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionDeliveryPersonnelController.java
  48. 115 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionEnterpriseController.java
  49. 131 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionEnterpriseproductionreportController.java
  50. 91 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionGassourceController.java
  51. 91 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionInspectController.java
  52. 102 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionPractitionerController.java
  53. 98 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionRealnameuserController.java
  54. 97 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSafetyinspectionitemController.java
  55. 85 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSafetyinspectionrecordsController.java
  56. 91 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSafetyinspectionrecordsdetailController.java
  57. 119 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSteelcylinderController.java
  58. 245 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSteelcylinderLogController.java
  59. 97 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionStoragetankController.java
  60. 98 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionStoragetankLogController.java
  61. 303 0
      src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionViewController.java
  62. 16 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/BO/SteelcylinderBO.java
  63. 101 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionAttach.java
  64. 248 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionCar.java
  65. 269 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionDeliveryPersonnel.java
  66. 43 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionDeliveryPersonnelLonLat.java
  67. 148 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionEnterprise.java
  68. 87 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionEnterpriseproductionreport.java
  69. 130 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionGassource.java
  70. 190 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionInspect.java
  71. 262 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionPractitioner.java
  72. 137 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionRealnameuser.java
  73. 72 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSafetyinspectionitem.java
  74. 111 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSafetyinspectionrecords.java
  75. 91 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSafetyinspectionrecordsdetail.java
  76. 170 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSteelcylinder.java
  77. 194 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSteelcylinderLog.java
  78. 125 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionStoragetank.java
  79. 107 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionStoragetankLog.java
  80. 30 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/GpsEntity.java
  81. 53 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/SensorEventVo.java
  82. 32 0
      src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/StaticEntity.java
  83. 29 0
      src/main/java/com/sooka/sponest/data/housingconstruction/feignClient/factory/RemoteHousingconstructionEventServiceFallbackFactory.java
  84. 22 0
      src/main/java/com/sooka/sponest/data/housingconstruction/feignClient/service/RemoteHousingconstructionEventService.java
  85. 27 0
      src/main/java/com/sooka/sponest/data/housingconstruction/handler/SendEvent.java
  86. 286 0
      src/main/java/com/sooka/sponest/data/housingconstruction/handler/TaskHandler.java
  87. 71 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionAttachMapper.java
  88. 73 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionCarMapper.java
  89. 65 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionDeliveryPersonnelMapper.java
  90. 72 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionEnterpriseMapper.java
  91. 65 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionEnterpriseproductionreportMapper.java
  92. 62 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionGassourceMapper.java
  93. 62 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionInspectMapper.java
  94. 70 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionPractitionerMapper.java
  95. 78 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionRealnameuserMapper.java
  96. 61 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSafetyinspectionitemlMapper.java
  97. 69 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSafetyinspectionrecordsMapper.java
  98. 64 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSafetyinspectionrecordsdetailMapper.java
  99. 69 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSteelcylinderLogMapper.java
  100. 0 0
      src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSteelcylinderMapper.java

+ 2 - 2
data-ui/src/api/data/digitalresources/level.js

@@ -10,9 +10,9 @@ export function listLevel(query) {
 }
 
 // 查询level详细
-export function getLevel(id) {
+export function getLevel(id,type) {
   return request({
-    url: '/sooka-sponest-center-data/level/' + id,
+    url: '/sooka-sponest-center-data/level/' + id + '/' + type,
     method: 'get'
   })
 }

+ 80 - 0
data-ui/src/api/data/housingconstruction/car.js

@@ -0,0 +1,80 @@
+import request from '@/utils/request'
+
+// 查询车辆数据列表
+export function listCar(query) {
+  return request({
+    url: '/center-data/housingCar/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询车辆数据详细
+export function getCar(id) {
+  return request({
+    url: '/center-data/housingCar/' + id,
+    method: 'get'
+  })
+}
+
+// 新增车辆数据
+export function addCar(data) {
+  return request({
+    url: '/center-data/housingCar',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改车辆数据
+export function updateCar(data) {
+  return request({
+    url: '/center-data/housingCar',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除车辆数据
+export function delCar(id) {
+  return request({
+    url: '/center-data/housingCar/' + id,
+    method: 'delete'
+  })
+}
+
+//从业人员列表
+export function listPractitioner(query) {
+  return request({
+    url: '/center-data/practitioner/getList',
+    method: 'get',
+    params: query
+  })
+}
+
+//配送人员列表
+export function listPersonnel(query) {
+  return request({
+    url: '/center-data/personnel/getList',
+    method: 'get',
+    params: query
+  })
+}
+
+//车辆列表
+export function getCarList(query) {
+  return request({
+    url: '/center-data/housingCar/getCarList',
+    method: 'get',
+    params: query
+  })
+}
+
+//设备列表
+export function getEquipmentList(query) {
+  return request({
+    url: '/sooka-sponest-center-monitor/gps/devices/listAll',
+    method: 'get',
+    params: query
+  })
+}

+ 60 - 0
data-ui/src/api/data/housingconstruction/enterprise.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询住建-企业信息列表
+export function listEnterprise(query) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/enterprise/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询住建-企业信息详细
+export function getEnterprise(id) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/enterprise/' + id,
+    method: 'get'
+  })
+}
+
+// 新增住建-企业信息
+export function addEnterprise(data) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/enterprise',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改住建-企业信息
+export function updateEnterprise(data) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/enterprise',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除住建-企业信息
+export function delEnterprise(id) {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/enterprise/' + id,
+    method: 'delete'
+  })
+}
+
+// 获取企业信息下拉列表
+export function getListAll() {
+  return request({
+    url: '/sooka-sponest-center-data/housingconstruction/enterprise/getListAll',
+    method: 'get'
+  })
+}
+
+export function getEnterpriseList(data){
+  return request({
+    url: '/system/dept/getDeptsByDeptType',
+    method: 'post',
+    data: data
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询企业生产报告列表
+export function listEnterpriseproductionreport(query) {
+  return request({
+    url: '/sooka-sponest-center-data/enterpriseproductionreport/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询企业生产报告详细
+export function getEnterpriseproductionreport(id) {
+  return request({
+    url: '/sooka-sponest-center-data/enterpriseproductionreport/' + id,
+    method: 'get'
+  })
+}
+
+// 新增企业生产报告
+export function addEnterpriseproductionreport(data) {
+  return request({
+    url: '/sooka-sponest-center-data/enterpriseproductionreport',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改企业生产报告
+export function updateEnterpriseproductionreport(data) {
+  return request({
+    url: '/sooka-sponest-center-data/enterpriseproductionreport',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除企业生产报告
+export function delEnterpriseproductionreport(id) {
+  return request({
+    url: '/sooka-sponest-center-data/enterpriseproductionreport/' + id,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询气源数据列表
+export function listGassource(query) {
+  return request({
+    url: '/sooka-sponest-center-data/gassource/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询气源数据详细
+export function getGassource(id) {
+  return request({
+    url: '/sooka-sponest-center-data/gassource/' + id,
+    method: 'get'
+  })
+}
+
+// 新增气源数据
+export function addGassource(data) {
+  return request({
+    url: '/sooka-sponest-center-data/gassource',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改气源数据
+export function updateGassource(data) {
+  return request({
+    url: '/sooka-sponest-center-data/gassource',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除气源数据
+export function delGassource(id) {
+  return request({
+    url: '/sooka-sponest-center-data/gassource/' + id,
+    method: 'delete'
+  })
+}

+ 53 - 0
data-ui/src/api/data/housingconstruction/inspect.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询钢瓶年检列表
+export function listInspect(query) {
+  return request({
+    url: '/center-data/inspect/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询钢瓶年检详细
+export function getInspect(id) {
+  return request({
+    url: '/center-data/inspect/' + id,
+    method: 'get'
+  })
+}
+
+// 新增钢瓶年检
+export function addInspect(data) {
+  return request({
+    url: '/center-data/inspect',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改钢瓶年检
+export function updateInspect(data) {
+  return request({
+    url: '/center-data/inspect',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除钢瓶年检
+export function delInspect(id) {
+  return request({
+    url: '/center-data/inspect/' + id,
+    method: 'delete'
+  })
+}
+
+//钢瓶列表
+export function getSteelcylinderList(query) {
+  return request({
+    url: '/center-data/steelcylinder/getSteelcylinderList',
+    method: 'get',
+    params: query
+  })
+}

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

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

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询配送人员列表
+export function listPersonnel(query) {
+  return request({
+    url: '/center-data/personnel/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询配送人员详细
+export function getPersonnel(id) {
+  return request({
+    url: '/center-data/personnel/' + id,
+    method: 'get'
+  })
+}
+
+// 新增配送人员
+export function addPersonnel(data) {
+  return request({
+    url: '/center-data/personnel',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改配送人员
+export function updatePersonnel(data) {
+  return request({
+    url: '/center-data/personnel',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除配送人员
+export function delPersonnel(id) {
+  return request({
+    url: '/center-data/personnel/' + id,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询从业人员列表
+export function listPractitioner(query) {
+  return request({
+    url: '/center-data/practitioner/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询从业人员详细
+export function getPractitioner(id) {
+  return request({
+    url: '/center-data/practitioner/' + id,
+    method: 'get'
+  })
+}
+
+// 新增从业人员
+export function addPractitioner(data) {
+  return request({
+    url: '/center-data/practitioner',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改从业人员
+export function updatePractitioner(data) {
+  return request({
+    url: '/center-data/practitioner',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除从业人员
+export function delPractitioner(id) {
+  return request({
+    url: '/center-data/practitioner/' + id,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询住建-实名用户列表
+export function listRealnameuser(query) {
+  return request({
+    url: '/sooka-sponest-center-data/realnameuser/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询住建-实名用户详细
+export function getRealnameuser(id) {
+  return request({
+    url: '/sooka-sponest-center-data/realnameuser/' + id,
+    method: 'get'
+  })
+}
+
+// 新增住建-实名用户
+export function addRealnameuser(data) {
+  return request({
+    url: '/sooka-sponest-center-data/realnameuser',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改住建-实名用户
+export function updateRealnameuser(data) {
+  return request({
+    url: '/sooka-sponest-center-data/realnameuser',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除住建-实名用户
+export function delRealnameuser(id) {
+  return request({
+    url: '/sooka-sponest-center-data/realnameuser/' + id,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询住建-安全检查明细列表
+export function listSafetyinspectionitem(query) {
+  return request({
+    url: '/sooka-sponest-center-data/safetyinspectionitem/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询住建-安全检查明细详细
+export function getSafetyinspectionitem(id) {
+  return request({
+    url: '/sooka-sponest-center-data/safetyinspectionitem/' + id,
+    method: 'get'
+  })
+}
+
+// 新增住建-安全检查明细
+export function addSafetyinspectionitem(data) {
+  return request({
+    url: '/sooka-sponest-center-data/safetyinspectionitem',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改住建-安全检查明细
+export function updateSafetyinspectionitem(data) {
+  return request({
+    url: '/sooka-sponest-center-data/safetyinspectionitem',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除住建-安全检查明细
+export function delSafetyinspectionitem(id) {
+  return request({
+    url: '/sooka-sponest-center-data/safetyinspectionitem/' + id,
+    method: 'delete'
+  })
+}

+ 78 - 0
data-ui/src/api/data/housingconstruction/steelcylinder.js

@@ -0,0 +1,78 @@
+import request from '@/utils/request'
+
+// 查询钢瓶基础数据列表
+export function listSteelcylinder(query) {
+  return request({
+    url: '/center-data/steelcylinder/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询钢瓶基础数据详细
+export function getSteelcylinder(id) {
+  return request({
+    url: '/center-data/steelcylinder/' + id,
+    method: 'get'
+  })
+}
+
+// 新增钢瓶基础数据
+export function addSteelcylinder(data) {
+  return request({
+    url: '/center-data/steelcylinder',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改钢瓶基础数据
+export function updateSteelcylinder(data) {
+  return request({
+    url: '/center-data/steelcylinder',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除钢瓶基础数据
+export function delSteelcylinder(id) {
+  return request({
+    url: '/center-data/steelcylinder/' + id,
+    method: 'delete'
+  })
+}
+
+//企业列表
+export function getEnterpriseList() {
+  return request({
+    url: '/center-data/housingconstruction/enterprise/getListAll',
+    method: 'get'
+  })
+}
+
+//添加流转信息
+export function addLog(data) {
+  return request({
+    url: '/center-data/steelcylinderLog/addLog',
+    method: 'post',
+    data: data
+  })
+}
+
+//实名用户列表
+export function getUserList(query) {
+  return request({
+    url: '/center-data/realnameuser/getRealNameUserListAllByType',
+    method: 'get',
+    params: query
+  })
+}
+
+//获取钢瓶日志详情
+export function getSteelcylinderLog(steelcylinderId) {
+  return request({
+    url: '/center-data/steelcylinderLog/getSteelcylinderLog/' + steelcylinderId,
+    method: 'get'
+  })
+}

+ 22 - 0
data-ui/src/api/data/housingconstruction/steelcylinderLog.js

@@ -0,0 +1,22 @@
+import request from '@/utils/request'
+
+// 查询钢瓶日志列表
+export function listSteelcylinderLog(query) {
+  return request({
+    url: '/center-data/steelcylinderLog/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询钢瓶日志详细
+export function getAttach(query) {
+  return request({
+    url: '/center-data/housingView/getAttach',
+    method: 'get',
+    params: query
+  })
+}
+
+
+

+ 54 - 0
data-ui/src/api/data/housingconstruction/storagetank.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 查询储罐存储数据列表
+export function listStoragetank(query) {
+  return request({
+    url: '/sooka-sponest-center-data/storagetank/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询储罐存储数据详细
+export function getStoragetank(id) {
+  return request({
+    url: '/sooka-sponest-center-data/storagetank/' + id,
+    method: 'get'
+  })
+}
+
+// 新增储罐存储数据
+export function addStoragetank(data) {
+  return request({
+    url: '/sooka-sponest-center-data/storagetank',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改储罐存储数据
+export function updateStoragetank(data) {
+  return request({
+    url: '/sooka-sponest-center-data/storagetank',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除储罐存储数据
+export function delStoragetank(id) {
+  return request({
+    url: '/sooka-sponest-center-data/storagetank/' + id,
+    method: 'delete'
+  })
+}
+
+
+// 查询储罐存储数据列表
+export function getStoragetankList(query) {
+  return request({
+    url: '/sooka-sponest-center-data/storagetank/getStoragetankList',
+    method: 'get',
+    params: query
+  })
+}

+ 1 - 0
data-ui/src/components/ImageUpload/dataUpload.vue

@@ -50,6 +50,7 @@ export default {
   props: {
     ImageUpload: Function,
     value: [String, Object, Array],
+    limit: 1,
     // 图片数量限制
     // limit: {
     //   type: Number,

+ 14 - 0
data-ui/src/router/index.js

@@ -226,6 +226,20 @@ export const dynamicRoutes = [
     ]
   },
   {
+    path: '/center-data/data/housingconstruction/steelcylinderLog',
+    component: Layout,
+    hidden: true,
+    permissions: ['housingconstruction:log:list'],
+    children: [
+      {
+        path: 'index/:id',
+        component: () => import('@/views/data/housingconstruction/steelcylinderLog'),
+        name: 'steelcylinderLog',
+        meta: { title: '钢瓶日志', activeMenu: '/data/steelcylinderLog' }
+      }
+    ]
+  },
+  {
     path: '/tool/gen-edit',
     component: Layout,
     hidden: true,

+ 1 - 1
data-ui/src/views/data/digitaltraffic/level/IForm.vue

@@ -171,7 +171,7 @@
         this.getCenterMonitorlList();
         this.$nextTick(() => {
           if (id) {
-            getLevel(id).then(response => {
+            getLevel(id,this.form.type).then(response => {
               this.form = response.data;
               this.form.userList.length > 0 ? this.$refs.ITabs.init(this.form.userList) : []
             })

+ 13 - 11
data-ui/src/views/data/generalbusiness/keyProjects/index.vue

@@ -10,11 +10,19 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="开复工时间" prop="startTime">
+<!--      <el-form-item label="开复工时间" prop="startTime">-->
+<!--        <el-date-picker-->
+<!--          v-model="queryParams.startTime"-->
+<!--          type="month"-->
+<!--          value-format="yyyy-MM"-->
+<!--          placeholder="请选择开复工时间">-->
+<!--        </el-date-picker>-->
+<!--      </el-form-item>-->
+      <el-form-item label="开复工时间" prop="year">
         <el-date-picker
-          v-model="queryParams.startTime"
-          type="month"
-          value-format="yyyy-MM"
+          v-model="queryParams.year"
+          type="year"
+          value-format="yyyy"
           placeholder="请选择开复工时间">
         </el-date-picker>
       </el-form-item>
@@ -720,7 +728,7 @@ import {
 import {selectCenterMonitorlList} from "@/api/data/digitalforest/animal/animal";
 import deptselector from '@/views/components/deptselector.vue'
 import supermap from '@/views/components/supermap.vue'
-import {checkLat, checkLon, checkPositiveDecimal4, validPhoneMobile} from "@/api/rules/rules";
+import {checkLat, checkLon, checkPositiveDecimal4} from "@/api/rules/rules";
 import {treeselect} from "@/api/system/dept";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -861,18 +869,12 @@ export default {
         cameraSystem: [
           {required: true, message: "所属分类不能为空", trigger: "change"}
         ],
-        phone: [
-          {validator: validPhoneMobile, trigger: 'blur'}
-        ],
         totalInvest: [
           {validator: checkPositiveDecimal4, trigger: 'blur'}
         ],
         yearInvest: [
           {validator: checkPositiveDecimal4, trigger: 'blur'}
         ],
-        secretaryPhone: [
-          {validator: validPhoneMobile, trigger: 'blur'}
-        ],
         scheduleTime: [
           {required: true, message: "时间不能为空", trigger: "blur"}
         ],

+ 507 - 0
data-ui/src/views/data/housingconstruction/car/index.vue

@@ -0,0 +1,507 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"
+             @submit.native.prevent>
+      <el-form-item label="车牌号" prop="carNumber">
+        <el-input
+          v-model="queryParams.carNumber"
+          placeholder="请输入车牌号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item prop="deptId">
+        <template slot="label">
+          <span @click="changeQueryType" v-if="queryParams.deptName === 0">本级及下级</span>
+          <span @click="changeQueryType" v-if="queryParams.deptName === 1">只查询本级</span>
+        </template>
+        <treeselect v-model="queryParams.deptId" :options="deptOptions" multiple:false :show-count="true"
+                    placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"
+                    style="width: 240px"/>
+        <el-input v-model="queryParams.deptName" v-if="false"/>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['data:car:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['data:car:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['data:car:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['data:car:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="carList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="车牌号" align="center" prop="carNumber"/>
+      <el-table-column label="管理人员名称" align="center" prop="managerName"/>
+      <el-table-column label="司机名称" align="center" prop="driverName"/>
+      <el-table-column label="押运员名称" align="center" prop="escortName"/>
+      <el-table-column label="应急装备" align="center" prop="emergencyEquipment"/>
+      <el-table-column label="安全防护措施" align="center" prop="protection"/>
+<!--      <el-table-column label="时速" align="center" prop="speed"/>-->
+      <el-table-column label="所属部门" align="center" prop="deptName"/>
+      <el-table-column label="创建人" align="center" prop="createName"/>
+      <el-table-column label="创建时间" align="center" prop="createTime"/>
+      <el-table-column label="修改人" align="center" prop="updateName"/>
+      <el-table-column label="修改时间" align="center" prop="updateTime"/>
+      <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="['data:car:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['data:car:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改车辆数据对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="96px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="企业" prop="enterpriseId">
+              <el-select v-model="form.enterpriseId" @change="onSelectChange(form.enterpriseId)" filterable placeholder="请选择企业名称">
+                <el-option
+                  v-for="dict in enterprise"
+                  :key="dict.id"
+                  :label="dict.enterpriseName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="车牌号" prop="carNumber">
+              <el-input v-model="form.carNumber" placeholder="请输入车牌号" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="管理人员" prop="managerId">
+              <el-select v-model="form.managerId" filterable placeholder="请选择管理人员">
+                <el-option
+                  v-for="dict in practitioner"
+                  :key="dict.id"
+                  :label="dict.staffName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="司机" prop="driverId">
+              <el-select v-model="form.driverId" filterable placeholder="请选择司机">
+                <el-option
+                  v-for="dict in sjList"
+                  :key="dict.id"
+                  :label="dict.staffName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="押运员" prop="escortId">
+              <el-select v-model="form.escortId" filterable placeholder="请选择押运员">
+                <el-option
+                  v-for="dict in psyList"
+                  :key="dict.id"
+                  :label="dict.staffName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="应急装备" prop="emergencyEquipment">
+              <el-input v-model="form.emergencyEquipment" placeholder="请输入应急装备" maxlength="200"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="安全防护措施" prop="protection">
+              <el-input v-model="form.protection" placeholder="请输入安全防护措施" maxlength="200"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="绑定设备" prop="speed">
+              <el-select v-model="form.speed" filterable clearable placeholder="请选择设备">
+                <el-option
+                  v-for="dict in equipmentList"
+                  :key="dict.deviceid"
+                  :label="dict.devicename"
+                  :value="dict.deviceid"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          :noResultsText="'空'" :noOptionsText="'空'"
+                          placeholder="请选择部门" @select="hx"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {listCar, getCar, delCar, addCar, updateCar,listPractitioner,listPersonnel,getEquipmentList} from "@/api/data/housingconstruction/car";
+import {getEnterpriseList} from "@/api/data/housingconstruction/steelcylinder";
+import {treeselect} from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import {format_date} from "@/views/data/common/dateExport";
+import {carPhoneValid, checkPositiveDecimal} from "@/api/rules/rules";
+
+export default {
+  name: "Car",
+  components: {Treeselect},
+  data() {
+    return {
+      deptOptions: undefined,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      enterpriseId: null,
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 车辆数据表格数据
+      carList: [],
+      //企业列表
+      enterprise: [],
+      //管理员列表
+      practitioner:[],
+      //司机列表
+      sjList:[],
+      //配送员列表
+      psyList:[],
+      //设备列表
+      equipmentList:[],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        createName: null,
+        updateName: null,
+        deptId: null,
+        deptName: 0,
+        enterpriseId: null,
+        enterpriseName: null,
+        carNumber: null,
+        managerId: null,
+        managerName: null,
+        driverId: null,
+        driverName: null,
+        escortId: null,
+        escortName: null,
+        emergencyEquipment: null,
+        protection: null,
+        speed: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        enterpriseId: [
+          {required: true, message: "企业不能为空", trigger: "blur"},
+        ],
+        carNumber: [
+          {required: true, message: "车牌号不能为空", trigger: "blur"},
+          {validator: carPhoneValid, trigger: 'blur'}
+        ],
+        managerId: [
+          {required: true, message: "管理人员不能为空", trigger: "blur"},
+        ],
+        driverId: [
+          {required: true, message: "司机不能为空", trigger: "blur"},
+        ],
+        deptId: [
+          {required: true, message: "所属部门不能为空", trigger: "change"},
+        ],
+        escortId: [
+          {required: true, message: "押运员不能为空", trigger: "blur"},
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getEnterpriseList();
+    this.getEquipmentList();
+  },
+  methods: {
+    //获取企业列表
+    getEnterpriseList() {
+      getEnterpriseList().then(response => {
+        this.enterprise = response.data;
+      });
+    },
+    //
+    onSelectChange(id){
+      //获取管理人员列表
+      listPractitioner({"enterpriseId":id}).then(response => {
+        this.practitioner = response.data;
+      });
+      //获取司机列表
+      listPersonnel({"post":"personnel_sj","enterpriseId":id}).then(response => {
+        this.sjList = response.data;
+      });
+      //获取配送员列表
+      listPersonnel({"post":"personnel_psy","enterpriseId":id}).then(response => {
+        this.psyList = response.data;
+      });
+    },
+    //获取设备列表
+    getEquipmentList() {
+      getEquipmentList().then(response => {
+        this.equipmentList = response.data;
+      });
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField('deptId');
+    },
+    /** 查询车辆数据列表 */
+    getList() {
+      this.loading = true;
+      listCar(this.queryParams).then(response => {
+        this.carList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.practitioner = []
+      this.sjList = []
+      this.psyList = []
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        carNumber: null,
+        managerId: null,
+        managerName: null,
+        driverId: null,
+        driverName: null,
+        escortId: null,
+        escortName: null,
+        emergencyEquipment: null,
+        protection: null,
+        speed: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.deptName = 0;
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.enterpriseId = selection.map(item => item.enterpriseId)[0]
+      console.log(this.enterpriseId)
+      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
+      getCar(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改车辆数据";
+      });
+      const enterpriseId = row.enterpriseId || this.enterpriseId
+      this.onSelectChange(enterpriseId)
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.enterpriseName = this.enterprise.filter((item) => {
+            return this.form.enterpriseId == item.id;
+          })[0].enterpriseName;
+
+          this.form.managerName = this.practitioner.filter((item) => {
+            return this.form.managerId == item.id;
+          })[0].staffName;
+
+          this.form.driverName = this.sjList.filter((item) => {
+            return this.form.driverId == item.id;
+          })[0].staffName;
+
+          if (this.form.escortId != null){
+            this.form.escortName = this.psyList.filter((item) => {
+              return this.form.escortId == item.id;
+            })[0].staffName;
+          }
+          if (this.form.id != null) {
+            updateCar(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addCar(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delCar(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('center-data/housingCar/export', {
+        ...this.queryParams
+      }, `车辆_${format_date(new Date())}.xlsx`)
+    },
+    // 点击按钮修改是否只查询本级部门用户
+    changeQueryType() {
+      this.queryParams.deptName = this.queryParams.deptName === 0 ? 1 : 0;
+    }
+  }
+};
+</script>

+ 529 - 0
data-ui/src/views/data/housingconstruction/enterprise/index.vue

@@ -0,0 +1,529 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="企业名称" prop="enterpriseName">
+        <el-input
+          v-model="queryParams.enterpriseName"
+          placeholder="请输入企业名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="法人代表" prop="legalRepresentative">
+        <el-input
+          v-model="queryParams.legalRepresentative"
+          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"
+          v-hasPermi="['Housingconstruction:enterprise:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['Housingconstruction:enterprise:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['Housingconstruction:enterprise:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['Housingconstruction:enterprise:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="enterpriseList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="企业行政区域" align="center" prop="enterpriseAdministrativeArea"/>
+      <el-table-column label="法人代表" align="center" prop="legalRepresentative"/>
+      <el-table-column label="登记注册地址" align="center" prop="registeredAddress"/>
+      <el-table-column label="经营类别" align="center" prop="businessCategory"/>
+      <el-table-column label="经营区域" align="center" prop="operatingArea"/>
+      <el-table-column label="发证时间" align="center" prop="issuingTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.issuingTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="许可期限" align="center">
+        <template slot-scope="scope">
+          {{ formatLicensePeriod(scope.row.licensePeriodStart, scope.row.licensePeriodEnd) }}
+        </template>
+      </el-table-column>
+      <el-table-column label="发证机关" align="center" prop="issuingAuthority"/>
+      <el-table-column label="经度" align="center" prop="longitude"/>
+      <el-table-column label="纬度" align="center" prop="latitude"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['Housingconstruction:enterprise:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['Housingconstruction:enterprise: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="1200px" append-to-body class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="135px">
+        <el-row :gutter="24">
+<!--          this.title === "修改企业信息"-->
+          <el-col :span="12">
+            <el-form-item label="企业" prop="id" v-if="title === '添加企业信息'">
+              <el-select v-model="form.id" placeholder="请选择企业">
+                <el-option
+                  v-for="data in enterprisesList"
+                  :key="data.deptId"
+                  :label="data.deptName"
+                  :value="data.deptId"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="企业名称" prop="enterpriseName" v-if="title === '修改企业信息'">
+              <el-input v-model="form.enterpriseName" placeholder="请输入企业名称" :readonly="true"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="企业行政区域" prop="enterpriseAdministrativeArea">
+              <el-input v-model="form.enterpriseAdministrativeArea" placeholder="请输入企业行政区域" maxlength="32"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="法人代表" prop="legalRepresentative">
+              <el-input v-model="form.legalRepresentative" placeholder="请输入法人代表" maxlength="16"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="登记注册地址" prop="registeredAddress">
+              <el-input v-model="form.registeredAddress" placeholder="请输入登记注册地址" maxlength="32"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="发证机关" prop="issuingAuthority">
+              <el-input v-model="form.issuingAuthority" placeholder="请输入发证机关" maxlength="64"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="发证时间" prop="issuingTime">
+              <el-date-picker clearable size="small"
+                              v-model="form.issuingTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择发证时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="许可期限开始时间" prop="licensePeriodStart">
+              <el-date-picker clearable size="small"
+                              v-model="form.licensePeriodStart"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择许可期限开始时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="许可期限结束时间" prop="licensePeriodEnd">
+              <el-input v-model="form.licensePeriodEnd" placeholder="请输入许可期限结束时间" maxlength="32"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+<!--        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"/>
+            </el-form-item>
+          </el-col>
+        </el-row>-->
+        <el-row :gutter="24">
+          <el-col :span="24">
+            <el-form-item label="经营类别" prop="businessCategory">
+              <el-input v-model="form.businessCategory" type="textarea" placeholder="请输入经营类别" maxlength="512"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="经营区域" prop="operatingArea">
+              <el-input v-model="form.operatingArea" type="textarea" placeholder="请输入经营区域" maxlength="512"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-form-item label="企业图片" prop="attachPaths">
+            <ImageUpload v-model="form.attachPaths" ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.attachPaths" @input="getUrl" :limit="1"></ImageUpload>
+          </el-form-item>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="titleLongitude" :visible.sync="showLongitude" append-to-body>
+      <el-input v-show="false" v-model="form.longitude" disabled></el-input>
+      <el-input v-show="false" v-model="form.latitude" disabled></el-input>
+      <supermap style="width: 100%;height: 500px;" :mapDiv="'landingMap'" :mapSite="{doubleClickZoom:false}"
+                :codes="['9fa5']" :isSideBySide="false" :showLatLng="showLatLng"></supermap>
+      <el-button type="primary" @click="showLongitude=false">确定</el-button>
+    </el-dialog>
+    <ISuperMap ref="ISuperMap" v-if="ISuperMapvisible" @send="send"/>
+  </div>
+</template>
+
+<script>
+import {
+  addEnterprise,
+  delEnterprise,
+  getEnterprise,
+  getEnterpriseList,
+  listEnterprise,
+  updateEnterprise
+} from "@/api/data/housingconstruction/enterprise";
+import deptselector from "@/views/components/deptselector.vue";
+import {treeselect} from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import ISuperMap from "@/views/data/common/ISuperMap.vue";
+import supermap from "@/views/components/supermap.vue";
+import DataImageUpload from "@/components/ImageUpload/dataUpload.vue";
+import {format_date} from "@/views/data/common/dateExport";
+
+export default {
+  name: "Enterprise",
+  components: {deptselector, Treeselect, supermap, ISuperMap,DataImageUpload},
+  data() {
+    return {
+      titleLongitude: '',
+      showLongitude: false,
+      ISuperMapvisible: false,
+      sign: 1,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 住建-企业信息表格数据
+      enterpriseList: [],
+      // 部门树选项
+      deptOptions: [],
+      //企业列表
+      enterprisesList:[],
+      //设备集合
+      cameraList: [],
+      //企业列表
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        enterpriseName: null,
+        legalRepresentative: null,
+
+      },
+      deptType:{
+        deptType: 'sys_dept_type_32'
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        id: [
+          {required: true, message: "企业不能为空", trigger: "blur"}
+        ],
+        enterpriseAdministrativeArea: [
+          {required: true, message: "企业行政区域不能为空", trigger: "blur"}
+        ],
+        legalRepresentative: [
+          {required: true, message: "法人代表不能为空", trigger: "blur"}
+        ],
+        registeredAddress: [
+          {required: true, message: "登记注册地址不能为空", trigger: "blur"}
+        ],
+        businessCategory: [
+          {required: true, message: "经营类别不能为空", trigger: "blur"}
+        ],
+        operatingArea: [
+          {required: true, message: "经营区域不能为空", trigger: "blur"}
+        ],
+        issuingTime: [
+          {required: true, message: "发证时间不能为空", trigger: "blur"}
+        ],
+        licensePeriodStart: [
+          {required: true, message: "许可期限开始时间不能为空", trigger: "blur"}
+        ],
+        licensePeriodEnd: [
+          {required: true, message: "许可期限结束时间不能为空", trigger: "blur"}
+        ],
+        issuingAuthority: [
+          {required: true, message: "发证机关不能为空", trigger: "blur"}
+        ],
+        attachPaths:[
+          {required: true, message: "企业图片不能为空", trigger: "change"}
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+    // this.getTreeselect();
+    this.getEnterpriseList();
+  },
+  methods: {
+    /** 附件:图片 **/
+    getUrl(url) {
+      this.form.attachPaths = url
+      console.log(this.form)
+    },
+    handleEnterpriseChange(newId) {
+      const selectedEnterprise = this.enterprisesList.find(item => item.deptId == newId);
+      if (selectedEnterprise) {
+        this.form.enterpriseName = selectedEnterprise.deptName;
+        this.form.longitude = selectedEnterprise.deptLongitude;
+        this.form.latitude = selectedEnterprise.deptLatitude;
+      } else {
+        this.form.enterpriseName = '';
+      }
+    },
+    getEnterpriseList(){
+      getEnterpriseList(this.deptType).then(res=>{
+        this.enterprisesList = res.data
+      })
+    },
+    formatLicensePeriod(start, end) {
+      return `${start} 至 ${end}`;
+    },
+    showLatLng: function (lat, lng) {
+      this.form.latitude = lat
+      this.form.longitude = lng
+    },
+    send(val) {
+      if (val === true) {
+        this.ISuperMapvisible = false;
+        return;
+      }
+      if (this.sign === 1) {
+        this.form.longitude = val.longitude;
+        this.form.latitude = val.latitude;
+      }
+      if (this.sign === 2 || this.sign === 3) this.form.longitude = val.xiantude;//this.form.longitude 换成对应的线或区域的字段
+      this.ISuperMapvisible = false
+    },
+    /** 查询部门下拉树结构 */
+    /*getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField("deptId")
+    },*/
+    showMap() {
+      this.ISuperMapvisible = true;
+      this.$nextTick(() => {
+        this.$refs.ISuperMap.init(this.sign, {
+          id: this.form.id,
+          longitude: this.form.longitude,
+          latitude: this.form.latitude,
+          xiantude: this.form.longitude//this.form.longitude换成每个页面对应线或者面对应的字段
+        })
+      })
+    },
+    /** 查询住建-企业信息列表 */
+    getList() {
+      this.loading = true;
+      listEnterprise(this.queryParams).then(response => {
+        this.enterpriseList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        enterpriseName: null,
+        enterpriseAdministrativeArea: null,
+        legalRepresentative: null,
+        registeredAddress: null,
+        businessCategory: null,
+        operatingArea: null,
+        issuingTime: null,
+        licensePeriodStart: null,
+        licensePeriodEnd: null,
+        issuingAuthority: null,
+        longitude: null,
+        latitude: null,
+        createTime: null,
+        createBy: null,
+        createName: null,
+        updateTime: null,
+        updateBy: null,
+        updateName: null,
+        deptId: null,
+        deptName: null,
+        deviceList: [],
+      };
+      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
+      getEnterprise(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改企业信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.handleEnterpriseChange(this.form.id)
+          if (this.title === "修改企业信息") {
+            updateEnterprise(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+          if(this.title === "添加企业信息"){
+            addEnterprise(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delEnterprise(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('sooka-sponest-center-data/housingconstruction/enterprise/export', {
+        ...this.queryParams
+      }, `企业信息_${format_date(new Date())}.xlsx`)
+    }
+  }
+};
+</script>

+ 393 - 0
data-ui/src/views/data/housingconstruction/enterpriseproductionreport/index.vue

@@ -0,0 +1,393 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="所属企业" prop="enterpriseId">
+        <el-select v-model="queryParams.enterpriseId" placeholder="请选择所属企业">
+          <el-option
+            v-for="data in enterpriseList"
+            :key="data.id"
+            :label="data.enterpriseName"
+            :value="data.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="报告类型" prop="reportType" v-if="this.$route.query.requestType === '1'">
+        <el-select v-model="queryParams.reportType" placeholder="请选择报告类型" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.enterprise_production_report"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="文件类型" prop="reportType" v-if="this.$route.query.requestType === '2'">
+        <el-select v-model="queryParams.reportType" placeholder="请选择文件类型" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.enterprise_qualification_file"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['housingconstruction:enterpriseproductionreport:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['housingconstruction:enterpriseproductionreport:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['housingconstruction:enterpriseproductionreport:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="enterpriseproductionreportList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="报告类型" align="center" prop="reportType" v-if="this.$route.query.requestType === '1'">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.enterprise_production_report" :value="scope.row.reportType"/>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="文件类型" align="center" prop="reportType" v-if="this.$route.query.requestType === '2'">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.enterprise_qualification_file" :value="scope.row.reportType"/>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="上传时间" align="center" prop="createTime"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['housingconstruction:enterpriseproductionreport:edit']"
+          >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['housingconstruction:enterpriseproductionreport: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="800px" append-to-body class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="所属企业" prop="enterpriseId">
+          <el-select v-model="form.enterpriseId" placeholder="请选择所属企业" @change="handleEnterpriseChange" :disabled="isReadOnly">
+            <el-option
+              v-for="data in enterpriseList"
+              :key="data.id"
+              :label="data.enterpriseName"
+              :value="data.id"
+              :readonly="isReadOnly"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="报告类型" prop="reportType" v-if="this.$route.query.requestType === '1'">
+          <el-select v-model="form.reportType" placeholder="请选择报告类型" :disabled="isReadOnly">
+            <el-option
+              v-for="dict in dict.type.enterprise_production_report"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+              :readonly="isReadOnly"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="文件类型" prop="reportType" v-if="this.$route.query.requestType === '2'">
+          <el-select v-model="form.reportType" placeholder="请选择文件类型" :disabled="isReadOnly">
+            <el-option
+              v-for="dict in dict.type.enterprise_qualification_file"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+              :readonly="isReadOnly"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="附件" prop="fileUrl" :disabled="isReadOnly">
+          <fileUpload v-model="form.fileUrl" :setFileName="setFileName" :removeFileName="removeFileName"></fileUpload>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" v-if="!isReadOnly">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addEnterpriseproductionreport,
+  delEnterpriseproductionreport,
+  getEnterpriseproductionreport,
+  listEnterpriseproductionreport,
+  updateEnterpriseproductionreport
+} from "@/api/data/housingconstruction/enterpriseproductionreport";
+import {getListAll} from "@/api/data/housingconstruction/enterprise";
+import FileUpload from "@/views/components/FileUpload/index.vue";
+import {format_date} from "@/views/data/common/dateExport";
+
+export default {
+  name: "Enterpriseproductionreport",
+  components: {FileUpload},
+  dicts: ['enterprise_production_report', 'enterprise_qualification_file'],
+  data() {
+    return {
+      //详情只读
+      isReadOnly: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 企业生产报告表格数据
+      enterpriseproductionreportList: [],
+      //企业信息列表
+      enterpriseList: [],
+      fileNames: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        reportType: null,
+        enterpriseId: null,
+        requestType: this.$route.query.requestType
+      },
+      // 表单参数
+      form: {
+        fileUrl: '',
+        fileName: '',
+        fileUrlList: [],
+        fileNameList: []
+      },
+      // 表单校验
+      rules: {
+        enterpriseId: [
+          {required: true, message: "企业不能为空", trigger: "blur"}
+        ],
+        reportType:[
+          {required: true, message: "报告类型不能为空", trigger: "blur"}
+        ],
+        fileUrl: [
+          {required: true, message: "报告文件不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getEnterpriseList();
+  },
+  methods: {
+    /** 附件:文件 **/
+    setFileName(fileName) {
+      let that = this
+      that.fileNames.push(fileName)
+    },
+    removeFileName(index) {
+      let that = this
+      that.fileNames.splice(index, 1);
+      let fileurls = that.form.fileUrl.split(",")
+      fileurls.splice(index, 1)
+      that.form.fileUrl = fileurls.toString()
+    },
+    handleEnterpriseChange(newId) {
+      const selectedEnterprise = this.enterpriseList.find(item => item.id === newId);
+      if (selectedEnterprise) {
+        this.form.enterpriseName = selectedEnterprise.enterpriseName;
+      } else {
+        this.form.enterpriseName = '';
+      }
+    },
+    getEnterpriseList(){
+      getListAll().then(res=>{
+        this.enterpriseList = res.data
+      })
+    },
+    /** 查询企业生产报告列表 */
+    getList() {
+      this.loading = true;
+      listEnterpriseproductionreport(this.queryParams).then(response => {
+        this.enterpriseproductionreportList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        reportType: null,
+        createTime: null,
+        createBy: null,
+        createName: null,
+        requestType: this.$route.query.requestType
+      };
+      this.fileNames = [];
+      this.resetForm("form");
+      this.isReadOnly = false;
+    },
+    /** 搜索按钮操作 */
+    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;
+      if(this.$route.query.requestType === '1'){
+        this.title = "添加企业生产报告";
+      }else if(this.$route.query.requestType === '2'){
+        this.title = "添加企业资质文件";
+      }
+
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getEnterpriseproductionreport(id).then(response => {
+        const list = response.data.fileUrl.split(',');
+        if (response.data.fileUrl != "") {
+          for (var a = 0; a < list.length; a++) {
+            let listurl = list[a].split('+')
+            this.fileNames.push(listurl[1])
+          }
+        }
+        this.form = response.data;
+        this.open = true;
+        this.title = "详情";
+        this.isReadOnly = true
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.fileName = this.fileNames.toString()
+          if (this.form.id != null) {
+            updateEnterpriseproductionreport(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addEnterpriseproductionreport(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delEnterpriseproductionreport(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      let exportTitle = '';
+      if(this.$route.query.requestType === '1'){
+        exportTitle = "企业生产报告";
+      }else if(this.$route.query.requestType === '2'){
+        exportTitle = "企业资质文件";
+      }
+
+      this.download('sooka-sponest-center-data/enterpriseproductionreport/export', {
+        ...this.queryParams
+      }, exportTitle+`_${format_date(new Date())}.xlsx`)
+    }
+  }
+};
+</script>

+ 520 - 0
data-ui/src/views/data/housingconstruction/gassource/index.vue

@@ -0,0 +1,520 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="企业名称" prop="enterpriseName">
+        <el-input
+          v-model="queryParams.enterpriseName"
+          placeholder="请输入企业名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="燃气成份" prop="component">
+        <el-input
+          v-model="queryParams.component"
+          placeholder="请输入燃气成份"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="运输车辆车牌号" prop="carNumber" label-width="110px">
+        <el-input
+          v-model="queryParams.carNumber"
+          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"
+          v-hasPermi="['housingconstruction:gassource:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['housingconstruction:gassource:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['housingconstruction:gassource:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['housingconstruction:gassource:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="gassourceList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="来源企业" align="center" prop="sourceEnterpriseName"/>
+      <el-table-column label="来源地" align="center" prop="address"/>
+      <el-table-column label="燃气成份" align="center" prop="component"/>
+<!--      <el-table-column label="燃气成份" align="center" prop="component">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.housingconstruction_component" :value="scope.row.component"/>
+        </template>
+      </el-table-column>-->
+      <el-table-column label="入站时间" align="center" prop="joinInstationTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.joinInstationTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="运输重量" align="center" prop="weight"/>
+      <el-table-column label="运输车辆车牌号" align="center" prop="carNumber" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['housingconstruction:gassource:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['housingconstruction:gassource: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="1300px" append-to-body class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="所属厂站" prop="enterpriseId">
+              <el-select v-model="form.enterpriseId" placeholder="请选择所属厂站" @change="handleEnterpriseChange">
+                <el-option
+                  v-for="data in enterpriseList"
+                  :key="data.id"
+                  :label="data.enterpriseName"
+                  :value="data.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="来源企业" prop="sourceEnterpriseName">
+              <el-input v-model="form.sourceEnterpriseName" placeholder="请输入来源企业"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="燃气成份" prop="component">
+              <el-input v-model="form.component" placeholder="请输入燃气成份"/>
+<!--              <el-select v-model="form.component" placeholder="请选择燃气成份">
+                <el-option
+                  v-for="dict in dict.type.housingconstruction_component"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>-->
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="来源地" prop="address">
+              <el-input v-model="form.address" placeholder="请输入来源地"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="运输车辆" prop="carId">
+              <el-input v-model="form.carId" placeholder="请输入运输车辆"/>
+<!--              <el-select v-model="form.carId" filterable placeholder="请选择运输车辆"  @change="handleCarChange">
+                <el-option
+                  v-for="data in carList"
+                  :key="data.id"
+                  :label="data.carNumber"
+                  :value="data.id"
+                ></el-option>
+              </el-select>-->
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="运输重量" prop="weight">
+              <el-input v-model="form.weight" placeholder="请输入运输重量(KG)"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-col :span="12">
+              <el-form-item label="入站时间" prop="joinInstationTime">
+                <el-date-picker clearable size="small"
+                                v-model="form.joinInstationTime"
+                                type="date"
+                                value-format="yyyy-MM-dd"
+                                placeholder="选择入站时间">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-form-item label="危化品检测报告" prop="fileUrl"  label-width="130px">
+            <fileUpload v-model="form.fileUrl" :setFileName="setFileName" :removeFileName="removeFileName"></fileUpload>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="24">
+          <el-form-item label="危化品运输车辆许可" prop="attachPaths" label-width="160px">
+            <ImageUpload v-model="form.attachPaths" ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.attachPaths" @input="getUrl" :limit="10"></ImageUpload>
+          </el-form-item>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addGassource,
+  delGassource,
+  getGassource,
+  listGassource,
+  updateGassource
+} from "@/api/data/housingconstruction/gassource";
+import {getListAll} from "@/api/data/housingconstruction/enterprise";
+import deptselector from "@/views/components/deptselector.vue";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {treeselect} from "@/api/system/dept";
+import {getCarList} from "@/api/data/housingconstruction/car";
+import DataImageUpload from "@/components/ImageUpload/dataUpload.vue";
+import FileUpload from '@/views/components/FileUpload/index.vue'
+import {format_date} from "@/views/data/common/dateExport";
+import {checkPositiveDecimal, checkPositiveInteger} from "@/api/rules/rules";
+
+export default {
+  name: "Gassource",
+  components: {DataImageUpload, deptselector, Treeselect, FileUpload},
+  dicts: ['housingconstruction_component'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      fileNames: [],
+      // 总条数
+      total: 0,
+      // 气源数据表格数据
+      gassourceList: [],
+      //企业信息列表
+      enterpriseList: [],
+      // 部门树选项
+      deptOptions: [],
+      //车辆列表
+      carList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        enterpriseName: null,
+        address: null,
+        component: null,
+        joinInstationTime: null,
+        weight: null,
+        carNumber: null
+      },
+      // 表单参数
+      form: {
+        fileUrl: '',
+        fileName: '',
+        fileUrlList: [],
+        fileNameList: []
+      },
+      // 表单校验
+      rules: {
+        enterpriseId: [
+          {required: true, message: "企业不能为空", trigger: "blur"}
+        ],
+        sourceEnterpriseName: [
+          {required: true, message: "来源企业不能为空", trigger: "blur"}
+        ],
+        component: [
+          {required: true, message: "燃气成份不能为空", trigger: "blur"}
+        ],
+        joinInstationTime: [
+          {required: true, message: "入站时间不能为空", trigger: "blur"}
+        ],
+        weight: [
+          {required: true, message: "运输重量不能为空", trigger: "blur"},
+          {validator: checkPositiveDecimal, trigger: 'blur'}
+        ],
+        carId: [
+          {required: true, message: "运输车辆不能为空", trigger: "blur"}
+        ],
+        deptId: [
+          {required: true, message: "所属部门不能为空", trigger: "blur"}
+        ],
+        fileUrl: [
+          {required: true, message: "危化品检测报告不能为空", trigger: "blur"}
+        ],
+        attachPaths: [
+          {required: true, message: "危化品运输车车辆许可不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getEnterpriseList();
+    this.getCarList();
+  },
+  methods: {
+    /** 附件:图片 **/
+    getUrl(url) {
+      //获取图片全路径  例:http://{{ ip }}:{{ port }}/group1/M00/00/07/wKgKEGVxMCiAZbvVAAJE9SGvagw915.jpg
+      this.form.attachPaths = url
+      //获取图片路径  例:group1/M00/00/07/wKgKEGVxL6eACFv2AAJE9SGvagw622.jpg
+      // this.form.attachPaths = this.$refs.ImageUpload.dialogName
+    },
+    /** 附件:文件 **/
+    setFileName(fileName) {
+      let that = this
+      that.fileNames.push(fileName)
+    },
+    removeFileName(index) {
+      let that = this
+      that.fileNames.splice(index, 1);
+      let fileurls = that.form.fileUrl.split(",")
+      fileurls.splice(index, 1)
+      that.form.fileUrl = fileurls.toString()
+    },
+    /** 获取车辆列表 **/
+    getCarList(){
+      getCarList().then(res=>{
+        this.carList = res.data;
+      })
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField("deptId")
+    },
+    handleEnterpriseChange(newId) {
+      const selectedEnterprise = this.enterpriseList.find(item => item.id === newId);
+      if (selectedEnterprise) {
+        this.form.enterpriseName = selectedEnterprise.enterpriseName;
+      } else {
+        this.form.enterpriseName = '';
+      }
+    },
+    handleCarChange(newId){
+      const selectedCar = this.carList.find(item => item.id === newId);
+      if (selectedCar) {
+        this.form.carNumber = selectedCar.carNumber;
+      } else {
+        this.form.carNumber = '';
+      }
+    },
+    getEnterpriseList(){
+      getListAll().then(res=>{
+        this.enterpriseList = res.data
+      })
+    },
+    /** 查询气源数据列表 */
+    getList() {
+      this.loading = true;
+      listGassource(this.queryParams).then(response => {
+        this.gassourceList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        address: null,
+        component: null,
+        joinInstationTime: null,
+        weight: null,
+        carNumber: null
+      };
+      this.fileNames = [];
+      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
+      getGassource(id).then(response => {
+        const list = response.data.fileUrl.split(',');
+        if (response.data.fileUrl != "") {
+          for (var a = 0; a < list.length; a++) {
+            let listurl = list[a].split('+')
+            this.fileNames.push(listurl[1])
+          }
+        }
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改气源数据";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.fileName = this.fileNames.toString()
+          if (this.form.id != null) {
+            updateGassource(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.fileNames = [];
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addGassource(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.fileNames = [];
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delGassource(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('sooka-sponest-center-data/gassource/export', {
+        ...this.queryParams
+      }, `气源数据_${format_date(new Date())}.xlsx`)
+    }
+  }
+};
+</script>

+ 407 - 0
data-ui/src/views/data/housingconstruction/inspect/index.vue

@@ -0,0 +1,407 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" @submit.native.prevent>
+      <el-form-item label="钢瓶名称" prop="steelcylinderName">
+        <el-input
+          v-model="queryParams.steelcylinderName"
+          placeholder="请输入钢瓶名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item prop="deptId">
+        <template slot="label">
+          <span @click="changeQueryType" v-if="queryParams.deptName === 0">本级及下级</span>
+          <span @click="changeQueryType" v-if="queryParams.deptName === 1">只查询本级</span>
+        </template>
+        <treeselect v-model="queryParams.deptId" :options="deptOptions" multiple:false :show-count="true"
+                    placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"
+                    style="width: 240px"/>
+        <el-input v-model="queryParams.deptName" v-if="false"/>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['data:inspect:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['data:inspect:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['data:inspect:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['data:inspect:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="inspectList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="钢瓶名称" align="center" prop="steelcylinderName"/>
+      <el-table-column label="年检时间" align="center" prop="inspectTime"/>
+      <el-table-column label="年检状态" align="center" prop="state"/>
+      <el-table-column label="年检地点" align="center" prop="address"/>
+      <el-table-column label="下次年检时间" align="center" prop="nextInspectTime"/>
+      <el-table-column label="所属部门" align="center" prop="deptName"/>
+      <el-table-column label="创建人" align="center" prop="createName"/>
+      <el-table-column label="创建时间" align="center" prop="createTime"/>
+      <el-table-column label="修改人" align="center" prop="updateName"/>
+      <el-table-column label="修改时间" align="center" prop="updateTime"/>
+      <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="['data:inspect:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['data:inspect: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="800px" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="150px">
+        <el-form-item label="钢瓶" prop="steelcylinderId">
+          <el-select v-model="form.steelcylinderId" filterable placeholder="请选择钢瓶">
+            <el-option
+              v-for="dict in steelcylinderList"
+              :key="dict.id"
+              :label="dict.name"
+              :value="dict.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="年检时间" prop="inspectTime">
+          <el-date-picker clearable
+                          v-model="form.inspectTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择年检时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="年检状态" prop="state">
+          <el-input v-model="form.state" placeholder="请输入年检状态" maxlength="20"/>
+        </el-form-item>
+        <el-form-item label="年检地点" prop="address">
+          <el-input v-model="form.address" placeholder="请输入年检地点" maxlength="20"/>
+        </el-form-item>
+        <el-form-item label="下次年检时间" prop="nextInspectTime">
+          <el-date-picker clearable
+                          v-model="form.nextInspectTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择下次年检时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="所属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                      :noResultsText="'空'" :noOptionsText="'空'"
+                      placeholder="请选择部门" @select="hx"/>
+        </el-form-item>
+        <el-form-item label="附件" prop="fileUrl">
+          <fileUpload :value="[form.fileUrl,form.fileName]" v-model="form.fileUrl" :setFileName="setFileName"
+                      :removeFileName="removeFileName" :limit="1"></fileUpload>
+        </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 {listInspect, getInspect, delInspect, addInspect, updateInspect,getSteelcylinderList} from "@/api/data/housingconstruction/inspect";
+import {treeselect} from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import {format_date} from "@/views/data/common/dateExport";
+import fileUpload from '@/views/components/FileUpload/index.vue'
+
+export default {
+  name: "Inspect",
+  components: {Treeselect,fileUpload},
+  data() {
+    return {
+      deptOptions: undefined,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 钢瓶年检表格数据
+      inspectList: [],
+      fileNames: [],
+      steelcylinderList:[],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        createName: null,
+        updateName: null,
+        deptId: null,
+        deptName: 0,
+        steelcylinderId: null,
+        steelcylinderName: null,
+        inspectTime: null,
+        state: null,
+        address: null,
+        nextInspectTime: null
+      },
+      // 表单参数
+      form: {
+        fileUrl: '',
+        fileName: '',
+        //fileUrlList: [],
+        //fileNameList: []
+      },
+      // 表单校验
+      rules: {
+        steelcylinderId: [
+          {required: true, message: "钢瓶不能为空", trigger: "blur"},
+        ],
+        deptId: [
+          {required: true, message: "所属部门不能为空", trigger: "change"},
+        ],
+        state: [
+          {required: true, message: "年检状态不能为空", trigger: "change"},
+        ],
+        nextInspectTime: [
+          {required: true, message: "下次年检时间不能为空", trigger: "blur"},
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getSteelcylinderList();
+  },
+  methods: {
+    setFileName(fileName) {
+      let that = this
+      that.fileNames.push(fileName)
+    },
+    removeFileName(index) {
+      let that = this
+      that.fileNames.splice(index, 1);
+      let fileurls = that.form.fileUrl.split(",")
+      fileurls.splice(index, 1)
+      that.form.fileUrl = fileurls.toString()
+    },
+    //钢瓶列表
+    getSteelcylinderList() {
+      getSteelcylinderList().then(response => {
+        this.steelcylinderList = response.data;
+      });
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField('deptId');
+    },
+    /** 查询钢瓶年检列表 */
+    getList() {
+      this.loading = true;
+      listInspect(this.queryParams).then(response => {
+        this.inspectList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        steelcylinderId: null,
+        steelcylinderName: null,
+        inspectTime: null,
+        state: null,
+        address: null,
+        nextInspectTime: null
+      };
+      this.fileNames = []
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.deptName = 0;
+      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
+      getInspect(id).then(response => {
+        if (response.data.fileUrl !== ""&& response.data.fileUrl!=null) {
+          const list = response.data.fileUrl.split(',');
+          for (var a = 0; a < list.length; a++) {
+            let listurl = list[a].split('+')
+            this.fileNames.push(listurl[1])
+          }
+        }
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改钢瓶年检";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.steelcylinderName = this.steelcylinderList.filter((item) => {
+            return this.form.steelcylinderId == item.id;
+          })[0].name;
+          this.form.fileName = this.fileNames.toString()
+          //this.form.fileUrlList = Array.from(document.querySelectorAll('.el-upload-list__item')).map(item => item.querySelector('a').getAttribute('href'))
+          //this.form.fileNameList = this.fileNames;
+          if (this.form.id != null) {
+            updateInspect(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInspect(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delInspect(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('center-data/inspect/export', {
+        ...this.queryParams
+      }, `钢瓶年检_${format_date(new Date())}.xlsx`)
+    },
+    // 点击按钮修改是否只查询本级部门用户
+    changeQueryType() {
+      this.queryParams.deptName = this.queryParams.deptName === 0 ? 1 : 0;
+    }
+  }
+};
+</script>

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

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

+ 501 - 0
data-ui/src/views/data/housingconstruction/personnel/index.vue

@@ -0,0 +1,501 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" @submit.native.prevent>
+      <el-form-item label="员工姓名" prop="staffName">
+        <el-input
+          v-model="queryParams.staffName"
+          placeholder="请输入员工姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="身份证" prop="card">
+        <el-input
+          v-model="queryParams.card"
+          placeholder="请输入身份证"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item prop="deptId">
+        <template slot="label">
+          <span @click="changeQueryType" v-if="queryParams.deptName === 0">本级及下级</span>
+          <span @click="changeQueryType" v-if="queryParams.deptName === 1">只查询本级</span>
+        </template>
+        <treeselect v-model="queryParams.deptId" :options="deptOptions" multiple:false :show-count="true"
+                    placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"
+                    style="width: 240px"/>
+        <el-input v-model="queryParams.deptName" v-if="false"/>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['data:personnel:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['data:personnel:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['data:personnel:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['data:personnel:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="personnelList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="所属站点" align="center" prop="site"/>
+      <el-table-column label="员工姓名" align="center" prop="staffName"/>
+      <el-table-column label="员工代码" align="center" prop="staffCode"/>
+      <el-table-column label="电话号" align="center" prop="phone"/>
+      <el-table-column label="身份证" align="center" prop="card"/>
+      <el-table-column label="岗位" align="center" prop="post">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.personnel_post" :value="scope.row.post"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="登记时间" align="center" prop="registerTime"/>
+      <el-table-column label="行政区域" align="center" prop="area"/>
+      <el-table-column label="所属部门" align="center" prop="deptName"/>
+      <el-table-column label="创建人" align="center" prop="createName"/>
+      <el-table-column label="创建时间" align="center" prop="createTime"/>
+      <el-table-column label="修改人" align="center" prop="updateName"/>
+      <el-table-column label="修改时间" align="center" prop="updateTime"/>
+      <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="['data:personnel:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['data:personnel:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改配送人员对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="124px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="企业" prop="enterpriseId">
+              <el-select v-model="form.enterpriseId" filterable placeholder="请选择企业名称">
+                <el-option
+                  v-for="dict in enterprise"
+                  :key="dict.id"
+                  :label="dict.enterpriseName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="员工姓名" prop="staffName">
+              <el-input v-model="form.staffName" placeholder="请输入员工姓名" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="员工代码" prop="staffCode">
+              <el-input v-model="form.staffCode" placeholder="请输入员工代码" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属站点" prop="site">
+              <el-input v-model="form.site" placeholder="请输入所属站点" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="电话号" prop="phone">
+              <el-input v-model="form.phone" placeholder="请输入电话号" maxlength="13"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="身份证" prop="card">
+              <el-input v-model="form.card" placeholder="请输入身份证" maxlength="18"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="岗位" prop="post">
+              <el-select v-model="form.post" placeholder="请选择岗位" filterable>
+                <el-option
+                  v-for="dict in dict.type.personnel_post"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="登记时间" prop="registerTime">
+              <el-date-picker clearable size="small"
+                              v-model="form.registerTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择登记时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="行政区域" prop="area">
+              <el-input v-model="form.area" placeholder="请输入行政区域" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          :noResultsText="'空'" :noOptionsText="'空'"
+                          placeholder="请选择部门" @select="hx"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="劳动合同" prop="laborContract">
+              <ImageUpload ref="ImageUpload" :limit="1" :file-type="['png','jpg','jpeg']"
+                           :value="form.laborContract"
+                           @input="getLaborContract"></ImageUpload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="社会保险证明" prop="insurance">
+              <ImageUpload ref="ImageUpload" :limit="1" :file-type="['png','jpg','jpeg']"
+                           :value="form.insurance"
+                           @input="getInsurance"></ImageUpload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="培训考核合格证明" prop="assessment">
+              <ImageUpload ref="ImageUpload" :limit="1" :file-type="['png','jpg','jpeg']"
+                           :value="form.assessment"
+                           @input="getAssessment"></ImageUpload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="送气服务证" prop="airCard">
+              <ImageUpload ref="ImageUpload" :limit="1" :file-type="['png','jpg','jpeg']"
+                           :value="form.airCard"
+                           @input="getAirCard"></ImageUpload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {listPersonnel, getPersonnel, delPersonnel, addPersonnel, updatePersonnel} from "@/api/data/housingconstruction/personnel";
+import {getEnterpriseList} from "@/api/data/housingconstruction/steelcylinder";
+import {treeselect} from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import {format_date} from "@/views/data/common/dateExport";
+import {validPhoneMobile,englishAndshibaNumValid} from "@/api/rules/rules";
+
+export default {
+  name: "Personnel",
+  components: {Treeselect},
+  dicts: ['personnel_post'],
+  data() {
+    return {
+      deptOptions: undefined,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 配送人员表格数据
+      personnelList: [],
+      //企业列表
+      enterprise: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        createName: null,
+        updateName: null,
+        deptId: null,
+        deptName: 0,
+        enterpriseId: null,
+        enterpriseName: null,
+        site: null,
+        staffCode: null,
+        staffName: null,
+        phone: null,
+        card: null,
+        post: null,
+        registerTime: null,
+        area: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        enterpriseId: [
+          {required: true, message: "企业不能为空", trigger: "blur"},
+        ],
+        staffName: [
+          {required: true, message: "员工姓名不能为空", trigger: "blur"},
+        ],
+        phone: [
+          {required: true, message: "电话号不能为空", trigger: "blur"},
+          {validator: validPhoneMobile, trigger: 'blur'}
+        ],
+        card: [
+          {validator: englishAndshibaNumValid, trigger: 'blur'}
+        ],
+        post: [
+          {required: true, message: "岗位不能为空", trigger: "blur"},
+        ],
+        registerTime: [
+          {required: true, message: "登记时间不能为空", trigger: "blur"},
+        ],
+        deptId: [
+          {required: true, message: "所属部门不能为空", trigger: "change"},
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getEnterpriseList();
+  },
+  methods: {
+    //获取企业列表
+    getEnterpriseList() {
+      getEnterpriseList().then(response => {
+        this.enterprise = response.data;
+      });
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField('deptId');
+    },
+    getLaborContract(url) {
+      this.form.laborContract = url
+    },
+    getInsurance(url) {
+      this.form.insurance = url
+    },
+    getAssessment(url) {
+      this.form.assessment = url
+    },
+    getAirCard(url) {
+      this.form.airCard = url
+    },
+    /** 查询配送人员列表 */
+    getList() {
+      this.loading = true;
+      listPersonnel(this.queryParams).then(response => {
+        this.personnelList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        site: null,
+        staffCode: null,
+        staffName: null,
+        phone: null,
+        card: null,
+        post: null,
+        registerTime: null,
+        area: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.deptName = 0;
+      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
+      getPersonnel(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改配送人员";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.enterpriseName = this.enterprise.filter((item) => {
+            return this.form.enterpriseId == item.id;
+          })[0].enterpriseName;
+          if (this.form.id != null) {
+            updatePersonnel(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addPersonnel(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delPersonnel(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('center-data/personnel/export', {
+        ...this.queryParams
+      }, `配送人员_${format_date(new Date())}.xlsx`)
+    },
+    // 点击按钮修改是否只查询本级部门用户
+    changeQueryType() {
+      this.queryParams.deptName = this.queryParams.deptName === 0 ? 1 : 0;
+    }
+  }
+};
+</script>

+ 518 - 0
data-ui/src/views/data/housingconstruction/practitioner/index.vue

@@ -0,0 +1,518 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"
+             @submit.native.prevent>
+      <el-form-item label="企业名称" prop="enterpriseName">
+        <el-input
+          v-model="queryParams.enterpriseName"
+          placeholder="请输入企业名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="员工姓名" prop="staffName">
+        <el-input
+          v-model="queryParams.staffName"
+          placeholder="请输入员工姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="电话号" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入电话号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item prop="deptId">
+        <template slot="label">
+          <span @click="changeQueryType" v-if="queryParams.deptName === 0">本级及下级</span>
+          <span @click="changeQueryType" v-if="queryParams.deptName === 1">只查询本级</span>
+        </template>
+        <treeselect v-model="queryParams.deptId" :options="deptOptions" multiple:false :show-count="true"
+                    placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'" style="width: 240px"/>
+        <el-input v-model="queryParams.deptName" v-if="false"/>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['data:practitioner:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['data:practitioner:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['data:practitioner:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['data:practitioner:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="practitionerList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="所属站点" align="center" prop="site"/>
+      <el-table-column label="员工代码" align="center" prop="staffCode"/>
+      <el-table-column label="员工姓名" align="center" prop="staffName"/>
+      <el-table-column label="性别" align="center" prop="sex">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="电话号" align="center" prop="phone"/>
+      <el-table-column label="岗位" align="center" prop="post">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.practitioner_post" :value="scope.row.post"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="登记时间" align="center" prop="registerTime"/>
+      <el-table-column label="年检时间" align="center" prop="inspectTime"/>
+      <el-table-column label="行政区域" align="center" prop="area"/>
+      <el-table-column label="所属部门" align="center" prop="deptName"/>
+      <el-table-column label="创建人" align="center" prop="createName"/>
+      <el-table-column label="创建时间" align="center" prop="createTime"/>
+      <el-table-column label="修改人" align="center" prop="updateName"/>
+      <el-table-column label="修改时间" align="center" prop="updateTime"/>
+      <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="['data:practitioner:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['data:practitioner: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="850px" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="企业" prop="enterpriseId">
+              <el-select v-model="form.enterpriseId" filterable placeholder="请选择企业名称">
+                <el-option
+                  v-for="dict in enterprise"
+                  :key="dict.id"
+                  :label="dict.enterpriseName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属站点" prop="site">
+              <el-input v-model="form.site" placeholder="请输入所属站点" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="员工姓名" prop="staffName">
+              <el-input v-model="form.staffName" placeholder="请输入员工姓名" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="性别" prop="sex">
+              <el-select v-model="form.sex" placeholder="请选择性别" filterable clearable>
+                <el-option
+                  v-for="dict in dict.type.sys_user_sex"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="员工代码" prop="staffCode">
+              <el-input v-model="form.staffCode" placeholder="请输入员工代码" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="电话号" prop="phone">
+              <el-input v-model="form.phone" placeholder="请输入电话号" maxlength="13"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="岗位" prop="post">
+              <el-select v-model="form.post" placeholder="请选择岗位" filterable>
+                <el-option
+                  v-for="dict in dict.type.practitioner_post"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="登记时间" prop="registerTime">
+              <el-date-picker clearable size="small"
+                              v-model="form.registerTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择登记时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="年检时间" prop="inspectTime">
+              <el-date-picker clearable size="small"
+                              v-model="form.inspectTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择年检时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="行政区域" prop="area">
+              <el-input v-model="form.area" placeholder="请输入行政区域" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          :noResultsText="'空'" :noOptionsText="'空'"
+                          placeholder="请选择部门" @select="hx"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="照片" prop="photo">
+              <ImageUpload ref="ImageUpload" :limit="1" :file-type="['png','jpg','jpeg']"
+                           :value="form.photo"
+                           @input="getPhoto"></ImageUpload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="上岗证" prop="workPhoto">
+              <ImageUpload ref="ImageUpload" :limit="1" :file-type="['png','jpg','jpeg']"
+                           :value="form.workPhoto"
+                           @input="getWorkPhoto"></ImageUpload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addPractitioner,
+  delPractitioner,
+  getPractitioner,
+  listPractitioner,
+  updatePractitioner
+} from "@/api/data/housingconstruction/practitioner";
+import {getEnterpriseList} from "@/api/data/housingconstruction/steelcylinder";
+import {format_date} from "@/views/data/common/dateExport";
+import {treeselect} from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import {validPhoneMobile} from "@/api/rules/rules";
+
+
+export default {
+  name: "Practitioner",
+  components: {Treeselect},
+  dicts: ['practitioner_post', 'sys_user_sex'],
+  data() {
+    return {
+      deptOptions: undefined,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 从业人员表格数据
+      practitionerList: [],
+      //企业列表
+      enterprise: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        createName: null,
+        updateName: null,
+        deptId: null,
+        deptName: 0,
+        enterpriseId: null,
+        enterpriseName: null,
+        site: null,
+        staffCode: null,
+        staffName: null,
+        phone: null,
+        post: null,
+        sex: null,
+        registerTime: null,
+        inspectTime: null,
+        area: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        enterpriseId: [
+          {required: true, message: "企业不能为空", trigger: "blur"},
+        ],
+        staffName: [
+          {required: true, message: "员工姓名不能为空", trigger: "blur"},
+        ],
+        phone: [
+          {required: true, message: "电话号不能为空", trigger: "blur"},
+          {validator: validPhoneMobile, trigger: 'blur'}
+        ],
+        post: [
+          {required: true, message: "岗位不能为空", trigger: "blur"},
+        ],
+        registerTime: [
+          {required: true, message: "登记不能为空", trigger: "blur"},
+        ],
+        deptId: [
+          {required: true, message: "所属部门不能为空", trigger: "change"},
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getEnterpriseList();
+  },
+  methods: {
+    //获取企业列表
+    getEnterpriseList() {
+      getEnterpriseList().then(response => {
+        this.enterprise = response.data;
+      });
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField('deptId');
+    },
+    /** 查询从业人员列表 */
+    getList() {
+      this.loading = true;
+      listPractitioner(this.queryParams).then(response => {
+        this.practitionerList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getPhoto(url) {
+      this.form.photo = url
+    },
+    getWorkPhoto(url) {
+      this.form.workPhoto = url
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        site: null,
+        staffCode: null,
+        staffName: null,
+        phone: null,
+        post: null,
+        sex: null,
+        registerTime: null,
+        inspectTime: null,
+        area: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.deptName = 0;
+      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
+      getPractitioner(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改从业人员";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.enterpriseName = this.enterprise.filter((item) => {
+            return this.form.enterpriseId == item.id;
+          })[0].enterpriseName;
+          if (this.form.id != null) {
+            updatePractitioner(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addPractitioner(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delPractitioner(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('center-data/practitioner/export', {
+        ...this.queryParams
+      }, `从业人员_${format_date(new Date())}.xlsx`)
+    },
+    // 点击按钮修改是否只查询本级部门用户
+    changeQueryType() {
+      this.queryParams.deptName = this.queryParams.deptName === 0 ? 1 : 0;
+    }
+  }
+};
+</script>

+ 529 - 0
data-ui/src/views/data/housingconstruction/realnameuser/index.vue

@@ -0,0 +1,529 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="开户企业" prop="deptName">
+        <el-input
+          v-model="queryParams.deptName"
+          placeholder="请输入开户企业"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商户姓名" prop="userName">
+        <el-input
+          v-model="queryParams.userName"
+          placeholder="请输入商户姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户类别" prop="enterpriseUserType">
+        <el-select v-model="queryParams.enterpriseUserType" placeholder="请选择用户类别" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.enterprise_user_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['housingconstruction:realnameuser:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['housingconstruction:realnameuser:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['housingconstruction:realnameuser:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['housingconstruction:realnameuser:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="realnameuserList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="开户企业" align="center">
+        <template slot-scope="scope">
+          {{ getEnterpriseName(scope.row.enterpriseId) }}
+        </template>
+      </el-table-column>
+      <el-table-column label="商户姓名" align="center" prop="userName"/>
+      <el-table-column label="用户类别" align="center" prop="enterpriseUserType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.enterprise_user_type" :value="scope.row.enterpriseUserType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="用户代码" align="center" prop="userCode"/>
+      <el-table-column label="用户姓名" align="center" prop="merchantName"/>
+      <el-table-column label="联系电话" align="center" prop="contactNumber"/>
+      <el-table-column label="用气地址" align="center" prop="gasAddress"/>
+      <el-table-column label="证照代码" align="center" prop="licenseCode"/>
+      <el-table-column label="开户时间" align="center" prop="accountOpenTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.accountOpenTime, '{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)"
+            v-hasPermi="['housingconstruction:realnameuser:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['housingconstruction:realnameuser: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="1200px" append-to-body class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="开户企业" prop="enterpriseId">
+              <el-select v-model="form.enterpriseId" placeholder="请选择开户企业">
+                <el-option
+                  v-for="data in enterpriseList"
+                  :key="data.id"
+                  :label="data.enterpriseName"
+                  :value="data.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="用户类别" prop="enterpriseUserType">
+              <el-select v-model="form.enterpriseUserType" placeholder="请选择用户类别">
+                <el-option
+                  v-for="dict in dict.type.enterprise_user_type"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="商户名称" prop="userName">
+              <el-input v-model="form.userName" placeholder="请输入商户名称"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="用户姓名" prop="merchantName">
+              <el-input v-model="form.merchantName" placeholder="请输入用户姓名"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="用户代码" prop="userCode">
+              <el-input v-model="form.userCode" placeholder="请输入用户代码"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="证照代码" prop="licenseCode">
+              <el-input v-model="form.licenseCode" placeholder="请输入证照代码"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="开户时间" prop="accountOpenTime">
+              <el-date-picker clearable size="small"
+                              v-model="form.accountOpenTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择开户时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="联系电话" prop="contactNumber">
+              <el-input v-model="form.contactNumber" placeholder="请输入联系电话"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="经度" prop="longitude" @dblclick.native="showMap">
+              <el-input v-model="form.longitude" placeholder="鼠标双击选择经纬度"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="纬度" prop="latitude" @dblclick.native="showMap">
+              <el-input v-model="form.latitude" placeholder="鼠标双击选择经纬度"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="用气地址" prop="gasAddress">
+              <el-input v-model="form.gasAddress" placeholder="请输入用气地址(城区、街道、社区、小区或道路、门牌号)"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="titleLongitude" :visible.sync="showLongitude" append-to-body>
+      <el-input v-show="false" v-model="form.longitude" disabled></el-input>
+      <el-input v-show="false" v-model="form.latitude" disabled></el-input>
+      <supermap style="width: 100%;height: 500px;" :mapDiv="'landingMap'" :mapSite="{doubleClickZoom:false}"
+                :codes="['9fa5']" :isSideBySide="false" :showLatLng="showLatLng"></supermap>
+      <el-button type="primary" @click="showLongitude=false">确定</el-button>
+    </el-dialog>
+    <ISuperMap ref="ISuperMap" v-if="ISuperMapvisible" @send="send"/>
+  </div>
+</template>
+
+<script>
+import {
+  addRealnameuser,
+  delRealnameuser,
+  getRealnameuser,
+  listRealnameuser,
+  updateRealnameuser
+} from "@/api/data/housingconstruction/realnameuser";
+import {getListAll} from "@/api/data/housingconstruction/enterprise"
+import deptselector from "@/views/components/deptselector.vue";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import ISuperMap from "@/views/data/common/ISuperMap.vue";
+import supermap from "@/views/components/supermap.vue";
+import {treeselect} from "@/api/system/dept";
+import {checkLat, checkLon, validPhoneMobile} from "@/api/rules/rules";
+import {format_date} from "@/views/data/common/dateExport";
+
+export default {
+  name: "Realnameuser",
+  components: {deptselector, Treeselect, supermap, ISuperMap},
+  dicts: ['enterprise_user_type'],
+  data() {
+    return {
+      titleLongitude: '',
+      showLongitude: false,
+      ISuperMapvisible: false,
+      // 遮罩层
+      loading: true,
+      // 部门树选项
+      deptOptions: [],
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 住建-实名用户表格数据
+      realnameuserList: [],
+      //企业信息列表
+      enterpriseList: [],
+      sign: 1,
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        enterpriseId: null,
+        enterpriseUserType: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        enterpriseId: [
+          {required: true, message: "开户企业不能为空", trigger: "blur"}
+        ],
+        enterpriseUserType: [
+          {required: true, message: "用户类别不能为空", trigger: "blur"}
+        ],
+        userCode: [
+          {required: true, message: "用户代码不能为空", trigger: "blur"}
+        ],
+        userName: [
+          {required: true, message: "商户姓名不能为空", trigger: "blur"}
+        ],
+        gasAddress: [
+          {required: true, message: "用气地址不能为空", trigger: "blur"}
+        ],
+        licenseCode: [
+          {required: true, message: "证件代码不能为空", trigger: "blur"}
+        ],
+        contactNumber: [
+          {validator: validPhoneMobile, trigger: 'blur'}
+        ],
+        accountOpenTime: [
+          {required: true, message: "开户时间不能为空", trigger: "blur"}
+        ],
+        merchantName: [
+          {required: true, message: "用户名称不能为空", trigger: "blur"}
+        ],
+        licensePeriodStart: [
+          {required: true, message: "许可期限开始时间不能为空", trigger: "blur"}
+        ],
+        licensePeriodEnd: [
+          {required: true, message: "许可期限结束时间不能为空", trigger: "blur"}
+        ],
+        issuingAuthority: [
+          {required: true, message: "发证机关不能为空", trigger: "blur"}
+        ],
+        longitude: [
+          {required: true, message: '经度不能为空', trigger: ['change', 'blur']},
+          {validator: checkLon, trigger: 'blur'}
+        ],
+        latitude: [
+          {required: true, message: '纬度不能为空', trigger: ['change', 'blur']},
+          {validator: checkLat, trigger: 'blur'}
+        ],
+        deptId:[
+          {required: true, message: "所属部门不能为空", trigger: "blur"}
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getEnterpriseList();
+  },
+  methods: {
+    getEnterpriseName(id) {
+      const enterprise = this.enterpriseList.find(e => e.id === id);
+      return enterprise ? enterprise.enterpriseName : '未知企业';
+    },
+    getEnterpriseList(){
+      getListAll().then(res=>{
+        this.enterpriseList = res.data
+      })
+    },
+    showLatLng: function (lat, lng) {
+      this.form.latitude = lat
+      this.form.longitude = lng
+    },
+    send(val) {
+      if (val === true) {
+        this.ISuperMapvisible = false;
+        return;
+      }
+      if (this.sign === 1) {
+        this.form.longitude = val.longitude;
+        this.form.latitude = val.latitude;
+      }
+      if (this.sign === 2 || this.sign === 3) this.form.longitude = val.xiantude;//this.form.longitude 换成对应的线或区域的字段
+      this.ISuperMapvisible = false
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField("deptId")
+    },
+    showMap() {
+      this.ISuperMapvisible = true;
+      this.$nextTick(() => {
+        this.$refs.ISuperMap.init(this.sign, {
+          id: this.form.id,
+          longitude: this.form.longitude,
+          latitude: this.form.latitude,
+          xiantude: this.form.longitude//this.form.longitude换成每个页面对应线或者面对应的字段
+        })
+      })
+    },
+    /** 查询住建-实名用户列表 */
+    getList() {
+      this.loading = true;
+      listRealnameuser(this.queryParams).then(response => {
+        this.realnameuserList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        enterpriseId: null,
+        enterpriseUserType: null,
+        userCode: null,
+        userName: null,
+        gasAddress: null,
+        licenseCode: null,
+        merchantName: null,
+        contactNumber: null,
+        accountOpenTime: null,
+        longitude: null,
+        latitude: null,
+        createTime: null,
+        createBy: null,
+        createName: null,
+        updateTime: null,
+        updateBy: null,
+        updateName: null,
+        deptId: null,
+        deptName: 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
+      getRealnameuser(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) {
+            updateRealnameuser(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRealnameuser(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delRealnameuser(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('sooka-sponest-center-data/realnameuser/export', {
+        ...this.queryParams
+      }, `实名用户_${format_date(new Date())}.xlsx`)
+    }
+  }
+};
+</script>

+ 312 - 0
data-ui/src/views/data/housingconstruction/safetyinspectionitem/index.vue

@@ -0,0 +1,312 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="检查类型" prop="enterpriseInspectionType">
+        <el-select v-model="queryParams.enterpriseInspectionType" placeholder="请选择检查类型" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.enterprise_inspection_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['housingconstruction:safetyinspectionitem:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['housingconstruction:safetyinspectionitem:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['housingconstruction:safetyinspectionitem:remove']"
+        >删除
+        </el-button>
+      </el-col>
+<!--      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['housingconstruction:safetyinspectionitem:export']"
+        >导出
+        </el-button>
+      </el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="safetyinspectionitemList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="检查类型" align="center" prop="enterpriseInspectionType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.enterprise_inspection_type" :value="scope.row.enterpriseInspectionType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="检查名称" align="center" prop="inspectionName"/>
+      <el-table-column label="排序" align="center" prop="inspectionSort"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['housingconstruction:safetyinspectionitem:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['housingconstruction:safetyinspectionitem:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改住建-安全检查明细对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="检查类型" prop="enterpriseInspectionType">
+          <el-select v-model="form.enterpriseInspectionType" placeholder="请选择检查类型">
+            <el-option
+              v-for="dict in dict.type.enterprise_inspection_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="检查名称" prop="inspectionName">
+          <el-input v-model="form.inspectionName" placeholder="请输入检查名称"/>
+        </el-form-item>
+        <el-form-item label="排序" prop="inspectionSort">
+          <el-input v-model="form.inspectionSort" placeholder="请输入排序"/>
+        </el-form-item>
+        <el-form-item label="所属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                      placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"/>
+        </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 {
+  addSafetyinspectionitem,
+  delSafetyinspectionitem,
+  getSafetyinspectionitem,
+  listSafetyinspectionitem,
+  updateSafetyinspectionitem
+} from "@/api/data/housingconstruction/safetyinspectionitem";
+import deptselector from "@/views/components/deptselector.vue";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {treeselect} from "@/api/system/dept";
+
+export default {
+  name: "Safetyinspectionitem",
+  components: {deptselector, Treeselect},
+  dicts: ['enterprise_inspection_type'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 部门树选项
+      deptOptions: [],
+      // 总条数
+      total: 0,
+      // 住建-安全检查明细表格数据
+      safetyinspectionitemList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        enterpriseInspectionType: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+  },
+  methods: {
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField("deptId")
+    },
+    /** 查询住建-安全检查明细列表 */
+    getList() {
+      this.loading = true;
+      listSafetyinspectionitem(this.queryParams).then(response => {
+        this.safetyinspectionitemList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        enterpriseInspectionType: null,
+        inspectionName: null,
+        inspectionSort: null,
+        createTime: null,
+        createBy: null,
+        createName: null,
+        updateTime: null,
+        updateBy: null,
+        updateName: null,
+        deptId: null,
+        deptName: 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
+      getSafetyinspectionitem(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) {
+            updateSafetyinspectionitem(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSafetyinspectionitem(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delSafetyinspectionitem(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('center-data/safetyinspectionitem/export', {
+        ...this.queryParams
+      }, `安全检查项_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 990 - 0
data-ui/src/views/data/housingconstruction/steelcylinder/index.vue

@@ -0,0 +1,990 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"
+             @submit.native.prevent>
+      <el-form-item label="钢瓶名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入钢瓶名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="气瓶状态" prop="state">
+        <el-select v-model="queryParams.state" clearable placeholder="请选择气瓶状态" filterable>
+          <el-option
+            v-for="dict in dict.type.steelcylinder_state"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="deptId">
+        <template slot="label">
+          <span @click="changeQueryType" v-if="queryParams.deptName === 0">本级及下级</span>
+          <span @click="changeQueryType" v-if="queryParams.deptName === 1">只查询本级</span>
+        </template>
+        <treeselect v-model="queryParams.deptId" :options="deptOptions" multiple:false :show-count="true"
+                    placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"
+                    style="width: 240px"/>
+        <el-input v-model="queryParams.deptName" v-if="false"/>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['data:steelcylinder:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['data:steelcylinder:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['data:steelcylinder:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['data:steelcylinder:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="steelcylinderList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="钢瓶名称" align="center" prop="name"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="规格" align="center" prop="standards">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.steelcylinder_type" :value="scope.row.standards"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="气瓶状态" align="center" prop="state">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.steelcylinder_state" :value="scope.row.state"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="钢瓶阈值(天)" align="center" prop="threshold"/>
+      <el-table-column label="所属部门" align="center" prop="deptName"/>
+      <el-table-column label="创建人" align="center" prop="createName"/>
+      <el-table-column label="创建时间" align="center" prop="createTime"/>
+      <el-table-column label="修改人" align="center" prop="updateName"/>
+      <el-table-column label="修改时间" align="center" prop="updateTime"/>
+      <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="handleOperate(scope.row)"
+            v-hasPermi="['data:steelcylinder:operate']"
+          >运营
+          </el-button>
+          <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
+                       v-hasPermi="['system:role:edit']">
+            <span class="el-dropdown-link">
+              <i class="el-icon-d-arrow-right el-icon--right"></i>更多
+            </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item command="edit" v-hasPermi="['data:steelcylinder:edit']">修改
+              </el-dropdown-item>
+              <el-dropdown-item command="remove" v-hasPermi="['data:steelcylinder:remove']">删除
+              </el-dropdown-item>
+              <el-dropdown-item>
+                <router-link :to="'/center-data/data/housingconstruction/steelcylinderLog/index/' + scope.row.id">
+                  运营数据
+                </router-link>
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改钢瓶基础数据对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="钢瓶名称" prop="name">
+              <el-input v-model="form.name" placeholder="请输入钢瓶名称" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="企业" prop="enterpriseId">
+              <el-select v-model="form.enterpriseId" filterable placeholder="请选择企业名称">
+                <el-option
+                  v-for="dict in enterprise"
+                  :key="dict.id"
+                  :label="dict.enterpriseName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="生产厂家" prop="manufacturer">
+              <el-input v-model="form.manufacturer" placeholder="请输入生产厂家" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="钢瓶权属" prop="ownership">
+              <el-input v-model="form.ownership" placeholder="请输入钢瓶权属" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="出厂时间" prop="leaveTime">
+              <el-date-picker clearable
+                              v-model="form.leaveTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择出厂时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="制造时间" prop="makeTime">
+              <el-date-picker clearable size="small"
+                              v-model="form.makeTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择制造时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="出厂编号" prop="leaveNumber">
+              <el-input v-model="form.leaveNumber" placeholder="请输入出厂编号" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="规格" prop="standards">
+              <el-select v-model="form.standards" placeholder="请选择规格" filterable>
+                <el-option
+                  v-for="dict in dict.type.steelcylinder_type"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="型号" prop="modelNumber">
+              <el-input v-model="form.modelNumber" placeholder="请输入型号" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="钢瓶编号" prop="steelcylinderNumber">
+              <el-input v-model="form.steelcylinderNumber" placeholder="请输入钢瓶编号" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="钢瓶代码" prop="steelcylinderCode">
+              <el-input v-model="form.steelcylinderCode" placeholder="请输入钢瓶代码" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="当前库位" prop="currentPosition">
+              <el-input v-model="form.currentPosition" placeholder="请输入当前库位" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="登记时间" prop="registerTime">
+              <el-date-picker clearable
+                              v-model="form.registerTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择登记时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="气瓶状态" prop="state">
+              <el-select v-model="form.state" placeholder="请选择气瓶状态" filterable :disabled=disabled>
+                <el-option
+                  v-for="dict in dict.type.steelcylinder_state"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="钢瓶阈值" prop="threshold">
+              <el-input v-model="form.threshold" placeholder="请输入钢瓶阈值(单位: 天)" maxlength="20"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          :noResultsText="'空'" :noOptionsText="'空'"
+                          placeholder="请选择部门" @select="hx"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!--运营-->
+    <el-dialog :title="title" :visible.sync="open1" :width="width" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" :label-width="labelWidth">
+        <template v-if="title == '检查'">
+          <el-row :gutter="20">
+            <el-form-item label="检查员" prop="inspectorId">
+              <el-select v-model="form.inspectorId" filterable placeholder="请选择检查员">
+                <el-option
+                  v-for="dict in practitioner"
+                  :key="dict.id"
+                  :label="dict.staffName"
+                  :value="dict.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="检查时间" prop="inspectorTime">
+              <el-date-picker clearable
+                              v-model="form.inspectorTime"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择检查时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="图片" prop="picture">
+              <ImageUpload ref="ImageUpload" :limit="2" :fileType="['png', 'jpg', 'jpeg']"
+                           :value="form.picture"
+                           @input="getPicture"></ImageUpload>
+            </el-form-item>
+          </el-row>
+        </template>
+        <template v-if="title == '充装'">
+          <el-form-item label="充装介质" prop="fillingMedium">
+            <el-input v-model="form.fillingMedium" placeholder="请输入充装介质" maxlength="20"/>
+          </el-form-item>
+          <el-form-item label="充装时间" prop="fillingTime">
+            <el-date-picker clearable
+                            v-model="form.fillingTime"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择充装时间">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="充装员" prop="operatorId">
+            <el-select v-model="form.operatorId" filterable placeholder="请选择充装员">
+              <el-option
+                v-for="dict in practitioner"
+                :key="dict.id"
+                :label="dict.staffName"
+                :value="dict.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+        <template v-if="title == '运输'">
+          <el-form-item label="车辆" prop="carId">
+            <el-select v-model="form.carId" filterable placeholder="请选择车辆">
+              <el-option
+                v-for="dict in carList"
+                :key="dict.id"
+                :label="dict.carNumber"
+                :value="dict.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="配送时间" prop="deliveryTime">
+            <el-date-picker clearable
+                            v-model="form.deliveryTime"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择配送时间">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="配送员" prop="deliveryId">
+            <el-select v-model="form.deliveryId" filterable placeholder="请选择配送员">
+              <el-option
+                v-for="dict in psyList"
+                :key="dict.id"
+                :label="dict.staffName"
+                :value="dict.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+        <template v-if="title == '入户'">
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="用户" prop="joinHouseId">
+                <el-select v-model="form.joinHouseId" filterable placeholder="请选择用户">
+                  <el-option
+                    v-for="dict in userList"
+                    :key="dict.id"
+                    :label="dict.userName"
+                    :value="dict.id"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="签收时间" prop="signTime">
+                <el-date-picker clearable
+                                v-model="form.signTime"
+                                type="date"
+                                value-format="yyyy-MM-dd"
+                                placeholder="选择签收时间">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="1.安检人员" prop="workCard">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.workCard"
+                               @input="getWorkCard"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="2.是否发现隐患" prop="pitfall">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.pitfall"
+                               @input="getPitfall"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="3.隐患或环境详情" prop="pitfallDetails">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.pitfallDetails"
+                               @input="getPitfallDetails"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="4.信息检查" prop="information">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.information"
+                               @input="getInformation"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="5.钢瓶检查" prop="steelCylinder">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.steelCylinder"
+                               @input="getSteelCylinder"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="6.连接管检查" prop="tailpiece">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.tailpiece"
+                               @input="getTailpiece"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="7.器具检查" prop="instrument">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.instrument"
+                               @input="getInstrument"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="8.阀门检査" prop="valve">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.valve"
+                               @input="getValve"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="9.可燃气体报警装置检査" prop="warningDevice">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.warningDevice"
+                               @input="getWarningDevice"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+          <el-row :gutter="20">
+            <el-form-item label="10.环境检查" prop="environment">
+              <DataImageUpload ref="ImageUpload" :fileType="['png', 'jpg', 'jpeg']" :value="form.environment"
+                               @input="getEnvironment"></DataImageUpload>
+            </el-form-item>
+          </el-row>
+        </template>
+        <template v-if="title == '回收'">
+          <el-form-item label="入户用户" prop="joinHouseName">
+            <el-input v-model="form.joinHouseName" placeholder="请输入回收所在用户" maxlength="20" disabled/>
+          </el-form-item>
+          <el-form-item label="回收所在用户" prop="recyclingName">
+            <el-input v-model="form.recyclingName" placeholder="请输入回收所在用户" maxlength="20"/>
+          </el-form-item>
+          <el-form-item label="回收时间" prop="recyclingTime">
+            <el-date-picker clearable
+                            v-model="form.recyclingTime"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择回收时间">
+            </el-date-picker>
+          </el-form-item>
+        </template>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm1">确 定</el-button>
+        <el-button @click="cancel1">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listSteelcylinder,
+  getSteelcylinder,
+  delSteelcylinder,
+  addSteelcylinder,
+  updateSteelcylinder,
+  getEnterpriseList,
+  addLog,
+  getUserList, getSteelcylinderLog
+} from "@/api/data/housingconstruction/steelcylinder";
+import {treeselect} from "@/api/system/dept";
+import Treeselect from '@riophae/vue-treeselect'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import {checkPositiveInteger} from "@/api/rules/rules";
+import {format_date} from "@/views/data/common/dateExport";
+import {listPersonnel, listPractitioner, getCarList} from "@/api/data/housingconstruction/car";
+import DataImageUpload from "@/components/ImageUpload/dataUpload.vue";
+
+
+export default {
+  name: "Steelcylinder",
+  components: {DataImageUpload, Treeselect},
+  dicts: ['steelcylinder_type', 'steelcylinder_state'],
+  data() {
+    return {
+      disabled: false,
+      deptOptions: undefined,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 钢瓶基础数据表格数据
+      steelcylinderList: [],
+      //充装员列表
+      practitioner: [],
+      //企业列表
+      enterprise: [],
+      //车辆列表
+      carList: [],
+      //配送员列表
+      psyList: [],
+      //实名用户
+      userList: [],
+      // 弹出层标题
+      title: "",
+      width: "500px",
+      labelWidth: "110px",
+      // 是否显示弹出层
+      open: false,
+      open1: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        createName: null,
+        updateName: null,
+        deptId: null,
+        deptName: 0,
+        name: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        manufacturer: null,
+        ownership: null,
+        leaveTime: null,
+        makeTime: null,
+        leaveNumber: null,
+        standards: null,
+        modelNumber: null,
+        steelcylinderNumber: null,
+        steelcylinderCode: null,
+        currentPosition: null,
+        registerTime: null,
+        state: null,
+        threshold: null,
+        joinHouseId: null,
+        joinHouseName: null,
+        recyclingName: null,
+        recyclingTime: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        name: [
+          {required: true, message: "钢瓶名称不能为空", trigger: "blur"},
+        ],
+        enterpriseId: [
+          {required: true, message: "企业不能为空", trigger: "blur"},
+        ],
+        standards: [
+          {required: true, message: "规格不能为空", trigger: "blur"},
+        ],
+        state: [
+          {required: true, message: "气瓶状态不能为空", trigger: "blur"},
+        ],
+        threshold: [
+          {validator: checkPositiveInteger, trigger: 'blur'}
+        ],
+        deptId: [
+          {required: true, message: "所属部门不能为空", trigger: "change"},
+        ],
+        joinHouseId: [
+          {required: true, message: "用户不能为空", trigger: "blur"},
+        ],
+        signTime: [
+          {required: true, message: "签收时间不能为空", trigger: "blur"},
+        ],
+        fillingMedium: [
+          {required: true, message: "充装介质不能为空", trigger: "blur"},
+        ],
+        fillingTime: [
+          {required: true, message: "充装时间不能为空", trigger: "blur"},
+        ],
+        operatorId: [
+          {required: true, message: "充装员不能为空", trigger: "blur"},
+        ],
+        carId: [
+          {required: true, message: "车辆不能为空", trigger: "blur"},
+        ],
+        deliveryTime: [
+          {required: true, message: "配送时间不能为空", trigger: "blur"},
+        ],
+        deliveryId: [
+          {required: true, message: "配送员不能为空", trigger: "blur"},
+        ],
+        recyclingName: [
+          {required: true, message: "回收所在用户不能为空", trigger: "blur"},
+        ],
+        recyclingTime: [
+          {required: true, message: "回收时间不能为空", trigger: "blur"},
+        ],
+        steelcylinderNumber: [
+          {required: true, message: "钢瓶编号不能为空", trigger: "blur"},
+        ],
+        workCard: [
+          {required: true, message: "安检人员《送气工工作证》不能为空", trigger: "blur"},
+        ],
+        pitfall: [
+          {required: true, message: "是否发现隐患不能为空", trigger: "blur"},
+        ],
+        pitfallDetails: [
+          {required: true, message: "隐患或环境详情不能为空", trigger: "blur"},
+        ],
+        information: [
+          {required: true, message: "信息检查不能为空", trigger: "blur"},
+        ],
+        steelCylinder: [
+          {required: true, message: "钢瓶检查不能为空", trigger: "blur"},
+        ],
+        tailpiece: [
+          {required: true, message: "连接管检查不能为空", trigger: "blur"},
+        ],
+        instrument: [
+          {required: true, message: "器具检查不能为空", trigger: "blur"},
+        ],
+        valve: [
+          {required: true, message: "阀门检査不能为空", trigger: "blur"},
+        ],
+        warningDevice: [
+          {required: true, message: "可燃气体报警装置检査不能为空", trigger: "blur"},
+        ],
+        environment: [
+          {required: true, message: "环境检查不能为空", trigger: "blur"},
+        ],
+        inspectorId: [
+          {required: true, message: "检查员不能为空", trigger: "blur"},
+        ],
+        inspectorTime: [
+          {required: true, message: "检查时间不能为空", trigger: "blur"},
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getEnterpriseList();
+  },
+  methods: {
+    // 更多操作触发
+    handleCommand(command, row) {
+      switch (command) {
+        case 'edit':
+          this.handleUpdate(row)
+          break
+        case 'remove':
+          this.handleDelete(row)
+          break
+        default:
+          break
+      }
+    },
+    //获取充装员列表
+    getPractitioner(id) {
+      listPractitioner({"post": "practitioner_czy", "enterpriseId": id}).then(response => {
+        this.practitioner = response.data;
+      });
+    },
+    //获取配送员列表
+    getPsyList(id) {
+      listPersonnel({"post": "personnel_psy", "enterpriseId": id}).then(response => {
+        this.psyList = response.data;
+      });
+    },
+    //获取车辆列表
+    getCarList(id) {
+      getCarList({"enterpriseId": id}).then(response => {
+        this.carList = response.data;
+      });
+    },
+    //获取实名用户列表
+    getUserList(id) {
+      getUserList({"enterpriseId": id}).then(response => {
+        this.userList = response.data;
+      });
+    },
+    //获取企业列表
+    getEnterpriseList() {
+      getEnterpriseList().then(response => {
+        this.enterprise = response.data;
+      });
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField('deptId');
+    },
+    getWorkCard(url) {
+      this.form.workCard = url
+    },
+    getPitfall(url) {
+      this.form.pitfall = url
+    },
+    getPitfallDetails(url) {
+      this.form.pitfallDetails = url
+    },
+    getInformation(url) {
+      this.form.information = url
+    },
+    getSteelCylinder(url) {
+      this.form.steelCylinder = url
+    },
+    getTailpiece(url) {
+      this.form.tailpiece = url
+    },
+    getInstrument(url) {
+      this.form.instrument = url
+    },
+    getValve(url) {
+      this.form.valve = url
+    },
+    getWarningDevice(url) {
+      this.form.warningDevice = url
+    },
+    getEnvironment(url) {
+      this.form.environment = url
+    },
+    getPicture(url) {
+      this.form.picture = url
+    },
+    /** 查询钢瓶基础数据列表 */
+    getList() {
+      this.loading = true;
+      listSteelcylinder(this.queryParams).then(response => {
+        this.steelcylinderList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.disabled = false;
+      this.reset();
+    },
+    cancel1() {
+      this.open1 = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.width = "500px"
+      this.labelWidth = "110px"
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        name: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        manufacturer: null,
+        ownership: null,
+        leaveTime: null,
+        makeTime: null,
+        leaveNumber: null,
+        standards: null,
+        modelNumber: null,
+        steelcylinderNumber: null,
+        steelcylinderCode: null,
+        currentPosition: null,
+        registerTime: null,
+        state: null,
+        threshold: null,
+        fillingMedium: null,
+        inspectorTime: null,
+        fillingTime: null,
+        operatorId: null,
+        inspectorId: null,
+        operatorName: null,
+        carId: null,
+        carNumber: null,
+        deliveryTime: null,
+        deliveryId: null,
+        deliveryName: null,
+        steelcylinderId: null,
+        steelcylinderName: null,
+        joinHouseName: null
+      };
+      this.resetForm("form");
+    },
+
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams.deptName = 0;
+      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
+      getSteelcylinder(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改钢瓶基础数据";
+        this.disabled = true;
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.enterpriseName = this.enterprise.filter((item) => {
+            return this.form.enterpriseId == item.id;
+          })[0].enterpriseName;
+          if (this.form.id != null) {
+            updateSteelcylinder(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addSteelcylinder(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除选中的数据项?').then(function () {
+        return delSteelcylinder(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('center-data/steelcylinder/export', {
+        ...this.queryParams
+      }, `钢瓶基础数据_${format_date(new Date())}.xlsx`)
+    },
+    //运营
+    handleOperate(row) {
+      this.reset();
+      this.form.steelcylinderId = row.id
+      this.form.steelcylinderName = row.name
+      this.open1 = true;
+      if (row.state == "state_1" || row.state == "state_5") {
+        this.title = "检查";
+        this.form.state = "state_6";
+        this.width = "580px"
+        this.getPractitioner(row.enterpriseId);
+      }
+      if (row.state == "state_6") {
+        this.title = "充装";
+        this.form.state = "state_2";
+        this.getPractitioner(row.enterpriseId);
+      }
+      if (row.state == "state_2") {
+        this.title = "运输";
+        this.form.state = "state_3";
+        this.getPsyList(row.enterpriseId);
+        this.getCarList(row.enterpriseId);
+      }
+      if (row.state == "state_3") {
+        this.title = "入户";
+        this.width = "1000px"
+        this.labelWidth = "175px"
+        this.form.state = "state_4";
+        this.getUserList(row.enterpriseId);
+      }
+      if (row.state == "state_4") {
+        this.title = "回收";
+        this.form.state = "state_5";
+        getSteelcylinderLog(row.id).then(response => {
+          this.form.joinHouseName = response.data.joinHouseName;
+        });
+      }
+    },
+    submitForm1() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.inspectorId != null) {
+            this.form.inspectorName = this.practitioner.filter((item) => {
+              return this.form.inspectorId == item.id;
+            })[0].staffName;
+          }
+          if (this.form.operatorId != null) {
+            this.form.operatorName = this.practitioner.filter((item) => {
+              return this.form.operatorId == item.id;
+            })[0].staffName;
+          }
+          if (this.form.carId != null) {
+            this.form.carNumber = this.carList.filter((item) => {
+              return this.form.carId == item.id;
+            })[0].carNumber;
+          }
+          if (this.form.deliveryId != null) {
+            this.form.deliveryName = this.psyList.filter((item) => {
+              return this.form.deliveryId == item.id;
+            })[0].staffName;
+          }
+          if (this.form.joinHouseId != null) {
+            this.form.joinHouseName = this.userList.filter((item) => {
+              return this.form.joinHouseId == item.id;
+            })[0].userName;
+          }
+          if (this.form.steelcylinderId != null) {
+            addLog(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open1 = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    // 点击按钮修改是否只查询本级部门用户
+    changeQueryType() {
+      this.queryParams.deptName = this.queryParams.deptName === 0 ? 1 : 0;
+    }
+  }
+};
+</script>

+ 428 - 0
data-ui/src/views/data/housingconstruction/steelcylinderLog/index.vue

@@ -0,0 +1,428 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="钢瓶名称" prop="steelcylinderName">
+        <el-input
+          v-model="queryParams.steelcylinderName"
+          placeholder="请输入钢瓶名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="企业名称" prop="enterpriseName">
+        <el-input
+          v-model="queryParams.enterpriseName"
+          placeholder="请输入企业名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="配送时间" prop="deliveryTime">
+        <el-date-picker clearable
+                        v-model="queryParams.deliveryTime"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择配送时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="签收时间" prop="signTime">
+        <el-date-picker clearable
+                        v-model="queryParams.signTime"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择签收时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="入户用户" prop="joinHouseName">
+        <el-input
+          v-model="queryParams.joinHouseName"
+          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="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['data:steelcylinder:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="listSteelcylinderLog" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="钢瓶名称" align="center" prop="steelcylinderName"/>
+      <el-table-column label="企业名称" align="center" prop="enterpriseName"/>
+      <el-table-column label="入库时间" align="center" prop="joinWarehouseTime"/>
+      <el-table-column label="检查员" align="center" prop="inspectorName"/>
+      <el-table-column label="检查时间" align="center" prop="inspectorTime"/>
+      <el-table-column label="充装介质" align="center" prop="fillingMedium"/>
+      <el-table-column label="充装时间" align="center" prop="fillingTime"/>
+      <el-table-column label="操作员名称" align="center" prop="operatorName"/>
+      <el-table-column label="车牌号" align="center" prop="carNumber"/>
+      <el-table-column label="配送时间" align="center" prop="deliveryTime"/>
+      <el-table-column label="配送员" align="center" prop="deliveryName"/>
+      <el-table-column label="签收时间" align="center" prop="signTime"/>
+      <el-table-column label="入户用户" align="center" prop="joinHouseName"/>
+      <el-table-column label="回收所在用户" align="center" prop="recyclingName"/>
+      <el-table-column label="回收时间" align="center" prop="recyclingTime"/>
+      <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="getDetails(scope.row)"
+            v-hasPermi="['data:steelcylinder:operate']"
+          >详情
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <el-dialog :title="title" :visible.sync="open" width="1000px" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="164px">
+        <div style="font-size: 18px;font-weight: bolder;width: 100%;background: #f0fbff;padding: 10px;margin-bottom: 10px;color: #4c82e0">检查</div>
+        <el-row :gutter="20">
+          <el-form-item label="图片" prop="picture">
+            <template v-if="picture!=''" v-for="(imageUrl, imgIndex) in this.picture.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <div style="font-size: 18px;font-weight: bolder;width: 100%;background: #f0fbff;padding: 10px;margin-bottom: 10px;color: #4c82e0">入户</div>
+        <el-row :gutter="20">
+          <el-form-item label="1.安检人员" prop="workCard">
+            <template v-if="workCard!=''" v-for="(imageUrl, imgIndex) in this.workCard.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="2.是否发现隐患" prop="pitfall">
+            <template v-if="pitfall!=''" v-for="(imageUrl, imgIndex) in this.pitfall.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="3.隐患或环境详情" prop="pitfallDetails">
+            <template v-if="pitfallDetails!=''" v-for="(imageUrl, imgIndex) in this.pitfallDetails.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="4.信息检查" prop="information">
+            <template v-if="information!=''" v-for="(imageUrl, imgIndex) in this.information.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="5.钢瓶检查" prop="steelCylinder">
+            <template v-if="steelCylinder!=''" v-for="(imageUrl, imgIndex) in this.steelCylinder.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="6.连接管检查" prop="tailpiece">
+            <template v-if="tailpiece!=''" v-for="(imageUrl, imgIndex) in this.tailpiece.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="7.器具检查" prop="instrument">
+            <template v-if="instrument!=''" v-for="(imageUrl, imgIndex) in this.instrument.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="8.阀门检査" prop="valve">
+            <template v-if="valve!=''" v-for="(imageUrl, imgIndex) in this.valve.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="9.可燃气体报警装置检査" prop="warningDevice">
+            <template v-if="warningDevice!=''" v-for="(imageUrl, imgIndex) in this.warningDevice.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+        <el-row :gutter="20">
+          <el-form-item label="10.环境检查" prop="environment">
+            <template v-if="environment!=''" v-for="(imageUrl, imgIndex) in this.environment.split(',')">
+              <el-image :src="imageUrl" :key="imgIndex" style="width:8rem; height: 8rem; margin:2px"
+                        :preview-src-list="[imageUrl]">
+              </el-image>
+            </template>
+          </el-form-item>
+        </el-row>
+      </el-form>
+    </el-dialog>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+
+<script>
+import {
+  listSteelcylinderLog,
+  getAttach
+} from "@/api/data/housingconstruction/steelcylinderLog";
+import {format_date} from "@/views/data/common/dateExport";
+import DataImageUpload from "@/components/ImageUpload/dataUpload.vue";
+
+
+export default {
+  name: "SteelcylinderLog",
+  components: {DataImageUpload},
+  data() {
+    return {
+      picture: '',
+      workCard: '',
+      pitfall: '',
+      pitfallDetails: '',
+      information: '',
+      steelCylinder: '',
+      tailpiece: '',
+      instrument: '',
+      valve: '',
+      warningDevice: '',
+      environment: '',
+
+      listSteelcylinderLog: [],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      steelcylinderId: null,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        steelcylinderName: null,
+        enterpriseName: null,
+        deliveryTime: null,
+        signTime: null,
+        joinHouseName: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+    };
+  },
+  created() {
+    this.steelcylinderId = this.$route.params && this.$route.params.id;
+    this.getList();
+  },
+  methods: {
+    /** 查询钢瓶日志列表 */
+    getList() {
+      this.loading = true;
+      this.queryParams.steelcylinderId = this.steelcylinderId
+      listSteelcylinderLog(this.queryParams).then(response => {
+        this.listSteelcylinderLog = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getDetails(row) {
+      this.picture = ''
+      this.workCard = ''
+      this.pitfall = ''
+      this.pitfallDetails = ''
+      this.information = ''
+      this.steelCylinder = ''
+      this.tailpiece = ''
+      this.instrument = ''
+      this.valve = ''
+      this.warningDevice = ''
+      this.environment = ''
+      const id = row.id || this.ids
+      getAttach({busId: id}).then(response => {
+        const list = response.data;
+        list.forEach((element, index, array) => {
+          switch (element.dictType) {
+            case "picture":
+              if (this.picture === '') {
+                this.picture = element.attachPath;
+              } else {
+                this.picture += ',' + element.attachPath;
+              }
+              break;
+            case "workCard":
+              if (this.workCard === '') {
+                this.workCard = element.attachPath;
+              } else {
+                this.workCard += ',' + element.attachPath;
+              }
+              break;
+            case "pitfall":
+              if (this.pitfall === '') {
+                this.pitfall = element.attachPath;
+              } else {
+                this.pitfall += ',' + element.attachPath;
+              }
+              break;
+            case "pitfallDetails":
+              if (this.pitfallDetails === '') {
+                this.pitfallDetails = element.attachPath;
+              } else {
+                this.pitfallDetails += ',' + element.attachPath;
+              }
+              break;
+            case "information":
+              if (this.information === '') {
+                this.information = element.attachPath;
+              } else {
+                this.information += ',' + element.attachPath;
+              }
+              break;
+            case "steelCylinder":
+              if (this.steelCylinder === '') {
+                this.steelCylinder = element.attachPath;
+              } else {
+                this.steelCylinder += ',' + element.attachPath;
+              }
+              break;
+            case "tailpiece":
+              if (this.tailpiece === '') {
+                this.tailpiece = element.attachPath;
+              } else {
+                this.tailpiece += ',' + element.attachPath;
+              }
+              break;
+            case "instrument":
+              if (this.instrument === '') {
+                this.instrument = element.attachPath;
+              } else {
+                this.instrument += ',' + element.attachPath;
+              }
+              break;
+            case "valve":
+              if (this.valve === '') {
+                this.valve = element.attachPath;
+              } else {
+                this.valve += ',' + element.attachPath;
+              }
+              break;
+            case "warningDevice":
+              if (this.warningDevice === '') {
+                this.warningDevice = element.attachPath;
+              } else {
+                this.warningDevice += ',' + element.attachPath;
+              }
+              break;
+            case "environment":
+              if (this.environment === '') {
+                this.environment = element.attachPath;
+              } else {
+                this.environment += ',' + element.attachPath;
+              }
+              break;
+          }
+        });
+        console.log(this.picture)
+        this.open = true;
+        this.title = "详情";
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        name: 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
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('center-data/steelcylinderLog/export', {
+        ...this.queryParams
+      }, `钢瓶日志_${format_date(new Date())}.xlsx`)
+    },
+  }
+};
+</script>

+ 492 - 0
data-ui/src/views/data/housingconstruction/storagetank/index.vue

@@ -0,0 +1,492 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="储罐名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入储罐名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="所属企业" prop="enterpriseId">
+        <el-select v-model="queryParams.enterpriseId" placeholder="请选择所属企业">
+          <el-option
+            v-for="data in enterpriseList"
+            :key="data.id"
+            :label="data.enterpriseName"
+            :value="data.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['Housingconstruction:storagetank:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['Housingconstruction:storagetank:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['Housingconstruction:storagetank:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['Housingconstruction:storagetank:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="storagetankList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="储罐名称" align="center" prop="name"/>
+      <el-table-column label="所属企业" align="center" prop="enterpriseName"/>
+      <!-- 存储量列 -->
+      <el-table-column
+        label="存储量"
+        align="center"
+        prop="storageCapacity"
+        :formatter="formatStorageCapacity"
+      />
+
+      <!-- 液体液位上限列 -->
+      <el-table-column
+        label="液体液位上限"
+        align="center"
+        prop="levelCeiling"
+        :formatter="formatLevelCeiling"
+      />
+
+      <!-- 液体液位下限列 -->
+      <el-table-column
+        label="液体液位下限"
+        align="center"
+        prop="levelFloor"
+        :formatter="formatLevelFloor"
+      />
+
+      <!-- 温度列 -->
+      <el-table-column
+        label="温度"
+        align="center"
+        prop="heat"
+        :formatter="formatHeat"
+      />
+
+      <!-- 内部气压列 -->
+      <el-table-column
+        label="内部气压"
+        align="center"
+        prop="pressure"
+        :formatter="formatPressure"
+      />
+      <el-table-column
+        label="周边可燃性气体泄漏"
+        align="center"
+        prop="gasLeak"
+        :formatter="formatGasLeak"
+      />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['Housingconstruction:storagetank:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['Housingconstruction:storagetank:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改储罐存储数据对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="150px">
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="所属企业" prop="enterpriseId">
+              <el-select v-model="form.enterpriseId" placeholder="请选择所属企业" @change="handleEnterpriseChange">
+                <el-option
+                  v-for="data in enterpriseList"
+                  :key="data.id"
+                  :label="data.enterpriseName"
+                  :value="data.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="储罐名称" prop="name">
+              <el-input v-model="form.name" placeholder="请输入储罐名称"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="存储量" prop="storageCapacity">
+              <el-input v-model="form.storageCapacity" placeholder="请输入存储量(单位: KG)"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="温度" prop="heat">
+              <el-input v-model="form.heat" placeholder="请输入温度(单位: ℃)"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="液体液位上限" prop="levelCeiling">
+              <el-input v-model="form.levelCeiling" placeholder="请输入液体液位上限(单位: m)"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="液体液位下限" prop="levelFloor">
+              <el-input v-model="form.levelFloor" placeholder="请输入液体液位下限(单位: m)"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="内部气压" prop="pressure">
+              <el-input v-model="form.pressure" placeholder="请输入内部气压(单位: MPa)"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="周边可燃性气体泄漏" prop="gasLeak">
+              <el-input v-model="form.gasLeak" placeholder="请输入周边可燃性气体泄漏(单位: %LEL)"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          placeholder="请选择部门" @select="hx" :noResultsText="'空'" :noOptionsText="'空'"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addStoragetank,
+  delStoragetank,
+  getStoragetank,
+  listStoragetank,
+  updateStoragetank
+} from "@/api/data/housingconstruction/storagetank";
+import {getListAll} from "@/api/data/housingconstruction/enterprise";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {treeselect} from "@/api/system/dept";
+import deptselector from "@/views/components/deptselector.vue";
+import {format_date} from "@/views/data/common/dateExport";
+import {checkPositiveDecimal} from "@/api/rules/rules";
+
+export default {
+  name: "Storagetank",
+  components: {deptselector, Treeselect},
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 储罐存储数据表格数据
+      storagetankList: [],
+      //企业信息列表
+      enterpriseList: [],
+      // 部门树选项
+      deptOptions: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        storageCapacity: null,
+        levelCeiling: null,
+        levelFloor: null,
+        heat: null,
+        pressure: null,
+        gasLeak: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        enterpriseId: [
+          {required: true, message: "所属企业不能为空", trigger: "blur"}
+        ],
+        name: [
+          {required: true, message: "储罐名称不能为空", trigger: "blur"}
+        ],
+        storageCapacity: [
+          {required: true, message: "存储量不能为空", trigger: "blur"},
+          {validator: checkPositiveDecimal, trigger: 'blur'}
+        ],
+        levelCeiling: [
+          {required: true, message: "液体液位上限不能为空", trigger: "blur"},
+          {validator: checkPositiveDecimal, trigger: 'blur'}
+        ],
+        levelFloor: [
+          {required: true, message: "液体液位下限不能为空", trigger: "blur"},
+          {validator: checkPositiveDecimal, trigger: 'blur'}
+        ],
+        heat: [
+          {required: true, message: "温度不能为空", trigger: "blur"},
+          {validator: checkPositiveDecimal, trigger: 'blur'}
+        ],
+        pressure: [
+          {required: true, message: "内部气压不能为空", trigger: "blur"},
+          {validator: checkPositiveDecimal, trigger: 'blur'}
+        ],
+        gasLeak: [
+          {required: true, message: "周边可燃性气体泄漏不能为空", trigger: "blur"},
+          {validator: checkPositiveDecimal, trigger: 'blur'}
+        ],
+        deptId:[
+          {required: true, message: "所属部门不能为空", trigger: "blur"}
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getEnterpriseList();
+  },
+  methods: {
+    handleEnterpriseChange(newId) {
+      const selectedEnterprise = this.enterpriseList.find(item => item.id === newId);
+      if (selectedEnterprise) {
+        this.form.enterpriseName = selectedEnterprise.enterpriseName;
+      } else {
+        this.form.enterpriseName = '';
+      }
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    hx(node) {
+      this.form.dataDeptId = node.id
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      this.$refs.form.validateField("deptId")
+    },
+    getEnterpriseName(id) {
+      const enterprise = this.enterpriseList.find(e => e.id === id);
+      return enterprise ? enterprise.enterpriseName : '未知企业';
+    },
+    getEnterpriseList(){
+      getListAll().then(res=>{
+        this.enterpriseList = res.data
+      })
+    },
+    /** 查询储罐存储数据列表 */
+    getList() {
+      this.loading = true;
+      listStoragetank(this.queryParams).then(response => {
+        this.storagetankList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        createBy: null,
+        createName: null,
+        createTime: null,
+        updateBy: null,
+        updateName: null,
+        updateTime: null,
+        deptId: null,
+        deptName: null,
+        name: null,
+        enterpriseId: null,
+        enterpriseName: null,
+        storageCapacity: null,
+        levelCeiling: null,
+        levelFloor: null,
+        heat: null,
+        pressure: null,
+        gasLeak: 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
+      getStoragetank(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) {
+            updateStoragetank(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addStoragetank(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 delStoragetank(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('sooka-sponest-center-data/storagetank/export', {
+        ...this.queryParams
+      }, `储罐基础信息_${format_date(new Date())}.xlsx`)
+    },
+    formatStorageCapacity(cellValue) {
+      return `${cellValue.storageCapacity} L`;
+    },
+    formatLevelCeiling(cellValue) {
+      return `${cellValue.levelCeiling} m`;
+    },
+    formatLevelFloor(cellValue) {
+      return `${cellValue.levelFloor} m`;
+    },
+    formatHeat(cellValue) {
+      return `${cellValue.heat} ℃`;
+    },
+    formatPressure(cellValue) {
+      return `${cellValue.pressure} MPa`;
+    },
+    formatGasLeak(cellValue){
+      return `${cellValue.gasLeak} %LEL`;
+    }
+  }
+};
+</script>

+ 2 - 0
src/main/java/com/sooka/sponest/data/SookaDataApplication.java

@@ -5,11 +5,13 @@ import com.ruoyi.common.security.annotation.EnableRyFeignClients;
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableCustomConfig
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @SpringBootApplication(scanBasePackages = {"com.sooka", "com.ruoyi"})
+@EnableScheduling
 public class SookaDataApplication {
 
     public static void main(String[] args) {

+ 7 - 7
src/main/java/com/sooka/sponest/data/digitalforest/controller/CenterdataTForestLinleaderController.java

@@ -107,13 +107,13 @@ public class CenterdataTForestLinleaderController extends BaseController {
     @Log(title = "林长管理", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@Validated @RequestBody CenterdataTForestLinleader centerdataTForestLinleader) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("type","1");
-        map.put("id",centerdataTForestLinleader.getId());
-        int num = centerdataTHydraulicRiverLengthService.selectPersonByUserId(map);
-        if (num>0){
-            return AjaxResult.error("当前人员已有下级资源");
-        }
+//        Map<String,Object> map = new HashMap<>();
+//        map.put("type","1");
+//        map.put("id",centerdataTForestLinleader.getId());
+//        int num = centerdataTHydraulicRiverLengthService.selectPersonByUserId(map);
+//        if (num>0){
+//            return AjaxResult.error("当前人员已有下级资源");
+//        }
         return toAjax(centerdataTForestLinleaderService.updateCenterdataTForestLinleader(centerdataTForestLinleader));
     }
 

+ 3 - 3
src/main/java/com/sooka/sponest/data/digitaltraffic/controller/CenterdataTSupermapLevelController.java

@@ -64,9 +64,9 @@ public class CenterdataTSupermapLevelController extends BaseController {
 
     @ApiOperation(value = "获取level详细信息",notes = "获取level详细信息")
     @RequiresPermissions("traffic:level:query")
-    @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") String id) {
-        return AjaxResult.success(centerdataTSupermapLevelService.selectCenterdataTSupermapLevelById(id));
+    @GetMapping(value = "/{id}/{type}")
+    public AjaxResult getInfo(@PathVariable("id") String id,@PathVariable("type") String type) {
+        return AjaxResult.success(centerdataTSupermapLevelService.selectCenterdataTSupermapLevelById(id,type));
     }
 
     /**

+ 2 - 1
src/main/java/com/sooka/sponest/data/digitaltraffic/mapper/CenterdataTLevelPersonNMapper.java

@@ -2,6 +2,7 @@ package com.sooka.sponest.data.digitaltraffic.mapper;
 
 import com.sooka.sponest.data.digitaltraffic.domain.CenterdataTLevelPersonN;
 import com.sooka.sponest.data.digitaltraffic.domain.CenterdataTSupermapLevel;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -14,7 +15,7 @@ public interface CenterdataTLevelPersonNMapper {
 
     int insertSelective(CenterdataTLevelPersonN record);
 
-    List<CenterdataTLevelPersonN> selectByPrimaryKey(String supermapLevelId);
+    List<CenterdataTLevelPersonN> selectByPrimaryKey(@Param("type") String type, @Param("supermapLevelId") String supermapLevelId);
 
     List<Map<String, Object>> selectAll(CenterdataTSupermapLevel centerdataTSupermapLevel);
 

+ 1 - 1
src/main/java/com/sooka/sponest/data/digitaltraffic/service/ICenterdataTSupermapLevelService.java

@@ -29,7 +29,7 @@ public interface ICenterdataTSupermapLevelService extends IBaseService {
      * @param id level主键
      * @return level
      */
-    CenterdataTSupermapLevel selectCenterdataTSupermapLevelById(String id);
+    CenterdataTSupermapLevel selectCenterdataTSupermapLevelById(String id,String type);
 
     /**
      * 新增level

+ 9 - 6
src/main/java/com/sooka/sponest/data/digitaltraffic/service/impl/CenterdataTSupermapLevelServiceImpl.java

@@ -59,10 +59,10 @@ public class CenterdataTSupermapLevelServiceImpl extends BaseServiceImpl impleme
      * @return level
      */
     @Override
-    public CenterdataTSupermapLevel selectCenterdataTSupermapLevelById(String id) {
+    public CenterdataTSupermapLevel selectCenterdataTSupermapLevelById(String id,String type) {
         CenterdataTSupermapLevel centerdataTSupermapLevel = centerdataTSupermapLevelMapper.selectCenterdataTSupermapLevelById(id);
         centerdataTSupermapLevel.setDeviceList(centerdataTEquipmentCameraService.selectCenterdataTEquipmentCameraByBusinessId(id));
-        centerdataTSupermapLevel.setUserList(centerdataTLevelPersonNMapper.selectByPrimaryKey(id));
+        centerdataTSupermapLevel.setUserList(centerdataTLevelPersonNMapper.selectByPrimaryKey(type,id));
         return centerdataTSupermapLevel;
     }
 
@@ -173,10 +173,13 @@ public class CenterdataTSupermapLevelServiceImpl extends BaseServiceImpl impleme
     public List<Map<String, Object>> getDeviceList(CenterdataTSupermapLevel centerdataTSupermapLevel) {
         setSookaDataBase(centerdataTSupermapLevel);
         List<Map<String, Object>> mapList = centerdataTSupermapLevelMapper.getDeviceList(centerdataTSupermapLevel);
-        List<Map<String, Object>> ns = centerdataTLevelPersonNMapper.selectAll(centerdataTSupermapLevel);
-        mapList.forEach(item -> {
-            item.put("userList", ns.stream().filter(o -> MapUtils.getString(o, "supermapLevelId").equals(MapUtils.getString(item, "superMapId"))).collect(Collectors.toList()));
-        });
+        if (mapList != null && mapList.size() != 0) {
+            centerdataTSupermapLevel.setType(mapList.get(0).get("type").toString());
+            List<Map<String, Object>> ns = centerdataTLevelPersonNMapper.selectAll(centerdataTSupermapLevel);
+            mapList.forEach(item -> {
+                item.put("userList", ns.stream().filter(o -> MapUtils.getString(o, "supermapLevelId").equals(MapUtils.getString(item, "superMapId"))).collect(Collectors.toList()));
+            });
+        }
         return mapList;
     }
 }

+ 6 - 6
src/main/java/com/sooka/sponest/data/digitalwater/controller/CenterdataTHydraulicRiverLengthController.java

@@ -104,12 +104,12 @@ public class CenterdataTHydraulicRiverLengthController extends BaseController {
             @ApiImplicitParam(name = "id", value = "主键id", dataType = "String", required = true)
     })
     public AjaxResult getInfo(@PathVariable(value = "id") String id) {
-        Map<String, Object> map = new HashMap<>();
-        map.put("id", id);
-        int num = centerdataTHydraulicRiverLengthService.selectPersonByUserId(map);
-        if (num > 0) {
-            return AjaxResult.error("当前人员已有下级资源");
-        }
+//        Map<String, Object> map = new HashMap<>();
+//        map.put("id", id);
+//        int num = centerdataTHydraulicRiverLengthService.selectPersonByUserId(map);
+//        if (num > 0) {
+//            return AjaxResult.error("当前人员已有下级资源");
+//        }
         //centerdata_t_hydraulic_river_hechang 河长牌
         int heChangNum = centerdataTHydraulicRiverLengthService.selectHeChangByHechangId(id);
         if (heChangNum > 0) {

+ 13 - 0
src/main/java/com/sooka/sponest/data/generalbusiness/controller/CenterdataTKeyProjectsController.java

@@ -183,6 +183,19 @@ public class CenterdataTKeyProjectsController extends BaseController {
     }
 
     /*
+    * 重点工程删除(逻辑删除)
+    *
+    * @author 韩福成
+    * @date 2024/12/13 上午9:09
+    */
+    @ApiOperation(value = "重点工程删除(逻辑删除)", notes = "重点工程删除(假删除)")
+    @Log(title = "重点工程删除(逻辑删除)", businessType = BusinessType.UPDATE)
+    @PostMapping("/deleteProject")
+    public AjaxResult deleteProject(@RequestBody String[] projectIds) {
+        return toAjax(centerdataTKeyProjectsService.updateDel(projectIds));
+    }
+
+    /*
     * 推送报文
     *
     * @author 韩福成

+ 30 - 0
src/main/java/com/sooka/sponest/data/generalbusiness/domain/CenterdataTKeyProjects.java

@@ -323,6 +323,36 @@ public class CenterdataTKeyProjects extends BaseBusinessEntity {
     @NotBlank(message = "项目id不能为空")
     private String projectId;
 
+    private String year;
+
+    private String month;
+
+    private String del;
+
+    public String getDel() {
+        return del;
+    }
+
+    public void setDel(String del) {
+        this.del = del;
+    }
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
     public String getAdministrativeRegion() {
         return administrativeRegion;
     }

+ 8 - 0
src/main/java/com/sooka/sponest/data/generalbusiness/mapper/CenterdataTKeyProjectsMapper.java

@@ -75,4 +75,12 @@ public interface CenterdataTKeyProjectsMapper {
     * @date 2024/4/2 10:06
     */
     int updateByProjectId(CenterdataTKeyProjects centerdataTKeyProjects);
+
+    /*
+    * 重点工程删除(逻辑删除)
+    *
+    * @author 韩福成
+    * @date 2024/12/13 上午9:15
+    */
+    int updateDel(String[] projectIds);
 }

+ 8 - 0
src/main/java/com/sooka/sponest/data/generalbusiness/service/ICenterdataTKeyProjectsService.java

@@ -63,6 +63,14 @@ public interface ICenterdataTKeyProjectsService {
     int receivedMessage(List<CenterdataTKeyProjects> centerdataTKeyProjects);
 
     /*
+    * 重点工程删除(逻辑删除)
+    *
+    * @author 韩福成
+    * @date 2024/12/13 上午9:13
+    */
+    int updateDel(String[] projectIds);
+
+    /*
     * 推送报文
     *
     * @author 韩福成

+ 5 - 3
src/main/java/com/sooka/sponest/data/generalbusiness/service/impl/CenterdataTFileServiceImpl.java

@@ -77,12 +77,14 @@ public class CenterdataTFileServiceImpl extends BaseServiceImpl implements ICent
         CenterdataTFile centerdataTFile = centerdataTFileMapper.selectCenterdataTFileByIdPc(id);
         if (StringUtils.isNotEmpty(centerdataTFile.getFileUrl())) {
             String fileurl = SpringUtils.getBean(RemoteConfigService.class).remotegetConfigKey(DOWNLOAD_URL).getData();
+            // group1/M00/00/84/wKgKEGawNfGAW7bwAAAxRySSUAM25.xlsx+新建 Microsoft Excel 工作表 (2).xlsx,
+            // group1/M00/00/84/wKgKEGawNfGAPGtdAAA01rkc0aE47.xlsx+新建 Microsoft Excel 工作表.xlsx
             String[] files = centerdataTFile.getFileUrl().split(",");
             StringBuilder newDiles = new StringBuilder();
             for (String s : files) {
-                String filename = s.substring(s.indexOf('+') + 1);
-                String url = s.substring(0, s.indexOf('+'));
-                String group = url.substring(0, url.indexOf('/'));
+                String filename = s.substring(s.indexOf('+') + 1); //新建 Microsoft Excel 工作表 (2).xlsx
+                String url = s.substring(0, s.indexOf('+')); //group1/M00/00/84/wKgKEGawNfGAW7bwAAAxRySSUAM25.xlsx
+                String group = url.substring(0, url.indexOf('/')); //group1
                 newDiles.append(fileurl + "Download?fileName=" + filename + "&&group=" + group + "&&path=" + url.substring(url.indexOf('/') + 1) + "+" + filename + ",");
             }
             newDiles = new StringBuilder(newDiles.substring(0, newDiles.length() - 1));

+ 12 - 0
src/main/java/com/sooka/sponest/data/generalbusiness/service/impl/CenterdataTKeyProjectsServiceImpl.java

@@ -161,6 +161,7 @@ public class CenterdataTKeyProjectsServiceImpl extends BaseServiceImpl implement
                 projects.setCreateBy(SecurityUtils.getUserId().toString());
                 projects.setCreateName( SecurityUtils.getLoginUser().getSysUser().getNickName());
                 projects.setCreateTime(DateUtils.getNowDate());
+                projects.setDel("0");
                 i = centerdataTKeyProjectsMapper.insertCenterdataTKeyProjects(projects);
             }
         }
@@ -168,6 +169,17 @@ public class CenterdataTKeyProjectsServiceImpl extends BaseServiceImpl implement
     }
 
     /*
+    * 重点工程删除(逻辑删除)
+    *
+    * @author 韩福成
+    * @date 2024/12/13 上午9:14
+    */
+    @Override
+    public int updateDel(String[] projectIds) {
+        return centerdataTKeyProjectsMapper.updateDel(projectIds);
+    }
+
+    /*
     * 推送报文
     *
     * @author 韩福成

+ 108 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionAttachController.java

@@ -0,0 +1,108 @@
+/*
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionAttach;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionAttachService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+*/
+/**
+ * 住建-附件Controller
+ *
+ * @author lg
+ * @date 2024-07-29
+ *//*
+
+@RestController
+@RequestMapping("/attach")
+public class CenterdataTHousingconstructionAttachController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionAttachService centerdataTHousingconstructionAttachService;
+
+
+    */
+/**
+     * 查询住建-附件列表
+     *//*
+
+    @RequiresPermissions("housingconstruction:attach:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionAttach centerdataTHousingconstructionAttach) {
+        startPage();
+        List<CenterdataTHousingconstructionAttach> list = centerdataTHousingconstructionAttachService.selectCenterdataTHousingconstructionAttachList(centerdataTHousingconstructionAttach);
+        return getDataTable(list);
+    }
+
+    */
+/**
+     * 导出住建-附件列表
+     *//*
+
+    @RequiresPermissions("housingconstruction:attach:export")
+    @Log(title = "住建-附件", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionAttach centerdataTHousingconstructionAttach) {
+        List<CenterdataTHousingconstructionAttach> list = centerdataTHousingconstructionAttachService.selectCenterdataTHousingconstructionAttachList(centerdataTHousingconstructionAttach);
+        ExcelUtil<CenterdataTHousingconstructionAttach> util = new ExcelUtil<CenterdataTHousingconstructionAttach>(CenterdataTHousingconstructionAttach.class);
+        util.exportExcel(response, list, "住建-附件数据");
+    }
+
+    */
+/**
+     * 获取住建-附件详细信息
+     *//*
+
+    @RequiresPermissions("housingconstruction:attach:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(centerdataTHousingconstructionAttachService.selectCenterdataTHousingconstructionAttachById(id));
+    }
+
+    */
+/**
+     * 新增住建-附件
+     *//*
+
+    @RequiresPermissions("housingconstruction:attach:add")
+    @Log(title = "住建-附件", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionAttach centerdataTHousingconstructionAttach) {
+        return toAjax(centerdataTHousingconstructionAttachService.insertCenterdataTHousingconstructionAttach(centerdataTHousingconstructionAttach));
+    }
+
+    */
+/**
+     * 修改住建-附件
+     *//*
+
+    @RequiresPermissions("housingconstruction:attach:edit")
+    @Log(title = "住建-附件", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionAttach centerdataTHousingconstructionAttach) {
+        return toAjax(centerdataTHousingconstructionAttachService.updateCenterdataTHousingconstructionAttach(centerdataTHousingconstructionAttach));
+    }
+
+    */
+/**
+     * 删除住建-附件
+     *//*
+
+    @RequiresPermissions("housingconstruction:attach:remove")
+    @Log(title = "住建-附件", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(centerdataTHousingconstructionAttachService.deleteCenterdataTHousingconstructionAttachByIds(ids));
+    }
+}
+*/

+ 103 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionCarController.java

@@ -0,0 +1,103 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionCar;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionCarService;
+import com.sooka.sponest.data.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 车辆数据Controller
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/housingCar")
+public class CenterdataTHousingconstructionCarController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionCarService centerdataTHousingconstructionCarService;
+
+    /**
+     * 查询车辆数据列表
+     */
+    @RequiresPermissions("data:car:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionCar centerdataTHousingconstructionCar) {
+        startPage();
+        List<CenterdataTHousingconstructionCar> list = centerdataTHousingconstructionCarService.selectCenterdataTHousingconstructionCarList(centerdataTHousingconstructionCar);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出车辆数据列表
+     */
+    @RequiresPermissions("data:car:export")
+    @Log(title = "车辆数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionCar centerdataTHousingconstructionCar) {
+        List<CenterdataTHousingconstructionCar> list = centerdataTHousingconstructionCarService.selectCenterdataTHousingconstructionCarList(centerdataTHousingconstructionCar);
+        ExcelUtil<CenterdataTHousingconstructionCar> util = new ExcelUtil<CenterdataTHousingconstructionCar>(CenterdataTHousingconstructionCar.class);
+        util.exportExcel(response, list, "车辆数据数据");
+    }
+
+    /**
+     * 获取车辆数据详细信息
+     */
+    @RequiresPermissions("data:car:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionCarService.selectCenterdataTHousingconstructionCarById(id));
+    }
+
+    /**
+     * 新增车辆数据
+     */
+    @RequiresPermissions("data:car:add")
+    @Log(title = "车辆数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionCar centerdataTHousingconstructionCar) {
+        return toAjax(centerdataTHousingconstructionCarService.insertCenterdataTHousingconstructionCar(centerdataTHousingconstructionCar));
+    }
+
+    /**
+     * 修改车辆数据
+     */
+    @RequiresPermissions("data:car:edit")
+    @Log(title = "车辆数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionCar centerdataTHousingconstructionCar) {
+        return toAjax(centerdataTHousingconstructionCarService.updateCenterdataTHousingconstructionCar(centerdataTHousingconstructionCar));
+    }
+
+    /**
+     * 删除车辆数据
+     */
+    @RequiresPermissions("data:car:remove")
+    @Log(title = "车辆数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(centerdataTHousingconstructionCarService.deleteCenterdataTHousingconstructionCarByIds(ids));
+    }
+
+    /*
+    * 车辆列表(不分页)
+    *
+    * @author 韩福成
+    * @date 2024/7/31 下午4:59
+    */
+    @GetMapping("/getCarList")
+    public AjaxResult getCarList(CenterdataTHousingconstructionCar centerdataTHousingconstructionCar) {
+        List<CenterdataTHousingconstructionCar> list = centerdataTHousingconstructionCarService.selectCenterdataTHousingconstructionCarList(centerdataTHousingconstructionCar);
+        return AjaxResult.success(list);
+    }
+}

+ 114 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionDeliveryPersonnelController.java

@@ -0,0 +1,114 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionDeliveryPersonnel;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionDeliveryPersonnelLonLat;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionDeliveryPersonnelService;
+import com.sooka.sponest.data.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 配送人员Controller
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/personnel")
+public class CenterdataTHousingconstructionDeliveryPersonnelController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionDeliveryPersonnelService centerdataTHousingconstructionDeliveryPersonnelService;
+
+    /**
+     * 查询配送人员列表
+     */
+    @RequiresPermissions("data:personnel:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel) {
+        startPage();
+        List<CenterdataTHousingconstructionDeliveryPersonnel> list = centerdataTHousingconstructionDeliveryPersonnelService.selectCenterdataTHousingconstructionDeliveryPersonnelList(centerdataTHousingconstructionDeliveryPersonnel);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出配送人员列表
+     */
+    @RequiresPermissions("data:personnel:export")
+    @Log(title = "配送人员", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel) {
+        List<CenterdataTHousingconstructionDeliveryPersonnel> list = centerdataTHousingconstructionDeliveryPersonnelService.selectCenterdataTHousingconstructionDeliveryPersonnelList(centerdataTHousingconstructionDeliveryPersonnel);
+        ExcelUtil<CenterdataTHousingconstructionDeliveryPersonnel> util = new ExcelUtil<CenterdataTHousingconstructionDeliveryPersonnel>(CenterdataTHousingconstructionDeliveryPersonnel.class);
+        util.exportExcel(response, list, "配送人员数据");
+    }
+
+    /**
+     * 获取配送人员详细信息
+     */
+    @RequiresPermissions("data:personnel:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionDeliveryPersonnelService.selectCenterdataTHousingconstructionDeliveryPersonnelById(id));
+    }
+
+    /**
+     * 新增配送人员
+     */
+    @RequiresPermissions("data:personnel:add")
+    @Log(title = "配送人员", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel) {
+        return toAjax(centerdataTHousingconstructionDeliveryPersonnelService.insertCenterdataTHousingconstructionDeliveryPersonnel(centerdataTHousingconstructionDeliveryPersonnel));
+    }
+
+    /**
+     * 修改配送人员
+     */
+    @RequiresPermissions("data:personnel:edit")
+    @Log(title = "配送人员", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel) {
+        return toAjax(centerdataTHousingconstructionDeliveryPersonnelService.updateCenterdataTHousingconstructionDeliveryPersonnel(centerdataTHousingconstructionDeliveryPersonnel));
+    }
+
+    /**
+     * 删除配送人员
+     */
+    @RequiresPermissions("data:personnel:remove")
+    @Log(title = "配送人员", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(centerdataTHousingconstructionDeliveryPersonnelService.deleteCenterdataTHousingconstructionDeliveryPersonnelByIds(ids));
+    }
+
+    /*
+    * 配送人员列表(不分页)
+    *
+    * @author 韩福成
+    * @date 2024/7/31 上午9:58
+    */
+    @GetMapping("/getList")
+    public AjaxResult getList(CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel) {
+        List<CenterdataTHousingconstructionDeliveryPersonnel> list = centerdataTHousingconstructionDeliveryPersonnelService.selectCenterdataTHousingconstructionDeliveryPersonnelList(centerdataTHousingconstructionDeliveryPersonnel);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 配送员写入经纬度坐标
+     * @param personnelLonLat
+     * @return
+     */
+    @PostMapping("/setLonLat")
+    public AjaxResult setLonLat(@RequestBody CenterdataTHousingconstructionDeliveryPersonnelLonLat personnelLonLat){
+        return toAjax(centerdataTHousingconstructionDeliveryPersonnelService.setLonLat(personnelLonLat));
+    }
+}

+ 115 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionEnterpriseController.java

@@ -0,0 +1,115 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionEnterprise;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionEnterpriseService;
+import com.sooka.sponest.data.utils.DataConstants;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 住建-企业信息Controller
+ *
+ * @author LG
+ * @date 2024-07-29
+ */
+@RestController
+@RequestMapping("/housingconstruction/enterprise")
+public class CenterdataTHousingconstructionEnterpriseController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionEnterpriseService centerdataTHousingconstructionEnterpriseService;
+
+    /**
+     * 查询住建-企业信息列表
+     */
+    @RequiresPermissions("Housingconstruction:enterprise:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionEnterprise centerdataTHousingconstructionEnterprise) {
+        startPage();
+        List<CenterdataTHousingconstructionEnterprise> list = centerdataTHousingconstructionEnterpriseService.selectCenterdataTHousingconstructionEnterpriseList(centerdataTHousingconstructionEnterprise);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出住建-企业信息列表
+     */
+    @RequiresPermissions("Housingconstruction:enterprise:export")
+    @Log(title = "住建-企业信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionEnterprise centerdataTHousingconstructionEnterprise) {
+        List<CenterdataTHousingconstructionEnterprise> list = centerdataTHousingconstructionEnterpriseService.selectCenterdataTHousingconstructionEnterpriseList(centerdataTHousingconstructionEnterprise);
+        ExcelUtil<CenterdataTHousingconstructionEnterprise> util = new ExcelUtil<CenterdataTHousingconstructionEnterprise>(CenterdataTHousingconstructionEnterprise.class);
+        util.exportExcel(response, list, "住建-企业信息数据");
+    }
+
+    /**
+     * 获取住建-企业信息详细信息
+     */
+    @RequiresPermissions("Housingconstruction:enterprise:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionEnterpriseService.selectCenterdataTHousingconstructionEnterpriseById(id));
+    }
+
+    /**
+     * 新增住建-企业信息
+     */
+    @RequiresPermissions("Housingconstruction:enterprise:add")
+    @Log(title = "住建-企业信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionEnterprise centerdataTHousingconstructionEnterprise) {
+        String tableName = "centerdata_t_housingconstruction_enterprise";
+        String[] keys = {"enterprise_name"};
+        String[] values = {centerdataTHousingconstructionEnterprise.getEnterpriseName()};
+        if(!centerdataTHousingconstructionEnterpriseService.uniqueCheck(tableName, keys, values)){
+            return AjaxResult.error(DataConstants.ERROR_MSG);
+        }
+        return toAjax(centerdataTHousingconstructionEnterpriseService.insertCenterdataTHousingconstructionEnterprise(centerdataTHousingconstructionEnterprise));
+    }
+
+    /**
+     * 修改住建-企业信息
+     */
+    @RequiresPermissions("Housingconstruction:enterprise:edit")
+    @Log(title = "住建-企业信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionEnterprise centerdataTHousingconstructionEnterprise) {
+        return toAjax(centerdataTHousingconstructionEnterpriseService.updateCenterdataTHousingconstructionEnterprise(centerdataTHousingconstructionEnterprise));
+    }
+
+    /**
+     * 删除住建-企业信息
+     */
+    @RequiresPermissions("Housingconstruction:enterprise:remove")
+    @Log(title = "住建-企业信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        Map<String, Object> hasBind = centerdataTHousingconstructionEnterpriseService.hasBindByIds(ids);
+        if(MapUtils.getInteger(hasBind, "sum") > 0){
+            return AjaxResult.error("请先删除下级资源");
+        }
+        return toAjax(centerdataTHousingconstructionEnterpriseService.deleteCenterdataTHousingconstructionEnterpriseByIds(ids));
+    }
+
+
+    /**
+     * 远端调用,查询列表
+     * @param vo
+     * @return
+     */
+    @GetMapping("/getListAll")
+    public AjaxResult getListAll(CenterdataTHousingconstructionEnterprise vo) {
+        return AjaxResult.success(centerdataTHousingconstructionEnterpriseService.selectCenterdataTHousingconstructionEnterpriseList(vo));
+    }
+}

+ 131 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionEnterpriseproductionreportController.java

@@ -0,0 +1,131 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.redis.configure.RedisConfig;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.common.security.utils.DictUtils;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionEnterpriseproductionreport;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionAttachService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionEnterpriseproductionreportService;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 企业生产报告Controller
+ *
+ * @author ruoyi
+ * @date 2024-08-05
+ */
+@RestController
+@RequestMapping("/enterpriseproductionreport")
+public class CenterdataTHousingconstructionEnterpriseproductionreportController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionEnterpriseproductionreportService centerdataTHousingconstructionEnterpriseproductionreportService;
+
+    @Autowired
+    private ICenterdataTHousingconstructionAttachService attachService;
+
+    /**
+     * 查询企业生产报告列表
+     */
+    @RequiresPermissions("housingconstruction:enterpriseproductionreport:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport) {
+        startPage();
+        List<CenterdataTHousingconstructionEnterpriseproductionreport> list = centerdataTHousingconstructionEnterpriseproductionreportService.selectCenterdataTHousingconstructionEnterpriseproductionreportList(centerdataTHousingconstructionEnterpriseproductionreport);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出企业生产报告列表
+     */
+    @RequiresPermissions("housingconstruction:enterpriseproductionreport:export")
+    @Log(title = "企业生产报告", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport) {
+        List<CenterdataTHousingconstructionEnterpriseproductionreport> list = centerdataTHousingconstructionEnterpriseproductionreportService.selectCenterdataTHousingconstructionEnterpriseproductionreportList(centerdataTHousingconstructionEnterpriseproductionreport);
+        /*list.forEach(report->{
+            report.setFileUrl(attachService.replasePathToFile(report.getId(),null));
+        });*/
+        ExcelUtil<CenterdataTHousingconstructionEnterpriseproductionreport> util = new ExcelUtil<CenterdataTHousingconstructionEnterpriseproductionreport>(CenterdataTHousingconstructionEnterpriseproductionreport.class);
+        switch (centerdataTHousingconstructionEnterpriseproductionreport.getRequestType()){
+            case "1":
+                Map<String, Object> reportMap = DictUtils.getDictCacheToMap("enterprise_production_report");
+                list.forEach(data->{
+                    data.setReportType(MapUtils.getString(reportMap,data.getReportType()));
+                });
+                util.exportExcel(response, list, "企业生产报告数据");
+                break;
+            case "2":
+                Map<String, Object> fileMap = DictUtils.getDictCacheToMap("enterprise_qualification_file");
+                list.forEach(data->{
+                    data.setReportType(MapUtils.getString(fileMap,data.getReportType()));
+                });
+                util.exportExcel(response, list, "企业资质文件数据");
+                break;
+            default:
+                Map<String, Object> reportMapAll = DictUtils.getDictCacheToMap("enterprise_production_report");
+                Map<String, Object> fileMapAll = DictUtils.getDictCacheToMap("enterprise_qualification_file");
+                list.forEach(data->{
+                    if(reportMapAll.containsKey(data.getReportType())){
+                        data.setReportType(MapUtils.getString(reportMapAll, data.getReportType()));
+                    }
+                    if(fileMapAll.containsKey(data.getReportType())){
+                        data.setReportType(MapUtils.getString(fileMapAll, data.getReportType()));
+                    }
+                });
+                util.exportExcel(response, list, "企业相关附件数据");
+                break;
+        }
+    }
+
+    /**
+     * 获取企业生产报告详细信息
+     */
+    @RequiresPermissions("housingconstruction:enterpriseproductionreport:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionEnterpriseproductionreportService.selectCenterdataTHousingconstructionEnterpriseproductionreportById(id));
+    }
+
+    /**
+     * 新增企业生产报告
+     */
+    @RequiresPermissions("housingconstruction:enterpriseproductionreport:add")
+    @Log(title = "企业生产报告", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport) {
+        return toAjax(centerdataTHousingconstructionEnterpriseproductionreportService.insertCenterdataTHousingconstructionEnterpriseproductionreport(centerdataTHousingconstructionEnterpriseproductionreport));
+    }
+
+    /**
+     * 修改企业生产报告
+     */
+    @RequiresPermissions("housingconstruction:enterpriseproductionreport:edit")
+    @Log(title = "企业生产报告", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport) {
+        return toAjax(centerdataTHousingconstructionEnterpriseproductionreportService.updateCenterdataTHousingconstructionEnterpriseproductionreport(centerdataTHousingconstructionEnterpriseproductionreport));
+    }
+
+    /**
+     * 删除企业生产报告
+     */
+    @RequiresPermissions("housingconstruction:enterpriseproductionreport:remove")
+    @Log(title = "企业生产报告", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(centerdataTHousingconstructionEnterpriseproductionreportService.deleteCenterdataTHousingconstructionEnterpriseproductionreportByIds(ids));
+    }
+}

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

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

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

@@ -0,0 +1,91 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionInspect;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionInspectService;
+import com.sooka.sponest.data.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 钢瓶年检Controller
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/inspect")
+public class CenterdataTHousingconstructionInspectController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionInspectService centerdataTHousingconstructionInspectService;
+
+    /**
+     * 查询钢瓶年检列表
+     */
+    @RequiresPermissions("data:inspect:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionInspect centerdataTHousingconstructionInspect) {
+        startPage();
+        List<CenterdataTHousingconstructionInspect> list = centerdataTHousingconstructionInspectService.selectCenterdataTHousingconstructionInspectList(centerdataTHousingconstructionInspect);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出钢瓶年检列表
+     */
+    @RequiresPermissions("data:inspect:export")
+    @Log(title = "钢瓶年检", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionInspect centerdataTHousingconstructionInspect) {
+        List<CenterdataTHousingconstructionInspect> list = centerdataTHousingconstructionInspectService.selectCenterdataTHousingconstructionInspectList(centerdataTHousingconstructionInspect);
+        ExcelUtil<CenterdataTHousingconstructionInspect> util = new ExcelUtil<CenterdataTHousingconstructionInspect>(CenterdataTHousingconstructionInspect.class);
+        util.exportExcel(response, list, "钢瓶年检数据");
+    }
+
+    /**
+     * 获取钢瓶年检详细信息
+     */
+    @RequiresPermissions("data:inspect:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionInspectService.selectCenterdataTHousingconstructionInspectById(id));
+    }
+
+    /**
+     * 新增钢瓶年检
+     */
+    @RequiresPermissions("data:inspect:add")
+    @Log(title = "钢瓶年检", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionInspect centerdataTHousingconstructionInspect) {
+        return toAjax(centerdataTHousingconstructionInspectService.insertCenterdataTHousingconstructionInspect(centerdataTHousingconstructionInspect));
+    }
+
+    /**
+     * 修改钢瓶年检
+     */
+    @RequiresPermissions("data:inspect:edit")
+    @Log(title = "钢瓶年检", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionInspect centerdataTHousingconstructionInspect) {
+        return toAjax(centerdataTHousingconstructionInspectService.updateCenterdataTHousingconstructionInspect(centerdataTHousingconstructionInspect));
+    }
+
+    /**
+     * 删除钢瓶年检
+     */
+    @RequiresPermissions("data:inspect:remove")
+    @Log(title = "钢瓶年检", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(centerdataTHousingconstructionInspectService.deleteCenterdataTHousingconstructionInspectByIds(ids));
+    }
+}

+ 102 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionPractitionerController.java

@@ -0,0 +1,102 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionPractitioner;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionPractitionerService;
+import com.sooka.sponest.data.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 从业人员Controller
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/practitioner")
+public class CenterdataTHousingconstructionPractitionerController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionPractitionerService centerdataTHousingconstructionPractitionerService;
+
+    /**
+     * 查询从业人员列表
+     */
+    @RequiresPermissions("data:practitioner:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner) {
+        startPage();
+        List<CenterdataTHousingconstructionPractitioner> list = centerdataTHousingconstructionPractitionerService.selectCenterdataTHousingconstructionPractitionerList(centerdataTHousingconstructionPractitioner);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出从业人员列表
+     */
+    @RequiresPermissions("data:practitioner:export")
+    @Log(title = "从业人员", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner) {
+        List<CenterdataTHousingconstructionPractitioner> list = centerdataTHousingconstructionPractitionerService.selectCenterdataTHousingconstructionPractitionerList(centerdataTHousingconstructionPractitioner);
+        ExcelUtil<CenterdataTHousingconstructionPractitioner> util = new ExcelUtil<CenterdataTHousingconstructionPractitioner>(CenterdataTHousingconstructionPractitioner.class);
+        util.exportExcel(response, list, "从业人员数据");
+    }
+
+    /**
+     * 获取从业人员详细信息
+     */
+    @RequiresPermissions("data:practitioner:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionPractitionerService.selectCenterdataTHousingconstructionPractitionerById(id));
+    }
+
+    /**
+     * 新增从业人员
+     */
+    @RequiresPermissions("data:practitioner:add")
+    @Log(title = "从业人员", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner) {
+        return toAjax(centerdataTHousingconstructionPractitionerService.insertCenterdataTHousingconstructionPractitioner(centerdataTHousingconstructionPractitioner));
+    }
+
+    /**
+     * 修改从业人员
+     */
+    @RequiresPermissions("data:practitioner:edit")
+    @Log(title = "从业人员", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner) {
+        return toAjax(centerdataTHousingconstructionPractitionerService.updateCenterdataTHousingconstructionPractitioner(centerdataTHousingconstructionPractitioner));
+    }
+
+    /**
+     * 删除从业人员
+     */
+    @RequiresPermissions("data:practitioner:remove")
+    @Log(title = "从业人员", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(centerdataTHousingconstructionPractitionerService.deleteCenterdataTHousingconstructionPractitionerByIds(ids));
+    }
+
+    /*
+    * 查询管理人员
+    *
+    * @author 韩福成
+    * @date 2024/7/31 上午9:49
+    */
+    @GetMapping("/getList")
+    public AjaxResult getList(CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner) {
+        return AjaxResult.success(centerdataTHousingconstructionPractitionerService.selectPractitionerByPost(centerdataTHousingconstructionPractitioner));
+    }
+}

+ 98 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionRealnameuserController.java

@@ -0,0 +1,98 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionRealnameuser;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionRealnameuserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 住建-实名用户Controller
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/realnameuser")
+public class CenterdataTHousingconstructionRealnameuserController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionRealnameuserService centerdataTHousingconstructionRealnameuserService;
+
+    /**
+     * 查询住建-实名用户列表
+     */
+    @RequiresPermissions("housingconstruction:realnameuser:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionRealnameuser centerdataTHousingconstructionRealnameuser) {
+        startPage();
+        List<CenterdataTHousingconstructionRealnameuser> list = centerdataTHousingconstructionRealnameuserService.selectCenterdataTHousingconstructionRealnameuserList(centerdataTHousingconstructionRealnameuser);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出住建-实名用户列表
+     */
+    @RequiresPermissions("housingconstruction:realnameuser:export")
+    @Log(title = "住建-实名用户", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionRealnameuser centerdataTHousingconstructionRealnameuser) {
+        List<CenterdataTHousingconstructionRealnameuser> list = centerdataTHousingconstructionRealnameuserService.selectCenterdataTHousingconstructionRealnameuserList(centerdataTHousingconstructionRealnameuser);
+        ExcelUtil<CenterdataTHousingconstructionRealnameuser> util = new ExcelUtil<CenterdataTHousingconstructionRealnameuser>(CenterdataTHousingconstructionRealnameuser.class);
+        util.exportExcel(response, list, "住建-实名用户数据");
+    }
+
+    /**
+     * 获取住建-实名用户详细信息
+     */
+    @RequiresPermissions("housingconstruction:realnameuser:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(centerdataTHousingconstructionRealnameuserService.selectCenterdataTHousingconstructionRealnameuserById(id));
+    }
+
+    /**
+     * 新增住建-实名用户
+     */
+    @RequiresPermissions("housingconstruction:realnameuser:add")
+    @Log(title = "住建-实名用户", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionRealnameuser centerdataTHousingconstructionRealnameuser) {
+        return toAjax(centerdataTHousingconstructionRealnameuserService.insertCenterdataTHousingconstructionRealnameuser(centerdataTHousingconstructionRealnameuser));
+    }
+
+    /**
+     * 修改住建-实名用户
+     */
+    @RequiresPermissions("housingconstruction:realnameuser:edit")
+    @Log(title = "住建-实名用户", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionRealnameuser centerdataTHousingconstructionRealnameuser) {
+        return toAjax(centerdataTHousingconstructionRealnameuserService.updateCenterdataTHousingconstructionRealnameuser(centerdataTHousingconstructionRealnameuser));
+    }
+
+    /**
+     * 删除住建-实名用户
+     */
+    @RequiresPermissions("housingconstruction:realnameuser:remove")
+    @Log(title = "住建-实名用户", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(centerdataTHousingconstructionRealnameuserService.deleteCenterdataTHousingconstructionRealnameuserByIds(ids));
+    }
+
+    @GetMapping("/getRealNameUserListAllByType")
+    public AjaxResult getRealNameUserListAllByType(CenterdataTHousingconstructionRealnameuser vo) {
+        startPage();
+        List<CenterdataTHousingconstructionRealnameuser> list = centerdataTHousingconstructionRealnameuserService.selectCenterdataTHousingconstructionRealnameuserList(vo);
+        return AjaxResult.success(getDataTable(list).getRows());
+    }
+}

+ 97 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSafetyinspectionitemController.java

@@ -0,0 +1,97 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSafetyinspectionitem;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSafetyinspectionitemService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 住建-安全检查明细Controller
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/safetyinspectionitem")
+public class CenterdataTHousingconstructionSafetyinspectionitemController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionSafetyinspectionitemService centerdataTHousingconstructionSafetyinspectionitemService;
+
+    /**
+     * 查询住建-安全检查明细列表
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionitem:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionSafetyinspectionitem centerdataTHousingconstructionSafetyinspectionitem) {
+        startPage();
+        List<CenterdataTHousingconstructionSafetyinspectionitem> list = centerdataTHousingconstructionSafetyinspectionitemService.selectCenterdataTHousingconstructionSafetyinspectionitemList(centerdataTHousingconstructionSafetyinspectionitem);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出住建-安全检查明细列表
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionitem:export")
+    @Log(title = "住建-安全检查明细", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionSafetyinspectionitem centerdataTHousingconstructionSafetyinspectionitem) {
+        List<CenterdataTHousingconstructionSafetyinspectionitem> list = centerdataTHousingconstructionSafetyinspectionitemService.selectCenterdataTHousingconstructionSafetyinspectionitemList(centerdataTHousingconstructionSafetyinspectionitem);
+        ExcelUtil<CenterdataTHousingconstructionSafetyinspectionitem> util = new ExcelUtil<CenterdataTHousingconstructionSafetyinspectionitem>(CenterdataTHousingconstructionSafetyinspectionitem.class);
+        util.exportExcel(response, list, "住建-安全检查明细数据");
+    }
+
+    /**
+     * 获取住建-安全检查明细详细信息
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionitem:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(centerdataTHousingconstructionSafetyinspectionitemService.selectCenterdataTHousingconstructionSafetyinspectionitemById(id));
+    }
+
+    /**
+     * 新增住建-安全检查明细
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionitem:add")
+    @Log(title = "住建-安全检查明细", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionSafetyinspectionitem centerdataTHousingconstructionSafetyinspectionitem) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionitemService.insertCenterdataTHousingconstructionSafetyinspectionitem(centerdataTHousingconstructionSafetyinspectionitem));
+    }
+
+    /**
+     * 修改住建-安全检查明细
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionitem:edit")
+    @Log(title = "住建-安全检查明细", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionSafetyinspectionitem centerdataTHousingconstructionSafetyinspectionitem) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionitemService.updateCenterdataTHousingconstructionSafetyinspectionitem(centerdataTHousingconstructionSafetyinspectionitem));
+    }
+
+    /**
+     * 删除住建-安全检查明细
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionitem:remove")
+    @Log(title = "住建-安全检查明细", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionitemService.deleteCenterdataTHousingconstructionSafetyinspectionitemByIds(ids));
+    }
+
+
+    @GetMapping("/getList")
+    public AjaxResult getList(CenterdataTHousingconstructionSafetyinspectionitem item){
+        return AjaxResult.success(centerdataTHousingconstructionSafetyinspectionitemService.selectCenterdataTHousingconstructionSafetyinspectionitemList(item));
+    }
+}

+ 85 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSafetyinspectionrecordsController.java

@@ -0,0 +1,85 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSafetyinspectionrecords;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSafetyinspectionrecordsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 住建-安全检查记录Controller
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/safetyinspectionrecords")
+public class CenterdataTHousingconstructionSafetyinspectionrecordsController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionSafetyinspectionrecordsService centerdataTHousingconstructionSafetyinspectionrecordsService;
+
+    /**
+     * 查询住建-安全检查记录列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionSafetyinspectionrecords centerdataTHousingconstructionSafetyinspectionrecords) {
+        startPage();
+        List<CenterdataTHousingconstructionSafetyinspectionrecords> list = centerdataTHousingconstructionSafetyinspectionrecordsService.selectCenterdataTHousingconstructionSafetyinspectionrecordsList(centerdataTHousingconstructionSafetyinspectionrecords);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出住建-安全检查记录列表
+     */
+    @Log(title = "住建-安全检查记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionSafetyinspectionrecords centerdataTHousingconstructionSafetyinspectionrecords) {
+        List<CenterdataTHousingconstructionSafetyinspectionrecords> list = centerdataTHousingconstructionSafetyinspectionrecordsService.selectCenterdataTHousingconstructionSafetyinspectionrecordsList(centerdataTHousingconstructionSafetyinspectionrecords);
+        ExcelUtil<CenterdataTHousingconstructionSafetyinspectionrecords> util = new ExcelUtil<CenterdataTHousingconstructionSafetyinspectionrecords>(CenterdataTHousingconstructionSafetyinspectionrecords.class);
+        util.exportExcel(response, list, "住建-安全检查记录数据");
+    }
+
+    /**
+     * 获取住建-安全检查记录详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionSafetyinspectionrecordsService.selectCenterdataTHousingconstructionSafetyinspectionrecordsById(id));
+    }
+
+    /**
+     * 新增住建-安全检查记录
+     */
+    @Log(title = "住建-安全检查记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionSafetyinspectionrecords centerdataTHousingconstructionSafetyinspectionrecords) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionrecordsService.insertCenterdataTHousingconstructionSafetyinspectionrecords(centerdataTHousingconstructionSafetyinspectionrecords));
+    }
+
+    /**
+     * 修改住建-安全检查记录
+     */
+    @Log(title = "住建-安全检查记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionSafetyinspectionrecords centerdataTHousingconstructionSafetyinspectionrecords) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionrecordsService.updateCenterdataTHousingconstructionSafetyinspectionrecords(centerdataTHousingconstructionSafetyinspectionrecords));
+    }
+
+    /**
+     * 删除住建-安全检查记录
+     */
+    @Log(title = "住建-安全检查记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionrecordsService.deleteCenterdataTHousingconstructionSafetyinspectionrecordsByIds(ids));
+    }
+}

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

@@ -0,0 +1,91 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSafetyinspectionrecordsdetail;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSafetyinspectionrecordsdetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 住建-安全检查记录明细Controller
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/safetyinspectionrecordsdetail")
+public class CenterdataTHousingconstructionSafetyinspectionrecordsdetailController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionSafetyinspectionrecordsdetailService centerdataTHousingconstructionSafetyinspectionrecordsdetailService;
+
+    /**
+     * 查询住建-安全检查记录明细列表
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionrecordsdetail:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionSafetyinspectionrecordsdetail centerdataTHousingconstructionSafetyinspectionrecordsdetail) {
+        startPage();
+        List<CenterdataTHousingconstructionSafetyinspectionrecordsdetail> list = centerdataTHousingconstructionSafetyinspectionrecordsdetailService.selectCenterdataTHousingconstructionSafetyinspectionrecordsdetailList(centerdataTHousingconstructionSafetyinspectionrecordsdetail);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出住建-安全检查记录明细列表
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionrecordsdetail:export")
+    @Log(title = "住建-安全检查记录明细", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionSafetyinspectionrecordsdetail centerdataTHousingconstructionSafetyinspectionrecordsdetail) {
+        List<CenterdataTHousingconstructionSafetyinspectionrecordsdetail> list = centerdataTHousingconstructionSafetyinspectionrecordsdetailService.selectCenterdataTHousingconstructionSafetyinspectionrecordsdetailList(centerdataTHousingconstructionSafetyinspectionrecordsdetail);
+        ExcelUtil<CenterdataTHousingconstructionSafetyinspectionrecordsdetail> util = new ExcelUtil<CenterdataTHousingconstructionSafetyinspectionrecordsdetail>(CenterdataTHousingconstructionSafetyinspectionrecordsdetail.class);
+        util.exportExcel(response, list, "住建-安全检查记录明细数据");
+    }
+
+    /**
+     * 获取住建-安全检查记录明细详细信息
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionrecordsdetail:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionSafetyinspectionrecordsdetailService.selectCenterdataTHousingconstructionSafetyinspectionrecordsdetailById(id));
+    }
+
+    /**
+     * 新增住建-安全检查记录明细
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionrecordsdetail:add")
+    @Log(title = "住建-安全检查记录明细", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionSafetyinspectionrecordsdetail centerdataTHousingconstructionSafetyinspectionrecordsdetail) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionrecordsdetailService.insertCenterdataTHousingconstructionSafetyinspectionrecordsdetail(centerdataTHousingconstructionSafetyinspectionrecordsdetail));
+    }
+
+    /**
+     * 修改住建-安全检查记录明细
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionrecordsdetail:edit")
+    @Log(title = "住建-安全检查记录明细", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionSafetyinspectionrecordsdetail centerdataTHousingconstructionSafetyinspectionrecordsdetail) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionrecordsdetailService.updateCenterdataTHousingconstructionSafetyinspectionrecordsdetail(centerdataTHousingconstructionSafetyinspectionrecordsdetail));
+    }
+
+    /**
+     * 删除住建-安全检查记录明细
+     */
+    @RequiresPermissions("housingconstruction:safetyinspectionrecordsdetail:remove")
+    @Log(title = "住建-安全检查记录明细", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(centerdataTHousingconstructionSafetyinspectionrecordsdetailService.deleteCenterdataTHousingconstructionSafetyinspectionrecordsdetailByIds(ids));
+    }
+}

+ 119 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSteelcylinderController.java

@@ -0,0 +1,119 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSteelcylinder;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSteelcylinderLog;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSteelcylinderService;
+import com.sooka.sponest.data.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 钢瓶基础数据Controller
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/steelcylinder")
+public class CenterdataTHousingconstructionSteelcylinderController extends BaseController {
+
+    @Autowired
+    private ICenterdataTHousingconstructionSteelcylinderService centerdataTHousingconstructionSteelcylinderService;
+
+    /**
+     * 查询钢瓶基础数据列表
+     */
+    @RequiresPermissions("data:steelcylinder:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionSteelcylinder centerdataTHousingconstructionSteelcylinder) {
+        startPage();
+        List<CenterdataTHousingconstructionSteelcylinder> list = centerdataTHousingconstructionSteelcylinderService.selectCenterdataTHousingconstructionSteelcylinderList(centerdataTHousingconstructionSteelcylinder);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出钢瓶基础数据列表
+     */
+    @RequiresPermissions("data:steelcylinder:export")
+    @Log(title = "钢瓶基础数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionSteelcylinder centerdataTHousingconstructionSteelcylinder) {
+        List<CenterdataTHousingconstructionSteelcylinder> list = centerdataTHousingconstructionSteelcylinderService.selectCenterdataTHousingconstructionSteelcylinderList(centerdataTHousingconstructionSteelcylinder);
+        ExcelUtil<CenterdataTHousingconstructionSteelcylinder> util = new ExcelUtil<CenterdataTHousingconstructionSteelcylinder>(CenterdataTHousingconstructionSteelcylinder.class);
+        util.exportExcel(response, list, "钢瓶基础数据数据");
+    }
+
+    /**
+     * 获取钢瓶基础数据详细信息
+     */
+    @RequiresPermissions("data:steelcylinder:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionSteelcylinderService.selectCenterdataTHousingconstructionSteelcylinderById(id));
+    }
+
+    /**
+     * 新增钢瓶基础数据
+     */
+    @RequiresPermissions("data:steelcylinder:add")
+    @Log(title = "钢瓶基础数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CenterdataTHousingconstructionSteelcylinder centerdataTHousingconstructionSteelcylinder) {
+        return toAjax(centerdataTHousingconstructionSteelcylinderService.insertCenterdataTHousingconstructionSteelcylinder(centerdataTHousingconstructionSteelcylinder));
+    }
+
+    /**
+     * 修改钢瓶基础数据
+     */
+    @RequiresPermissions("data:steelcylinder:edit")
+    @Log(title = "钢瓶基础数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CenterdataTHousingconstructionSteelcylinder centerdataTHousingconstructionSteelcylinder) {
+        return toAjax(centerdataTHousingconstructionSteelcylinderService.updateCenterdataTHousingconstructionSteelcylinder(centerdataTHousingconstructionSteelcylinder));
+    }
+
+    /**
+     * 删除钢瓶基础数据
+     */
+    @RequiresPermissions("data:steelcylinder:remove")
+    @Log(title = "钢瓶基础数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        int num = centerdataTHousingconstructionSteelcylinderService.deleteCenterdataTHousingconstructionSteelcylinderByIds(ids);
+        if (num == -1) {
+            return AjaxResult.error("运营中的钢瓶不可删除!");
+        }
+        return toAjax(num);
+    }
+
+    /*
+    * 钢瓶列表(不分页)
+    *
+    * @author 韩福成
+    * @date 2024/7/31 下午2:17
+    */
+    @GetMapping("/getSteelcylinderList")
+    public AjaxResult getSteelcylinderList(CenterdataTHousingconstructionSteelcylinder centerdataTHousingconstructionSteelcylinder) {
+        List<CenterdataTHousingconstructionSteelcylinder> list = centerdataTHousingconstructionSteelcylinderService.selectCenterdataTHousingconstructionSteelcylinderList(centerdataTHousingconstructionSteelcylinder);
+        return AjaxResult.success(list);
+    }
+
+
+    @RequiresPermissions("data:steelcylinder:list")
+    @GetMapping("/listByUserId")
+    public TableDataInfo listByUserId(CenterdataTHousingconstructionSteelcylinderLog centerdataTHousingconstructionSteelcylinder) {
+        startPage();
+        List<Map<String, Object>> list = centerdataTHousingconstructionSteelcylinderService.listByUserId(centerdataTHousingconstructionSteelcylinder);
+        return getDataTable(list);
+    }
+}

+ 245 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionSteelcylinderLogController.java

@@ -0,0 +1,245 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionRealnameuser;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSteelcylinder;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSteelcylinderLog;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionAttachService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionRealnameuserService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSteelcylinderLogService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSteelcylinderService;
+import com.sooka.sponest.data.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 钢瓶日志Controller
+ *
+ * @author ruoyi
+ * @date 2024-07-30
+ */
+@RestController
+@RequestMapping("/steelcylinderLog")
+public class CenterdataTHousingconstructionSteelcylinderLogController extends BaseController {
+    @Autowired
+    private ICenterdataTHousingconstructionSteelcylinderLogService centerdataTHousingconstructionSteelcylinderLogService;
+
+    @Autowired
+    private ICenterdataTHousingconstructionSteelcylinderService centerdataTHousingconstructionSteelcylinderService;
+
+    @Autowired
+    private ICenterdataTHousingconstructionAttachService attachService;
+
+    @Autowired
+    private ICenterdataTHousingconstructionRealnameuserService realnameuserService;
+    /**
+     * 查询钢瓶日志列表
+     */
+    @RequiresPermissions("data:steelcylinderLog:list")
+    @GetMapping("/list")
+    public TableDataInfo list(CenterdataTHousingconstructionSteelcylinderLog centerdataTHousingconstructionSteelcylinderLog) {
+        startPage();
+        List<CenterdataTHousingconstructionSteelcylinderLog> list = centerdataTHousingconstructionSteelcylinderLogService.selectCenterdataTHousingconstructionSteelcylinderLogList(centerdataTHousingconstructionSteelcylinderLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出钢瓶日志列表
+     */
+    @RequiresPermissions("data:steelcylinderLog:export")
+    @Log(title = "钢瓶日志", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CenterdataTHousingconstructionSteelcylinderLog centerdataTHousingconstructionSteelcylinderLog) {
+        List<CenterdataTHousingconstructionSteelcylinderLog> list = centerdataTHousingconstructionSteelcylinderLogService.selectCenterdataTHousingconstructionSteelcylinderLogList(centerdataTHousingconstructionSteelcylinderLog);
+        ExcelUtil<CenterdataTHousingconstructionSteelcylinderLog> util = new ExcelUtil<CenterdataTHousingconstructionSteelcylinderLog>(CenterdataTHousingconstructionSteelcylinderLog.class);
+        util.exportExcel(response, list, "钢瓶日志数据");
+    }
+
+    /**
+     * 获取钢瓶日志详细信息
+     */
+    @RequiresPermissions("data:steelcylinderLog:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(centerdataTHousingconstructionSteelcylinderLogService.selectCenterdataTHousingconstructionSteelcylinderLogById(id));
+    }
+
+    /*
+    * 按钢瓶id查询最新日志
+    *
+    * @author 韩福成
+    * @date 2024/8/1 上午11:10
+    */
+    @GetMapping(value = "getSteelcylinderLog/{steelcylinderId}")
+    public AjaxResult getSteelcylinderLog(@PathVariable("steelcylinderId") String steelcylinderId) {
+        return AjaxResult.success(centerdataTHousingconstructionSteelcylinderLogService.selectBySteelcylinderId(steelcylinderId));
+    }
+
+    /*
+    * 添加钢瓶流转信息
+    *
+    * @author 韩福成
+    * @date 2024/7/31 下午5:21
+    */
+    @PostMapping(value = "/addLog")
+    public AjaxResult addLog(@RequestBody CenterdataTHousingconstructionSteelcylinderLog steelcylinderLog) {
+        //修改用户经纬度
+        if (StringUtils.isNotEmpty(steelcylinderLog.getLongitude())){
+            CenterdataTHousingconstructionRealnameuser realnameuser = new CenterdataTHousingconstructionRealnameuser();
+            realnameuser.setId(Long.valueOf(steelcylinderLog.getJoinHouseId()));
+            realnameuser.setLongitude(steelcylinderLog.getLongitude());
+            realnameuser.setLatitude(steelcylinderLog.getLatitude());
+            realnameuserService.updateCenterdataTHousingconstructionRealnameuser(realnameuser);
+        }
+        CenterdataTHousingconstructionSteelcylinder steelcylinder = centerdataTHousingconstructionSteelcylinderService.selectCenterdataTHousingconstructionSteelcylinderById(steelcylinderLog.getSteelcylinderId());
+        //修改钢瓶状态
+        CenterdataTHousingconstructionSteelcylinder centerdataTHousingconstructionSteelcylinder = new CenterdataTHousingconstructionSteelcylinder();
+        centerdataTHousingconstructionSteelcylinder.setId(steelcylinderLog.getSteelcylinderId());
+        centerdataTHousingconstructionSteelcylinder.setState(steelcylinderLog.getState());
+        centerdataTHousingconstructionSteelcylinderService.updateCenterdataTHousingconstructionSteelcylinder(centerdataTHousingconstructionSteelcylinder);
+        //按钢瓶id查询最新日志
+        CenterdataTHousingconstructionSteelcylinderLog log = centerdataTHousingconstructionSteelcylinderLogService.selectBySteelcylinderId(steelcylinderLog.getSteelcylinderId());
+        if (log ==null){
+            steelcylinderLog.setId(IdUtils.fastSimpleUUID());
+            //当流转状态为检查或者入户时新增附件
+            extracted(steelcylinderLog, steelcylinderLog);
+            return toAjax(centerdataTHousingconstructionSteelcylinderLogService.insertCenterdataTHousingconstructionSteelcylinderLog(steelcylinderLog));
+        }else {
+            //当钢瓶状态为回收或流转状态为检查时新增一条日志
+            if (steelcylinder.getState().equals("state_5")&&steelcylinderLog.getState().equals("state_6")){
+                steelcylinderLog.setId(IdUtils.fastSimpleUUID());
+                //当流转状态为检查或者入户时新增附件
+                extracted(steelcylinderLog, steelcylinderLog);
+                steelcylinderLog.setJoinWarehouseTime(log.getJoinWarehouseTime());
+                return toAjax(centerdataTHousingconstructionSteelcylinderLogService.insertCenterdataTHousingconstructionSteelcylinderLog(steelcylinderLog));
+            }else {
+                //当流转状态为检查或者入户时新增附件
+                extracted(steelcylinderLog, log);
+                steelcylinderLog.setId(log.getId());
+                return toAjax(centerdataTHousingconstructionSteelcylinderLogService.updateCenterdataTHousingconstructionSteelcylinderLog(steelcylinderLog));
+            }
+        }
+    }
+
+    private void extracted(CenterdataTHousingconstructionSteelcylinderLog steelcylinderLog, CenterdataTHousingconstructionSteelcylinderLog log) {
+        if (steelcylinderLog.getState().equals("state_4")|| steelcylinderLog.getState().equals("state_6")){
+            List<Map<String,Object>> list = new ArrayList<>();
+            if (StringUtils.isNotEmpty(steelcylinderLog.getPicture())) {
+                String[] paths = steelcylinderLog.getPicture().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","picture");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getWorkCard())) {
+                String[] paths = steelcylinderLog.getWorkCard().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","workCard");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getPitfall())) {
+                String[] paths = steelcylinderLog.getPitfall().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","pitfall");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getPitfallDetails())) {
+                String[] paths = steelcylinderLog.getPitfallDetails().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","pitfallDetails");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getInformation())) {
+                String[] paths = steelcylinderLog.getInformation().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","information");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getSteelCylinder())) {
+                String[] paths = steelcylinderLog.getSteelCylinder().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","steelCylinder");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getTailpiece())) {
+                String[] paths = steelcylinderLog.getTailpiece().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","tailpiece");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getInstrument())) {
+                String[] paths = steelcylinderLog.getInstrument().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","instrument");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getValve())) {
+                String[] paths = steelcylinderLog.getValve().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","valve");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getWarningDevice())) {
+                String[] paths = steelcylinderLog.getWarningDevice().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","warningDevice");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(steelcylinderLog.getEnvironment())) {
+                String[] paths = steelcylinderLog.getEnvironment().split(",");
+                for (String part : paths) {
+                    Map<String,Object> photo = new HashMap<>();
+                    photo.put("key","environment");
+                    photo.put("value", part);
+                    list.add(photo);
+                }
+            }
+            if (StringUtils.isNotEmpty(list)) {
+                attachService.addAttach(list, log.getId());
+            }
+        }
+    }
+
+}

+ 97 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionStoragetankController.java

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

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

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

+ 303 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionViewController.java

@@ -0,0 +1,303 @@
+package com.sooka.sponest.data.housingconstruction.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.sooka.sponest.data.housingconstruction.domain.*;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSteelcylinderLogService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionViewService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/*
+* 住建-可视化
+*
+* @author 韩福成
+* @date 2024/8/1 下午3:01
+*/
+@RestController
+@RequestMapping("/housingView")
+public class CenterdataTHousingconstructionViewController extends BaseController {
+
+    @Autowired
+    private ICenterdataTHousingconstructionViewService housingconstructionViewService;
+    @Autowired
+    private ICenterdataTHousingconstructionSteelcylinderLogService steelcylinderLogService;
+    /*
+    * 液化气罐总数
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午3:03
+    */
+    @GetMapping("/getGasCylinderList")
+    public R getGasCylinderList(CenterdataTHousingconstructionSteelcylinder steelcylinder) {
+        return R.ok(housingconstructionViewService.getGasCylinderList(steelcylinder));
+    }
+
+    /*
+     * 从业人员岗位统计
+     *
+     * @author 韩福成
+     * @date 2024/8/2 上午8:46
+     */
+    @GetMapping("/getPractitionerPostList")
+    public R getPractitionerPostList(CenterdataTHousingconstructionPractitioner practitioner) {
+        return R.ok(housingconstructionViewService.getPractitionerPostList(practitioner));
+    }
+
+    /*
+    * 订单分析
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午3:28
+    */
+    @GetMapping("/getOrderList")
+    public R getOrderList(CenterdataTHousingconstructionSteelcylinder steelcylinder) {
+        return R.ok(housingconstructionViewService.getOrderList(steelcylinder));
+    }
+
+    /*
+    * 车辆分析
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午4:18
+    */
+    @GetMapping("/getCarList")
+    public R getCarList(CenterdataTHousingconstructionCar car) {
+        return R.ok(housingconstructionViewService.getCarList(car));
+    }
+
+    /*
+    * 用户分析
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午4:34
+    */
+    @GetMapping("/getUserList")
+    public R getUserList(CenterdataTHousingconstructionRealnameuser realnameuser) {
+        return R.ok(housingconstructionViewService.getUserList(realnameuser));
+    }
+
+    /*
+    * 按规格统计钢瓶
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午4:49
+    */
+    @GetMapping("/getSteelcylinderList")
+    public R getSteelcylinderList(CenterdataTHousingconstructionSteelcylinder steelcylinder) {
+        return R.ok(housingconstructionViewService.getSteelcylinderList(steelcylinder));
+    }
+
+    /*
+    * 从业人员、配送员、实名用户 统计
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午6:31
+    */
+    @GetMapping("/getThreeUserList")
+    public R getThreeUserList(CenterdataTHousingconstructionRealnameuser realnameuser) {
+        return R.ok(housingconstructionViewService.getThreeUserList(realnameuser));
+    }
+
+    /*
+    * 实名用户(个体、商户)
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午5:08
+    */
+    @GetMapping("/getRealnameuserList")
+    public R getRealnameuserList(CenterdataTHousingconstructionRealnameuser realnameuser) {
+        return R.ok(housingconstructionViewService.getRealnameuserList(realnameuser));
+    }
+
+    /*
+    * 送气工作人员
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午5:31
+    */
+    @GetMapping("/getDeliverymanList")
+    public R getDeliverymanList(CenterdataTHousingconstructionDeliveryPersonnel deliveryPersonnel) {
+        return R.ok(housingconstructionViewService.getDeliverymanList(deliveryPersonnel));
+    }
+
+    /*
+    * 企业库
+    *
+    * @author 韩福成
+    * @date 2024/8/1 下午7:24
+    */
+    @GetMapping("/getEnterpriseList")
+    public R getEnterpriseList(CenterdataTHousingconstructionEnterprise enterprise) {
+        return R.ok(housingconstructionViewService.getEnterpriseList(enterprise));
+    }
+
+    /*
+    * 储罐列表
+    *
+    * @author 韩福成
+    * @date 2024/8/2 上午10:59
+    */
+    @GetMapping("/getStoragetankList")
+    public R getStoragetankList(CenterdataTHousingconstructionStoragetank storagetank) {
+        return R.ok(housingconstructionViewService.getStoragetankList(storagetank));
+    }
+
+    /*
+    * 钢瓶当日状态统计
+    *
+    * @author 韩福成
+    * @date 2024/8/2 下午2:10
+    */
+    @GetMapping("/getSteelcylinderStateList")
+    public R getSteelcylinderStateList(CenterdataTHousingconstructionSteelcylinder steelcylinder) {
+        return R.ok(housingconstructionViewService.getSteelcylinderStateList(steelcylinder));
+    }
+
+    /*
+    * 入户用户列表
+    *
+    * @author 韩福成
+    * @date 2024/8/2 下午3:46
+    */
+    @GetMapping("/getJoinHouseUserList")
+    public TableDataInfo getJoinHouseUserList(CenterdataTHousingconstructionSteelcylinder steelcylinder) {
+        startPage();
+        List<Map<String,Object>> list = housingconstructionViewService.getJoinHouseUserList(steelcylinder);
+        return getDataTable(list);
+    }
+
+    /*
+    * 入库记录
+    *
+    * @author 韩福成
+    * @date 2024/8/2 下午4:36
+    */
+    @GetMapping("/getGassourceList")
+    public R getGassourceList(CenterdataTHousingconstructionSteelcylinder steelcylinder) {
+        return R.ok(housingconstructionViewService.getGassourceList(steelcylinder));
+    }
+
+    /*
+    * 资源落点
+    *
+    * @author 韩福成
+    * @date 2024/8/5 上午9:13
+    */
+    @GetMapping("/getResourcePoint")
+    public R getResourcePoint(CenterdataTHousingconstructionStoragetank storagetank) {
+        return R.ok(housingconstructionViewService.getResourcePoint(storagetank));
+    }
+
+    /*
+    * 企业生产报告
+    *
+    * @author 韩福成
+    * @date 2024/9/27 下午3:08
+    */
+    @GetMapping("/getReport")
+    public R getReport(CenterdataTHousingconstructionEnterpriseproductionreport enterpriseproductionreport) {
+        return R.ok(housingconstructionViewService.getReport(enterpriseproductionreport));
+    }
+
+    /*
+    * 安全检查记录列表
+    *
+    * @author 韩福成
+    * @date 2024/9/27 下午3:37
+    */
+    @GetMapping("/getInspectionRecords")
+    public R getInspectionRecords(CenterdataTHousingconstructionSafetyinspectionrecords enterpriseproductionreport) {
+        return R.ok(housingconstructionViewService.getInspectionRecords(enterpriseproductionreport));
+    }
+
+    /*
+    * 安全检查项
+    *
+    * @author 韩福成
+    * @date 2024/9/27 下午4:27
+    */
+    @GetMapping("/getItems")
+    public R getItems(CenterdataTHousingconstructionSafetyinspectionrecordsdetail safetyinspectionrecordsdetail) {
+        return R.ok(housingconstructionViewService.getItems(safetyinspectionrecordsdetail));
+    }
+
+    @GetMapping("/getNewUserSumByEnterpriseId")
+    public AjaxResult getNewUserSumByEnterpriseId(CenterdataTHousingconstructionSteelcylinder steelcylinder){
+        return AjaxResult.success(housingconstructionViewService.getNewUserSumByEnterpriseId(steelcylinder));
+    }
+
+    /*
+    * 查询企业资质文件
+    *
+    * @author 韩福成
+    * @date 2024/10/29 下午3:16
+    */
+    @GetMapping("/getProductionReport")
+    public AjaxResult getProductionReport(CenterdataTHousingconstructionSteelcylinder steelcylinder){
+        return AjaxResult.success(housingconstructionViewService.getProductionReport(steelcylinder));
+    }
+
+    /*
+    * 钢瓶流转信息
+    *
+    * @author 韩福成
+    * @date 2024/11/5 下午4:12
+    */
+    @GetMapping("/getCirculation")
+    public AjaxResult getCirculation(CenterdataTHousingconstructionSteelcylinderLog log){
+        return AjaxResult.success(housingconstructionViewService.getCirculation(log));
+    }
+
+    /*
+    * 查看附件
+    *
+    * @author 韩福成
+    * @date 2024/11/5 下午4:34
+    */
+    @GetMapping("/getAttach")
+    public AjaxResult getAttach(CenterdataTHousingconstructionAttach attach){
+        return AjaxResult.success(housingconstructionViewService.getAttach(attach));
+    }
+
+    /*
+    * 车辆共享特殊标注
+    *
+    * @author 韩福成
+    * @date 2024/12/30 下午2:25
+    */
+    @GetMapping("/getCarShare")
+    public AjaxResult getCarShare(){
+        return AjaxResult.success(housingconstructionViewService.getCarShare());
+    }
+
+    /*
+    * 查询车辆当日运输入户钢瓶
+    *
+    * @author 韩福成
+    * @date 2024/12/30 下午2:35
+    */
+    @GetMapping("/getSteelCylinderByCar")
+    public AjaxResult getSteelCylinderByCar(CenterdataTHousingconstructionCar car){
+        return AjaxResult.success(housingconstructionViewService.getSteelCylinderByCar(car));
+    }
+
+    /*
+    * 选定区域
+    *
+    * @author 韩福成
+    * @date 2024/12/30 下午2:55
+    */
+    @GetMapping("/getSelectedArea")
+    public R getSelectedArea(CenterdataTHousingconstructionStoragetank storagetank) {
+        return R.ok(housingconstructionViewService.getSelectedArea(storagetank));
+    }
+
+}

+ 16 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/BO/SteelcylinderBO.java

@@ -0,0 +1,16 @@
+package com.sooka.sponest.data.housingconstruction.domain.BO;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class SteelcylinderBO {
+    private String enterpriseId;
+    private String enterpriseName;
+    private String name;
+    private String threshold;
+    private String gasAddress;
+    private String longitude;
+    private String latitude;
+}

+ 101 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionAttach.java

@@ -0,0 +1,101 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 住建-附件对象 centerdata_t_housingconstruction_attach
+ *
+ * @author lg
+ * @date 2024-07-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AllArgsConstructor
+@NoArgsConstructor
+public class CenterdataTHousingconstructionAttach extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    private Long id;
+
+    /**
+     * 业务id
+     */
+    private String busId;
+
+    /**
+     * 附件属性
+     */
+    private String dictType;
+
+    /**
+     * 附件属性明细
+     */
+    private String dictValue;
+
+    /**
+     * 附件路径
+     */
+    private String attachPath;
+
+    /**
+     * 附件名称
+     */
+    private String fileName;
+
+    /**
+     * 排序
+     */
+    private Long attachSorts;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+
+    public CenterdataTHousingconstructionAttach(String busId, String dictType, String dictValue, String attachPath, String fileName, Long attachSorts) {
+        this.busId = busId;
+        this.dictType = dictType;
+        this.dictValue = dictValue;
+        this.attachPath = attachPath;
+        this.fileName = fileName;
+        this.attachSorts = attachSorts;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("busId", getBusId())
+                .append("dictType", getDictType())
+                .append("dictValue", getDictValue())
+                .append("attachPath", getAttachPath())
+                .append("fileName", getFileName())
+                .append("attachSorts", getAttachSorts())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .toString();
+    }
+}

+ 248 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionCar.java

@@ -0,0 +1,248 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 车辆数据对象 centerdata_t_housingconstruction_car
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public class CenterdataTHousingconstructionCar extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /**
+     * 企业id
+     */
+    private String enterpriseId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 车牌号
+     */
+    @Excel(name = "车牌号")
+    private String carNumber;
+
+    /**
+     * 管理人员id
+     */
+    private String managerId;
+
+    /**
+     * 管理人员名称
+     */
+    @Excel(name = "管理人员名称")
+    private String managerName;
+
+    /**
+     * 司机id
+     */
+    private String driverId;
+
+    /**
+     * 司机名称
+     */
+    @Excel(name = "司机名称")
+    private String driverName;
+
+    /**
+     * 押运员id
+     */
+    private String escortId;
+
+    /**
+     * 押运员名称
+     */
+    @Excel(name = "押运员名称")
+    private String escortName;
+
+    /**
+     * 应急装备
+     */
+    @Excel(name = "应急装备")
+    private String emergencyEquipment;
+
+    /**
+     * 安全防护措施
+     */
+    @Excel(name = "安全防护措施")
+    private String protection;
+
+    /**
+     * 时速
+     */
+    @Excel(name = "时速")
+    private String speed;
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setEnterpriseId(String enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+    public String getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseName(String enterpriseName) {
+        this.enterpriseName = enterpriseName;
+    }
+
+    public String getEnterpriseName() {
+        return enterpriseName;
+    }
+
+    public void setCarNumber(String carNumber) {
+        this.carNumber = carNumber;
+    }
+
+    public String getCarNumber() {
+        return carNumber;
+    }
+
+    public void setManagerId(String managerId) {
+        this.managerId = managerId;
+    }
+
+    public String getManagerId() {
+        return managerId;
+    }
+
+    public void setManagerName(String managerName) {
+        this.managerName = managerName;
+    }
+
+    public String getManagerName() {
+        return managerName;
+    }
+
+    public void setDriverId(String driverId) {
+        this.driverId = driverId;
+    }
+
+    public String getDriverId() {
+        return driverId;
+    }
+
+    public void setDriverName(String driverName) {
+        this.driverName = driverName;
+    }
+
+    public String getDriverName() {
+        return driverName;
+    }
+
+    public void setEscortId(String escortId) {
+        this.escortId = escortId;
+    }
+
+    public String getEscortId() {
+        return escortId;
+    }
+
+    public void setEscortName(String escortName) {
+        this.escortName = escortName;
+    }
+
+    public String getEscortName() {
+        return escortName;
+    }
+
+    public void setEmergencyEquipment(String emergencyEquipment) {
+        this.emergencyEquipment = emergencyEquipment;
+    }
+
+    public String getEmergencyEquipment() {
+        return emergencyEquipment;
+    }
+
+    public void setProtection(String protection) {
+        this.protection = protection;
+    }
+
+    public String getProtection() {
+        return protection;
+    }
+
+    public void setSpeed(String speed) {
+        this.speed = speed;
+    }
+
+    public String getSpeed() {
+        return speed;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("carNumber", getCarNumber())
+                .append("managerId", getManagerId())
+                .append("managerName", getManagerName())
+                .append("driverId", getDriverId())
+                .append("driverName", getDriverName())
+                .append("escortId", getEscortId())
+                .append("escortName", getEscortName())
+                .append("emergencyEquipment", getEmergencyEquipment())
+                .append("protection", getProtection())
+                .append("speed", getSpeed())
+                .toString();
+    }
+}

+ 269 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionDeliveryPersonnel.java

@@ -0,0 +1,269 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+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;
+
+/**
+ * 配送人员对象 centerdata_t_housingconstruction_delivery_personnel
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public class CenterdataTHousingconstructionDeliveryPersonnel extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /**
+     * 企业id
+     */
+    private String enterpriseId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 所属站点
+     */
+    @Excel(name = "所属站点")
+    private String site;
+
+    /**
+     * 员工代码
+     */
+    @Excel(name = "员工代码")
+    private String staffCode;
+
+    /**
+     * 员工姓名
+     */
+    @Excel(name = "员工姓名")
+    private String staffName;
+
+    /**
+     * 电话号
+     */
+    @Excel(name = "电话号")
+    private String phone;
+
+    /**
+     * 身份证
+     */
+    @Excel(name = "身份证")
+    private String card;
+
+    /**
+     * 岗位
+     */
+    @Excel(name = "岗位",dictType = "personnel_post")
+    private String post;
+
+    /**
+     * 登记时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "登记时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date registerTime;
+
+    /**
+     * 行政区域
+     */
+    @Excel(name = "行政区域")
+    private String area;
+
+    //劳动合同
+    private String laborContract;
+
+    //社会保险证明
+    private String insurance;
+
+    //培训考核合格证明
+    private String assessment;
+
+    //送气服务证
+    private String airCard;
+
+    public String getLaborContract() {
+        return laborContract;
+    }
+
+    public void setLaborContract(String laborContract) {
+        this.laborContract = laborContract;
+    }
+
+    public String getInsurance() {
+        return insurance;
+    }
+
+    public void setInsurance(String insurance) {
+        this.insurance = insurance;
+    }
+
+    public String getAssessment() {
+        return assessment;
+    }
+
+    public void setAssessment(String assessment) {
+        this.assessment = assessment;
+    }
+
+    public String getAirCard() {
+        return airCard;
+    }
+
+    public void setAirCard(String airCard) {
+        this.airCard = airCard;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setEnterpriseId(String enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+    public String getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseName(String enterpriseName) {
+        this.enterpriseName = enterpriseName;
+    }
+
+    public String getEnterpriseName() {
+        return enterpriseName;
+    }
+
+    public void setSite(String site) {
+        this.site = site;
+    }
+
+    public String getSite() {
+        return site;
+    }
+
+    public void setStaffCode(String staffCode) {
+        this.staffCode = staffCode;
+    }
+
+    public String getStaffCode() {
+        return staffCode;
+    }
+
+    public void setStaffName(String staffName) {
+        this.staffName = staffName;
+    }
+
+    public String getStaffName() {
+        return staffName;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setCard(String card) {
+        this.card = card;
+    }
+
+    public String getCard() {
+        return card;
+    }
+
+    public void setPost(String post) {
+        this.post = post;
+    }
+
+    public String getPost() {
+        return post;
+    }
+
+    public void setRegisterTime(Date registerTime) {
+        this.registerTime = registerTime;
+    }
+
+    public Date getRegisterTime() {
+        return registerTime;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("site", getSite())
+                .append("staffCode", getStaffCode())
+                .append("staffName", getStaffName())
+                .append("phone", getPhone())
+                .append("card", getCard())
+                .append("post", getPost())
+                .append("registerTime", getRegisterTime())
+                .append("area", getArea())
+                .toString();
+    }
+}

+ 43 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionDeliveryPersonnelLonLat.java

@@ -0,0 +1,43 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.*;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 配送人员对象历史坐标
+ *
+ * @author LG
+ * @date 2024年11月13日
+ */
+@Setter
+@Getter
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class CenterdataTHousingconstructionDeliveryPersonnelLonLat extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+    /**
+     * 配送员id
+     */
+    private String personnelId;
+    /**
+     * 经度
+     */
+    private String longitude;
+    /**
+     * 纬度
+     */
+    private String latitude;
+
+}

+ 148 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionEnterprise.java

@@ -0,0 +1,148 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 住建-企业信息对象 centerdata_t_housingconstruction_enterprise
+ *
+ * @author LG
+ * @date 2024-07-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CenterdataTHousingconstructionEnterprise extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 企业id
+     */
+    private String id;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 企业行政区域
+     */
+    @Excel(name = "企业行政区域")
+    private String enterpriseAdministrativeArea;
+
+    /**
+     * 法人代表
+     */
+    @Excel(name = "法人代表")
+    private String legalRepresentative;
+
+    /**
+     * 登记注册地址
+     */
+    @Excel(name = "登记注册地址")
+    private String registeredAddress;
+
+    /**
+     * 经营类别
+     */
+    @Excel(name = "经营类别")
+    private String businessCategory;
+
+    /**
+     * 经营区域
+     */
+    @Excel(name = "经营区域")
+    private String operatingArea;
+
+    /**
+     * 发证时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "发证时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date issuingTime;
+
+    /**
+     * 许可期限开始时间
+     */
+    @Excel(name = "许可期限开始时间")
+    private String licensePeriodStart;
+
+    /**
+     * 许可期限结束时间
+     */
+    @Excel(name = "许可期限结束时间")
+    private String licensePeriodEnd;
+
+    /**
+     * 发证机关
+     */
+    @Excel(name = "发证机关")
+    private String issuingAuthority;
+
+    /**
+     * 经度
+     */
+    @Excel(name = "经度")
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    @Excel(name = "纬度")
+    private String latitude;
+
+    /**
+     * 所属部门
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    private String attachPaths;
+
+    /**
+     * 设备中间表主键
+     */
+//    private List<String> deviceList;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("enterpriseAdministrativeArea", getEnterpriseAdministrativeArea())
+                .append("legalRepresentative", getLegalRepresentative())
+                .append("registeredAddress", getRegisteredAddress())
+                .append("businessCategory", getBusinessCategory())
+                .append("operatingArea", getOperatingArea())
+                .append("issuingTime", getIssuingTime())
+                .append("licensePeriodStart", getLicensePeriodStart())
+                .append("licensePeriodEnd", getLicensePeriodEnd())
+                .append("issuingAuthority", getIssuingAuthority())
+                .append("longitude", getLongitude())
+                .append("latitude", getLatitude())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .toString();
+    }
+}

+ 87 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionEnterpriseproductionreport.java

@@ -0,0 +1,87 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 企业生产报告对象 centerdata_t_housingconstruction_enterpriseproductionreport
+ *
+ * @author ruoyi
+ * @date 2024-08-05
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class CenterdataTHousingconstructionEnterpriseproductionreport extends
+        BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 数据id
+     */
+    private String id;
+
+    /**
+     * 企业id
+     */
+    private String enterpriseId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 报告类型
+     */
+    @Excel(name= "附件类型")
+    private String reportType;
+
+    private String fileName;
+
+//    @Excel(name="附件路径")
+    private String fileUrl;
+
+    /**
+     * 获取数据类型
+     * 1:生产报告
+     * 2:资质文件
+     */
+    private String requestType;
+
+    /**
+     * 更新人姓名
+     */
+    private String updateName;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("reportType", getReportType())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .toString();
+    }
+}

+ 130 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionGassource.java

@@ -0,0 +1,130 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 气源数据对象 centerdata_t_housingconstruction_gassource
+ *
+ * @author LG
+ * @date 2024-08-05
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class CenterdataTHousingconstructionGassource extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 企业id
+     */
+    private String enterpriseId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 来源企业
+     */
+    @Excel(name="来源企业")
+    private String sourceEnterpriseName;
+
+    /**
+     * 来源地
+     */
+    @Excel(name = "来源地")
+    private String address;
+
+    /**
+     * 燃气成分
+     */
+    private String component;
+
+    /**
+     * 燃气成分
+     */
+    @Excel(name = "燃气成分")
+    private String componentLabel;
+
+    /**
+     * 入站时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "入站时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date joinInstationTime;
+
+    /**
+     * 重量
+     */
+    @Excel(name = "重量")
+    private String weight;
+
+    /**
+     * 运输车辆id
+     */
+    private String carId;
+
+    /**
+     * 运输车辆车牌号
+     */
+    @Excel(name = "运输车辆车牌号")
+    private String carNumber;
+
+
+    private String fileName;
+    private String fileUrl;
+
+    private String attachPaths;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("address", getAddress())
+                .append("component", getComponent())
+                .append("joinInstationTime", getJoinInstationTime())
+                .append("weight", getWeight())
+                .append("carNumber", getCarNumber())
+                .toString();
+    }
+}

+ 190 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionInspect.java

@@ -0,0 +1,190 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModelProperty;
+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;
+
+/**
+ * 钢瓶年检对象 centerdata_t_housingconstruction_inspect
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public class CenterdataTHousingconstructionInspect extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /**
+     * 钢瓶id
+     */
+    private String steelcylinderId;
+
+    /**
+     * 钢瓶名称
+     */
+    @Excel(name = "钢瓶名称")
+    private String steelcylinderName;
+
+    /**
+     * 年检时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "年检时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date inspectTime;
+
+    /**
+     * 年检状态
+     */
+    @Excel(name = "年检状态")
+    private String state;
+
+    /**
+     * 年检地点
+     */
+    @Excel(name = "年检地点")
+    private String address;
+
+    /**
+     * 下次年检时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "下次年检时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date nextInspectTime;
+
+    @ApiModelProperty(value = "文件路径", required = false)
+    private String fileUrl;
+
+    @ApiModelProperty(value = "文件名称", required = false)
+    private String fileName;
+
+    public String getFileUrl() {
+        return fileUrl;
+    }
+
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setSteelcylinderId(String steelcylinderId) {
+        this.steelcylinderId = steelcylinderId;
+    }
+
+    public String getSteelcylinderId() {
+        return steelcylinderId;
+    }
+
+    public void setSteelcylinderName(String steelcylinderName) {
+        this.steelcylinderName = steelcylinderName;
+    }
+
+    public String getSteelcylinderName() {
+        return steelcylinderName;
+    }
+
+    public void setInspectTime(Date inspectTime) {
+        this.inspectTime = inspectTime;
+    }
+
+    public Date getInspectTime() {
+        return inspectTime;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setNextInspectTime(Date nextInspectTime) {
+        this.nextInspectTime = nextInspectTime;
+    }
+
+    public Date getNextInspectTime() {
+        return nextInspectTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("steelcylinderId", getSteelcylinderId())
+                .append("steelcylinderName", getSteelcylinderName())
+                .append("inspectTime", getInspectTime())
+                .append("state", getState())
+                .append("address", getAddress())
+                .append("nextInspectTime", getNextInspectTime())
+                .toString();
+    }
+}

+ 262 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionPractitioner.java

@@ -0,0 +1,262 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 从业人员对象 centerdata_t_housingconstruction_practitioner
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public class CenterdataTHousingconstructionPractitioner extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /**
+     * 企业id
+     */
+    private String enterpriseId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 所属站点
+     */
+    @Excel(name = "所属站点")
+    private String site;
+
+    /**
+     * 员工代码
+     */
+    @Excel(name = "员工代码")
+    private String staffCode;
+
+    /**
+     * 员工姓名
+     */
+    @Excel(name = "员工姓名")
+    private String staffName;
+
+    /**
+     * 电话号
+     */
+    @Excel(name = "电话号")
+    private String phone;
+
+    /**
+     * 岗位
+     */
+    @Excel(name = "岗位",dictType = "practitioner_post")
+    private String post;
+
+    /**
+     * 性别
+     */
+    @Excel(name = "性别",dictType = "sys_user_sex")
+    private String sex;
+
+    /**
+     * 登记时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "登记时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date registerTime;
+
+    /**
+     * 年检时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "年检时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date inspectTime;
+
+    /**
+     * 行政区域
+     */
+    @Excel(name = "行政区域")
+    private String area;
+
+    //照片
+    private String photo;
+
+    //上岗证
+    private String workPhoto;
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
+    public String getWorkPhoto() {
+        return workPhoto;
+    }
+
+    public void setWorkPhoto(String workPhoto) {
+        this.workPhoto = workPhoto;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setEnterpriseId(String enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+    public String getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseName(String enterpriseName) {
+        this.enterpriseName = enterpriseName;
+    }
+
+    public String getEnterpriseName() {
+        return enterpriseName;
+    }
+
+    public void setSite(String site) {
+        this.site = site;
+    }
+
+    public String getSite() {
+        return site;
+    }
+
+    public void setStaffCode(String staffCode) {
+        this.staffCode = staffCode;
+    }
+
+    public String getStaffCode() {
+        return staffCode;
+    }
+
+    public void setStaffName(String staffName) {
+        this.staffName = staffName;
+    }
+
+    public String getStaffName() {
+        return staffName;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPost(String post) {
+        this.post = post;
+    }
+
+    public String getPost() {
+        return post;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setRegisterTime(Date registerTime) {
+        this.registerTime = registerTime;
+    }
+
+    public Date getRegisterTime() {
+        return registerTime;
+    }
+
+    public void setInspectTime(Date inspectTime) {
+        this.inspectTime = inspectTime;
+    }
+
+    public Date getInspectTime() {
+        return inspectTime;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("site", getSite())
+                .append("staffCode", getStaffCode())
+                .append("staffName", getStaffName())
+                .append("phone", getPhone())
+                .append("post", getPost())
+                .append("sex", getSex())
+                .append("registerTime", getRegisterTime())
+                .append("inspectTime", getInspectTime())
+                .append("area", getArea())
+                .toString();
+    }
+}

+ 137 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionRealnameuser.java

@@ -0,0 +1,137 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 住建-实名用户对象 centerdata_t_housingconstruction_realnameuser
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CenterdataTHousingconstructionRealnameuser extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 数据唯一标识
+     */
+    private Long id;
+
+    /**
+     * 开户企业
+     */
+    @Excel(name = "开户企业")
+    private String enterpriseId;
+
+    /**
+     * 用户类别
+     */
+    private String enterpriseUserType;
+
+    /**
+     * 用户类别
+     */
+    @Excel(name = "用户类别")
+    private String enterpriseUserTypeLabel;
+
+    /**
+     * 用户代码
+     */
+    @Excel(name = "用户代码")
+    private String userCode;
+
+    @Excel(name = "商户名称")
+    private String merchantName;
+
+    /**
+     * 用户姓名
+     */
+    @Excel(name = "用户姓名")
+    private String userName;
+
+    /**
+     * 用气地址
+     */
+    @Excel(name = "用气地址")
+    private String gasAddress;
+
+    /**
+     * 证照代码(身份证号或统一社会机构代码)
+     */
+    @Excel(name = "证照代码", readConverterExp = "身=份证号或统一社会机构代码")
+    private String licenseCode;
+
+    /**
+     * 联系电话
+     */
+    @Excel(name = "联系电话")
+    private String contactNumber;
+
+    /**
+     * 开户时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开户时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date accountOpenTime;
+
+    /**
+     * 经度
+     */
+    @Excel(name = "经度")
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    @Excel(name = "纬度")
+    private String latitude;
+
+    /**
+     * 所属部门
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    private String radius;//距离
+
+    private String joinHouseId;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseUserType", getEnterpriseUserType())
+                .append("userCode", getUserCode())
+                .append("userName", getUserName())
+                .append("gasAddress", getGasAddress())
+                .append("licenseCode", getLicenseCode())
+                .append("contactNumber", getContactNumber())
+                .append("accountOpenTime", getAccountOpenTime())
+                .append("longitude", getLongitude())
+                .append("latitude", getLatitude())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .toString();
+    }
+}

+ 72 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSafetyinspectionitem.java

@@ -0,0 +1,72 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 住建-安全检查项对象 centerdata_t_housingconstruction_safetyinspectionitem
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CenterdataTHousingconstructionSafetyinspectionitem extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 数据id
+     */
+    private String id;
+
+    /**
+     * 检查类型
+     */
+    @Excel(name="检查项类型")
+    private String enterpriseInspectionType;
+
+    /**
+     * 检查名称
+     */
+    @Excel(name="检查项点")
+    private String inspectionName;
+
+    /**
+     * 排序
+     */
+    @Excel(name="排序")
+    private Integer inspectionSort;
+
+    /**
+     * 所属部门
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("enterpriseInspectionType", getEnterpriseInspectionType())
+                .append("inspectionName", getInspectionName())
+                .append("inspectionSort", getInspectionSort())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .toString();
+    }
+}

+ 111 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSafetyinspectionrecords.java

@@ -0,0 +1,111 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.List;
+
+/**
+ * 住建-安全检查记录对象 centerdata_t_housingconstruction_safetyinspectionrecords
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CenterdataTHousingconstructionSafetyinspectionrecords extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    private String id;
+
+    /**
+     * 检察员id
+     */
+    private String censorId;
+
+    /**
+     * 检察员姓名
+     */
+    @Excel(name = "检察员姓名")
+    private String censorName;
+
+    /**
+     * 用户id
+     */
+    private String clientId;
+
+    /**
+     * 用户姓名
+     */
+    @Excel(name = "用户姓名")
+    private String clientName;
+
+    /**
+     * 记录类型
+     */
+    @Excel(name = "记录类型")
+    private String enterpriseInspectionType;
+
+    /**
+     * 钢瓶id
+     */
+    private String steelcylinderId;
+
+    /**
+     * 钢瓶名称
+     */
+    private String steelcylinderName;
+
+    /**
+     * 创建人
+     */
+    private String createName;
+
+    /**
+     * 修改人
+     */
+    private String updateName;
+
+    /**
+     * 所属部门
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    private List<CenterdataTHousingconstructionSafetyinspectionrecordsdetail> detailList;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("censorId", getCensorId())
+                .append("censorName", getCensorName())
+                .append("clientId", getClientId())
+                .append("clientName", getClientName())
+                .append("enterpriseInspectionType", getEnterpriseInspectionType())
+                .append("steelcylinderId", getSteelcylinderId())
+                .append("steelcylinderName", getSteelcylinderName())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .toString();
+    }
+}

+ 91 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSafetyinspectionrecordsdetail.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.List;
+
+/**
+ * 住建-安全检查记录明细对象 centerdata_t_housingconstruction_safetyinspectionrecordsdetail
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CenterdataTHousingconstructionSafetyinspectionrecordsdetail extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 数据id
+     */
+    private String id;
+
+    /**
+     * 安全检查记录id
+     */
+    private String recordId;
+
+    /**
+     * 安全检查项id
+     */
+    private String itemId;
+
+
+    /**
+     * 检查项名称
+     */
+    @Excel(name = "安全检查项内容")
+    private String inspectionName;
+
+    /**
+     * 排序
+     */
+    private int inspectionSort;
+
+    /**
+     * 合格状态
+     */
+    @Excel(name = "合格状态")
+    private String standardStatus;
+
+    /**
+     * 所属部门
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    @Excel(name = "备注")
+    private String remark;
+
+    private List<CenterdataTHousingconstructionAttach> attachList;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("recordId", getRecordId())
+                .append("itemId", getItemId())
+                .append("standardStatus", getStandardStatus())
+                .append("inspectionSort", getInspectionSort())
+                .append("remark", getRemark())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .toString();
+    }
+}

+ 170 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSteelcylinder.java

@@ -0,0 +1,170 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 钢瓶基础数据对象 centerdata_t_housingconstruction_steelcylinder
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+@Data
+public class CenterdataTHousingconstructionSteelcylinder extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /**
+     * 钢瓶名称
+     */
+    @Excel(name = "钢瓶名称")
+    private String name;
+
+    /**
+     * 企业id
+     */
+    private String enterpriseId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 生产厂家
+     */
+    @Excel(name = "生产厂家")
+    private String manufacturer;
+
+    /**
+     * 钢瓶权属
+     */
+    @Excel(name = "钢瓶权属")
+    private String ownership;
+
+    /**
+     * 出厂时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "出厂时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date leaveTime;
+
+    /**
+     * 制造时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "制造时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date makeTime;
+
+    /**
+     * 出厂编号
+     */
+    @Excel(name = "出厂编号")
+    private String leaveNumber;
+
+    /**
+     * 规格
+     */
+    @Excel(name = "规格",dictType = "steelcylinder_type")
+    private String standards;
+
+    /**
+     * 型号
+     */
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /**
+     * 钢瓶编号
+     */
+    @Excel(name = "钢瓶编号")
+    private String steelcylinderNumber;
+
+    /**
+     * 钢瓶代码
+     */
+    @Excel(name = "钢瓶代码")
+    private String steelcylinderCode;
+
+    /**
+     * 当前库位
+     */
+    @Excel(name = "当前库位")
+    private String currentPosition;
+
+    /**
+     * 登记时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "登记时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date registerTime;
+
+    /**
+     * 气瓶状态
+     */
+    @Excel(name = "气瓶状态",dictType = "steelcylinder_state")
+    private String state;
+
+    /**
+     * 钢瓶阈值(月)
+     */
+    @Excel(name = "钢瓶阈值(天)")
+    private String threshold;
+
+    private String longitude;//经度
+    private String latitude;//纬度
+    private String radius;//距离
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("name", getName())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("manufacturer", getManufacturer())
+                .append("ownership", getOwnership())
+                .append("leaveTime", getLeaveTime())
+                .append("makeTime", getMakeTime())
+                .append("leaveNumber", getLeaveNumber())
+                .append("standards", getStandards())
+                .append("modelNumber", getModelNumber())
+                .append("steelcylinderNumber", getSteelcylinderNumber())
+                .append("steelcylinderCode", getSteelcylinderCode())
+                .append("currentPosition", getCurrentPosition())
+                .append("registerTime", getRegisterTime())
+                .append("state", getState())
+                .append("threshold", getThreshold())
+                .toString();
+    }
+}

+ 194 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionSteelcylinderLog.java

@@ -0,0 +1,194 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 钢瓶日志对象 centerdata_t_housingconstruction_steelcylinder_log
+ *
+ * @author ruoyi
+ * @date 2024-07-30
+ */
+@Data
+public class CenterdataTHousingconstructionSteelcylinderLog extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 钢瓶id
+     */
+    private String steelcylinderId;
+
+    /**
+     * 钢瓶名称
+     */
+    @Excel(name = "钢瓶名称")
+    private String steelcylinderName;
+
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 入库时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "入库时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date joinWarehouseTime;
+
+    private String inspectorId;//检查员id
+    @Excel(name = "检查员")
+    private String inspectorName;//检查员
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date inspectorTime;//检查时间
+    private String picture;
+
+    /**
+     * 充装介质
+     */
+    @Excel(name = "充装介质")
+    private String fillingMedium;
+
+    /**
+     * 充装时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "充装时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date fillingTime;
+
+    /**
+     * 操作员id
+     */
+    private String operatorId;
+
+    /**
+     * 操作员名称
+     */
+    @Excel(name = "操作员名称")
+    private String operatorName;
+
+    /**
+     * 车辆id
+     */
+    private String carId;
+
+    /**
+     * 车牌号
+     */
+    @Excel(name = "车牌号")
+    private String carNumber;
+
+    /**
+     * 配送时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "配送时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date deliveryTime;
+
+    /**
+     * 配送员id
+     */
+    private String deliveryId;
+
+    /**
+     * 配送员
+     */
+    @Excel(name = "配送员")
+    private String deliveryName;
+
+    /**
+     * 签收时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "签收时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date signTime;
+
+    /**
+     * 入户用户id
+     */
+    private String joinHouseId;
+
+    /**
+     * 入户用户
+     */
+    @Excel(name = "入户用户")
+    private String joinHouseName;
+
+    /**
+     * 回收所在用户
+     */
+    @Excel(name = "回收所在用户")
+    private String recyclingName;
+
+    /**
+     * 回收时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "回收时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date recyclingTime;
+
+    private String state;
+
+    private String workCard;
+
+    private String pitfall;
+
+    private String pitfallDetails;
+
+    private String information;
+
+    private String steelCylinder;
+
+    private String tailpiece;
+
+    private String instrument;
+
+    private String valve;
+
+    private String warningDevice;
+
+    private String environment;
+
+    private String longitude;
+
+    private String latitude;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("steelcylinderId", getSteelcylinderId())
+                .append("steelcylinderName", getSteelcylinderName())
+                .append("joinWarehouseTime", getJoinWarehouseTime())
+                .append("fillingMedium", getFillingMedium())
+                .append("fillingTime", getFillingTime())
+                .append("operatorId", getOperatorId())
+                .append("operatorName", getOperatorName())
+                .append("carId", getCarId())
+                .append("carNumber", getCarNumber())
+                .append("deliveryTime", getDeliveryTime())
+                .append("deliveryId", getDeliveryId())
+                .append("deliveryName", getDeliveryName())
+                .append("signTime", getSignTime())
+                .append("joinHouseId", getJoinHouseId())
+                .append("joinHouseName", getJoinHouseName())
+                .append("recyclingName", getRecyclingName())
+                .append("recyclingTime", getRecyclingTime())
+                .toString();
+    }
+}

+ 125 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionStoragetank.java

@@ -0,0 +1,125 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 储罐存储数据对象 centerdata_t_housingconstruction_storagetank
+ *
+ * @author LG
+ * @date 2024-08-01
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class CenterdataTHousingconstructionStoragetank extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 储罐名称
+     */
+    @Excel(name = "储罐名称")
+    private String name;
+
+    /**
+     * 企业id
+     */
+    private String enterpriseId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 存储量
+     */
+    @Excel(name = "存储量(单位: L)")
+    private Double storageCapacity;
+
+    /**
+     * 液体液位上限
+     */
+    @Excel(name = "液体液位上限(单位: m)")
+    private Double levelCeiling;
+
+    /**
+     * 液体液位下限
+     */
+    @Excel(name = "液体液位下限(单位: m)")
+    private Double levelFloor;
+
+    /**
+     * 温度
+     */
+    @Excel(name = "温度(单位: ℃)")
+    private Double heat;
+
+    /**
+     * 内部气压
+     */
+    @Excel(name = "内部气压(单位: MPa)")
+    private Double pressure;
+
+    /**
+     * 周边可燃性气体泄漏
+     */
+    @Excel(name = "周边可燃性气体泄漏(单位: %LEL)")
+    private Double gasLeak;
+
+    private String state;
+
+    private String longitude;//经度
+    private String latitude;//纬度
+    private String radius;//距离
+
+    private String joinHouseId;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("createBy", getCreateBy())
+                .append("createName", getCreateName())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateName", getUpdateName())
+                .append("updateTime", getUpdateTime())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("name", getName())
+                .append("enterpriseId", getEnterpriseId())
+                .append("enterpriseName", getEnterpriseName())
+                .append("storageCapacity", getStorageCapacity())
+                .append("levelCeiling", getLevelCeiling())
+                .append("levelFloor", getLevelFloor())
+                .append("heat", getHeat())
+                .append("pressure", getPressure())
+                .append("gasLeak", getGasLeak())
+                .toString();
+    }
+}

+ 107 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/CenterdataTHousingconstructionStoragetankLog.java

@@ -0,0 +1,107 @@
+package com.sooka.sponest.data.housingconstruction.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.sooka.sponest.data.base.domain.BaseBusinessEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 储罐存储数据日志对象 centerdata_t_housingconstruction_storagetank_log
+ *
+ * @author LG
+ * @date 2024-08-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+
+public class CenterdataTHousingconstructionStoragetankLog extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 储罐id
+     */
+    private String storagetankId;
+
+    /**
+     * 储罐名称
+     */
+    @Excel(name = "储罐名称")
+    private String storagetankName;
+
+    /**
+     * 当前储量
+     */
+    @Excel(name = "当前储量")
+    private String storageCapacity;
+
+    /**
+     * 液体液位
+     */
+    @Excel(name = "液体液位(单位: m)")
+    private Double level;
+
+    /**
+     * 温度
+     */
+    @Excel(name = "温度(单位: ℃)")
+    private Double heat;
+
+    /**
+     * 内部气压
+     */
+    @Excel(name = "内部气压(单位: MPa)")
+    private Double pressure;
+
+    /**
+     * 周边可燃性气体泄漏
+     */
+    @Excel(name = "周边可燃性气体泄漏(单位: %LEL)")
+    private Double gasLeak;
+
+    /**
+     * 安全状态
+     */
+    private String securityState;
+
+    /**
+     * 运行状态
+     */
+    @Excel(name = "运行状态")
+    private String runState;
+
+    private String enterpriseName;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("storagetankId", getStoragetankId())
+                .append("storagetankName", getStoragetankName())
+                .append("level", getLevel())
+                .append("heat", getHeat())
+                .append("pressure", getPressure())
+                .append("gasLeak", getGasLeak())
+                .append("securityState", getSecurityState())
+                .append("runState", getRunState())
+                .toString();
+    }
+}

+ 30 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/domain/eventEntity/GpsEntity.java

@@ -0,0 +1,30 @@
+package com.sooka.sponest.data.housingconstruction.domain.eventEntity;
+
+import lombok.*;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+public class GpsEntity {
+    private Long id;
+    private String deviceid;
+    private Double maxspeed;
+    private Double tripdistance;
+    private String triptime;
+    private String starttime;
+    private String endtime;
+    private String parktime;
+    private Double averagespeed;
+    private String slat;
+    private String slon;
+    private String elat;
+    private String elon;
+    private String trackstarttime;
+    private String trackendtime;
+    private String fuelreport;
+    private String addressmap;
+    private String createTime;
+
+}

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

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

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

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

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

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

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

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

+ 27 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/handler/SendEvent.java

@@ -0,0 +1,27 @@
+package com.sooka.sponest.data.housingconstruction.handler;
+
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.SensorEventVo;
+import com.sooka.sponest.data.housingconstruction.feignClient.service.RemoteHousingconstructionEventService;
+import com.sooka.sponest.data.housingconstruction.service.impl.CenterdataTHousingconstructionStoragetankLogServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SendEvent {
+
+    private static final Logger logger = LoggerFactory.getLogger(SendEvent.class);
+
+    @Autowired
+    private RemoteHousingconstructionEventService eventService;
+
+    public void sendEvent(String template, String eventName, String threshold, String current, SensorEventVo eventVo, String eventCode){
+        String format = String.format(template, eventName, threshold, current);
+        eventVo.setEventTypeXl(eventCode);
+        eventVo.setEventDescription(format);
+        logger.info("create send entity ====> " + eventVo);
+        //发送事件
+        eventService.sendEvent(eventVo);
+    }
+}

+ 286 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/handler/TaskHandler.java

@@ -0,0 +1,286 @@
+package com.sooka.sponest.data.housingconstruction.handler;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.utils.SpringUtils;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.security.utils.DictUtils;
+import com.ruoyi.system.api.RemoteConfigService;
+import com.ruoyi.system.api.domain.SysDictData;
+import com.sooka.sponest.data.housingconstruction.domain.BO.SteelcylinderBO;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionEnterprise;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionEnterpriseproductionreport;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSteelcylinder;
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.GpsEntity;
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.SensorEventVo;
+import com.sooka.sponest.data.housingconstruction.domain.eventEntity.StaticEntity;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionCarService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionEnterpriseService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionEnterpriseproductionreportService;
+import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionSteelcylinderService;
+import org.apache.commons.collections4.MapUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/taskHandler")
+public class TaskHandler {
+
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Autowired
+    private ICenterdataTHousingconstructionEnterpriseproductionreportService reportService;
+
+    @Autowired
+    private ICenterdataTHousingconstructionEnterpriseService enterpriseService;
+
+    @Autowired
+    private ICenterdataTHousingconstructionSteelcylinderService steelcylinderService;
+
+    @Autowired
+    private ICenterdataTHousingconstructionCarService carService;
+
+    @Autowired
+    private SendEvent sendEvent;
+
+    /**
+     * 企业生产报告运行预警
+     */
+    @GetMapping("/enterpriseProductionReportTask")
+    public void enterpriseProductionReportTask() {
+        //字典列表
+        List<SysDictData> reportCacheList = DictUtils.getDictCache("enterprise_production_report");
+        //企业列表
+        List<CenterdataTHousingconstructionEnterprise> enterpriseList = enterpriseService.selectCenterdataTHousingconstructionEnterpriseList(new CenterdataTHousingconstructionEnterprise());
+        //获取每个企业每种报告的最新记录
+        List<CenterdataTHousingconstructionEnterpriseproductionreport> dataList = reportService.getNewReport(new CenterdataTHousingconstructionEnterpriseproductionreport());
+        //遍历企业列表,获取企业信息
+        for (CenterdataTHousingconstructionEnterprise enterprise : enterpriseList) {
+            StringBuilder enterpriseStr = new StringBuilder();//事故隐患排查治理制度,安全事故应急救援预案,
+            //遍历字典集合,获取字典类型
+            for (SysDictData sysDictData : reportCacheList) {
+                //设置标识,最终根据标识判断是否序号将当前类型的报告拼接到事件描述中
+                boolean flag = true;
+                //遍历业务结果集
+                for (CenterdataTHousingconstructionEnterpriseproductionreport report : dataList) {
+                    //如果企业id相同                                          并且  文件类型相同
+                    if (report.getEnterpriseId().equals(enterprise.getId()) && report.getReportType().equals(sysDictData.getDictValue())) {
+                        //获取文件上传时间 + 阈值30天 与当前时间做比较
+                        //获取数据的上传时间
+                        Date createTime = report.getCreateTime();
+                        // 将 Date 转换为 LocalDateTime
+                        LocalDateTime localDateTime = convertToLocalDateTime(createTime);
+                        // 在 LocalDateTime 上加上 30 天
+                        LocalDateTime increaseBy30Days = localDateTime.plus(30, ChronoUnit.DAYS);
+                        // 获取当前日期和时间
+                        LocalDateTime now = LocalDateTime.now();
+                        //文件上传时间没有超过设定的阈值, 不需要上报
+                        if (increaseBy30Days.isAfter(now)) {
+                            //拼接 事件描述
+                            flag = false;
+                        }
+                        break;
+                    }
+                }
+                if (flag) {
+                    enterpriseStr.append(sysDictData.getDictLabel()).append(",");
+                }
+            }
+            if (enterpriseStr.length() > 0) {
+                enterpriseStr.deleteCharAt(enterpriseStr.length() - 1);
+                enterpriseStr.append(")发生%s, 超过30天未上传, 请及时处理!%s%s");
+                enterpriseStr.insert(0, enterprise.getEnterpriseName() + "的(");
+                //创建事件实体类
+                SensorEventVo sensorEventVo = new SensorEventVo(
+                        enterprise.getLongitude(),
+                        enterprise.getLatitude(),
+                        enterprise.getId(),
+                        enterprise.getEnterpriseName(),
+                        new Date(),
+                        enterprise.getRegisteredAddress()
+                );
+                //发送事件
+                sendEvent.sendEvent(enterpriseStr.toString(), StaticEntity.ENTERPRISE_NAME, "", "", sensorEventVo, StaticEntity.ENTERPRISE_CODE);
+            }
+        }
+    }
+
+    // 将 Date 转换为 LocalDateTime
+    public static LocalDateTime convertToLocalDateTime(Date date) {
+        return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+    }
+
+    /**
+     * 1207	气瓶存疑预警
+     */
+    @GetMapping("/performDailyTask")
+    public void performDailyTask() {
+        //获取告警数据
+        List<SteelcylinderBO> datalist = steelcylinderService.selectTaskList(new CenterdataTHousingconstructionSteelcylinder());
+        //循环处理发送事件
+        datalist.forEach(data -> {
+            //设置基础模板
+            StringBuilder template = new StringBuilder();
+            template.append(data.getEnterpriseName()).append("的").append(data.getName()).append("钢罐发生%s,").append("超过%s天未流转, 请及时处理!%s");
+            //创建事件实体类
+            SensorEventVo sensorEventVo = new SensorEventVo(
+                    data.getLongitude(),//实名用户经纬度
+                    data.getLatitude(),
+                    data.getEnterpriseId(),
+                    data.getEnterpriseName(),
+                    new Date(),
+                    data.getGasAddress()//实名用户地址
+            );
+            //发送事件
+            sendEvent.sendEvent(template.toString(), StaticEntity.INSPECT_NAME, data.getThreshold(), "", sensorEventVo, StaticEntity.INSPECT_CODE);
+        });
+    }
+
+    @PostMapping("/sendGpsEvent")
+    public AjaxResult sendGpsEvent(@RequestBody String jsonObj) {
+        logger.info("接受的参数为:==》{}", jsonObj);
+        if (jsonObj.isEmpty()) {
+            return AjaxResult.error("发送数据为空");
+        }
+        JSONObject jsonObject = JSONObject.parseObject(jsonObj);
+        //获取设定的阈值
+        double speedThreshold = Double.parseDouble(SpringUtils.getBean(RemoteConfigService.class).remotegetConfigKey("speed_threshold").getData());
+        logger.info("设定的阈值{}", speedThreshold);
+
+        String address = getAddressMap(jsonObject, speedThreshold);
+        logger.info("事件发生地点信息{}", address);
+        if (StringUtils.isNotBlank(address)) {
+            Map<String, Object> carInfo = carService.getCarInfoByDeviceId(jsonObject.getString("deviceid"));
+            logger.info("车辆信息{}", carInfo);
+
+            String eventSlatSlon = getEventSlatSlon(jsonObject);
+            logger.info("事件起点经纬度{}", eventSlatSlon);
+
+            //创建事件实体
+            SensorEventVo sensorEventVo = new SensorEventVo();
+            sensorEventVo.setEventType("8");
+            sensorEventVo.setLatitude("false".equals(eventSlatSlon) ? "" : eventSlatSlon.split("_")[0]);
+            sensorEventVo.setLongitude("false".equals(eventSlatSlon) ? "" : eventSlatSlon.split("_")[1]);
+            //上报人为设备id
+//        sensorEventVo.setSensorId(jsonObject.getString("deviceid"));
+            //上报人为企业id
+            sensorEventVo.setSensorId(MapUtils.getString(carInfo, "enterpriseId"));
+            sensorEventVo.setReportTime(new Date());
+            sensorEventVo.setAddress(getAddress(eventSlatSlon, jsonObject.getJSONObject("addressmap")));
+            //上报人名称为车号
+//        sensorEventVo.setReportor(MapUtils.getString(carInfo, "carNumber"));
+            //上报人为企业名称
+            sensorEventVo.setReportor(MapUtils.getString(carInfo, "enterpriseName"));
+            StringBuilder template = new StringBuilder();
+            template.append(MapUtils.getString(carInfo, "enterpriseName"))
+                    .append("的").append(MapUtils.getString(carInfo, "driverName"))
+                    .append("驾驶").append(MapUtils.getString(carInfo, "carNumber"))
+                    .append("车辆(").append(address).append(")发生%s")
+                    .append(",设定的阈值为%skm/h");
+            System.out.println("事件推送实体 =》 " + sensorEventVo);
+            //发送事件
+            sendEvent.sendEvent(template.toString(), StaticEntity.SPEED_NAME, String.valueOf(speedThreshold), "", sensorEventVo, StaticEntity.SPEED_CODE);
+        }
+        return AjaxResult.success();
+    }
+
+    private String getAddressMap(JSONObject jsonObject, double speedThreshold) {
+        StringBuilder addressResult = new StringBuilder();
+        //获取车速集合
+        JSONArray totaltrips = jsonObject.getJSONArray("totaltrips");
+
+        //获取事件发生地点对象
+        JSONObject addressmap = jsonObject.getJSONObject("addressmap");
+
+        List<GpsEntity> gpsEntities = JSONArray.parseArray(totaltrips.toJSONString(), GpsEntity.class);
+        gpsEntities.forEach(gps -> {
+            double v = gps.getMaxspeed() / 1000;
+            if (v > speedThreshold) {
+                //超速开始
+                String mapKeyStart = getStr(gps.getSlat()) + "_" + getStr(gps.getSlon());
+                //超速结束
+                String mapKeyEnd = getStr(gps.getElat()) + "_" + getStr(gps.getElon());
+                String addressStr = "”" + addressmap.getString(mapKeyStart) + "——>" + addressmap.getString(mapKeyEnd) + "”区间最高时速为" + v + "km/h";
+                String address = addressStr.replace("null", "未知位置");
+                addressResult.append("在").append(address).append(";");
+            }
+        });
+        return addressResult.toString();
+    }
+
+    /**
+     * @param s 需要截取的数字
+     */
+    public static String getStr(String s) {
+        // 找到小数点的位置
+        int decimalIndex = s.indexOf('.');
+
+        // 如果没有小数点,直接返回原字符串
+        if (decimalIndex == -1) {
+            return s;
+        }
+
+        // 截取小数点后面的部分
+        String decimalPart = s.substring(decimalIndex + 1);
+
+        // 截取前五个数字
+        if (decimalPart.length() > 5) {
+            decimalPart = decimalPart.substring(0, 5);
+        }
+
+        // 删除末尾的零
+        while (decimalPart.length() > 0 && decimalPart.charAt(decimalPart.length() - 1) == '0') {
+            decimalPart = decimalPart.substring(0, decimalPart.length() - 1);
+        }
+
+        // 如果没有小数部分,返回整数部分
+        if (decimalPart.isEmpty()) {
+            return s.substring(0, decimalIndex);
+        }
+
+        // 返回处理后的字符串
+        return s.substring(0, decimalIndex + 1) + decimalPart;
+    }
+
+    /**
+     * 获取事件集合中时间最早的一个经纬度信息
+     */
+    private String getEventSlatSlon(JSONObject jsonObject) {
+        JSONArray totaltrips = jsonObject.getJSONArray("totaltrips");
+        List<GpsEntity> gpsEntities = JSONArray.parseArray(totaltrips.toJSONString(), GpsEntity.class);
+        // 找到 startTime 最小的 GpsEntity
+        Optional<GpsEntity> minStartTimeEntity = gpsEntities.stream()
+                .min((e1, e2) -> e1.getStarttime().compareTo(e2.getStarttime()));
+
+        // 如果存在这样的实体,拼接 Slat 和 Slon
+        if (minStartTimeEntity.isPresent()) {
+            GpsEntity entity = minStartTimeEntity.get();
+            return entity.getSlat() + "_" + entity.getSlon();
+        } else {
+            return "false";
+        }
+    }
+
+    /**
+     * 根据最早的经纬度信息获取位置信息
+     *
+     * @param latAndLon  最早的经纬度信息
+     * @param addressmap 地点结合
+     * @return 事件位置
+     */
+    private String getAddress(String latAndLon, JSONObject addressmap) {
+        String[] split = latAndLon.split("_");
+        return addressmap.getString(getStr(split[0]) + "_" + getStr(split[1]));
+    }
+}

+ 71 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionAttachMapper.java

@@ -0,0 +1,71 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionAttach;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSteelcylinderLog;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 住建-附件Mapper接口
+ *
+ * @author lg
+ * @date 2024-07-29
+ */
+public interface CenterdataTHousingconstructionAttachMapper {
+    /**
+     * 查询住建-附件
+     *
+     * @param id 住建-附件主键
+     * @return 住建-附件
+     */
+    CenterdataTHousingconstructionAttach selectCenterdataTHousingconstructionAttachById(Long id);
+
+    /**
+     * 查询住建-附件列表
+     *
+     * @param centerdataTHousingconstructionAttach 住建-附件
+     * @return 住建-附件集合
+     */
+    List<CenterdataTHousingconstructionAttach> selectCenterdataTHousingconstructionAttachList(CenterdataTHousingconstructionAttach centerdataTHousingconstructionAttach);
+
+    /**
+     * 新增住建-附件
+     *
+     * @param centerdataTHousingconstructionAttach 住建-附件
+     * @return 结果
+     */
+    int insertCenterdataTHousingconstructionAttach(CenterdataTHousingconstructionAttach centerdataTHousingconstructionAttach);
+
+    /**
+     * 修改住建-附件
+     *
+     * @param centerdataTHousingconstructionAttach 住建-附件
+     * @return 结果
+     */
+    int updateCenterdataTHousingconstructionAttach(CenterdataTHousingconstructionAttach centerdataTHousingconstructionAttach);
+
+    /**
+     * 删除住建-附件
+     *
+     * @param id 住建-附件主键
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionAttachById(Long id);
+
+    /**
+     * 批量删除住建-附件
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionAttachByIds(Long[] ids);
+
+    int insertAttachByList(List<CenterdataTHousingconstructionAttach> attachList);
+
+    int delAttachByBusId(String busId);
+
+    List<CenterdataTHousingconstructionAttach> getAttachListByBusId(String busId);
+
+    List<Map<String,Object>> getCirculation(CenterdataTHousingconstructionSteelcylinderLog log);
+}

+ 73 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionCarMapper.java

@@ -0,0 +1,73 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionCar;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 车辆数据Mapper接口
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionCarMapper {
+    /**
+     * 查询车辆数据
+     *
+     * @param id 车辆数据主键
+     * @return 车辆数据
+     */
+    public CenterdataTHousingconstructionCar selectCenterdataTHousingconstructionCarById(String id);
+
+    /**
+     * 查询车辆数据列表
+     *
+     * @param centerdataTHousingconstructionCar 车辆数据
+     * @return 车辆数据集合
+     */
+    public List<CenterdataTHousingconstructionCar> selectCenterdataTHousingconstructionCarList(CenterdataTHousingconstructionCar centerdataTHousingconstructionCar);
+
+    /**
+     * 新增车辆数据
+     *
+     * @param centerdataTHousingconstructionCar 车辆数据
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionCar(CenterdataTHousingconstructionCar centerdataTHousingconstructionCar);
+
+    /**
+     * 修改车辆数据
+     *
+     * @param centerdataTHousingconstructionCar 车辆数据
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionCar(CenterdataTHousingconstructionCar centerdataTHousingconstructionCar);
+
+    /**
+     * 删除车辆数据
+     *
+     * @param id 车辆数据主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionCarById(String id);
+
+    /**
+     * 批量删除车辆数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionCarByIds(String[] ids);
+
+    /*
+    * 车辆列表
+    *
+    * @author 韩福成
+    * @date 2024/9/12 下午2:37
+    */
+    public List<Map<String,Object>> getCarList(CenterdataTHousingconstructionCar car);
+
+    Map<String, Object> getCarInfoByDeviceId(String deviceId);
+}

+ 65 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionDeliveryPersonnelMapper.java

@@ -0,0 +1,65 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionDeliveryPersonnel;
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionDeliveryPersonnelLonLat;
+
+import java.util.List;
+
+/**
+ * 配送人员Mapper接口
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionDeliveryPersonnelMapper {
+    /**
+     * 查询配送人员
+     *
+     * @param id 配送人员主键
+     * @return 配送人员
+     */
+    public CenterdataTHousingconstructionDeliveryPersonnel selectCenterdataTHousingconstructionDeliveryPersonnelById(String id);
+
+    /**
+     * 查询配送人员列表
+     *
+     * @param centerdataTHousingconstructionDeliveryPersonnel 配送人员
+     * @return 配送人员集合
+     */
+    public List<CenterdataTHousingconstructionDeliveryPersonnel> selectCenterdataTHousingconstructionDeliveryPersonnelList(CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel);
+
+    /**
+     * 新增配送人员
+     *
+     * @param centerdataTHousingconstructionDeliveryPersonnel 配送人员
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionDeliveryPersonnel(CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel);
+
+    /**
+     * 修改配送人员
+     *
+     * @param centerdataTHousingconstructionDeliveryPersonnel 配送人员
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionDeliveryPersonnel(CenterdataTHousingconstructionDeliveryPersonnel centerdataTHousingconstructionDeliveryPersonnel);
+
+    /**
+     * 删除配送人员
+     *
+     * @param id 配送人员主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionDeliveryPersonnelById(String id);
+
+    /**
+     * 批量删除配送人员
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionDeliveryPersonnelByIds(String[] ids);
+
+    int setLonLat(CenterdataTHousingconstructionDeliveryPersonnelLonLat personnelLonLat);
+}

+ 72 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionEnterpriseMapper.java

@@ -0,0 +1,72 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionEnterprise;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 住建-企业信息Mapper接口
+ *
+ * @author LG
+ * @date 2024-07-29
+ */
+public interface CenterdataTHousingconstructionEnterpriseMapper {
+    /**
+     * 查询住建-企业信息
+     *
+     * @param id 住建-企业信息主键
+     * @return 住建-企业信息
+     */
+    CenterdataTHousingconstructionEnterprise selectCenterdataTHousingconstructionEnterpriseById(String id);
+
+    /**
+     * 查询住建-企业信息列表
+     *
+     * @param centerdataTHousingconstructionEnterprise 住建-企业信息
+     * @return 住建-企业信息集合
+     */
+    List<CenterdataTHousingconstructionEnterprise> selectCenterdataTHousingconstructionEnterpriseList(CenterdataTHousingconstructionEnterprise centerdataTHousingconstructionEnterprise);
+
+    /**
+     * 新增住建-企业信息
+     *
+     * @param centerdataTHousingconstructionEnterprise 住建-企业信息
+     * @return 结果
+     */
+    int insertCenterdataTHousingconstructionEnterprise(CenterdataTHousingconstructionEnterprise centerdataTHousingconstructionEnterprise);
+
+    /**
+     * 修改住建-企业信息
+     *
+     * @param centerdataTHousingconstructionEnterprise 住建-企业信息
+     * @return 结果
+     */
+    int updateCenterdataTHousingconstructionEnterprise(CenterdataTHousingconstructionEnterprise centerdataTHousingconstructionEnterprise);
+
+    /**
+     * 删除住建-企业信息
+     *
+     * @param id 住建-企业信息主键
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionEnterpriseById(String id);
+
+    /**
+     * 批量删除住建-企业信息
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionEnterpriseByIds(String[] ids);
+
+    /*
+    * 企业列表
+    *
+    * @author 韩福成
+    * @date 2024/8/5 上午11:21
+    */
+    List<Map<String,Object>> getEnterpriseList(CenterdataTHousingconstructionEnterprise enterprise);
+
+    Map<String, Object> hasBindByIds(String[] ids);
+}

+ 65 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionEnterpriseproductionreportMapper.java

@@ -0,0 +1,65 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionEnterpriseproductionreport;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 企业生产报告Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-08-05
+ */
+public interface CenterdataTHousingconstructionEnterpriseproductionreportMapper {
+    /**
+     * 查询企业生产报告
+     *
+     * @param id 企业生产报告主键
+     * @return 企业生产报告
+     */
+    public CenterdataTHousingconstructionEnterpriseproductionreport selectCenterdataTHousingconstructionEnterpriseproductionreportById(String id);
+
+    /**
+     * 查询企业生产报告列表
+     *
+     * @param centerdataTHousingconstructionEnterpriseproductionreport 企业生产报告
+     * @return 企业生产报告集合
+     */
+    public List<CenterdataTHousingconstructionEnterpriseproductionreport> selectCenterdataTHousingconstructionEnterpriseproductionreportList(CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport);
+
+    /**
+     * 新增企业生产报告
+     *
+     * @param centerdataTHousingconstructionEnterpriseproductionreport 企业生产报告
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionEnterpriseproductionreport(CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport);
+
+    /**
+     * 修改企业生产报告
+     *
+     * @param centerdataTHousingconstructionEnterpriseproductionreport 企业生产报告
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionEnterpriseproductionreport(CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport);
+
+    /**
+     * 删除企业生产报告
+     *
+     * @param id 企业生产报告主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionEnterpriseproductionreportById(String id);
+
+    /**
+     * 批量删除企业生产报告
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionEnterpriseproductionreportByIds(String[] ids);
+
+
+    List<CenterdataTHousingconstructionEnterpriseproductionreport> getNewReport(CenterdataTHousingconstructionEnterpriseproductionreport centerdataTHousingconstructionEnterpriseproductionreport);
+}

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

@@ -0,0 +1,62 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionGassource;
+
+import java.util.List;
+
+/**
+ * 气源数据Mapper接口
+ *
+ * @author LG
+ * @date 2024-08-05
+ */
+public interface CenterdataTHousingconstructionGassourceMapper {
+    /**
+     * 查询气源数据
+     *
+     * @param id 气源数据主键
+     * @return 气源数据
+     */
+    public CenterdataTHousingconstructionGassource selectCenterdataTHousingconstructionGassourceById(String id);
+
+    /**
+     * 查询气源数据列表
+     *
+     * @param centerdataTHousingconstructionGassource 气源数据
+     * @return 气源数据集合
+     */
+    public List<CenterdataTHousingconstructionGassource> selectCenterdataTHousingconstructionGassourceList(CenterdataTHousingconstructionGassource centerdataTHousingconstructionGassource);
+
+    /**
+     * 新增气源数据
+     *
+     * @param centerdataTHousingconstructionGassource 气源数据
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionGassource(CenterdataTHousingconstructionGassource centerdataTHousingconstructionGassource);
+
+    /**
+     * 修改气源数据
+     *
+     * @param centerdataTHousingconstructionGassource 气源数据
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionGassource(CenterdataTHousingconstructionGassource centerdataTHousingconstructionGassource);
+
+    /**
+     * 删除气源数据
+     *
+     * @param id 气源数据主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionGassourceById(String id);
+
+    /**
+     * 批量删除气源数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionGassourceByIds(String[] ids);
+}

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

@@ -0,0 +1,62 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionInspect;
+
+import java.util.List;
+
+
+/**
+ * 钢瓶年检Mapper接口
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionInspectMapper {
+    /**
+     * 查询钢瓶年检
+     *
+     * @param id 钢瓶年检主键
+     * @return 钢瓶年检
+     */
+    public CenterdataTHousingconstructionInspect selectCenterdataTHousingconstructionInspectById(String id);
+
+    /**
+     * 查询钢瓶年检列表
+     *
+     * @param centerdataTHousingconstructionInspect 钢瓶年检
+     * @return 钢瓶年检集合
+     */
+    public List<CenterdataTHousingconstructionInspect> selectCenterdataTHousingconstructionInspectList(CenterdataTHousingconstructionInspect centerdataTHousingconstructionInspect);
+
+    /**
+     * 新增钢瓶年检
+     *
+     * @param centerdataTHousingconstructionInspect 钢瓶年检
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionInspect(CenterdataTHousingconstructionInspect centerdataTHousingconstructionInspect);
+
+    /**
+     * 修改钢瓶年检
+     *
+     * @param centerdataTHousingconstructionInspect 钢瓶年检
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionInspect(CenterdataTHousingconstructionInspect centerdataTHousingconstructionInspect);
+
+    /**
+     * 删除钢瓶年检
+     *
+     * @param id 钢瓶年检主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionInspectById(String id);
+
+    /**
+     * 批量删除钢瓶年检
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionInspectByIds(String[] ids);
+}

+ 70 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionPractitionerMapper.java

@@ -0,0 +1,70 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionPractitioner;
+
+import java.util.List;
+
+/**
+ * 从业人员Mapper接口
+ *
+ * @author 韩福成
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionPractitionerMapper {
+    /**
+     * 查询从业人员
+     *
+     * @param id 从业人员主键
+     * @return 从业人员
+     */
+    public CenterdataTHousingconstructionPractitioner selectCenterdataTHousingconstructionPractitionerById(String id);
+
+    /**
+     * 查询从业人员列表
+     *
+     * @param centerdataTHousingconstructionPractitioner 从业人员
+     * @return 从业人员集合
+     */
+    public List<CenterdataTHousingconstructionPractitioner> selectCenterdataTHousingconstructionPractitionerList(CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner);
+
+    /**
+     * 新增从业人员
+     *
+     * @param centerdataTHousingconstructionPractitioner 从业人员
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionPractitioner(CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner);
+
+    /**
+     * 修改从业人员
+     *
+     * @param centerdataTHousingconstructionPractitioner 从业人员
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionPractitioner(CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner);
+
+    /**
+     * 删除从业人员
+     *
+     * @param id 从业人员主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionPractitionerById(String id);
+
+    /**
+     * 批量删除从业人员
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionPractitionerByIds(String[] ids);
+
+    /*
+    * 查询管理人员
+    *
+    * @author 韩福成
+    * @date 2024/10/21 下午2:57
+    */
+    public List<CenterdataTHousingconstructionPractitioner> selectPractitionerByPost(CenterdataTHousingconstructionPractitioner centerdataTHousingconstructionPractitioner);
+}

+ 78 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionRealnameuserMapper.java

@@ -0,0 +1,78 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionRealnameuser;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 住建-实名用户Mapper接口
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionRealnameuserMapper {
+    /**
+     * 查询住建-实名用户
+     *
+     * @param id 住建-实名用户主键
+     * @return 住建-实名用户
+     */
+    CenterdataTHousingconstructionRealnameuser selectCenterdataTHousingconstructionRealnameuserById(Long id);
+
+    /**
+     * 查询住建-实名用户列表
+     *
+     * @param centerdataTHousingconstructionRealnameuser 住建-实名用户
+     * @return 住建-实名用户集合
+     */
+    List<CenterdataTHousingconstructionRealnameuser> selectCenterdataTHousingconstructionRealnameuserList(CenterdataTHousingconstructionRealnameuser centerdataTHousingconstructionRealnameuser);
+
+    /**
+     * 新增住建-实名用户
+     *
+     * @param centerdataTHousingconstructionRealnameuser 住建-实名用户
+     * @return 结果
+     */
+    int insertCenterdataTHousingconstructionRealnameuser(CenterdataTHousingconstructionRealnameuser centerdataTHousingconstructionRealnameuser);
+
+    /**
+     * 修改住建-实名用户
+     *
+     * @param centerdataTHousingconstructionRealnameuser 住建-实名用户
+     * @return 结果
+     */
+    int updateCenterdataTHousingconstructionRealnameuser(CenterdataTHousingconstructionRealnameuser centerdataTHousingconstructionRealnameuser);
+
+    /**
+     * 删除住建-实名用户
+     *
+     * @param id 住建-实名用户主键
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionRealnameuserById(Long id);
+
+    /**
+     * 批量删除住建-实名用户
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionRealnameuserByIds(Long[] ids);
+
+    /*
+    * 实名用户列表
+    *
+    * @author 韩福成
+    * @date 2024/8/5 上午10:53
+    */
+    List<Map<String,Object>> getRealnameuserList(CenterdataTHousingconstructionRealnameuser realnameuser);
+
+    /*
+    * 查询入户状态钢瓶
+    *
+    * @author 韩福成
+    * @date 2024/11/5 下午3:25
+    */
+    List<Map<String,Object>> getSteelcylinderName(CenterdataTHousingconstructionRealnameuser realnameuser);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSafetyinspectionitemlMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSafetyinspectionitem;
+
+import java.util.List;
+
+/**
+ * 住建-安全检查明细Mapper接口
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionSafetyinspectionitemlMapper {
+    /**
+     * 查询住建-安全检查明细
+     *
+     * @param id 住建-安全检查明细主键
+     * @return 住建-安全检查明细
+     */
+    CenterdataTHousingconstructionSafetyinspectionitem selectCenterdataTHousingconstructionSafetyinspectionitemById(Long id);
+
+    /**
+     * 查询住建-安全检查明细列表
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionitem 住建-安全检查明细
+     * @return 住建-安全检查明细集合
+     */
+    List<CenterdataTHousingconstructionSafetyinspectionitem> selectCenterdataTHousingconstructionSafetyinspectionitemList(CenterdataTHousingconstructionSafetyinspectionitem centerdataTHousingconstructionSafetyinspectionitem);
+
+    /**
+     * 新增住建-安全检查明细
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionitem 住建-安全检查明细
+     * @return 结果
+     */
+    int insertCenterdataTHousingconstructionSafetyinspectionitem(CenterdataTHousingconstructionSafetyinspectionitem centerdataTHousingconstructionSafetyinspectionitem);
+
+    /**
+     * 修改住建-安全检查明细
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionitem 住建-安全检查明细
+     * @return 结果
+     */
+    int updateCenterdataTHousingconstructionSafetyinspectionitem(CenterdataTHousingconstructionSafetyinspectionitem centerdataTHousingconstructionSafetyinspectionitem);
+
+    /**
+     * 删除住建-安全检查明细
+     *
+     * @param id 住建-安全检查明细主键
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionSafetyinspectionitemById(Long id);
+
+    /**
+     * 批量删除住建-安全检查明细
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionSafetyinspectionitemByIds(Long[] ids);
+}

+ 69 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSafetyinspectionrecordsMapper.java

@@ -0,0 +1,69 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSafetyinspectionrecords;
+
+import java.util.List;
+
+/**
+ * 住建-安全检查记录Mapper接口
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionSafetyinspectionrecordsMapper {
+    /**
+     * 查询住建-安全检查记录
+     *
+     * @param id 住建-安全检查记录主键
+     * @return 住建-安全检查记录
+     */
+    CenterdataTHousingconstructionSafetyinspectionrecords selectCenterdataTHousingconstructionSafetyinspectionrecordsById(Long id);
+
+    /**
+     * 查询住建-安全检查记录
+     *
+     * @param id 住建-安全检查记录主键
+     * @return 住建-安全检查记录
+     */
+    CenterdataTHousingconstructionSafetyinspectionrecords queryRedordDetails(String id);
+
+    /**
+     * 查询住建-安全检查记录列表
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionrecords 住建-安全检查记录
+     * @return 住建-安全检查记录集合
+     */
+    List<CenterdataTHousingconstructionSafetyinspectionrecords> selectCenterdataTHousingconstructionSafetyinspectionrecordsList(CenterdataTHousingconstructionSafetyinspectionrecords centerdataTHousingconstructionSafetyinspectionrecords);
+
+    /**
+     * 新增住建-安全检查记录
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionrecords 住建-安全检查记录
+     * @return 结果
+     */
+    int insertCenterdataTHousingconstructionSafetyinspectionrecords(CenterdataTHousingconstructionSafetyinspectionrecords centerdataTHousingconstructionSafetyinspectionrecords);
+
+    /**
+     * 修改住建-安全检查记录
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionrecords 住建-安全检查记录
+     * @return 结果
+     */
+    int updateCenterdataTHousingconstructionSafetyinspectionrecords(CenterdataTHousingconstructionSafetyinspectionrecords centerdataTHousingconstructionSafetyinspectionrecords);
+
+    /**
+     * 删除住建-安全检查记录
+     *
+     * @param id 住建-安全检查记录主键
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionSafetyinspectionrecordsById(Long id);
+
+    /**
+     * 批量删除住建-安全检查记录
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionSafetyinspectionrecordsByIds(Long[] ids);
+}

+ 64 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSafetyinspectionrecordsdetailMapper.java

@@ -0,0 +1,64 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSafetyinspectionrecordsdetail;
+
+import java.util.List;
+
+/**
+ * 住建-安全检查记录明细Mapper接口
+ *
+ * @author LG
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionSafetyinspectionrecordsdetailMapper {
+    /**
+     * 查询住建-安全检查记录明细
+     *
+     * @param id 住建-安全检查记录明细主键
+     * @return 住建-安全检查记录明细
+     */
+    CenterdataTHousingconstructionSafetyinspectionrecordsdetail selectCenterdataTHousingconstructionSafetyinspectionrecordsdetailById(String id);
+
+    /**
+     * 查询住建-安全检查记录明细列表
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionrecordsdetail 住建-安全检查记录明细
+     * @return 住建-安全检查记录明细集合
+     */
+    List<CenterdataTHousingconstructionSafetyinspectionrecordsdetail> selectCenterdataTHousingconstructionSafetyinspectionrecordsdetailList(CenterdataTHousingconstructionSafetyinspectionrecordsdetail centerdataTHousingconstructionSafetyinspectionrecordsdetail);
+
+    /**
+     * 新增住建-安全检查记录明细
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionrecordsdetail 住建-安全检查记录明细
+     * @return 结果
+     */
+    int insertCenterdataTHousingconstructionSafetyinspectionrecordsdetail(CenterdataTHousingconstructionSafetyinspectionrecordsdetail centerdataTHousingconstructionSafetyinspectionrecordsdetail);
+
+    /**
+     * 修改住建-安全检查记录明细
+     *
+     * @param centerdataTHousingconstructionSafetyinspectionrecordsdetail 住建-安全检查记录明细
+     * @return 结果
+     */
+    int updateCenterdataTHousingconstructionSafetyinspectionrecordsdetail(CenterdataTHousingconstructionSafetyinspectionrecordsdetail centerdataTHousingconstructionSafetyinspectionrecordsdetail);
+
+    /**
+     * 删除住建-安全检查记录明细
+     *
+     * @param id 住建-安全检查记录明细主键
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionSafetyinspectionrecordsdetailById(String id);
+
+    /**
+     * 批量删除住建-安全检查记录明细
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCenterdataTHousingconstructionSafetyinspectionrecordsdetailByIds(String[] ids);
+
+    int insertList(List<CenterdataTHousingconstructionSafetyinspectionrecordsdetail> detailList);
+}

+ 69 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionSteelcylinderLogMapper.java

@@ -0,0 +1,69 @@
+package com.sooka.sponest.data.housingconstruction.mapper;
+
+import com.sooka.sponest.data.housingconstruction.domain.CenterdataTHousingconstructionSteelcylinderLog;
+
+import java.util.List;
+
+/**
+ * 钢瓶日志Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-07-30
+ */
+public interface CenterdataTHousingconstructionSteelcylinderLogMapper {
+    /**
+     * 查询钢瓶日志
+     *
+     * @param id 钢瓶日志主键
+     * @return 钢瓶日志
+     */
+    public CenterdataTHousingconstructionSteelcylinderLog selectCenterdataTHousingconstructionSteelcylinderLogById(String id);
+
+    /**
+     * 查询钢瓶日志列表
+     *
+     * @param centerdataTHousingconstructionSteelcylinderLog 钢瓶日志
+     * @return 钢瓶日志集合
+     */
+    public List<CenterdataTHousingconstructionSteelcylinderLog> selectCenterdataTHousingconstructionSteelcylinderLogList(CenterdataTHousingconstructionSteelcylinderLog centerdataTHousingconstructionSteelcylinderLog);
+
+    /**
+     * 新增钢瓶日志
+     *
+     * @param centerdataTHousingconstructionSteelcylinderLog 钢瓶日志
+     * @return 结果
+     */
+    public int insertCenterdataTHousingconstructionSteelcylinderLog(CenterdataTHousingconstructionSteelcylinderLog centerdataTHousingconstructionSteelcylinderLog);
+
+    /**
+     * 修改钢瓶日志
+     *
+     * @param centerdataTHousingconstructionSteelcylinderLog 钢瓶日志
+     * @return 结果
+     */
+    public int updateCenterdataTHousingconstructionSteelcylinderLog(CenterdataTHousingconstructionSteelcylinderLog centerdataTHousingconstructionSteelcylinderLog);
+
+    /**
+     * 删除钢瓶日志
+     *
+     * @param id 钢瓶日志主键
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionSteelcylinderLogById(String id);
+
+    /**
+     * 批量删除钢瓶日志
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCenterdataTHousingconstructionSteelcylinderLogByIds(String[] ids);
+
+    /*
+    * 按钢瓶id查询最新一条日志
+    *
+    * @author 韩福成
+    * @date 2024/8/1 上午9:54
+    */
+    public CenterdataTHousingconstructionSteelcylinderLog selectBySteelcylinderId(String steelcylinderId);
+}

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


部分文件因文件數量過多而無法顯示