From d92f3c4c4f3e7772e501a462bc5efdc9e416d5b2 Mon Sep 17 00:00:00 2001 From: wangyan Date: Fri, 3 Apr 2026 14:43:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=B8=9A=E5=8A=A1=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- start/pom.xml | 2 +- start/src/main/resources/bootstrap.yml | 2 + start/src/main/resources/nacos.yml | 6 +- .../main/resources/nacos/jjb-saas-demo.yml | 11 +- start/src/main/resources/prodnacos.yml | 42 +++++ start/src/main/resources/prodsdk.yml | 54 ++++++ start/src/main/resources/sdk.yml | 6 +- .../zcloud/web/AlarmDisposeController.java | 77 ++++++++ .../com/zcloud/web/AlarmRecordController.java | 43 +++++ .../zcloud/web/AppAlarmDisposeController.java | 58 ++++++ .../zcloud/web/AppAlarmRecordController.java | 37 ++++ .../zcloud/web/DeviceRegionController.java | 93 ++++++++++ .../com/zcloud/web/RiskPointController.java | 78 -------- .../zcloud/web/SensorDeviceController.java | 85 +++++++++ .../com/zcloud/web/SensorTypeController.java | 68 +++++++ web-app/pom.xml | 18 ++ .../zcloud/command/AlarmDisposeAssignExe.java | 97 ++++++++++ .../command/AlarmDisposeBatchAssignExe.java | 93 ++++++++++ .../command/AlarmDisposeInvalidExe.java | 89 ++++++++++ .../command/AppAlarmDisposeSubmitExe.java | 111 ++++++++++++ .../com/zcloud/command/BindSensorExe.java | 56 ++++++ .../zcloud/command/DeviceRegionAddExe.java | 52 ++++++ .../zcloud/command/DeviceRegionRemoveExe.java | 36 ++++ .../zcloud/command/DeviceRegionUpdateExe.java | 41 +++++ .../java/com/zcloud/command/ManagerExe.java | 38 ++++ .../com/zcloud/command/RiskPointAddExe.java | 37 ---- .../zcloud/command/RiskPointRemoveExe.java | 33 ---- .../zcloud/command/RiskPointUpdateExe.java | 31 ---- .../zcloud/command/SensorDeviceAddExe.java | 49 +++++ .../zcloud/command/SensorDeviceRemoveExe.java | 31 ++++ .../zcloud/command/SensorDeviceStatusExe.java | 37 ++++ .../command/SensorDeviceThresholdExe.java | 55 ++++++ .../zcloud/command/SensorDeviceUpdateExe.java | 36 ++++ .../com/zcloud/command/SensorTypeAddExe.java | 41 +++++ .../zcloud/command/SensorTypeRemoveExe.java | 39 ++++ .../zcloud/command/SensorTypeUpdateExe.java | 36 ++++ .../com/zcloud/command/UnbindSensorExe.java | 38 ++++ .../convertor/RiskPointCoConvertor.java | 16 -- .../command/query/AlarmDisposeQueryExe.java | 74 ++++++++ .../command/query/AlarmRecordQueryExe.java | 69 ++++++++ .../query/AppAlarmDisposeQueryExe.java | 80 +++++++++ .../command/query/AppAlarmRecordQueryExe.java | 74 ++++++++ .../command/query/DeviceRegionQueryExe.java | 76 ++++++++ .../command/query/RiskPointQueryExe.java | 36 ---- .../command/query/SensorDeviceQueryExe.java | 64 +++++++ .../command/query/SensorTypeQueryExe.java | 60 +++++++ .../service/AlarmDisposeServiceImpl.java | 78 ++++++++ .../zcloud/service/AlarmMessageService.java | 111 ++++++++++++ .../service/AlarmRecordServiceImpl.java | 40 +++++ .../com/zcloud/service/AlarmTodoService.java | 124 +++++++++++++ .../service/DeviceRegionServiceImpl.java | 83 +++++++++ .../zcloud/service/RiskPointServiceImpl.java | 56 ------ .../service/SensorDeviceServiceImpl.java | 66 +++++++ .../zcloud/service/SensorTypeServiceImpl.java | 51 ++++++ .../com/zcloud/api/AlarmDisposeServiceI.java | 77 ++++++++ .../com/zcloud/api/AlarmRecordServiceI.java | 43 +++++ .../com/zcloud/api/DeviceRegionServiceI.java | 75 ++++++++ .../com/zcloud/api/RiskPointServiceI.java | 20 --- .../com/zcloud/api/SensorDeviceServiceI.java | 63 +++++++ .../com/zcloud/api/SensorTypeServiceI.java | 49 +++++ .../com/zcloud/dto/AlarmDisposeAssignCmd.java | 38 ++++ .../dto/AlarmDisposeBatchAssignCmd.java | 34 ++++ .../zcloud/dto/AlarmDisposeInvalidCmd.java | 32 ++++ .../com/zcloud/dto/AlarmDisposePageQry.java | 50 ++++++ .../com/zcloud/dto/AlarmRecordPageQry.java | 38 ++++ .../zcloud/dto/AppAlarmDisposePageQry.java | 47 +++++ .../zcloud/dto/AppAlarmDisposeSubmitCmd.java | 38 ++++ .../com/zcloud/dto/AppAlarmRecordPageQry.java | 23 +++ .../java/com/zcloud/dto/BindSensorCmd.java | 38 ++++ .../com/zcloud/dto/DeviceRegionAddCmd.java | 47 +++++ .../com/zcloud/dto/DeviceRegionPageQry.java | 32 ++++ .../com/zcloud/dto/DeviceRegionUpdateCmd.java | 38 ++++ .../main/java/com/zcloud/dto/ManagerCmd.java | 29 +++ .../java/com/zcloud/dto/RiskPointAddCmd.java | 30 ---- .../java/com/zcloud/dto/RiskPointPageQry.java | 46 ----- .../com/zcloud/dto/RiskPointUpdateCmd.java | 31 ---- .../com/zcloud/dto/SensorDeviceAddCmd.java | 80 +++++++++ .../com/zcloud/dto/SensorDevicePageQry.java | 44 +++++ .../zcloud/dto/SensorDeviceThresholdCmd.java | 47 +++++ .../com/zcloud/dto/SensorDeviceUpdateCmd.java | 71 ++++++++ .../java/com/zcloud/dto/SensorTypeAddCmd.java | 38 ++++ .../com/zcloud/dto/SensorTypePageQry.java | 32 ++++ .../com/zcloud/dto/SensorTypeUpdateCmd.java | 41 +++++ .../java/com/zcloud/dto/UnbindSensorCmd.java | 26 +++ .../dto/clientobject/AlarmDisposeCO.java | 125 +++++++++++++ .../dto/clientobject/AlarmRecordCO.java | 128 ++++++++++++++ .../dto/clientobject/DeviceRegionCO.java | 67 +++++++ .../zcloud/dto/clientobject/FireRegionCO.java | 38 ++++ .../zcloud/dto/clientobject/RiskPointCo.java | 17 -- .../dto/clientobject/SensorDeviceCO.java | 109 ++++++++++++ .../zcloud/dto/clientobject/SensorTypeCO.java | 67 +++++++ .../gateway/AlarmDisposeLogGateway.java | 27 +++ .../domain/gateway/AlarmRecordGateway.java | 42 +++++ .../domain/gateway/DeviceRegionGateway.java | 47 +++++ .../gateway/RegionSensorRelGateway.java | 31 ++++ .../domain/gateway/RiskPointGateway.java | 33 ---- .../domain/gateway/SensorDeviceGateway.java | 31 ++++ .../domain/gateway/SensorTypeGateway.java | 31 ++++ .../zcloud/domain/model/AlarmDisposeLogE.java | 85 +++++++++ .../com/zcloud/domain/model/AlarmRecordE.java | 167 ++++++++++++++++++ .../zcloud/domain/model/DeviceRegionE.java | 65 +++++++ .../zcloud/domain/model/RegionSensorRelE.java | 55 ++++++ .../com/zcloud/domain/model/RiskPointE.java | 20 --- .../zcloud/domain/model/SensorDeviceE.java | 135 ++++++++++++++ .../com/zcloud/domain/model/SensorTypeE.java | 60 +++++++ web-infrastructure/pom.xml | 17 ++ .../AlarmDisposeLogGatewayImpl.java | 59 +++++++ .../gatewayimpl/AlarmRecordGatewayImpl.java | 91 ++++++++++ .../gatewayimpl/DeviceRegionGatewayImpl.java | 96 ++++++++++ .../RegionSensorRelGatewayImpl.java | 62 +++++++ .../gatewayimpl/RiskPointGatewayImpl.java | 51 ------ .../gatewayimpl/SensorDeviceGatewayImpl.java | 53 ++++++ .../gatewayimpl/SensorTypeGatewayImpl.java | 53 ++++++ .../dataobject/AlarmDisposeLogDO.java | 62 +++++++ .../persistence/dataobject/AlarmRecordDO.java | 112 ++++++++++++ .../dataobject/DeviceRegionDO.java | 50 ++++++ .../dataobject/RegionSensorRelDO.java | 44 +++++ .../persistence/dataobject/RiskPointDO.java | 16 -- .../dataobject/SensorDeviceDO.java | 92 ++++++++++ .../persistence/dataobject/SensorTypeDO.java | 50 ++++++ .../persistence/domainobject/RiskPointDO.java | 16 -- .../mapper/AlarmDisposeLogMapper.java | 13 ++ .../persistence/mapper/AlarmRecordMapper.java | 13 ++ .../mapper/DeviceRegionMapper.java | 13 ++ .../mapper/RegionSensorRelMapper.java | 13 ++ .../persistence/mapper/RiskPointMapper.java | 9 - .../mapper/SensorDeviceMapper.java | 13 ++ .../persistence/mapper/SensorTypeMapper.java | 13 ++ .../repository/AlarmDisposeLogRepository.java | 11 ++ .../repository/AlarmRecordRepository.java | 11 ++ .../repository/DeviceRegionRepository.java | 11 ++ .../repository/RegionSensorRelRepository.java | 11 ++ .../repository/RiskPointRepository.java | 15 -- .../repository/SensorDeviceRepository.java | 11 ++ .../repository/SensorTypeRepository.java | 11 ++ .../impl/RiskPointRepositoryImpl.java | 35 ---- .../impl/SensorDeviceRepositoryImpl.java | 18 ++ .../impl/SensorTypeRepositoryImpl.java | 18 ++ .../resources/mybatis/RiskPointMapper.xml | 7 - .../main/resources/mybatis/mybatis-config.xml | 1 - 140 files changed, 6120 insertions(+), 642 deletions(-) create mode 100644 start/src/main/resources/prodnacos.yml create mode 100644 start/src/main/resources/prodsdk.yml create mode 100644 web-adapter/src/main/java/com/zcloud/web/AlarmDisposeController.java create mode 100644 web-adapter/src/main/java/com/zcloud/web/AlarmRecordController.java create mode 100644 web-adapter/src/main/java/com/zcloud/web/AppAlarmDisposeController.java create mode 100644 web-adapter/src/main/java/com/zcloud/web/AppAlarmRecordController.java create mode 100644 web-adapter/src/main/java/com/zcloud/web/DeviceRegionController.java delete mode 100644 web-adapter/src/main/java/com/zcloud/web/RiskPointController.java create mode 100644 web-adapter/src/main/java/com/zcloud/web/SensorDeviceController.java create mode 100644 web-adapter/src/main/java/com/zcloud/web/SensorTypeController.java create mode 100644 web-app/src/main/java/com/zcloud/command/AlarmDisposeAssignExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/AlarmDisposeBatchAssignExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/AlarmDisposeInvalidExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/AppAlarmDisposeSubmitExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/BindSensorExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/DeviceRegionAddExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/DeviceRegionRemoveExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/DeviceRegionUpdateExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/ManagerExe.java delete mode 100644 web-app/src/main/java/com/zcloud/command/RiskPointAddExe.java delete mode 100644 web-app/src/main/java/com/zcloud/command/RiskPointRemoveExe.java delete mode 100644 web-app/src/main/java/com/zcloud/command/RiskPointUpdateExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorDeviceAddExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorDeviceRemoveExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorDeviceStatusExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorDeviceThresholdExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorDeviceUpdateExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorTypeAddExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorTypeRemoveExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/SensorTypeUpdateExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/UnbindSensorExe.java delete mode 100644 web-app/src/main/java/com/zcloud/command/convertor/RiskPointCoConvertor.java create mode 100644 web-app/src/main/java/com/zcloud/command/query/AlarmDisposeQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/query/AlarmRecordQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/query/AppAlarmDisposeQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/query/AppAlarmRecordQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/query/DeviceRegionQueryExe.java delete mode 100644 web-app/src/main/java/com/zcloud/command/query/RiskPointQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/query/SensorDeviceQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/command/query/SensorTypeQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/service/AlarmDisposeServiceImpl.java create mode 100644 web-app/src/main/java/com/zcloud/service/AlarmMessageService.java create mode 100644 web-app/src/main/java/com/zcloud/service/AlarmRecordServiceImpl.java create mode 100644 web-app/src/main/java/com/zcloud/service/AlarmTodoService.java create mode 100644 web-app/src/main/java/com/zcloud/service/DeviceRegionServiceImpl.java delete mode 100644 web-app/src/main/java/com/zcloud/service/RiskPointServiceImpl.java create mode 100644 web-app/src/main/java/com/zcloud/service/SensorDeviceServiceImpl.java create mode 100644 web-app/src/main/java/com/zcloud/service/SensorTypeServiceImpl.java create mode 100644 web-client/src/main/java/com/zcloud/api/AlarmDisposeServiceI.java create mode 100644 web-client/src/main/java/com/zcloud/api/AlarmRecordServiceI.java create mode 100644 web-client/src/main/java/com/zcloud/api/DeviceRegionServiceI.java delete mode 100644 web-client/src/main/java/com/zcloud/api/RiskPointServiceI.java create mode 100644 web-client/src/main/java/com/zcloud/api/SensorDeviceServiceI.java create mode 100644 web-client/src/main/java/com/zcloud/api/SensorTypeServiceI.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AlarmDisposeAssignCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AlarmDisposeBatchAssignCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AlarmDisposeInvalidCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AlarmDisposePageQry.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AlarmRecordPageQry.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AppAlarmDisposePageQry.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AppAlarmDisposeSubmitCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/AppAlarmRecordPageQry.java create mode 100644 web-client/src/main/java/com/zcloud/dto/BindSensorCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/DeviceRegionAddCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/DeviceRegionPageQry.java create mode 100644 web-client/src/main/java/com/zcloud/dto/DeviceRegionUpdateCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/ManagerCmd.java delete mode 100644 web-client/src/main/java/com/zcloud/dto/RiskPointAddCmd.java delete mode 100644 web-client/src/main/java/com/zcloud/dto/RiskPointPageQry.java delete mode 100644 web-client/src/main/java/com/zcloud/dto/RiskPointUpdateCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/SensorDeviceAddCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/SensorDevicePageQry.java create mode 100644 web-client/src/main/java/com/zcloud/dto/SensorDeviceThresholdCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/SensorDeviceUpdateCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/SensorTypeAddCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/SensorTypePageQry.java create mode 100644 web-client/src/main/java/com/zcloud/dto/SensorTypeUpdateCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/UnbindSensorCmd.java create mode 100644 web-client/src/main/java/com/zcloud/dto/clientobject/AlarmDisposeCO.java create mode 100644 web-client/src/main/java/com/zcloud/dto/clientobject/AlarmRecordCO.java create mode 100644 web-client/src/main/java/com/zcloud/dto/clientobject/DeviceRegionCO.java create mode 100644 web-client/src/main/java/com/zcloud/dto/clientobject/FireRegionCO.java delete mode 100644 web-client/src/main/java/com/zcloud/dto/clientobject/RiskPointCo.java create mode 100644 web-client/src/main/java/com/zcloud/dto/clientobject/SensorDeviceCO.java create mode 100644 web-client/src/main/java/com/zcloud/dto/clientobject/SensorTypeCO.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/gateway/AlarmDisposeLogGateway.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/gateway/AlarmRecordGateway.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/gateway/DeviceRegionGateway.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/gateway/RegionSensorRelGateway.java delete mode 100644 web-domain/src/main/java/com/zcloud/domain/gateway/RiskPointGateway.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/gateway/SensorDeviceGateway.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/gateway/SensorTypeGateway.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/model/AlarmDisposeLogE.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/model/AlarmRecordE.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/model/DeviceRegionE.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/model/RegionSensorRelE.java delete mode 100644 web-domain/src/main/java/com/zcloud/domain/model/RiskPointE.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/model/SensorDeviceE.java create mode 100644 web-domain/src/main/java/com/zcloud/domain/model/SensorTypeE.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmDisposeLogGatewayImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmRecordGatewayImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/gatewayimpl/DeviceRegionGatewayImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RegionSensorRelGatewayImpl.java delete mode 100644 web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RiskPointGatewayImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorDeviceGatewayImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorTypeGatewayImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmDisposeLogDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmRecordDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/DeviceRegionDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RegionSensorRelDO.java delete mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RiskPointDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorDeviceDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorTypeDO.java delete mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/domainobject/RiskPointDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmDisposeLogMapper.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmRecordMapper.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/mapper/DeviceRegionMapper.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RegionSensorRelMapper.java delete mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RiskPointMapper.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorDeviceMapper.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorTypeMapper.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmDisposeLogRepository.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmRecordRepository.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/DeviceRegionRepository.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/RegionSensorRelRepository.java delete mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/RiskPointRepository.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorDeviceRepository.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorTypeRepository.java delete mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/RiskPointRepositoryImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorDeviceRepositoryImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorTypeRepositoryImpl.java delete mode 100644 web-infrastructure/src/main/resources/mybatis/RiskPointMapper.xml diff --git a/start/pom.xml b/start/pom.xml index e4695e4..6d15eb7 100644 --- a/start/pom.xml +++ b/start/pom.xml @@ -39,7 +39,7 @@ org.springframework.boot spring-boot-maven-plugin - com.zcloud.risk.Application + com.zcloud.iotalarm.IotAlarmApplication diff --git a/start/src/main/resources/bootstrap.yml b/start/src/main/resources/bootstrap.yml index d921869..7253d0c 100644 --- a/start/src/main/resources/bootstrap.yml +++ b/start/src/main/resources/bootstrap.yml @@ -2,5 +2,7 @@ spring: config: import: - classpath:nacos.yml +# - classpath:prodnacos.yml - classpath:sdk.yml +# - classpath:prodsdk.yml - classpath:swagger.yml diff --git a/start/src/main/resources/nacos.yml b/start/src/main/resources/nacos.yml index af260d4..eebc076 100644 --- a/start/src/main/resources/nacos.yml +++ b/start/src/main/resources/nacos.yml @@ -2,10 +2,10 @@ nacos: url: 192.168.20.100:30290 namespace: jjb-dragon application: - name: jjb-saas-zcloud-risk + name: jjb-saas-zcloud-iotalarm version: - gateway: risk - cn-name: 风险中心 + gateway: iotalarm + cn-name: 物联网消防报警 spring: application: name: ${application.name}${application.version} diff --git a/start/src/main/resources/nacos/jjb-saas-demo.yml b/start/src/main/resources/nacos/jjb-saas-demo.yml index 536d952..d943abe 100644 --- a/start/src/main/resources/nacos/jjb-saas-demo.yml +++ b/start/src/main/resources/nacos/jjb-saas-demo.yml @@ -15,4 +15,13 @@ springfox: base-url: ${application.gateway} swagger: v2: - path: /${application.gateway}/v2/api-docs \ No newline at end of file + path: /${application.gateway}/v2/api-docs + +# 报警消息模板配置 +alarm: + message: + template: + # 报警自动推送模板编码(由开放平台配置) + auto-push: IOT_ALARM_AUTO_PUSH + # 报警处置推送模板编码(由开放平台配置) + dispose-push: IOT_ALARM_DISPOSE_PUSH \ No newline at end of file diff --git a/start/src/main/resources/prodnacos.yml b/start/src/main/resources/prodnacos.yml new file mode 100644 index 0000000..f8a0eda --- /dev/null +++ b/start/src/main/resources/prodnacos.yml @@ -0,0 +1,42 @@ +nacos: + url: prod-nacos:8848 + namespace: jjb-dragon +application: + name: jjb-saas-zcloud-iotalarm + version: + gateway: iotalarm + cn-name: 物联网消防报警 +spring: + application: + name: ${application.name}${application.version} + profiles: + # 环境配置 + active: prod + cloud: + nacos: + config: + namespace: ${nacos.namespace} + server-addr: ${nacos.url} + username: nacos + password: u9Hc7tLFBY + file-extension: yml + shared-configs: + - config-common.yml + - config-port.yml + - config-mq.yml + - config-log.yml + - config-sdk-server.yml + - config-actuator.yml + - config-job.yml + - config-mysql.yml + - config-redis.yml + - config-cache.yml + - config-spring.yml + - config-mybatis.yml + - config-sdk.yml + - config-flyway.yml + discovery: + server-addr: ${spring.cloud.nacos.config.server-addr} + namespace: ${spring.cloud.nacos.config.namespace} + username: nacos + password: u9Hc7tLFBY diff --git a/start/src/main/resources/prodsdk.yml b/start/src/main/resources/prodsdk.yml new file mode 100644 index 0000000..e59087b --- /dev/null +++ b/start/src/main/resources/prodsdk.yml @@ -0,0 +1,54 @@ +sdk: + server: +# 线上环境 + app-key: 0fde29723e51420d82b7047feaad98c9 +# 港务局环境 +# app-key: 7aa164ddb87a450fbcd902b38a49e36e + client: + gateway: + url: ${common.gateway.network.http.external} + route: + - client: + system-code: ${application.name} + name: ${application.cn-name}-后端 + group-code: public_api + service: + system-code: ${application.name} + name: ${application.cn-name}-后端 + group-code: public_api + strip-prefix: 0 + uri: http://${application.name} + path: /${application.gateway}/** + - client: + system-code: ${application.name}-container + name: ${application.cn-name}-前端 + group-code: public_api + service: + system-code: ${application.name}-container + name: ${application.cn-name}-前端 + group-code: public_api + strip-prefix: 0 + uri: http://jjb-saas-base + path: /${application.gateway}/container/** + order: -2 +openapi: + appId: 1871106785124999168 + appKey: 7314ecfc11ff4d5fad1ac19284ed2ac3 + appSecret: 7565ab15-a2ae-4830-9b4d-fb382cd5fb30 + appPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d03420004f339671110a06681fcfd968ad9247bd3cd0d2ec6b2159d1d4b775e7ed5566b3297d82cf14b626ef11fdd6bc7ecb6bcfb3ea94ccd1f381f4116f43367be4b360f + appPrivateKey: 308193020100301306072a8648ce3d020106082a811ccf5501822d0479307702010104206b6abc8e717b7d042f1e8531190a7c18113e4a701417f2770d2150d33ba97779a00a06082a811ccf5501822da14403420004f339671110a06681fcfd968ad9247bd3cd0d2ec6b2159d1d4b775e7ed5566b3297d82cf14b626ef11fdd6bc7ecb6bcfb3ea94ccd1f381f4116f43367be4b360f + encryptType: SM2 + platform: + - name: default + openPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d034200045b5d8fcad91e113910406db4caf0f5c6688048e0f46742d55f872a25855316803ddb177cc9bb5906ff0b2ad4d6b1f1378a49109104613e79b5b5512e3710e88f + url: ${common.gateway.network.http.intranet} + protocol: HTTP + defaultPlatform: true + ##ciphertext plaintext + type: plaintext + apiPlatform: + - name: default + #多个可以逗号隔开 + apiCode: test:01 + #多个可以逗号隔开,可以为空 + tenantIds: 1838408702262321152 diff --git a/start/src/main/resources/sdk.yml b/start/src/main/resources/sdk.yml index cffc4f1..e3c5f01 100644 --- a/start/src/main/resources/sdk.yml +++ b/start/src/main/resources/sdk.yml @@ -1,6 +1,6 @@ sdk: server: - app-key: 722091ff53dd4abba078c2a00efd4a42 + app-key: d8328fe2605f4f92848fef116472241d client: gateway: url: ${common.gateway.network.http.external} @@ -14,7 +14,7 @@ sdk: name: ${application.cn-name}-后端 group-code: public_api strip-prefix: 0 - uri: lb://${application.name} + uri: http://${application.name} path: /${application.gateway}/** - client: system-code: ${application.name}-container @@ -25,7 +25,7 @@ sdk: name: ${application.cn-name}-前端 group-code: public_api strip-prefix: 0 - uri: lb://jjb-saas-base + uri: http://jjb-saas-base path: /${application.gateway}/container/** order: -2 openapi: diff --git a/web-adapter/src/main/java/com/zcloud/web/AlarmDisposeController.java b/web-adapter/src/main/java/com/zcloud/web/AlarmDisposeController.java new file mode 100644 index 0000000..2e41b03 --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/web/AlarmDisposeController.java @@ -0,0 +1,77 @@ +package com.zcloud.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.api.AlarmDisposeServiceI; +import com.zcloud.dto.AlarmDisposeAssignCmd; +import com.zcloud.dto.AlarmDisposeBatchAssignCmd; +import com.zcloud.dto.AlarmDisposeInvalidCmd; +import com.zcloud.dto.AlarmDisposePageQry; +import com.zcloud.dto.clientobject.AlarmDisposeCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * AlarmDisposeController - 报警处置控制器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Api(tags = "报警处置分配") +@RequestMapping("/${application.gateway}/alarmDispose") +@RestController +@AllArgsConstructor +public class AlarmDisposeController { + private final AlarmDisposeServiceI alarmDisposeService; + + @ApiOperation("待处置列表") + @PostMapping("/assignList") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-alarmdispose-assignlist')") + public PageResponse assignList(@RequestBody AlarmDisposePageQry qry) { + if (qry.getTenantId() == null) { + qry.setTenantId(AuthContext.getTenantId()); + } + return alarmDisposeService.assignList(qry); + } + + @ApiOperation("单条处置分配") + @PostMapping("/assign") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-alarmdispose-assign')") + public SingleResponse assign(@Validated @RequestBody AlarmDisposeAssignCmd cmd) { + if (cmd.getTenantId() == null) { + cmd.setTenantId(AuthContext.getTenantId()); + } + return alarmDisposeService.assign(cmd); + } + + @ApiOperation("批量处置分配") + @PostMapping("/batchAssign") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-alarmdispose-batchassign')") + public SingleResponse batchAssign(@Validated @RequestBody AlarmDisposeBatchAssignCmd cmd) { + if (cmd.getTenantId() == null) { + cmd.setTenantId(AuthContext.getTenantId()); + } + return alarmDisposeService.batchAssign(cmd); + } + + @ApiOperation("无效报警处理") + @PostMapping("/invalid") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-alarmdispose-invalid')") + public SingleResponse invalid(@Validated @RequestBody AlarmDisposeInvalidCmd cmd) { + if (cmd.getTenantId() == null) { + cmd.setTenantId(AuthContext.getTenantId()); + } + return alarmDisposeService.invalid(cmd); + } + + @ApiOperation("报警详情") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-alarmdispose-assignlist')") + public SingleResponse info(@PathVariable("id") Long id) { + return alarmDisposeService.info(id); + } +} \ No newline at end of file diff --git a/web-adapter/src/main/java/com/zcloud/web/AlarmRecordController.java b/web-adapter/src/main/java/com/zcloud/web/AlarmRecordController.java new file mode 100644 index 0000000..d352179 --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/web/AlarmRecordController.java @@ -0,0 +1,43 @@ +package com.zcloud.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.api.AlarmRecordServiceI; +import com.zcloud.dto.AlarmRecordPageQry; +import com.zcloud.dto.clientobject.AlarmRecordCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +/** + * AlarmRecordController - 报警记录控制器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Api(tags = "报警记录管理") +@RequestMapping("/${application.gateway}/alarmRecord") +@RestController +@AllArgsConstructor +public class AlarmRecordController { + private final AlarmRecordServiceI alarmRecordService; + + @ApiOperation("报警记录列表") + @PostMapping("/list") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-alarmrecord-list')") + public PageResponse list(@RequestBody AlarmRecordPageQry qry) { + if (qry.getTenantId() == null) { + qry.setTenantId(AuthContext.getTenantId()); + } + return alarmRecordService.list(qry); + } + + @ApiOperation("报警详情") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-alarmrecord-info')") + public SingleResponse info(@PathVariable("id") Long id) { + return alarmRecordService.info(id); + } +} \ No newline at end of file diff --git a/web-adapter/src/main/java/com/zcloud/web/AppAlarmDisposeController.java b/web-adapter/src/main/java/com/zcloud/web/AppAlarmDisposeController.java new file mode 100644 index 0000000..382010c --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/web/AppAlarmDisposeController.java @@ -0,0 +1,58 @@ +package com.zcloud.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.api.AlarmDisposeServiceI; +import com.zcloud.dto.AppAlarmDisposePageQry; +import com.zcloud.dto.AppAlarmDisposeSubmitCmd; +import com.zcloud.dto.clientobject.AlarmDisposeCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * AppAlarmDisposeController - APP报警处置控制器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Api(tags = "手机端报警处置") +@RequestMapping("/${application.gateway}/app/alarmDispose") +@RestController +@AllArgsConstructor +public class AppAlarmDisposeController { + + private final AlarmDisposeServiceI alarmDisposeService; + + @ApiOperation("手机端待处置列表") + @PostMapping("/todoList") + public PageResponse todoList(@RequestBody AppAlarmDisposePageQry qry) { + // 自动填充当前用户ID和租户ID + qry.setCurrentUserId(AuthContext.getUserId()); + if (qry.getTenantId() == null) { + qry.setTenantId(AuthContext.getTenantId()); + } + return alarmDisposeService.appTodoList(qry); + } + + @ApiOperation("手机端报警详情") + @GetMapping("/{id}") + public SingleResponse info(@PathVariable("id") Long id) { + return alarmDisposeService.appInfo(id); + } + + @ApiOperation("手机端提交处置结果") + @PostMapping("/submit") + public SingleResponse submit(@Validated @RequestBody AppAlarmDisposeSubmitCmd cmd) { + // 自动填充租户ID和组织ID + if (cmd.getTenantId() == null) { + cmd.setTenantId(AuthContext.getTenantId()); + } + if (cmd.getOrgId() == null) { + cmd.setOrgId(AuthContext.getOrgId()); + } + return alarmDisposeService.appSubmit(cmd); + } +} \ No newline at end of file diff --git a/web-adapter/src/main/java/com/zcloud/web/AppAlarmRecordController.java b/web-adapter/src/main/java/com/zcloud/web/AppAlarmRecordController.java new file mode 100644 index 0000000..f8e62bb --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/web/AppAlarmRecordController.java @@ -0,0 +1,37 @@ +package com.zcloud.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.api.AlarmRecordServiceI; +import com.zcloud.dto.AppAlarmRecordPageQry; +import com.zcloud.dto.clientobject.AlarmRecordCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * AppAlarmRecordController - APP报警记录控制器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Api(tags = "手机端处置记录") +@RequestMapping("/${application.gateway}/app/alarmRecord") +@RestController +@AllArgsConstructor +public class AppAlarmRecordController { + + private final AlarmRecordServiceI alarmRecordService; + + @ApiOperation("处置记录列表(按当前用户过滤)") + @PostMapping("/list") + public PageResponse list(@RequestBody AppAlarmRecordPageQry qry) { + return alarmRecordService.appList(qry); + } + + @ApiOperation("处置记录详情") + @GetMapping("/{id}") + public SingleResponse info(@PathVariable("id") Long id) { + return alarmRecordService.appInfo(id); + } +} \ No newline at end of file diff --git a/web-adapter/src/main/java/com/zcloud/web/DeviceRegionController.java b/web-adapter/src/main/java/com/zcloud/web/DeviceRegionController.java new file mode 100644 index 0000000..efa7710 --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/web/DeviceRegionController.java @@ -0,0 +1,93 @@ +package com.zcloud.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.api.DeviceRegionServiceI; +import com.zcloud.dto.DeviceRegionAddCmd; +import com.zcloud.dto.DeviceRegionPageQry; +import com.zcloud.dto.BindSensorCmd; +import com.zcloud.dto.UnbindSensorCmd; +import com.zcloud.dto.ManagerCmd; +import com.zcloud.dto.clientobject.DeviceRegionCO; +import com.zcloud.dto.clientobject.FireRegionCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * DeviceRegionController - 设备区域控制器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Api(tags = "设备区域管理") +@RequestMapping("/${application.gateway}/deviceRegion") +@RestController +@AllArgsConstructor +public class DeviceRegionController { + private final DeviceRegionServiceI deviceRegionService; + + @ApiOperation("分页列表") + @PostMapping("/list") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-list')") + public PageResponse list(@RequestBody DeviceRegionPageQry qry) { + if (qry.getTenantId() == null) { + qry.setTenantId(AuthContext.getTenantId()); + } + return deviceRegionService.listPage(qry); + } + + @ApiOperation("新增或修改") + @PostMapping("/saveOrUpdate") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-add')") + public SingleResponse saveOrUpdate(@Validated @RequestBody DeviceRegionAddCmd cmd) { + return deviceRegionService.saveOrUpdate(cmd); + } + + @ApiOperation("绑定传感器") + @PostMapping("/bindSensor") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-edit')") + public SingleResponse bindSensor(@Validated @RequestBody BindSensorCmd cmd) { + return deviceRegionService.bindSensor(cmd); + } + + @ApiOperation("解绑传感器") + @PostMapping("/unbindSensor") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-edit')") + public SingleResponse unbindSensor(@Validated @RequestBody UnbindSensorCmd cmd) { + return deviceRegionService.unbindSensor(cmd); + } + + @ApiOperation("负责人配置") + @PutMapping("/manager") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-edit')") + public SingleResponse manager(@Validated @RequestBody ManagerCmd cmd) { + return deviceRegionService.manager(cmd); + } + + @ApiOperation("消防区域列表") + @GetMapping("/fireRegionList") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-list')") + public SingleResponse fireRegionList() { + Long tenantId = AuthContext.getTenantId(); + return deviceRegionService.fireRegionList(tenantId); + } + + @ApiOperation("删除") + @DeleteMapping("/{id}") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-delete')") + public SingleResponse remove(@PathVariable("id") Long id) { + deviceRegionService.remove(id); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("详情") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-deviceregion-list')") + public SingleResponse info(@PathVariable("id") Long id) { + return deviceRegionService.info(id); + } +} \ No newline at end of file diff --git a/web-adapter/src/main/java/com/zcloud/web/RiskPointController.java b/web-adapter/src/main/java/com/zcloud/web/RiskPointController.java deleted file mode 100644 index 6e5370a..0000000 --- a/web-adapter/src/main/java/com/zcloud/web/RiskPointController.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.zcloud.web; - - -import com.alibaba.cola.dto.MultiResponse; -import com.alibaba.cola.dto.PageResponse; -import com.alibaba.cola.dto.Response; -import com.alibaba.cola.dto.SingleResponse; -import com.zcloud.api.RiskPointServiceI; -import com.zcloud.dto.RiskPointAddCmd; -import com.zcloud.dto.RiskPointPageQry; -import com.zcloud.dto.RiskPointUpdateCmd; -import com.zcloud.dto.clientobject.RiskPointCo; -import com.jjb.saas.framework.auth.model.SSOUser; -import com.jjb.saas.framework.auth.utils.AuthContext; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.AllArgsConstructor; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.ArrayList; - -/** - * @author lin - */ -@Api(tags = "风险点管理") -@RequestMapping("/risk/riskPoint") -@RestController -@AllArgsConstructor -public class RiskPointController { - private final RiskPointServiceI riskPointService; - - @ApiOperation("新增") - @PostMapping("/save") - public SingleResponse add(@Validated @RequestBody RiskPointAddCmd cmd) { - SSOUser ssoUser = AuthContext.getCurrentUser(); - return riskPointService.add(cmd); - } - - @ApiOperation("分页") - @PostMapping("/list") - public PageResponse page(@RequestBody RiskPointPageQry qry) { - return riskPointService.listPage(qry); - } - - @ApiOperation("所有数据") - @GetMapping("/listAll") - public MultiResponse listAll() { - return MultiResponse.of(new ArrayList()); - } - - @ApiOperation("详情") - @GetMapping("/{id}") - public SingleResponse getInfoById(@PathVariable("id") Long id) { - return SingleResponse.of(new RiskPointCo()); - } - - @ApiOperation("删除") - @DeleteMapping("/{id}") - public Response remove(@PathVariable("id") Long id) { - riskPointService.remove(id); - return SingleResponse.buildSuccess(); - } - - @ApiOperation("删除多个") - @DeleteMapping("/ids") - public Response removeBatch(@RequestParam Long[] ids) { - riskPointService.removeBatch(ids); - return SingleResponse.buildSuccess(); - } - - @ApiOperation("修改") - @PutMapping("/edit") - public SingleResponse edit(@Validated @RequestBody RiskPointUpdateCmd riskPointUpdateCmd) { - riskPointService.edit(riskPointUpdateCmd); - return SingleResponse.buildSuccess(); - } -} diff --git a/web-adapter/src/main/java/com/zcloud/web/SensorDeviceController.java b/web-adapter/src/main/java/com/zcloud/web/SensorDeviceController.java new file mode 100644 index 0000000..17705d2 --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/web/SensorDeviceController.java @@ -0,0 +1,85 @@ +package com.zcloud.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.api.SensorDeviceServiceI; +import com.zcloud.dto.SensorDeviceAddCmd; +import com.zcloud.dto.SensorDevicePageQry; +import com.zcloud.dto.SensorDeviceThresholdCmd; +import com.zcloud.dto.SensorDeviceUpdateCmd; +import com.zcloud.dto.clientobject.SensorDeviceCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * SensorDeviceController - 传感器设备控制器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Api(tags = "传感器设备管理") +@RequestMapping("/${application.gateway}/sensorDevice") +@RestController +@AllArgsConstructor +public class SensorDeviceController { + private final SensorDeviceServiceI sensorDeviceService; + + @ApiOperation("新增") + @PostMapping("/save") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensordevice-add')") + public SingleResponse save(@Validated @RequestBody SensorDeviceAddCmd cmd) { + return sensorDeviceService.add(cmd); + } + + @ApiOperation("分页列表") + @PostMapping("/list") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensordevice-list')") + public PageResponse list(@RequestBody SensorDevicePageQry qry) { + if (qry.getTenantId() == null) { + qry.setTenantId(AuthContext.getTenantId()); + } + return sensorDeviceService.listPage(qry); + } + + @ApiOperation("修改") + @PutMapping("/edit") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensordevice-edit')") + public SingleResponse edit(@Validated @RequestBody SensorDeviceUpdateCmd cmd) { + sensorDeviceService.edit(cmd); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("状态切换") + @PutMapping("/status") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensordevice-edit')") + public SingleResponse updateStatus(@RequestParam Long id, @RequestParam String status) { + sensorDeviceService.updateStatus(id, status); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("阈值配置") + @PutMapping("/threshold") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensordevice-edit')") + public SingleResponse updateThreshold(@Validated @RequestBody SensorDeviceThresholdCmd cmd) { + sensorDeviceService.updateThreshold(cmd); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("删除") + @DeleteMapping("/{id}") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensordevice-delete')") + public SingleResponse remove(@PathVariable("id") Long id) { + sensorDeviceService.remove(id); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("详情") + @GetMapping("/{id}") + public SingleResponse info(@PathVariable("id") Long id) { + return sensorDeviceService.info(id); + } +} \ No newline at end of file diff --git a/web-adapter/src/main/java/com/zcloud/web/SensorTypeController.java b/web-adapter/src/main/java/com/zcloud/web/SensorTypeController.java new file mode 100644 index 0000000..86621e8 --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/web/SensorTypeController.java @@ -0,0 +1,68 @@ +package com.zcloud.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.api.SensorTypeServiceI; +import com.zcloud.dto.SensorTypeAddCmd; +import com.zcloud.dto.SensorTypePageQry; +import com.zcloud.dto.SensorTypeUpdateCmd; +import com.zcloud.dto.clientobject.SensorTypeCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * SensorTypeController - 传感器类型控制器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Api(tags = "传感器类型管理") +@RequestMapping("/${application.gateway}/sensorType") +@RestController +@AllArgsConstructor +public class SensorTypeController { + private final SensorTypeServiceI sensorTypeService; + + @ApiOperation("新增") + @PostMapping("/save") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensortype-add')") + public SingleResponse save(@Validated @RequestBody SensorTypeAddCmd cmd) { + return sensorTypeService.add(cmd); + } + + @ApiOperation("分页列表") + @PostMapping("/list") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensortype-list')") + public PageResponse list(@RequestBody SensorTypePageQry qry) { + if (qry.getTenantId() == null) { + qry.setTenantId(AuthContext.getTenantId()); + } + return sensorTypeService.listPage(qry); + } + + @ApiOperation("修改") + @PutMapping("/edit") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensortype-edit')") + public SingleResponse edit(@Validated @RequestBody SensorTypeUpdateCmd cmd) { + sensorTypeService.edit(cmd); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("删除") + @DeleteMapping("/{id}") + @PreAuthorize("@pms.hasAnyPermission('iotalarm-sensortype-delete')") + public SingleResponse remove(@PathVariable("id") Long id) { + sensorTypeService.remove(id); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("详情") + @GetMapping("/{id}") + public SingleResponse info(@PathVariable("id") Long id) { + return sensorTypeService.info(id); + } +} \ No newline at end of file diff --git a/web-app/pom.xml b/web-app/pom.xml index 343603e..ce32f08 100644 --- a/web-app/pom.xml +++ b/web-app/pom.xml @@ -13,6 +13,24 @@ web-app + + + com.alibaba.cloud + spring-cloud-starter-stream-rocketmq + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + com.github.ben-manes.caffeine + caffeine + + com.zcloud web-client diff --git a/web-app/src/main/java/com/zcloud/command/AlarmDisposeAssignExe.java b/web-app/src/main/java/com/zcloud/command/AlarmDisposeAssignExe.java new file mode 100644 index 0000000..753deed --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/AlarmDisposeAssignExe.java @@ -0,0 +1,97 @@ +package com.zcloud.command; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.AlarmRecordGateway; +import com.zcloud.domain.gateway.AlarmDisposeLogGateway; +import com.zcloud.domain.model.AlarmRecordE; +import com.zcloud.domain.model.AlarmDisposeLogE; +import com.zcloud.dto.AlarmDisposeAssignCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import com.zcloud.service.AlarmMessageService; +import com.zcloud.service.AlarmTodoService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * AlarmDisposeAssignExe - 报警处置执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class AlarmDisposeAssignExe { + + private final AlarmRecordGateway alarmRecordGateway; + private final AlarmDisposeLogGateway alarmDisposeLogGateway; + private final AlarmMessageService alarmMessageService; + private final AlarmTodoService alarmTodoService; + + @Transactional(rollbackFor = Exception.class) + public void execute(AlarmDisposeAssignCmd cmd) { + // 查询报警记录 + AlarmRecordE alarmRecord = alarmRecordGateway.getById(cmd.getId()); + if (Tools.isEmpty(alarmRecord)) { + throw new BizException("报警记录不存在"); + } + + // 检查状态:只有待研判(10)状态可以分配 + if (alarmRecord.getStatus() != 10) { + throw new BizException("该报警已分配或已处置,无法再次分配"); + } + + // 更新报警记录状态和处置人 + AlarmRecordE updateEntity = new AlarmRecordE(); + BeanUtils.copyProperties(cmd, updateEntity); + updateEntity.setId(cmd.getId()); + updateEntity.setStatus(20); // 待处置 + updateEntity.setManagerId(cmd.getDisposeUserId()); + updateEntity.setAssignTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + if (StrUtil.isNotBlank(cmd.getAlarmLevel())) { + updateEntity.setAlarmLevel(cmd.getAlarmLevel()); + } + if (StrUtil.isNotBlank(cmd.getAlarmType())) { + updateEntity.setAlarmType(cmd.getAlarmType()); + } + + Boolean res = alarmRecordGateway.update(updateEntity); + if (!res) { + throw new BizException("分配失败"); + } + + // 记录处置日志 + AlarmDisposeLogE log = new AlarmDisposeLogE(); + log.setAlarmDisposalLogId(UuidUtil.get32UUID()); + log.setAlarmId(cmd.getId()); + log.setAlarmNo(alarmRecord.getAlarmNo()); + log.setActionType("MANUAL_ASSIGN"); + log.setBeforeStatus(10); + log.setAfterStatus(20); + log.setOperatorId(cmd.getDisposeUserId()); + log.setActionDesc("手动分配处置"); + log.setActionTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + log.setTenantId(cmd.getTenantId()); + log.setOrgId(cmd.getOrgId()); + log.setDeleteEnum("FALSE"); + + alarmDisposeLogGateway.add(log); + + // 发送报警处置推送消息给处置人 + // 更新后的报警记录包含分配时间和处置说明 + alarmMessageService.sendDisposePushMessage(updateEntity, cmd.getDisposeUserId()); + + // 新增处置人待办 + alarmTodoService.addDisposeTodo(updateEntity, cmd.getDisposeUserId()); + + // 完成负责人待办(原来负责人是 alarmRecord.getManagerId()) + alarmTodoService.completeTodo(cmd.getId()); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/AlarmDisposeBatchAssignExe.java b/web-app/src/main/java/com/zcloud/command/AlarmDisposeBatchAssignExe.java new file mode 100644 index 0000000..86ed5e5 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/AlarmDisposeBatchAssignExe.java @@ -0,0 +1,93 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.AlarmRecordGateway; +import com.zcloud.domain.gateway.AlarmDisposeLogGateway; +import com.zcloud.domain.model.AlarmRecordE; +import com.zcloud.domain.model.AlarmDisposeLogE; +import com.zcloud.dto.AlarmDisposeBatchAssignCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import com.zcloud.service.AlarmMessageService; +import com.zcloud.service.AlarmTodoService; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; + +/** + * AlarmDisposeBatchAssignExe - 报警处置执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class AlarmDisposeBatchAssignExe { + + private final AlarmRecordGateway alarmRecordGateway; + private final AlarmDisposeLogGateway alarmDisposeLogGateway; + private final AlarmMessageService alarmMessageService; + private final AlarmTodoService alarmTodoService; + + @Transactional(rollbackFor = Exception.class) + public void execute(AlarmDisposeBatchAssignCmd cmd) { + List ids = cmd.getIds(); + if (Tools.isEmpty(ids)) { + throw new BizException("请选择要分配的报警记录"); + } + + String assignTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + + for (Long id : ids) { + // 查询报警记录 + AlarmRecordE alarmRecord = alarmRecordGateway.getById(id); + if (Tools.isEmpty(alarmRecord)) { + continue; // 跳过不存在的记录 + } + + // 检查状态:只有待研判(10)状态可以分配 + if (alarmRecord.getStatus() != 10) { + continue; // 跳过非待研判状态的记录 + } + + // 更新报警记录状态和处置人 + AlarmRecordE updateEntity = new AlarmRecordE(); + updateEntity.setId(id); + updateEntity.setStatus(20); // 待处置 + updateEntity.setManagerId(cmd.getDisposeUserId()); + updateEntity.setAssignTime(assignTime); + updateEntity.setTenantId(cmd.getTenantId()); + updateEntity.setOrgId(cmd.getOrgId()); + + alarmRecordGateway.update(updateEntity); + + // 记录处置日志 + AlarmDisposeLogE log = new AlarmDisposeLogE(); + log.setAlarmDisposalLogId(UuidUtil.get32UUID()); + log.setAlarmId(id); + log.setAlarmNo(alarmRecord.getAlarmNo()); + log.setActionType("MANUAL_ASSIGN"); + log.setBeforeStatus(10); + log.setAfterStatus(20); + log.setOperatorId(cmd.getDisposeUserId()); + log.setActionDesc("批量分配处置"); + log.setActionTime(assignTime); + log.setTenantId(cmd.getTenantId()); + log.setOrgId(cmd.getOrgId()); + log.setDeleteEnum("FALSE"); + + alarmDisposeLogGateway.add(log); + + // 发送报警处置推送消息给处置人 + alarmMessageService.sendDisposePushMessage(updateEntity, cmd.getDisposeUserId()); + + // 新增处置人待办 + alarmTodoService.addDisposeTodo(updateEntity, cmd.getDisposeUserId()); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/AlarmDisposeInvalidExe.java b/web-app/src/main/java/com/zcloud/command/AlarmDisposeInvalidExe.java new file mode 100644 index 0000000..f86c405 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/AlarmDisposeInvalidExe.java @@ -0,0 +1,89 @@ +package com.zcloud.command; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.AlarmRecordGateway; +import com.zcloud.domain.gateway.AlarmDisposeLogGateway; +import com.zcloud.domain.model.AlarmRecordE; +import com.zcloud.domain.model.AlarmDisposeLogE; +import com.zcloud.dto.AlarmDisposeInvalidCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import com.zcloud.service.AlarmTodoService; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * AlarmDisposeInvalidExe - 报警处置执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class AlarmDisposeInvalidExe { + + private final AlarmRecordGateway alarmRecordGateway; + private final AlarmDisposeLogGateway alarmDisposeLogGateway; + private final AlarmTodoService alarmTodoService; + + @Transactional(rollbackFor = Exception.class) + public void execute(AlarmDisposeInvalidCmd cmd) { + // 查询报警记录 + AlarmRecordE alarmRecord = alarmRecordGateway.getById(cmd.getId()); + if (Tools.isEmpty(alarmRecord)) { + throw new BizException("报警记录不存在"); + } + + // 检查状态:只有待研判(10)或待处置(20)状态可以标记为无效 + if (alarmRecord.getStatus() != 10 && alarmRecord.getStatus() != 20) { + throw new BizException("该报警已处置或已消警,无法标记为无效"); + } + + Integer beforeStatus = alarmRecord.getStatus(); + + // 更新报警记录状态 + AlarmRecordE updateEntity = new AlarmRecordE(); + updateEntity.setId(cmd.getId()); + updateEntity.setStatus(40); // 误报 + updateEntity.setDisposeTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + updateEntity.setDisposeResult("误报"); + if (StrUtil.isNotBlank(cmd.getInvalidReason())) { + updateEntity.setDisposeRemark(cmd.getInvalidReason()); + } + updateEntity.setTenantId(cmd.getTenantId()); + updateEntity.setOrgId(cmd.getOrgId()); + + Boolean res = alarmRecordGateway.update(updateEntity); + if (!res) { + throw new BizException("标记无效失败"); + } + + // 记录处置日志 + AlarmDisposeLogE log = new AlarmDisposeLogE(); + log.setAlarmDisposalLogId(UuidUtil.get32UUID()); + log.setAlarmId(cmd.getId()); + log.setAlarmNo(alarmRecord.getAlarmNo()); + log.setActionType("INVALID"); + log.setBeforeStatus(beforeStatus); + log.setAfterStatus(40); + log.setActionDesc("标记为无效报警"); + if (StrUtil.isNotBlank(cmd.getInvalidReason())) { + log.setResultText(cmd.getInvalidReason()); + } + log.setActionTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + log.setTenantId(cmd.getTenantId()); + log.setOrgId(cmd.getOrgId()); + log.setDeleteEnum("FALSE"); + + alarmDisposeLogGateway.add(log); + + // 删除待办(误报时删除所有相关待办) + alarmTodoService.deleteTodo(cmd.getId()); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/AppAlarmDisposeSubmitExe.java b/web-app/src/main/java/com/zcloud/command/AppAlarmDisposeSubmitExe.java new file mode 100644 index 0000000..5378a66 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/AppAlarmDisposeSubmitExe.java @@ -0,0 +1,111 @@ +package com.zcloud.command; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.AlarmRecordGateway; +import com.zcloud.domain.gateway.AlarmDisposeLogGateway; +import com.zcloud.domain.model.AlarmRecordE; +import com.zcloud.domain.model.AlarmDisposeLogE; +import com.zcloud.dto.AppAlarmDisposeSubmitCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import com.zcloud.service.AlarmTodoService; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * AppAlarmDisposeSubmitExe - APP报警处置执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class AppAlarmDisposeSubmitExe { + + private final AlarmRecordGateway alarmRecordGateway; + private final AlarmDisposeLogGateway alarmDisposeLogGateway; + private final AlarmTodoService alarmTodoService; + + @Transactional(rollbackFor = Exception.class) + public void execute(AppAlarmDisposeSubmitCmd cmd) { + // 查询报警记录 + AlarmRecordE alarmRecord = alarmRecordGateway.getById(cmd.getAlarmId()); + if (Tools.isEmpty(alarmRecord)) { + throw new BizException("报警记录不存在"); + } + + // 检查状态:只有待处置(20)状态可以提交处置 + if (alarmRecord.getStatus() != 20) { + throw new BizException("该报警已处置或状态异常,无法提交处置结果"); + } + + // 确定目标状态 + Integer afterStatus; + String actionDesc; + if ("误报".equals(cmd.getDisposeResult())) { + afterStatus = 40; // 误报 + actionDesc = "手机端处置:误报判定"; + } else { + afterStatus = 30; // 已消警 + actionDesc = "手机端处置:已消警"; + } + + // 更新报警记录 + AlarmRecordE updateEntity = new AlarmRecordE(); + updateEntity.setId(cmd.getAlarmId()); + updateEntity.setStatus(afterStatus); + updateEntity.setDisposeTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + updateEntity.setDisposeResult(cmd.getDisposeResult()); + if (StrUtil.isNotBlank(cmd.getDisposeRemark())) { + updateEntity.setDisposeRemark(cmd.getDisposeRemark()); + } + if (StrUtil.isNotBlank(cmd.getPictureUrls())) { + updateEntity.setPictureUrls(cmd.getPictureUrls()); + } + updateEntity.setTenantId(cmd.getTenantId()); + updateEntity.setOrgId(cmd.getOrgId()); + + Boolean res = alarmRecordGateway.update(updateEntity); + if (!res) { + throw new BizException("处置提交失败"); + } + + // 记录处置日志 + AlarmDisposeLogE log = new AlarmDisposeLogE(); + log.setAlarmDisposalLogId(UuidUtil.get32UUID()); + log.setAlarmId(cmd.getAlarmId()); + log.setAlarmNo(alarmRecord.getAlarmNo()); + log.setActionType("DISPOSE"); + log.setBeforeStatus(20); + log.setAfterStatus(afterStatus); + log.setActionDesc(actionDesc); + log.setResultText(cmd.getDisposeResult()); + if (StrUtil.isNotBlank(cmd.getDisposeRemark())) { + log.setResultText(cmd.getDisposeRemark()); + } + if (StrUtil.isNotBlank(cmd.getPictureUrls())) { + log.setPictureUrls(cmd.getPictureUrls()); + } + log.setActionTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + log.setTenantId(cmd.getTenantId()); + log.setOrgId(cmd.getOrgId()); + log.setDeleteEnum("FALSE"); + + alarmDisposeLogGateway.add(log); + + // 根据处置结果处理待办 + if ("误报".equals(cmd.getDisposeResult())) { + // 误报时删除待办 + alarmTodoService.deleteTodo(cmd.getAlarmId()); + } else { + // 已消警时完成待办 + alarmTodoService.completeTodo(cmd.getAlarmId()); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/BindSensorExe.java b/web-app/src/main/java/com/zcloud/command/BindSensorExe.java new file mode 100644 index 0000000..3abd521 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/BindSensorExe.java @@ -0,0 +1,56 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.DeviceRegionGateway; +import com.zcloud.domain.gateway.RegionSensorRelGateway; +import com.zcloud.domain.model.DeviceRegionE; +import com.zcloud.domain.model.RegionSensorRelE; +import com.zcloud.dto.BindSensorCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * BindSensorExe - 绑定传感器执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class BindSensorExe { + + private final RegionSensorRelGateway regionSensorRelGateway; + private final DeviceRegionGateway deviceRegionGateway; + + @Transactional(rollbackFor = Exception.class) + public void execute(BindSensorCmd cmd) { + // 检查传感器是否已绑定到其他区域 + Boolean isBound = regionSensorRelGateway.isSensorBound(cmd.getSensorId()); + if (isBound) { + throw new BizException("该传感器已绑定到其他区域,请先解绑"); + } + + // 检查区域配置是否存在 + DeviceRegionE region = deviceRegionGateway.getById(cmd.getRegionConfigId()); + if (Tools.isEmpty(region)) { + throw new BizException("区域配置不存在"); + } + + RegionSensorRelE entity = new RegionSensorRelE(); + BeanUtils.copyProperties(cmd, entity); + entity.setRegionSensorRelId(UuidUtil.get32UUID()); + entity.setFireRegionId(region.getFireRegionId()); + // 设置默认值 + entity.setDeleteEnum("FALSE"); + + Long res = regionSensorRelGateway.add(entity); + if (Tools.isEmpty(res)) { + throw new BizException("绑定失败"); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/DeviceRegionAddExe.java b/web-app/src/main/java/com/zcloud/command/DeviceRegionAddExe.java new file mode 100644 index 0000000..03ded84 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/DeviceRegionAddExe.java @@ -0,0 +1,52 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.domain.gateway.DeviceRegionGateway; +import com.zcloud.domain.model.DeviceRegionE; +import com.zcloud.dto.DeviceRegionAddCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * DeviceRegionAddExe - 设备区域执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class DeviceRegionAddExe { + + private final DeviceRegionGateway deviceRegionGateway; + + @Transactional(rollbackFor = Exception.class) + public SingleResponse execute(DeviceRegionAddCmd cmd) { + // 检查消防区域是否已存在配置 + DeviceRegionE existingRegion = deviceRegionGateway.getByFireRegionId(cmd.getFireRegionId()); + if (existingRegion != null) { + throw new BizException("该消防区域已存在配置,请直接修改"); + } + + DeviceRegionE entity = new DeviceRegionE(); + BeanUtils.copyProperties(cmd, entity); + entity.setRegionConfigId(UuidUtil.get32UUID()); + // 设置默认值 + entity.setDeleteEnum("FALSE"); + // 设置状态默认值 + if (entity.getStatus() == null) { + entity.setStatus(1); + } + + Long res = deviceRegionGateway.add(entity); + if (Tools.isEmpty(res)) { + throw new BizException("保存失败"); + } + return SingleResponse.of(entity.getRegionConfigId()); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/DeviceRegionRemoveExe.java b/web-app/src/main/java/com/zcloud/command/DeviceRegionRemoveExe.java new file mode 100644 index 0000000..5297d49 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/DeviceRegionRemoveExe.java @@ -0,0 +1,36 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.DeviceRegionGateway; +import com.zcloud.domain.model.DeviceRegionE; +import com.zcloud.gbscommon.utils.Tools; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * DeviceRegionRemoveExe - 设备区域执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class DeviceRegionRemoveExe { + + private final DeviceRegionGateway deviceRegionGateway; + + @Transactional(rollbackFor = Exception.class) + public void execute(Long id) { + DeviceRegionE existingRegion = deviceRegionGateway.getById(id); + if (Tools.isEmpty(existingRegion)) { + throw new BizException("区域配置不存在"); + } + + Boolean res = deviceRegionGateway.deleteById(id); + if (!res) { + throw new BizException("删除失败"); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/DeviceRegionUpdateExe.java b/web-app/src/main/java/com/zcloud/command/DeviceRegionUpdateExe.java new file mode 100644 index 0000000..1821629 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/DeviceRegionUpdateExe.java @@ -0,0 +1,41 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.DeviceRegionGateway; +import com.zcloud.domain.model.DeviceRegionE; +import com.zcloud.dto.DeviceRegionAddCmd; +import com.zcloud.gbscommon.utils.Tools; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * DeviceRegionUpdateExe - 设备区域执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class DeviceRegionUpdateExe { + + private final DeviceRegionGateway deviceRegionGateway; + + @Transactional(rollbackFor = Exception.class) + public void execute(DeviceRegionAddCmd cmd) { + DeviceRegionE existingRegion = deviceRegionGateway.getById(cmd.getId()); + if (Tools.isEmpty(existingRegion)) { + throw new BizException("区域配置不存在"); + } + + DeviceRegionE entity = new DeviceRegionE(); + BeanUtils.copyProperties(cmd, entity); + + Boolean res = deviceRegionGateway.update(entity); + if (!res) { + throw new BizException("修改失败"); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/ManagerExe.java b/web-app/src/main/java/com/zcloud/command/ManagerExe.java new file mode 100644 index 0000000..e6b766c --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/ManagerExe.java @@ -0,0 +1,38 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.DeviceRegionGateway; +import com.zcloud.domain.gateway.RegionSensorRelGateway; +import com.zcloud.domain.model.DeviceRegionE; +import com.zcloud.dto.ManagerCmd; +import com.zcloud.gbscommon.utils.Tools; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * ManagerExe - 管理员执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class ManagerExe { + + private final DeviceRegionGateway deviceRegionGateway; + + @Transactional(rollbackFor = Exception.class) + public void execute(ManagerCmd cmd) { + DeviceRegionE existingRegion = deviceRegionGateway.getById(cmd.getId()); + if (Tools.isEmpty(existingRegion)) { + throw new BizException("区域配置不存在"); + } + + Boolean res = deviceRegionGateway.updateManager(cmd.getId(), cmd.getManagerId(), cmd.getDepartmentId()); + if (!res) { + throw new BizException("负责人配置失败"); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/RiskPointAddExe.java b/web-app/src/main/java/com/zcloud/command/RiskPointAddExe.java deleted file mode 100644 index 7eafdbc..0000000 --- a/web-app/src/main/java/com/zcloud/command/RiskPointAddExe.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.zcloud.command; - -import com.alibaba.cola.exception.BizException; -import com.zcloud.domain.gateway.RiskPointGateway; -import com.zcloud.domain.model.RiskPointE; -import com.zcloud.dto.RiskPointAddCmd; -import lombok.AllArgsConstructor; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -/** - * 风险点新增执行器 - * - * @author lin - */ -@Component -@AllArgsConstructor -public class RiskPointAddExe { - private final RiskPointGateway riskPointGateway; - - @Transactional(rollbackFor = Exception.class) - public boolean execute(RiskPointAddCmd cmd) { - RiskPointE examTypeE = new RiskPointE(); - BeanUtils.copyProperties(cmd, examTypeE); - boolean res = false; - try { - res = riskPointGateway.add(examTypeE); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (!res) { - throw new BizException("保存失败"); - } - return true; - } -} diff --git a/web-app/src/main/java/com/zcloud/command/RiskPointRemoveExe.java b/web-app/src/main/java/com/zcloud/command/RiskPointRemoveExe.java deleted file mode 100644 index 90fc337..0000000 --- a/web-app/src/main/java/com/zcloud/command/RiskPointRemoveExe.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.zcloud.command; - -import com.alibaba.cola.exception.BizException; -import com.zcloud.domain.gateway.RiskPointGateway; -import lombok.AllArgsConstructor; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -/** - * 风险点新增执行器 - * @author lin - */ -@Component -@AllArgsConstructor -public class RiskPointRemoveExe { - private final RiskPointGateway riskPointGateway; - @Transactional(rollbackFor = Exception.class) - public boolean execute(Long id) { - boolean res = riskPointGateway.deletedRiskPointById(id); - if(!res){ - throw new BizException("删除失败"); - } - return true; - } - @Transactional(rollbackFor = Exception.class) - public boolean execute(Long[] ids) { - boolean res = riskPointGateway.deletedRiskPointByIds(ids); - if(!res){ - throw new BizException("删除失败"); - } - return true; - } -} diff --git a/web-app/src/main/java/com/zcloud/command/RiskPointUpdateExe.java b/web-app/src/main/java/com/zcloud/command/RiskPointUpdateExe.java deleted file mode 100644 index 7032d54..0000000 --- a/web-app/src/main/java/com/zcloud/command/RiskPointUpdateExe.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.zcloud.command; - -import com.alibaba.cola.exception.BizException; -import com.zcloud.domain.gateway.RiskPointGateway; -import com.zcloud.domain.model.RiskPointE; -import com.zcloud.dto.RiskPointUpdateCmd; -import lombok.AllArgsConstructor; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -/** - * 风险点修改执行器 - * - * @author lin - */ -@Component -@AllArgsConstructor -public class RiskPointUpdateExe { - private final RiskPointGateway riskPointGateway; - - @Transactional(rollbackFor = Exception.class) - public void execute(RiskPointUpdateCmd riskPointUpdateCmd) { - RiskPointE riskPointE = new RiskPointE(); - BeanUtils.copyProperties(riskPointUpdateCmd, riskPointE); - boolean res = riskPointGateway.update(riskPointE); - if (!res) { - throw new BizException("修改失败"); - } - } -} diff --git a/web-app/src/main/java/com/zcloud/command/SensorDeviceAddExe.java b/web-app/src/main/java/com/zcloud/command/SensorDeviceAddExe.java new file mode 100644 index 0000000..f01d7b7 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorDeviceAddExe.java @@ -0,0 +1,49 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorDeviceGateway; +import com.zcloud.domain.model.SensorDeviceE; +import com.zcloud.dto.SensorDeviceAddCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorDeviceAddExe - 传感器设备执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorDeviceAddExe { + + private final SensorDeviceGateway sensorDeviceGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(SensorDeviceAddCmd cmd) { + SensorDeviceE entity = new SensorDeviceE(); + BeanUtils.copyProperties(cmd, entity); + entity.setSensorDeviceId(UuidUtil.get32UUID()); + // 设置默认值 + entity.setDeleteEnum("FALSE"); + // 设置报警开关默认值 + if (entity.getAlarmSwitch() == null) { + entity.setAlarmSwitch(1); + } + // 设置连续报警确认次数默认值 + if (entity.getContinuousAlarmCount() == null) { + entity.setContinuousAlarmCount(3); + } + + Long res = sensorDeviceGateway.add(entity); + if (Tools.isEmpty(res)) { + throw new BizException("保存失败"); + } + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/SensorDeviceRemoveExe.java b/web-app/src/main/java/com/zcloud/command/SensorDeviceRemoveExe.java new file mode 100644 index 0000000..357ef9f --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorDeviceRemoveExe.java @@ -0,0 +1,31 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorDeviceGateway; +import com.zcloud.gbscommon.utils.Tools; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorDeviceRemoveExe - 传感器设备执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorDeviceRemoveExe { + + private final SensorDeviceGateway sensorDeviceGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(Long id) { + boolean res = sensorDeviceGateway.deleteById(id); + if (!res) { + throw new BizException("删除失败"); + } + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/SensorDeviceStatusExe.java b/web-app/src/main/java/com/zcloud/command/SensorDeviceStatusExe.java new file mode 100644 index 0000000..1b97b4f --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorDeviceStatusExe.java @@ -0,0 +1,37 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorDeviceGateway; +import com.zcloud.domain.model.SensorDeviceE; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorDeviceStatusExe - 传感器设备执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorDeviceStatusExe { + + private final SensorDeviceGateway sensorDeviceGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(Long id, String status) { + SensorDeviceE entity = sensorDeviceGateway.getById(id); + if (entity == null) { + throw new BizException("传感器设备不存在"); + } + + entity.setSensorStatus(status); + boolean res = sensorDeviceGateway.update(entity); + if (!res) { + throw new BizException("状态修改失败"); + } + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/SensorDeviceThresholdExe.java b/web-app/src/main/java/com/zcloud/command/SensorDeviceThresholdExe.java new file mode 100644 index 0000000..11d7302 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorDeviceThresholdExe.java @@ -0,0 +1,55 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorDeviceGateway; +import com.zcloud.domain.model.SensorDeviceE; +import com.zcloud.dto.SensorDeviceThresholdCmd; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorDeviceThresholdExe - 传感器设备执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorDeviceThresholdExe { + + private final SensorDeviceGateway sensorDeviceGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(SensorDeviceThresholdCmd cmd) { + SensorDeviceE entity = sensorDeviceGateway.getById(cmd.getId()); + if (entity == null) { + throw new BizException("传感器设备不存在"); + } + + // 校验:只有数值类传感器才允许配置阈值 + if (!"NUMBER".equals(entity.getSensorAttr())) { + throw new BizException("开关类传感器不支持阈值配置"); + } + + // 校验:只有阈值设定为是的才允许配置 + if (entity.getThresholdFlag() == null || entity.getThresholdFlag() != 1) { + throw new BizException("该传感器未开启阈值设定,不允许配置阈值"); + } + + // 更新阈值相关字段 + BeanUtils.copyProperties(cmd, entity); + + boolean res = sensorDeviceGateway.update(entity); + if (!res) { + throw new BizException("阈值配置失败"); + } + + // TODO: 发送 MQ 事件 ThresholdConfigChangedEvent(一期预留) + // thresholdEventPublisher.publish(entity); + + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/SensorDeviceUpdateExe.java b/web-app/src/main/java/com/zcloud/command/SensorDeviceUpdateExe.java new file mode 100644 index 0000000..000a737 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorDeviceUpdateExe.java @@ -0,0 +1,36 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorDeviceGateway; +import com.zcloud.domain.model.SensorDeviceE; +import com.zcloud.dto.SensorDeviceUpdateCmd; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorDeviceUpdateExe - 传感器设备执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorDeviceUpdateExe { + + private final SensorDeviceGateway sensorDeviceGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(SensorDeviceUpdateCmd cmd) { + SensorDeviceE entity = new SensorDeviceE(); + BeanUtils.copyProperties(cmd, entity); + + boolean res = sensorDeviceGateway.update(entity); + if (!res) { + throw new BizException("修改失败"); + } + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/SensorTypeAddExe.java b/web-app/src/main/java/com/zcloud/command/SensorTypeAddExe.java new file mode 100644 index 0000000..5ffd692 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorTypeAddExe.java @@ -0,0 +1,41 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorTypeGateway; +import com.zcloud.domain.model.SensorTypeE; +import com.zcloud.dto.SensorTypeAddCmd; +import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorTypeAddExe - 传感器类型执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorTypeAddExe { + + private final SensorTypeGateway sensorTypeGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(SensorTypeAddCmd cmd) { + SensorTypeE entity = new SensorTypeE(); + BeanUtils.copyProperties(cmd, entity); + entity.setSensorTypeId(UuidUtil.get32UUID()); + // 设置默认值 + entity.setDeleteEnum("FALSE"); + + Long res = sensorTypeGateway.add(entity); + if (Tools.isEmpty(res)) { + throw new BizException("保存失败"); + } + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/SensorTypeRemoveExe.java b/web-app/src/main/java/com/zcloud/command/SensorTypeRemoveExe.java new file mode 100644 index 0000000..4c03684 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorTypeRemoveExe.java @@ -0,0 +1,39 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorTypeGateway; +import com.zcloud.gbscommon.utils.Tools; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorTypeRemoveExe - 传感器类型执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorTypeRemoveExe { + + private final SensorTypeGateway sensorTypeGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(Long id) { + // TODO: 检查是否有传感器设备引用该类型(T7 SensorDevice 完成后补充) + // LambdaQueryWrapper deviceWrapper = new LambdaQueryWrapper<>(); + // deviceWrapper.eq(SensorDeviceDO::getSensorTypeId, sensorType.getSensorTypeId()) + // .eq(SensorDeviceDO::getDeleteEnum, "FALSE"); + // if (sensorDeviceGateway.exists(deviceWrapper)) { + // throw new BizException("该类型已被传感器使用,不可删除"); + // } + + boolean res = sensorTypeGateway.deleteById(id); + if (!res) { + throw new BizException("删除失败"); + } + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/SensorTypeUpdateExe.java b/web-app/src/main/java/com/zcloud/command/SensorTypeUpdateExe.java new file mode 100644 index 0000000..27a9c77 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/SensorTypeUpdateExe.java @@ -0,0 +1,36 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.SensorTypeGateway; +import com.zcloud.domain.model.SensorTypeE; +import com.zcloud.dto.SensorTypeUpdateCmd; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * SensorTypeUpdateExe - 传感器类型执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class SensorTypeUpdateExe { + + private final SensorTypeGateway sensorTypeGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(SensorTypeUpdateCmd cmd) { + SensorTypeE entity = new SensorTypeE(); + BeanUtils.copyProperties(cmd, entity); + + boolean res = sensorTypeGateway.update(entity); + if (!res) { + throw new BizException("修改失败"); + } + return true; + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/UnbindSensorExe.java b/web-app/src/main/java/com/zcloud/command/UnbindSensorExe.java new file mode 100644 index 0000000..f311b1b --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/UnbindSensorExe.java @@ -0,0 +1,38 @@ +package com.zcloud.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.domain.gateway.RegionSensorRelGateway; +import com.zcloud.domain.model.RegionSensorRelE; +import com.zcloud.dto.UnbindSensorCmd; +import com.zcloud.gbscommon.utils.Tools; +import lombok.RequiredArgsConstructor; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * UnbindSensorExe - 解绑传感器执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +@RefreshScope +public class UnbindSensorExe { + + private final RegionSensorRelGateway regionSensorRelGateway; + + @Transactional(rollbackFor = Exception.class) + public void execute(UnbindSensorCmd cmd) { + // 检查传感器是否已绑定 + RegionSensorRelE rel = regionSensorRelGateway.getBySensorId(cmd.getSensorId()); + if (Tools.isEmpty(rel)) { + throw new BizException("该传感器未绑定到任何区域"); + } + + Boolean res = regionSensorRelGateway.deleteBySensorId(cmd.getSensorId()); + if (!res) { + throw new BizException("解绑失败"); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/convertor/RiskPointCoConvertor.java b/web-app/src/main/java/com/zcloud/command/convertor/RiskPointCoConvertor.java deleted file mode 100644 index 4d6b799..0000000 --- a/web-app/src/main/java/com/zcloud/command/convertor/RiskPointCoConvertor.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zcloud.command.convertor; - -import com.zcloud.dto.clientobject.RiskPointCo; -import com.zcloud.persistence.dataobject.RiskPointDO; -import org.mapstruct.Mapper; - -import java.util.List; - -@Mapper(componentModel = "spring") -public interface RiskPointCoConvertor { - /** - * @param riskPointE - * @return - */ - List converDOsToCOs(List riskPointE); -} diff --git a/web-app/src/main/java/com/zcloud/command/query/AlarmDisposeQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/AlarmDisposeQueryExe.java new file mode 100644 index 0000000..f647783 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/query/AlarmDisposeQueryExe.java @@ -0,0 +1,74 @@ +package com.zcloud.command.query; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zcloud.dto.AlarmDisposePageQry; +import com.zcloud.dto.clientobject.AlarmDisposeCO; +import com.zcloud.persistence.dataobject.AlarmRecordDO; +import com.zcloud.persistence.repository.AlarmRecordRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * AlarmDisposeQueryExe - 报警处置执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +public class AlarmDisposeQueryExe { + + private final AlarmRecordRepository alarmRecordRepository; + + public PageResponse execute(AlarmDisposePageQry qry) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), AlarmRecordDO::getTenantId, qry.getTenantId()) + .eq(ObjectUtil.isNotEmpty(qry.getOrgId()), AlarmRecordDO::getOrgId, qry.getOrgId()) + .like(ObjectUtil.isNotEmpty(qry.getAlarmNo()), AlarmRecordDO::getAlarmNo, qry.getAlarmNo()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmSource()), AlarmRecordDO::getAlarmSource, qry.getAlarmSource()) + .like(ObjectUtil.isNotEmpty(qry.getSensorCode()), AlarmRecordDO::getSensorCode, qry.getSensorCode()) + .eq(ObjectUtil.isNotEmpty(qry.getFireRegionId()), AlarmRecordDO::getFireRegionId, qry.getFireRegionId()) + .eq(ObjectUtil.isNotEmpty(qry.getDepartmentId()), AlarmRecordDO::getDepartmentId, qry.getDepartmentId()) + .eq(ObjectUtil.isNotEmpty(qry.getDisposeUserId()), AlarmRecordDO::getManagerId, qry.getDisposeUserId()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmLevel()), AlarmRecordDO::getAlarmLevel, qry.getAlarmLevel()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmType()), AlarmRecordDO::getAlarmType, qry.getAlarmType()) + // 查询待研判(10)或待处置(20)的报警 + .in(AlarmRecordDO::getStatus, 10, 20) + .eq(AlarmRecordDO::getActiveFlag, 1) + .orderByDesc(AlarmRecordDO::getAlarmTime); + + // 处理报警时间范围 + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) { + wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart()); + } + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) { + wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd()); + } + + List results = alarmRecordRepository.list(wrapper); + int total = results.size(); + + // Convert to CO + List alarmDisposeCOs = BeanUtil.copyToList(results, AlarmDisposeCO.class); + + return PageResponse.of(alarmDisposeCOs, total, qry.getPageSize(), qry.getPageIndex()); + } + + public SingleResponse getById(Long id) { + AlarmRecordDO d = alarmRecordRepository.getById(id); + if (d == null) { + return SingleResponse.buildFailure("报警记录不存在"); + } + + AlarmDisposeCO co = new AlarmDisposeCO(); + BeanUtils.copyProperties(d, co); + return SingleResponse.of(co); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/query/AlarmRecordQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/AlarmRecordQueryExe.java new file mode 100644 index 0000000..653e23f --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/query/AlarmRecordQueryExe.java @@ -0,0 +1,69 @@ +package com.zcloud.command.query; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zcloud.dto.AlarmRecordPageQry; +import com.zcloud.dto.clientobject.AlarmRecordCO; +import com.zcloud.persistence.dataobject.AlarmRecordDO; +import com.zcloud.persistence.repository.AlarmRecordRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * AlarmRecordQueryExe - 报警记录执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +public class AlarmRecordQueryExe { + + private final AlarmRecordRepository alarmRecordRepository; + + public PageResponse execute(AlarmRecordPageQry qry) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), AlarmRecordDO::getTenantId, qry.getTenantId()) + .eq(ObjectUtil.isNotEmpty(qry.getOrgId()), AlarmRecordDO::getOrgId, qry.getOrgId()) + .like(ObjectUtil.isNotEmpty(qry.getAlarmNo()), AlarmRecordDO::getAlarmNo, qry.getAlarmNo()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmSource()), AlarmRecordDO::getAlarmSource, qry.getAlarmSource()) + .like(ObjectUtil.isNotEmpty(qry.getSensorCode()), AlarmRecordDO::getSensorCode, qry.getSensorCode()) + // 支持按状态筛选(不指定则查询所有状态) + .eq(ObjectUtil.isNotEmpty(qry.getStatus()), AlarmRecordDO::getStatus, qry.getStatus()) + .eq(AlarmRecordDO::getDeleteEnum, "FALSE") + .orderByDesc(AlarmRecordDO::getAlarmTime); + + // 处理报警时间范围 + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) { + wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart()); + } + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) { + wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd()); + } + + List results = alarmRecordRepository.list(wrapper); + int total = results.size(); + + // Convert to CO + List alarmRecordCOs = BeanUtil.copyToList(results, AlarmRecordCO.class); + + return PageResponse.of(alarmRecordCOs, total, qry.getPageSize(), qry.getPageIndex()); + } + + public SingleResponse getById(Long id) { + AlarmRecordDO d = alarmRecordRepository.getById(id); + if (d == null || "TRUE".equals(d.getDeleteEnum())) { + return SingleResponse.buildFailure("报警记录不存在"); + } + + AlarmRecordCO co = new AlarmRecordCO(); + BeanUtils.copyProperties(d, co); + return SingleResponse.of(co); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/query/AppAlarmDisposeQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/AppAlarmDisposeQueryExe.java new file mode 100644 index 0000000..e05237b --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/query/AppAlarmDisposeQueryExe.java @@ -0,0 +1,80 @@ +package com.zcloud.command.query; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zcloud.dto.AppAlarmDisposePageQry; +import com.zcloud.dto.clientobject.AlarmDisposeCO; +import com.zcloud.persistence.dataobject.AlarmRecordDO; +import com.zcloud.persistence.repository.AlarmRecordRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * AppAlarmDisposeQueryExe - APP报警处置执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +public class AppAlarmDisposeQueryExe { + + private final AlarmRecordRepository alarmRecordRepository; + + /** + * 手机端待处置列表(按当前用户过滤) + */ + public PageResponse execute(AppAlarmDisposePageQry qry) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), AlarmRecordDO::getTenantId, qry.getTenantId()) + .eq(ObjectUtil.isNotEmpty(qry.getOrgId()), AlarmRecordDO::getOrgId, qry.getOrgId()) + .like(ObjectUtil.isNotEmpty(qry.getAlarmNo()), AlarmRecordDO::getAlarmNo, qry.getAlarmNo()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmSource()), AlarmRecordDO::getAlarmSource, qry.getAlarmSource()) + .like(ObjectUtil.isNotEmpty(qry.getSensorCode()), AlarmRecordDO::getSensorCode, qry.getSensorCode()) + .eq(ObjectUtil.isNotEmpty(qry.getFireRegionId()), AlarmRecordDO::getFireRegionId, qry.getFireRegionId()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmLevel()), AlarmRecordDO::getAlarmLevel, qry.getAlarmLevel()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmType()), AlarmRecordDO::getAlarmType, qry.getAlarmType()) + // 关键:按当前用户过滤(managerId = 当前用户ID) + .eq(ObjectUtil.isNotEmpty(qry.getCurrentUserId()), AlarmRecordDO::getManagerId, qry.getCurrentUserId()) + // 只查询待处置(20)状态的报警 + .eq(AlarmRecordDO::getStatus, 20) + .eq(AlarmRecordDO::getActiveFlag, 1) + .orderByDesc(AlarmRecordDO::getAlarmTime); + + // 处理报警时间范围 + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) { + wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart()); + } + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) { + wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd()); + } + + List results = alarmRecordRepository.list(wrapper); + int total = results.size(); + + // Convert to CO + List alarmDisposeCOs = BeanUtil.copyToList(results, AlarmDisposeCO.class); + + return PageResponse.of(alarmDisposeCOs, total, qry.getPageSize(), qry.getPageIndex()); + } + + /** + * 手机端报警详情 + */ + public SingleResponse getById(Long id) { + AlarmRecordDO d = alarmRecordRepository.getById(id); + if (d == null) { + return SingleResponse.buildFailure("报警记录不存在"); + } + + AlarmDisposeCO co = new AlarmDisposeCO(); + BeanUtils.copyProperties(d, co); + return SingleResponse.of(co); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/query/AppAlarmRecordQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/AppAlarmRecordQueryExe.java new file mode 100644 index 0000000..f854f70 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/query/AppAlarmRecordQueryExe.java @@ -0,0 +1,74 @@ +package com.zcloud.command.query; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.dto.AppAlarmRecordPageQry; +import com.zcloud.dto.clientobject.AlarmRecordCO; +import com.zcloud.persistence.dataobject.AlarmRecordDO; +import com.zcloud.persistence.repository.AlarmRecordRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * AppAlarmRecordQueryExe - APP报警记录执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +public class AppAlarmRecordQueryExe { + + private final AlarmRecordRepository alarmRecordRepository; + + public PageResponse execute(AppAlarmRecordPageQry qry) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + // 按当前用户过滤(处置人ID) + Long userId = AuthContext.getUserId(); + wrapper.eq(userId != null, AlarmRecordDO::getDisposeUserId, userId); + // 支持按状态筛选(30已消警/40误报) + wrapper.eq(ObjectUtil.isNotEmpty(qry.getStatus()), AlarmRecordDO::getStatus, qry.getStatus()) + .eq(AlarmRecordDO::getDeleteEnum, "FALSE") + .orderByDesc(AlarmRecordDO::getAlarmTime); + + // 处理报警时间范围 + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) { + wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart()); + } + if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) { + wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd()); + } + + List results = alarmRecordRepository.list(wrapper); + int total = results.size(); + + // Convert to CO + List alarmRecordCOs = BeanUtil.copyToList(results, AlarmRecordCO.class); + + return PageResponse.of(alarmRecordCOs, total, qry.getPageSize(), qry.getPageIndex()); + } + + public SingleResponse getById(Long id) { + AlarmRecordDO d = alarmRecordRepository.getById(id); + if (d == null || "TRUE".equals(d.getDeleteEnum())) { + return SingleResponse.buildFailure("报警记录不存在"); + } + + // 验证是否为当前用户的记录 + Long userId = AuthContext.getUserId(); + if (userId != null && d.getDisposeUserId() != null && !userId.equals(d.getDisposeUserId())) { + return SingleResponse.buildFailure("无权限查看该报警记录"); + } + + AlarmRecordCO co = new AlarmRecordCO(); + BeanUtils.copyProperties(d, co); + return SingleResponse.of(co); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/query/DeviceRegionQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/DeviceRegionQueryExe.java new file mode 100644 index 0000000..624cea1 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/query/DeviceRegionQueryExe.java @@ -0,0 +1,76 @@ +package com.zcloud.command.query; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zcloud.dto.DeviceRegionPageQry; +import com.zcloud.dto.clientobject.DeviceRegionCO; +import com.zcloud.dto.clientobject.FireRegionCO; +import com.zcloud.persistence.dataobject.DeviceRegionDO; +import com.zcloud.persistence.repository.DeviceRegionRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * DeviceRegionQueryExe - 设备区域执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +public class DeviceRegionQueryExe { + + private final DeviceRegionRepository deviceRegionRepository; + + public PageResponse execute(DeviceRegionPageQry qry) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), DeviceRegionDO::getTenantId, qry.getTenantId()) + .eq(ObjectUtil.isNotEmpty(qry.getOrgId()), DeviceRegionDO::getOrgId, qry.getOrgId()) + .like(ObjectUtil.isNotEmpty(qry.getFireRegionCode()), DeviceRegionDO::getFireRegionCode, qry.getFireRegionCode()) + .eq(ObjectUtil.isNotEmpty(qry.getDepartmentId()), DeviceRegionDO::getDepartmentId, qry.getDepartmentId()) + .eq(ObjectUtil.isNotEmpty(qry.getManagerId()), DeviceRegionDO::getManagerId, qry.getManagerId()) + .eq(ObjectUtil.isNotEmpty(qry.getStatus()), DeviceRegionDO::getStatus, qry.getStatus()) + .eq(DeviceRegionDO::getDeleteEnum, "FALSE") + .orderByDesc(DeviceRegionDO::getCreateTime); + + List results = deviceRegionRepository.list(wrapper); + int total = results.size(); + + // Convert to CO + List deviceRegionCOs = BeanUtil.copyToList(results, DeviceRegionCO.class); + + return PageResponse.of(deviceRegionCOs, total, qry.getPageSize(), qry.getPageIndex()); + } + + public SingleResponse getById(Long id) { + DeviceRegionDO d = deviceRegionRepository.getById(id); + if (d == null || "TRUE".equals(d.getDeleteEnum())) { + return SingleResponse.buildFailure("记录不存在或已被删除"); + } + + DeviceRegionCO co = new DeviceRegionCO(); + BeanUtils.copyProperties(d, co); + return SingleResponse.of(co); + } + + public SingleResponse fireRegionList(Long tenantId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(ObjectUtil.isNotEmpty(tenantId), DeviceRegionDO::getTenantId, tenantId) + .eq(DeviceRegionDO::getDeleteEnum, "FALSE") + .orderByDesc(DeviceRegionDO::getCreateTime); + + List results = deviceRegionRepository.list(wrapper); + + // Convert to FireRegionCO + List fireRegionCOs = BeanUtil.copyToList(results, FireRegionCO.class); + + return SingleResponse.of(fireRegionCOs.isEmpty() ? null : fireRegionCOs.get(0)); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/query/RiskPointQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/RiskPointQueryExe.java deleted file mode 100644 index 8a8b580..0000000 --- a/web-app/src/main/java/com/zcloud/command/query/RiskPointQueryExe.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.zcloud.command.query; - -import com.alibaba.cola.dto.PageResponse; -import com.zcloud.command.convertor.RiskPointCoConvertor; -import com.zcloud.dto.RiskPointPageQry; -import com.zcloud.dto.clientobject.RiskPointCo; -import com.zcloud.persistence.dataobject.RiskPointDO; -import com.zcloud.persistence.repository.RiskPointRepository; -import lombok.AllArgsConstructor; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * 风险点新增执行器 - * - * @author lin - */ -@Component -@AllArgsConstructor -public class RiskPointQueryExe { - private final RiskPointRepository riskPointRepository; - private final RiskPointCoConvertor riskPointCoConvertor; - - /** - * 分页 - * - * @param riskPointPageQry - * @return - */ - public PageResponse execute(RiskPointPageQry riskPointPageQry) { - PageResponse pageResponse = riskPointRepository.listRiskPointPage(riskPointPageQry.toHashMap()); - List examCenterCOS = riskPointCoConvertor.converDOsToCOs(pageResponse.getData()); - return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); - } -} diff --git a/web-app/src/main/java/com/zcloud/command/query/SensorDeviceQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/SensorDeviceQueryExe.java new file mode 100644 index 0000000..9e36565 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/query/SensorDeviceQueryExe.java @@ -0,0 +1,64 @@ +package com.zcloud.command.query; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zcloud.dto.SensorDevicePageQry; +import com.zcloud.dto.clientobject.SensorDeviceCO; +import com.zcloud.persistence.dataobject.SensorDeviceDO; +import com.zcloud.persistence.repository.SensorDeviceRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * SensorDeviceQueryExe - 传感器设备执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +public class SensorDeviceQueryExe { + + private final SensorDeviceRepository sensorDeviceRepository; + + public PageResponse execute(SensorDevicePageQry qry) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), SensorDeviceDO::getTenantId, qry.getTenantId()) + .eq(ObjectUtil.isNotEmpty(qry.getOrgId()), SensorDeviceDO::getOrgId, qry.getOrgId()) + .like(ObjectUtil.isNotEmpty(qry.getSensorCode()), SensorDeviceDO::getSensorCode, qry.getSensorCode()) + .like(ObjectUtil.isNotEmpty(qry.getSensorName()), SensorDeviceDO::getSensorName, qry.getSensorName()) + .eq(ObjectUtil.isNotEmpty(qry.getSensorTypeId()), SensorDeviceDO::getSensorTypeId, qry.getSensorTypeId()) + .eq(ObjectUtil.isNotEmpty(qry.getSensorAttr()), SensorDeviceDO::getSensorAttr, qry.getSensorAttr()) + .eq(ObjectUtil.isNotEmpty(qry.getSensorStatus()), SensorDeviceDO::getSensorStatus, qry.getSensorStatus()) + .eq(ObjectUtil.isNotEmpty(qry.getAlarmSwitch()), SensorDeviceDO::getAlarmSwitch, qry.getAlarmSwitch()) + .eq(ObjectUtil.isNotEmpty(qry.getThresholdFlag()), SensorDeviceDO::getThresholdFlag, qry.getThresholdFlag()) + .like(ObjectUtil.isNotEmpty(qry.getInstallPosition()), SensorDeviceDO::getInstallPosition, qry.getInstallPosition()) + .eq(SensorDeviceDO::getDeleteEnum, "FALSE") + .orderByDesc(SensorDeviceDO::getCreateTime); + + List results = sensorDeviceRepository.list(wrapper); + int total = results.size(); + + // Convert to CO + List sensorDeviceCOs = BeanUtil.copyToList(results, SensorDeviceCO.class); + + return PageResponse.of(sensorDeviceCOs, total, qry.getPageSize(), qry.getPageIndex()); + } + + public SingleResponse getById(Long id) { + SensorDeviceDO d = sensorDeviceRepository.getById(id); + if (d == null || "TRUE".equals(d.getDeleteEnum())) { + return SingleResponse.buildFailure("记录不存在或已被删除"); + } + + SensorDeviceCO co = new SensorDeviceCO(); + BeanUtils.copyProperties(d, co); + return SingleResponse.of(co); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/command/query/SensorTypeQueryExe.java b/web-app/src/main/java/com/zcloud/command/query/SensorTypeQueryExe.java new file mode 100644 index 0000000..b56f6a8 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/command/query/SensorTypeQueryExe.java @@ -0,0 +1,60 @@ +package com.zcloud.command.query; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zcloud.dto.SensorTypePageQry; +import com.zcloud.dto.clientobject.SensorTypeCO; +import com.zcloud.persistence.dataobject.SensorTypeDO; +import com.zcloud.persistence.repository.SensorTypeRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * SensorTypeQueryExe - 传感器类型执行器 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Component +@RequiredArgsConstructor +public class SensorTypeQueryExe { + + private final SensorTypeRepository sensorTypeRepository; + + public PageResponse execute(SensorTypePageQry qry) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), SensorTypeDO::getTenantId, qry.getTenantId()) + .eq(ObjectUtil.isNotEmpty(qry.getOrgId()), SensorTypeDO::getOrgId, qry.getOrgId()) + .like(ObjectUtil.isNotEmpty(qry.getTypeCode()), SensorTypeDO::getTypeCode, qry.getTypeCode()) + .like(ObjectUtil.isNotEmpty(qry.getTypeName()), SensorTypeDO::getTypeName, qry.getTypeName()) + .eq(ObjectUtil.isNotEmpty(qry.getSensorAttr()), SensorTypeDO::getSensorAttr, qry.getSensorAttr()) + .eq(ObjectUtil.isNotEmpty(qry.getStatus()), SensorTypeDO::getStatus, qry.getStatus()) + .eq(SensorTypeDO::getDeleteEnum, "FALSE") + .orderByDesc(SensorTypeDO::getCreateTime); + + List results = sensorTypeRepository.list(wrapper); + int total = results.size(); + + // Convert to CO + List sensorTypeCOs = BeanUtil.copyToList(results, SensorTypeCO.class); + + return PageResponse.of(sensorTypeCOs, total, qry.getPageSize(), qry.getPageIndex()); + } + + public SingleResponse getById(Long id) { + SensorTypeDO d = sensorTypeRepository.getById(id); + if (d == null || "TRUE".equals(d.getDeleteEnum())) { + return SingleResponse.buildFailure("记录不存在或已被删除"); + } + + SensorTypeCO co = new SensorTypeCO(); + BeanUtils.copyProperties(d, co); + return SingleResponse.of(co); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/service/AlarmDisposeServiceImpl.java b/web-app/src/main/java/com/zcloud/service/AlarmDisposeServiceImpl.java new file mode 100644 index 0000000..e17e167 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/service/AlarmDisposeServiceImpl.java @@ -0,0 +1,78 @@ +package com.zcloud.service; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.api.AlarmDisposeServiceI; +import com.zcloud.command.AlarmDisposeAssignExe; +import com.zcloud.command.AlarmDisposeBatchAssignExe; +import com.zcloud.command.AlarmDisposeInvalidExe; +import com.zcloud.command.AppAlarmDisposeSubmitExe; +import com.zcloud.command.query.AlarmDisposeQueryExe; +import com.zcloud.command.query.AppAlarmDisposeQueryExe; +import com.zcloud.dto.AlarmDisposeAssignCmd; +import com.zcloud.dto.AlarmDisposeBatchAssignCmd; +import com.zcloud.dto.AlarmDisposeInvalidCmd; +import com.zcloud.dto.AlarmDisposePageQry; +import com.zcloud.dto.AppAlarmDisposePageQry; +import com.zcloud.dto.AppAlarmDisposeSubmitCmd; +import com.zcloud.dto.clientobject.AlarmDisposeCO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class AlarmDisposeServiceImpl implements AlarmDisposeServiceI { + + private final AlarmDisposeAssignExe alarmDisposeAssignExe; + private final AlarmDisposeBatchAssignExe alarmDisposeBatchAssignExe; + private final AlarmDisposeInvalidExe alarmDisposeInvalidExe; + private final AlarmDisposeQueryExe alarmDisposeQueryExe; + private final AppAlarmDisposeQueryExe appAlarmDisposeQueryExe; + private final AppAlarmDisposeSubmitExe appAlarmDisposeSubmitExe; + + @Override + public PageResponse assignList(AlarmDisposePageQry qry) { + return alarmDisposeQueryExe.execute(qry); + } + + @Override + public SingleResponse assign(AlarmDisposeAssignCmd cmd) { + alarmDisposeAssignExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public SingleResponse batchAssign(AlarmDisposeBatchAssignCmd cmd) { + alarmDisposeBatchAssignExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public SingleResponse invalid(AlarmDisposeInvalidCmd cmd) { + alarmDisposeInvalidExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public SingleResponse info(Long id) { + return alarmDisposeQueryExe.getById(id); + } + + // ==================== 手机端接口实现 ==================== + + @Override + public PageResponse appTodoList(AppAlarmDisposePageQry qry) { + return appAlarmDisposeQueryExe.execute(qry); + } + + @Override + public SingleResponse appInfo(Long id) { + return appAlarmDisposeQueryExe.getById(id); + } + + @Override + public SingleResponse appSubmit(AppAlarmDisposeSubmitCmd cmd) { + appAlarmDisposeSubmitExe.execute(cmd); + return SingleResponse.buildSuccess(); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/service/AlarmMessageService.java b/web-app/src/main/java/com/zcloud/service/AlarmMessageService.java new file mode 100644 index 0000000..302de78 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/service/AlarmMessageService.java @@ -0,0 +1,111 @@ +package com.zcloud.service; + +import com.jjb.saas.message.client.message.facede.MessageFacade; +import com.jjb.saas.message.client.message.request.MessageSendCmd; +import com.jjb.saas.message.client.message.request.MessageTargetCmd; +import com.zcloud.domain.model.AlarmRecordE; +import com.zcloud.gbscommon.utils.UuidUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * AlarmMessageService - 报警消息服务 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Slf4j +@Service +@RequiredArgsConstructor +@RefreshScope +public class AlarmMessageService { + + @DubboReference + private MessageFacade messageFacade; + + @Value("${alarm.message.template.auto-push:}") + private String autoPushTemplateCode; + + @Value("${alarm.message.template.dispose-push:}") + private String disposePushTemplateCode; + + /** + * 发送报警自动推送消息 + * @param alarmRecord 报警记录 + * @param managerId 区域负责人ID + */ + public void sendAutoPushMessage(AlarmRecordE alarmRecord, Long managerId) { + if (alarmRecord == null || managerId == null) { + log.warn("报警自动推送消息参数不完整,跳过发送"); + return; + } + + try { + MessageSendCmd messageSendCmd = new MessageSendCmd(); + messageSendCmd.setBusinessId(UuidUtil.get32UUID()); + + MessageTargetCmd messageTargetCmd = new MessageTargetCmd(); + messageTargetCmd.setUserId(managerId); + messageSendCmd.setTargetCmd(messageTargetCmd); + + messageSendCmd.setSourceCode(autoPushTemplateCode); + messageSendCmd.setNeedTokenEnum(false); + + Map params = new HashMap<>(); + params.put("deviceSourceDesc", alarmRecord.getDeviceSourceDesc()); + params.put("alarmLevel", alarmRecord.getAlarmLevel()); + params.put("alarmTime", alarmRecord.getAlarmTime()); + params.put("alarmDesc", alarmRecord.getAlarmDesc()); + messageSendCmd.setParams(params); + + messageFacade.send(messageSendCmd); + log.info("报警自动推送消息发送成功,报警ID: {}, 接收人ID: {}", alarmRecord.getId(), managerId); + } catch (Exception e) { + log.error("报警自动推送消息发送失败,报警ID: {}, 接收人ID: {}, 错误: {}", + alarmRecord.getId(), managerId, e.getMessage(), e); + } + } + + /** + * 发送报警处置推送消息 + * @param alarmRecord 报警记录 + * @param disposeUserId 处置人ID + */ + public void sendDisposePushMessage(AlarmRecordE alarmRecord, Long disposeUserId) { + if (alarmRecord == null || disposeUserId == null) { + log.warn("报警处置推送消息参数不完整,跳过发送"); + return; + } + + try { + MessageSendCmd messageSendCmd = new MessageSendCmd(); + messageSendCmd.setBusinessId(UuidUtil.get32UUID()); + + MessageTargetCmd messageTargetCmd = new MessageTargetCmd(); + messageTargetCmd.setUserId(disposeUserId); + messageSendCmd.setTargetCmd(messageTargetCmd); + + messageSendCmd.setSourceCode(disposePushTemplateCode); + messageSendCmd.setNeedTokenEnum(false); + + Map params = new HashMap<>(); + params.put("deviceSourceDesc", alarmRecord.getDeviceSourceDesc()); + params.put("alarmLevel", alarmRecord.getAlarmLevel()); + params.put("assignTime", alarmRecord.getAssignTime()); + params.put("disposeRemark", alarmRecord.getDisposeRemark()); + messageSendCmd.setParams(params); + + messageFacade.send(messageSendCmd); + log.info("报警处置推送消息发送成功,报警ID: {}, 接收人ID: {}", alarmRecord.getId(), disposeUserId); + } catch (Exception e) { + log.error("报警处置推送消息发送失败,报警ID: {}, 接收人ID: {}, 错误: {}", + alarmRecord.getId(), disposeUserId, e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/service/AlarmRecordServiceImpl.java b/web-app/src/main/java/com/zcloud/service/AlarmRecordServiceImpl.java new file mode 100644 index 0000000..654f280 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/service/AlarmRecordServiceImpl.java @@ -0,0 +1,40 @@ +package com.zcloud.service; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.api.AlarmRecordServiceI; +import com.zcloud.command.query.AlarmRecordQueryExe; +import com.zcloud.command.query.AppAlarmRecordQueryExe; +import com.zcloud.dto.AlarmRecordPageQry; +import com.zcloud.dto.AppAlarmRecordPageQry; +import com.zcloud.dto.clientobject.AlarmRecordCO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class AlarmRecordServiceImpl implements AlarmRecordServiceI { + + private final AlarmRecordQueryExe alarmRecordQueryExe; + private final AppAlarmRecordQueryExe appAlarmRecordQueryExe; + + @Override + public PageResponse list(AlarmRecordPageQry qry) { + return alarmRecordQueryExe.execute(qry); + } + + @Override + public SingleResponse info(Long id) { + return alarmRecordQueryExe.getById(id); + } + + @Override + public PageResponse appList(AppAlarmRecordPageQry qry) { + return appAlarmRecordQueryExe.execute(qry); + } + + @Override + public SingleResponse appInfo(Long id) { + return appAlarmRecordQueryExe.getById(id); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/service/AlarmTodoService.java b/web-app/src/main/java/com/zcloud/service/AlarmTodoService.java new file mode 100644 index 0000000..26b1205 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/service/AlarmTodoService.java @@ -0,0 +1,124 @@ +package com.zcloud.service; + +import com.alibaba.fastjson.JSONObject; +import com.zcloud.domain.model.AlarmRecordE; +import com.zcloud.gbscommon.todolistmq.TodoListEventPusherUtil; +import com.zcloud.gbscommon.todolistmq.event.TodoListAddEvent; +import com.zcloud.gbscommon.todolistmq.event.TodoListDeleteEvent; +import com.zcloud.gbscommon.todolistmq.event.TodoListCompleteEvent; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Service; + +/** + * AlarmTodoService - 报警待办服务 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Slf4j +@Service +@RequiredArgsConstructor +@RefreshScope +public class AlarmTodoService { + + private final TodoListEventPusherUtil todoListEventPusherUtil; + + /** + * 新增负责人待办(PC端) + * @param alarmRecord 报警记录 + * @param managerId 负责人ID + */ + public void addManagerTodo(AlarmRecordE alarmRecord, Long managerId) { + if (alarmRecord == null || managerId == null) { + log.warn("新增负责人待办参数不完整,跳过发送"); + return; + } + + try { + TodoListAddEvent event = new TodoListAddEvent(); + event.setTitle("您有一条【IoT报警】待研判"); + event.setContent("设备来源:" + alarmRecord.getDeviceSourceDesc()); + event.setForeignKey(alarmRecord.getId()); // 报警主表ID + event.setForeignSubsidiaryKey(alarmRecord.getId()); // 没有附表时为alarmId + event.setReceiveUser(managerId); + event.setPcFlag(1); // PC端待办 + event.setAppFlag(0); // APP端待办 + event.setOtherParams(new JSONObject()); + + todoListEventPusherUtil.sendMessageAddEvent(event); + log.info("负责人待办发送成功,报警ID: {}, 负责人ID: {}", alarmRecord.getId(), managerId); + } catch (Exception e) { + log.error("负责人待办发送失败,报警ID: {}, 负责人ID: {}, 错误: {}", + alarmRecord.getId(), managerId, e.getMessage(), e); + } + } + + /** + * 新增处置人待办(APP端) + * @param alarmRecord 报警记录 + * @param disposeUserId 处置人ID + */ + public void addDisposeTodo(AlarmRecordE alarmRecord, Long disposeUserId) { + if (alarmRecord == null || disposeUserId == null) { + log.warn("新增处置人待办参数不完整,跳过发送"); + return; + } + + try { + TodoListAddEvent event = new TodoListAddEvent(); + event.setTitle("您有一条【IoT报警】待处置"); + event.setContent("设备来源:" + alarmRecord.getDeviceSourceDesc()); + event.setForeignKey(alarmRecord.getId()); // 报警主表ID + event.setForeignSubsidiaryKey(alarmRecord.getId()); // 没有附表时为alarmId + event.setReceiveUser(disposeUserId); + event.setPcFlag(0); // PC端待办 + event.setAppFlag(1); // APP端待办 + event.setOtherParams(new JSONObject()); + + todoListEventPusherUtil.sendMessageAddEvent(event); + log.info("处置人待办发送成功,报警ID: {}, 处置人ID: {}", alarmRecord.getId(), disposeUserId); + } catch (Exception e) { + log.error("处置人待办发送失败,报警ID: {}, 处置人ID: {}, 错误: {}", + alarmRecord.getId(), disposeUserId, e.getMessage(), e); + } + } + + /** + * 完成待办 + * @param alarmId 报警主表ID + */ + public void completeTodo(Long alarmId) { + if (alarmId == null) { + log.warn("完成待办参数不完整,跳过发送"); + return; + } + + try { + TodoListCompleteEvent event = new TodoListCompleteEvent(alarmId, String.valueOf(alarmId)); + todoListEventPusherUtil.sendMessageCompleteEvent(event); + log.info("待办完成发送成功,报警ID: {}", alarmId); + } catch (Exception e) { + log.error("待办完成发送失败,报警ID: {}, 错误: {}", alarmId, e.getMessage(), e); + } + } + + /** + * 删除待办 + * @param alarmId 报警主表ID + */ + public void deleteTodo(Long alarmId) { + if (alarmId == null) { + log.warn("删除待办参数不完整,跳过发送"); + return; + } + + try { + TodoListDeleteEvent event = new TodoListDeleteEvent(alarmId, alarmId); + todoListEventPusherUtil.sendMessageDeleteEvent(event); + log.info("待办删除发送成功,报警ID: {}", alarmId); + } catch (Exception e) { + log.error("待办删除发送失败,报警ID: {}, 错误: {}", alarmId, e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/service/DeviceRegionServiceImpl.java b/web-app/src/main/java/com/zcloud/service/DeviceRegionServiceImpl.java new file mode 100644 index 0000000..695bfc8 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/service/DeviceRegionServiceImpl.java @@ -0,0 +1,83 @@ +package com.zcloud.service; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.api.DeviceRegionServiceI; +import com.zcloud.command.DeviceRegionAddExe; +import com.zcloud.command.DeviceRegionUpdateExe; +import com.zcloud.command.DeviceRegionRemoveExe; +import com.zcloud.command.BindSensorExe; +import com.zcloud.command.UnbindSensorExe; +import com.zcloud.command.ManagerExe; +import com.zcloud.command.query.DeviceRegionQueryExe; +import com.zcloud.dto.DeviceRegionAddCmd; +import com.zcloud.dto.DeviceRegionPageQry; +import com.zcloud.dto.BindSensorCmd; +import com.zcloud.dto.UnbindSensorCmd; +import com.zcloud.dto.ManagerCmd; +import com.zcloud.dto.clientobject.DeviceRegionCO; +import com.zcloud.dto.clientobject.FireRegionCO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class DeviceRegionServiceImpl implements DeviceRegionServiceI { + + private final DeviceRegionAddExe deviceRegionAddExe; + private final DeviceRegionUpdateExe deviceRegionUpdateExe; + private final DeviceRegionQueryExe deviceRegionQueryExe; + private final DeviceRegionRemoveExe deviceRegionRemoveExe; + private final BindSensorExe bindSensorExe; + private final UnbindSensorExe unbindSensorExe; + private final ManagerExe managerExe; + + @Override + public PageResponse listPage(DeviceRegionPageQry qry) { + return deviceRegionQueryExe.execute(qry); + } + + @Override + public SingleResponse saveOrUpdate(DeviceRegionAddCmd cmd) { + // 判断是新增还是修改 + if (cmd.getId() != null) { + deviceRegionUpdateExe.execute(cmd); + return SingleResponse.buildSuccess(); + } else { + return deviceRegionAddExe.execute(cmd); + } + } + + @Override + public SingleResponse bindSensor(BindSensorCmd cmd) { + bindSensorExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public SingleResponse unbindSensor(UnbindSensorCmd cmd) { + unbindSensorExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public SingleResponse manager(ManagerCmd cmd) { + managerExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public SingleResponse fireRegionList(Long tenantId) { + return deviceRegionQueryExe.fireRegionList(tenantId); + } + + @Override + public void remove(Long id) { + deviceRegionRemoveExe.execute(id); + } + + @Override + public SingleResponse info(Long id) { + return deviceRegionQueryExe.getById(id); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/service/RiskPointServiceImpl.java b/web-app/src/main/java/com/zcloud/service/RiskPointServiceImpl.java deleted file mode 100644 index 845fc26..0000000 --- a/web-app/src/main/java/com/zcloud/service/RiskPointServiceImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.zcloud.service; - -import com.alibaba.cola.dto.PageResponse; -import com.alibaba.cola.dto.SingleResponse; -import com.zcloud.api.RiskPointServiceI; -import com.zcloud.command.RiskPointAddExe; -import com.zcloud.command.RiskPointRemoveExe; -import com.zcloud.command.RiskPointUpdateExe; -import com.zcloud.command.query.RiskPointQueryExe; -import com.zcloud.dto.RiskPointAddCmd; -import com.zcloud.dto.RiskPointPageQry; -import com.zcloud.dto.RiskPointUpdateCmd; -import com.zcloud.dto.clientobject.RiskPointCo; -import lombok.AllArgsConstructor; -import org.springframework.stereotype.Service; - -/** - * @author lin - */ -@Service -@AllArgsConstructor -public class RiskPointServiceImpl implements RiskPointServiceI { - private final RiskPointAddExe riskPointAddExe; - private final RiskPointUpdateExe riskPointUpdateExe; - private final RiskPointRemoveExe riskPointRemoveExe; - private final RiskPointQueryExe riskPointQueryExe; - - @Override - public PageResponse listPage(RiskPointPageQry qry){ - - return riskPointQueryExe.execute(qry); - } - - @Override - public SingleResponse add(RiskPointAddCmd cmd) { - - riskPointAddExe.execute(cmd); - return SingleResponse.buildSuccess(); - } - - @Override - public void edit(RiskPointUpdateCmd riskPointUpdateCmd) { - riskPointUpdateExe.execute(riskPointUpdateCmd); - } - - @Override - public void remove(Long id) { - riskPointRemoveExe.execute(id); - } - - @Override - public void removeBatch(Long[] ids) { - riskPointRemoveExe.execute(ids); - } - -} diff --git a/web-app/src/main/java/com/zcloud/service/SensorDeviceServiceImpl.java b/web-app/src/main/java/com/zcloud/service/SensorDeviceServiceImpl.java new file mode 100644 index 0000000..4adf904 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/service/SensorDeviceServiceImpl.java @@ -0,0 +1,66 @@ +package com.zcloud.service; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.api.SensorDeviceServiceI; +import com.zcloud.command.SensorDeviceRemoveExe; +import com.zcloud.command.SensorDeviceStatusExe; +import com.zcloud.command.SensorDeviceThresholdExe; +import com.zcloud.command.SensorDeviceUpdateExe; +import com.zcloud.command.query.SensorDeviceQueryExe; +import com.zcloud.command.SensorDeviceAddExe; +import com.zcloud.dto.SensorDeviceAddCmd; +import com.zcloud.dto.SensorDevicePageQry; +import com.zcloud.dto.SensorDeviceThresholdCmd; +import com.zcloud.dto.SensorDeviceUpdateCmd; +import com.zcloud.dto.clientobject.SensorDeviceCO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class SensorDeviceServiceImpl implements SensorDeviceServiceI { + + private final SensorDeviceAddExe sensorDeviceAddExe; + private final SensorDeviceUpdateExe sensorDeviceUpdateExe; + private final SensorDeviceQueryExe sensorDeviceQueryExe; + private final SensorDeviceRemoveExe sensorDeviceRemoveExe; + private final SensorDeviceStatusExe sensorDeviceStatusExe; + private final SensorDeviceThresholdExe sensorDeviceThresholdExe; + + @Override + public PageResponse listPage(SensorDevicePageQry qry) { + return sensorDeviceQueryExe.execute(qry); + } + + @Override + public SingleResponse add(SensorDeviceAddCmd cmd) { + sensorDeviceAddExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public void edit(SensorDeviceUpdateCmd cmd) { + sensorDeviceUpdateExe.execute(cmd); + } + + @Override + public void updateStatus(Long id, String status) { + sensorDeviceStatusExe.execute(id, status); + } + + @Override + public void updateThreshold(SensorDeviceThresholdCmd cmd) { + sensorDeviceThresholdExe.execute(cmd); + } + + @Override + public void remove(Long id) { + sensorDeviceRemoveExe.execute(id); + } + + @Override + public SingleResponse info(Long id) { + return sensorDeviceQueryExe.getById(id); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/service/SensorTypeServiceImpl.java b/web-app/src/main/java/com/zcloud/service/SensorTypeServiceImpl.java new file mode 100644 index 0000000..28d2441 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/service/SensorTypeServiceImpl.java @@ -0,0 +1,51 @@ +package com.zcloud.service; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.api.SensorTypeServiceI; +import com.zcloud.command.SensorTypeRemoveExe; +import com.zcloud.command.SensorTypeUpdateExe; +import com.zcloud.command.query.SensorTypeQueryExe; +import com.zcloud.command.SensorTypeAddExe; +import com.zcloud.dto.SensorTypeAddCmd; +import com.zcloud.dto.SensorTypePageQry; +import com.zcloud.dto.SensorTypeUpdateCmd; +import com.zcloud.dto.clientobject.SensorTypeCO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class SensorTypeServiceImpl implements SensorTypeServiceI { + + private final SensorTypeAddExe sensorTypeAddExe; + private final SensorTypeUpdateExe sensorTypeUpdateExe; + private final SensorTypeQueryExe sensorTypeQueryExe; + private final SensorTypeRemoveExe sensorTypeRemoveExe; + + @Override + public PageResponse listPage(SensorTypePageQry qry) { + return sensorTypeQueryExe.execute(qry); + } + + @Override + public SingleResponse add(SensorTypeAddCmd cmd) { + sensorTypeAddExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public void edit(SensorTypeUpdateCmd cmd) { + sensorTypeUpdateExe.execute(cmd); + } + + @Override + public void remove(Long id) { + sensorTypeRemoveExe.execute(id); + } + + @Override + public SingleResponse info(Long id) { + return sensorTypeQueryExe.getById(id); + } +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/api/AlarmDisposeServiceI.java b/web-client/src/main/java/com/zcloud/api/AlarmDisposeServiceI.java new file mode 100644 index 0000000..abb13ff --- /dev/null +++ b/web-client/src/main/java/com/zcloud/api/AlarmDisposeServiceI.java @@ -0,0 +1,77 @@ +package com.zcloud.api; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.dto.AlarmDisposeAssignCmd; +import com.zcloud.dto.AlarmDisposeBatchAssignCmd; +import com.zcloud.dto.AlarmDisposeInvalidCmd; +import com.zcloud.dto.AlarmDisposePageQry; +import com.zcloud.dto.AppAlarmDisposePageQry; +import com.zcloud.dto.AppAlarmDisposeSubmitCmd; +import com.zcloud.dto.clientobject.AlarmDisposeCO; + +/** + * AlarmDisposeServiceI - 报警处置服务接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface AlarmDisposeServiceI { + + /** + * 待处置列表查询 + * @param qry + * @return + */ + PageResponse assignList(AlarmDisposePageQry qry); + + /** + * 单条处置分配 + * @param cmd + * @return + */ + SingleResponse assign(AlarmDisposeAssignCmd cmd); + + /** + * 批量处置分配 + * @param cmd + * @return + */ + SingleResponse batchAssign(AlarmDisposeBatchAssignCmd cmd); + + /** + * 无效报警处理 + * @param cmd + * @return + */ + SingleResponse invalid(AlarmDisposeInvalidCmd cmd); + + /** + * 报警详情 + * @param id + * @return + */ + SingleResponse info(Long id); + + // ==================== 手机端接口 ==================== + + /** + * 手机端待处置列表(按当前用户过滤) + * @param qry + * @return + */ + PageResponse appTodoList(AppAlarmDisposePageQry qry); + + /** + * 手机端报警详情 + * @param id + * @return + */ + SingleResponse appInfo(Long id); + + /** + * 手机端提交处置结果 + * @param cmd + * @return + */ + SingleResponse appSubmit(AppAlarmDisposeSubmitCmd cmd); +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/api/AlarmRecordServiceI.java b/web-client/src/main/java/com/zcloud/api/AlarmRecordServiceI.java new file mode 100644 index 0000000..42d8052 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/api/AlarmRecordServiceI.java @@ -0,0 +1,43 @@ +package com.zcloud.api; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.dto.AlarmRecordPageQry; +import com.zcloud.dto.AppAlarmRecordPageQry; +import com.zcloud.dto.clientobject.AlarmRecordCO; + +/** + * AlarmRecordServiceI - 报警记录服务接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface AlarmRecordServiceI { + + /** + * 报警记录列表查询 + * @param qry + * @return + */ + PageResponse list(AlarmRecordPageQry qry); + + /** + * 报警详情 + * @param id + * @return + */ + SingleResponse info(Long id); + + /** + * 手机端报警记录列表查询(按当前用户过滤) + * @param qry + * @return + */ + PageResponse appList(AppAlarmRecordPageQry qry); + + /** + * 手机端报警详情 + * @param id + * @return + */ + SingleResponse appInfo(Long id); +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/api/DeviceRegionServiceI.java b/web-client/src/main/java/com/zcloud/api/DeviceRegionServiceI.java new file mode 100644 index 0000000..a500f48 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/api/DeviceRegionServiceI.java @@ -0,0 +1,75 @@ +package com.zcloud.api; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.dto.DeviceRegionAddCmd; +import com.zcloud.dto.DeviceRegionUpdateCmd; +import com.zcloud.dto.DeviceRegionPageQry; +import com.zcloud.dto.BindSensorCmd; +import com.zcloud.dto.UnbindSensorCmd; +import com.zcloud.dto.ManagerCmd; +import com.zcloud.dto.clientobject.DeviceRegionCO; +import com.zcloud.dto.clientobject.FireRegionCO; + +/** + * DeviceRegionServiceI - 设备区域服务接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface DeviceRegionServiceI { + + /** + * 分页列表 + * @param qry + * @return + */ + PageResponse listPage(DeviceRegionPageQry qry); + + /** + * 新增或修改 + * @param cmd + * @return + */ + SingleResponse saveOrUpdate(DeviceRegionAddCmd cmd); + + /** + * 绑定传感器 + * @param cmd + * @return + */ + SingleResponse bindSensor(BindSensorCmd cmd); + + /** + * 解绑传感器 + * @param cmd + * @return + */ + SingleResponse unbindSensor(UnbindSensorCmd cmd); + + /** + * 负责人配置 + * @param cmd + * @return + */ + SingleResponse manager(ManagerCmd cmd); + + /** + * 消防区域列表(连表查询) + * @param tenantId + * @return + */ + SingleResponse fireRegionList(Long tenantId); + + /** + * 删除 + * @param id + */ + void remove(Long id); + + /** + * 详情 + * @param id + * @return + */ + SingleResponse info(Long id); +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/api/RiskPointServiceI.java b/web-client/src/main/java/com/zcloud/api/RiskPointServiceI.java deleted file mode 100644 index 9ef67c9..0000000 --- a/web-client/src/main/java/com/zcloud/api/RiskPointServiceI.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zcloud.api; - -import com.alibaba.cola.dto.PageResponse; -import com.alibaba.cola.dto.SingleResponse; -import com.zcloud.dto.RiskPointAddCmd; -import com.zcloud.dto.RiskPointPageQry; -import com.zcloud.dto.RiskPointUpdateCmd; -import com.zcloud.dto.clientobject.RiskPointCo; - -public interface RiskPointServiceI { - PageResponse listPage(RiskPointPageQry qry); - SingleResponse add(RiskPointAddCmd cmd); - - void edit(RiskPointUpdateCmd riskPointUpdateCmd); - - void remove(Long id); - - void removeBatch(Long[] ids); - -} diff --git a/web-client/src/main/java/com/zcloud/api/SensorDeviceServiceI.java b/web-client/src/main/java/com/zcloud/api/SensorDeviceServiceI.java new file mode 100644 index 0000000..8ee8f8a --- /dev/null +++ b/web-client/src/main/java/com/zcloud/api/SensorDeviceServiceI.java @@ -0,0 +1,63 @@ +package com.zcloud.api; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.dto.SensorDeviceAddCmd; +import com.zcloud.dto.SensorDevicePageQry; +import com.zcloud.dto.SensorDeviceUpdateCmd; +import com.zcloud.dto.SensorDeviceThresholdCmd; +import com.zcloud.dto.clientobject.SensorDeviceCO; + +/** + * SensorDeviceServiceI - 传感器设备服务接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface SensorDeviceServiceI { + + /** + * 分页列表 + * @param qry + * @return + */ + PageResponse listPage(SensorDevicePageQry qry); + + /** + * 新增 + * @param cmd + * @return + */ + SingleResponse add(SensorDeviceAddCmd cmd); + + /** + * 修改 + * @param cmd + */ + void edit(SensorDeviceUpdateCmd cmd); + + /** + * 状态切换 + * @param id + * @param status + */ + void updateStatus(Long id, String status); + + /** + * 阈值配置 + * @param cmd + */ + void updateThreshold(SensorDeviceThresholdCmd cmd); + + /** + * 删除 + * @param id + */ + void remove(Long id); + + /** + * 详情 + * @param id + * @return + */ + SingleResponse info(Long id); +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/api/SensorTypeServiceI.java b/web-client/src/main/java/com/zcloud/api/SensorTypeServiceI.java new file mode 100644 index 0000000..13cd773 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/api/SensorTypeServiceI.java @@ -0,0 +1,49 @@ +package com.zcloud.api; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.dto.SensorTypeAddCmd; +import com.zcloud.dto.SensorTypePageQry; +import com.zcloud.dto.SensorTypeUpdateCmd; +import com.zcloud.dto.clientobject.SensorTypeCO; + +/** + * SensorTypeServiceI - 传感器类型服务接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface SensorTypeServiceI { + + /** + * 分页列表 + * @param qry + * @return + */ + PageResponse listPage(SensorTypePageQry qry); + + /** + * 新增 + * @param cmd + * @return + */ + SingleResponse add(SensorTypeAddCmd cmd); + + /** + * 修改 + * @param cmd + */ + void edit(SensorTypeUpdateCmd cmd); + + /** + * 删除 + * @param id + */ + void remove(Long id); + + /** + * 详情 + * @param id + * @return + */ + SingleResponse info(Long id); +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AlarmDisposeAssignCmd.java b/web-client/src/main/java/com/zcloud/dto/AlarmDisposeAssignCmd.java new file mode 100644 index 0000000..bdeeb2e --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AlarmDisposeAssignCmd.java @@ -0,0 +1,38 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * AlarmDisposeAssignCmd - 报警处置命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class AlarmDisposeAssignCmd extends Command { + + @ApiModelProperty(value = "报警主键ID", name = "id", required = true) + private Long id; + + @ApiModelProperty(value = "处置人ID", name = "disposeUserId", required = true) + private Long disposeUserId; + + @ApiModelProperty(value = "报警级别", name = "alarmLevel") + private String alarmLevel; + + @ApiModelProperty(value = "报警类型", name = "alarmType") + private String alarmType; + + @ApiModelProperty(value = "租户ID", name = "tenantId") + private Long tenantId; + + @ApiModelProperty(value = "组织ID", name = "orgId") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AlarmDisposeBatchAssignCmd.java b/web-client/src/main/java/com/zcloud/dto/AlarmDisposeBatchAssignCmd.java new file mode 100644 index 0000000..d0da928 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AlarmDisposeBatchAssignCmd.java @@ -0,0 +1,34 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +import java.util.List; + +/** + * AlarmDisposeBatchAssignCmd - 报警处置命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class AlarmDisposeBatchAssignCmd extends Command { + + @ApiModelProperty(value = "报警主键ID列表", name = "ids", required = true) + private List ids; + + @ApiModelProperty(value = "处置人ID", name = "disposeUserId", required = true) + private Long disposeUserId; + + @ApiModelProperty(value = "租户ID", name = "tenantId") + private Long tenantId; + + @ApiModelProperty(value = "组织ID", name = "orgId") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AlarmDisposeInvalidCmd.java b/web-client/src/main/java/com/zcloud/dto/AlarmDisposeInvalidCmd.java new file mode 100644 index 0000000..ef35112 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AlarmDisposeInvalidCmd.java @@ -0,0 +1,32 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * AlarmDisposeInvalidCmd - 报警处置命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class AlarmDisposeInvalidCmd extends Command { + + @ApiModelProperty(value = "报警主键ID", name = "id", required = true) + private Long id; + + @ApiModelProperty(value = "无效原因", name = "invalidReason") + private String invalidReason; + + @ApiModelProperty(value = "租户ID", name = "tenantId") + private Long tenantId; + + @ApiModelProperty(value = "组织ID", name = "orgId") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AlarmDisposePageQry.java b/web-client/src/main/java/com/zcloud/dto/AlarmDisposePageQry.java new file mode 100644 index 0000000..3fc0846 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AlarmDisposePageQry.java @@ -0,0 +1,50 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * AlarmDisposePageQry - 报警处置查询 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class AlarmDisposePageQry extends PageQuery { + + @ApiModelProperty(value = "报警编号") + private String alarmNo; + + @ApiModelProperty(value = "报警来源") + private String alarmSource; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "消防区域ID") + private Long fireRegionId; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "处置人ID") + private Long disposeUserId; + + @ApiModelProperty(value = "报警级别") + private String alarmLevel; + + @ApiModelProperty(value = "报警类型") + private String alarmType; + + @ApiModelProperty(value = "报警时间开始") + private String alarmTimeStart; + + @ApiModelProperty(value = "报警时间结束") + private String alarmTimeEnd; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AlarmRecordPageQry.java b/web-client/src/main/java/com/zcloud/dto/AlarmRecordPageQry.java new file mode 100644 index 0000000..feccbdd --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AlarmRecordPageQry.java @@ -0,0 +1,38 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * AlarmRecordPageQry - 报警记录查询 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class AlarmRecordPageQry extends PageQuery { + + @ApiModelProperty(value = "报警编号") + private String alarmNo; + + @ApiModelProperty(value = "报警来源 THRESHOLD/DCS") + private String alarmSource; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "当前状态 10待研判/20待处置/30已消警/40误报") + private Integer status; + + @ApiModelProperty(value = "报警时间开始") + private String alarmTimeStart; + + @ApiModelProperty(value = "报警时间结束") + private String alarmTimeEnd; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AppAlarmDisposePageQry.java b/web-client/src/main/java/com/zcloud/dto/AppAlarmDisposePageQry.java new file mode 100644 index 0000000..5ec2bea --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AppAlarmDisposePageQry.java @@ -0,0 +1,47 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * AppAlarmDisposePageQry - APP报警处置查询 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class AppAlarmDisposePageQry extends PageQuery { + + @ApiModelProperty(value = "报警编号") + private String alarmNo; + + @ApiModelProperty(value = "报警来源") + private String alarmSource; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "消防区域ID") + private Long fireRegionId; + + @ApiModelProperty(value = "报警级别") + private String alarmLevel; + + @ApiModelProperty(value = "报警类型") + private String alarmType; + + @ApiModelProperty(value = "报警时间开始") + private String alarmTimeStart; + + @ApiModelProperty(value = "报警时间结束") + private String alarmTimeEnd; + + @ApiModelProperty(value = "当前用户ID(手机端自动填充)") + private Long currentUserId; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AppAlarmDisposeSubmitCmd.java b/web-client/src/main/java/com/zcloud/dto/AppAlarmDisposeSubmitCmd.java new file mode 100644 index 0000000..41c37f8 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AppAlarmDisposeSubmitCmd.java @@ -0,0 +1,38 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * AppAlarmDisposeSubmitCmd - APP报警处置命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class AppAlarmDisposeSubmitCmd extends Command { + + @ApiModelProperty(value = "报警ID", name = "alarmId", required = true) + private Long alarmId; + + @ApiModelProperty(value = "处置结果(已消警/误报)", name = "disposeResult", required = true) + private String disposeResult; + + @ApiModelProperty(value = "处置说明", name = "disposeRemark") + private String disposeRemark; + + @ApiModelProperty(value = "图片地址(多个URL用逗号分隔)", name = "pictureUrls") + private String pictureUrls; + + @ApiModelProperty(value = "租户ID", name = "tenantId") + private Long tenantId; + + @ApiModelProperty(value = "组织ID", name = "orgId") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/AppAlarmRecordPageQry.java b/web-client/src/main/java/com/zcloud/dto/AppAlarmRecordPageQry.java new file mode 100644 index 0000000..05b75c4 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/AppAlarmRecordPageQry.java @@ -0,0 +1,23 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * AppAlarmRecordPageQry - APP报警记录查询 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class AppAlarmRecordPageQry extends PageQuery { + + @ApiModelProperty(value = "当前状态 30已消警/40误报") + private Integer status; + + @ApiModelProperty(value = "报警时间开始") + private String alarmTimeStart; + + @ApiModelProperty(value = "报警时间结束") + private String alarmTimeEnd; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/BindSensorCmd.java b/web-client/src/main/java/com/zcloud/dto/BindSensorCmd.java new file mode 100644 index 0000000..a3fe438 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/BindSensorCmd.java @@ -0,0 +1,38 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * BindSensorCmd - 绑定传感器命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class BindSensorCmd extends Command { + + @ApiModelProperty(value = "区域配置主键ID", name = "regionConfigId", required = true) + private Long regionConfigId; + + @ApiModelProperty(value = "外部消防区域ID", name = "fireRegionId") + private Long fireRegionId; + + @ApiModelProperty(value = "传感器ID", name = "sensorId", required = true) + private Long sensorId; + + @ApiModelProperty(value = "传感器编码快照", name = "sensorCode") + private String sensorCode; + + @ApiModelProperty(value = "租户ID", name = "tenantId") + private Long tenantId; + + @ApiModelProperty(value = "组织ID", name = "orgId") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/DeviceRegionAddCmd.java b/web-client/src/main/java/com/zcloud/dto/DeviceRegionAddCmd.java new file mode 100644 index 0000000..b2bec5d --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/DeviceRegionAddCmd.java @@ -0,0 +1,47 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * DeviceRegionAddCmd - 设备区域命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class DeviceRegionAddCmd extends Command { + + @ApiModelProperty(value = "主键ID(修改时必填)", name = "id") + private Long id; + + @ApiModelProperty(value = "外部消防区域主键", name = "fireRegionId", required = true) + private Long fireRegionId; + + @ApiModelProperty(value = "外部消防区域编码", name = "fireRegionCode") + private String fireRegionCode; + + @ApiModelProperty(value = "负责部门ID", name = "departmentId") + private Long departmentId; + + @ApiModelProperty(value = "负责人ID", name = "managerId") + private Long managerId; + + @ApiModelProperty(value = "状态 1启用0停用", name = "status") + private Integer status; + + @ApiModelProperty(value = "备注", name = "remarks") + private String remarks; + + @ApiModelProperty(value = "租户ID", name = "tenantId") + private Long tenantId; + + @ApiModelProperty(value = "组织ID", name = "orgId") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/DeviceRegionPageQry.java b/web-client/src/main/java/com/zcloud/dto/DeviceRegionPageQry.java new file mode 100644 index 0000000..a7dc071 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/DeviceRegionPageQry.java @@ -0,0 +1,32 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * DeviceRegionPageQry - 设备区域查询 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class DeviceRegionPageQry extends PageQuery { + + @ApiModelProperty(value = "消防区域编码") + private String fireRegionCode; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "负责人ID") + private Long managerId; + + @ApiModelProperty(value = "状态 1启用0停用") + private Integer status; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/DeviceRegionUpdateCmd.java b/web-client/src/main/java/com/zcloud/dto/DeviceRegionUpdateCmd.java new file mode 100644 index 0000000..2387ea7 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/DeviceRegionUpdateCmd.java @@ -0,0 +1,38 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * DeviceRegionUpdateCmd - 设备区域命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class DeviceRegionUpdateCmd extends Command { + + @ApiModelProperty(value = "主键ID", name = "id", required = true) + private Long id; + + @ApiModelProperty(value = "外部消防区域编码", name = "fireRegionCode") + private String fireRegionCode; + + @ApiModelProperty(value = "负责部门ID", name = "departmentId") + private Long departmentId; + + @ApiModelProperty(value = "负责人ID", name = "managerId") + private Long managerId; + + @ApiModelProperty(value = "状态 1启用0停用", name = "status") + private Integer status; + + @ApiModelProperty(value = "备注", name = "remarks") + private String remarks; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/ManagerCmd.java b/web-client/src/main/java/com/zcloud/dto/ManagerCmd.java new file mode 100644 index 0000000..54de9bc --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/ManagerCmd.java @@ -0,0 +1,29 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * ManagerCmd - 管理员命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ManagerCmd extends Command { + + @ApiModelProperty(value = "区域配置主键ID", name = "id", required = true) + private Long id; + + @ApiModelProperty(value = "负责人ID", name = "managerId", required = true) + private Long managerId; + + @ApiModelProperty(value = "负责部门ID", name = "departmentId") + private Long departmentId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/RiskPointAddCmd.java b/web-client/src/main/java/com/zcloud/dto/RiskPointAddCmd.java deleted file mode 100644 index 64bf449..0000000 --- a/web-client/src/main/java/com/zcloud/dto/RiskPointAddCmd.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.zcloud.dto; - -import com.alibaba.cola.dto.Command; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -import javax.validation.constraints.NotEmpty; - -/** - * - * @author lin - */ -@EqualsAndHashCode(callSuper = true) -@Data -@NoArgsConstructor -@AllArgsConstructor -public class RiskPointAddCmd extends Command { - @ApiModelProperty(value = "风险点名字", name = "riskPointName", required = true) - @NotEmpty(message = "风险点名字不能为空") - private String riskPointName; -// @ApiModelProperty(value = "部门Id", name = "deptId", required = true) -// @NotEmpty -// private String deptId; - @NotEmpty(message = "部门名字不能为空") - @ApiModelProperty(value = "部门名字", name = "deptName", required = true) - private String deptName; -} diff --git a/web-client/src/main/java/com/zcloud/dto/RiskPointPageQry.java b/web-client/src/main/java/com/zcloud/dto/RiskPointPageQry.java deleted file mode 100644 index 72b9880..0000000 --- a/web-client/src/main/java/com/zcloud/dto/RiskPointPageQry.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.zcloud.dto; - -import com.alibaba.cola.dto.PageQuery; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -@Data -public class RiskPointPageQry extends PageQuery { - @ApiModelProperty(value = "风险点名称") - private String likeRiskPointName; - @ApiModelProperty(value = "部门名称") - private String eqDeptName; - - public Map toHashMap() { - Map map = new HashMap<>(); - Class clazz = this.getClass(); - - Field[] fields = clazz.getDeclaredFields(); - for (Field field : fields) { - try { - field.setAccessible(true); - map.put(field.getName(), field.get(this)); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - - Class superClass = clazz.getSuperclass(); - if (superClass != null) { - Field[] superFields = superClass.getDeclaredFields(); - for (Field field : superFields) { - try { - field.setAccessible(true); - map.put(field.getName(), field.get(this)); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - return map; - } -} diff --git a/web-client/src/main/java/com/zcloud/dto/RiskPointUpdateCmd.java b/web-client/src/main/java/com/zcloud/dto/RiskPointUpdateCmd.java deleted file mode 100644 index e599c00..0000000 --- a/web-client/src/main/java/com/zcloud/dto/RiskPointUpdateCmd.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.zcloud.dto; - -import com.alibaba.cola.dto.Command; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -import javax.validation.constraints.NotEmpty; - -/** - * - * @author lin - */ -@EqualsAndHashCode(callSuper = true) -@Data -@NoArgsConstructor -@AllArgsConstructor -public class RiskPointUpdateCmd extends Command { - @ApiModelProperty(value = "风险点id", name = "id", required = true) - @NotEmpty - private String id; - @ApiModelProperty(value = "风险点名字", name = "riskPointName", required = true) - @NotEmpty - private String riskPointName; - - @NotEmpty - @ApiModelProperty(value = "部门名字", name = "deptName", required = true) - private String deptName; -} diff --git a/web-client/src/main/java/com/zcloud/dto/SensorDeviceAddCmd.java b/web-client/src/main/java/com/zcloud/dto/SensorDeviceAddCmd.java new file mode 100644 index 0000000..1c30d50 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/SensorDeviceAddCmd.java @@ -0,0 +1,80 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * SensorDeviceAddCmd - 传感器设备命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SensorDeviceAddCmd extends Command { + + @ApiModelProperty(value = "传感器编码", name = "sensorCode", required = true) + private String sensorCode; + + @ApiModelProperty(value = "传感器名称", name = "sensorName", required = true) + private String sensorName; + + @ApiModelProperty(value = "传感器类型主键ID", name = "sensorTypeId", required = true) + private Long sensorTypeId; + + @ApiModelProperty(value = "传感器属性快照(NUMBER/SWITCH)", name = "sensorAttr", required = true) + private String sensorAttr; + + @ApiModelProperty(value = "安装位置", name = "installPosition") + private String installPosition; + + @ApiModelProperty(value = "传感器状态", name = "sensorStatus") + private String sensorStatus; + + @ApiModelProperty(value = "是否定位(0否1是)", name = "positioningFlag") + private Integer positioningFlag; + + @ApiModelProperty(value = "报警开关(1开0关)", name = "alarmSwitch") + private Integer alarmSwitch; + + @ApiModelProperty(value = "是否阈值设定(0否1是)", name = "thresholdFlag") + private Integer thresholdFlag; + + @ApiModelProperty(value = "单位", name = "unitName") + private String unitName; + + @ApiModelProperty(value = "量程下限", name = "rangeMin") + private String rangeMin; + + @ApiModelProperty(value = "量程上限", name = "rangeMax") + private String rangeMax; + + @ApiModelProperty(value = "低低报阈值", name = "thresholdLowLow") + private String thresholdLowLow; + + @ApiModelProperty(value = "低报阈值", name = "thresholdLow") + private String thresholdLow; + + @ApiModelProperty(value = "高报阈值", name = "thresholdHigh") + private String thresholdHigh; + + @ApiModelProperty(value = "高高报阈值", name = "thresholdHighHigh") + private String thresholdHighHigh; + + @ApiModelProperty(value = "连续报警确认次数(默认3次)", name = "continuousAlarmCount") + private Integer continuousAlarmCount; + + @ApiModelProperty(value = "出厂日期", name = "factoryDate") + private String factoryDate; + + @ApiModelProperty(value = "企业侧源编码", name = "enterpriseSourceCode") + private String enterpriseSourceCode; + + @ApiModelProperty(value = "备注", name = "remarks") + private String remarks; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/SensorDevicePageQry.java b/web-client/src/main/java/com/zcloud/dto/SensorDevicePageQry.java new file mode 100644 index 0000000..6cfae98 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/SensorDevicePageQry.java @@ -0,0 +1,44 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * SensorDevicePageQry - 传感器设备查询 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class SensorDevicePageQry extends PageQuery { + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "传感器名称") + private String sensorName; + + @ApiModelProperty(value = "传感器类型ID") + private Long sensorTypeId; + + @ApiModelProperty(value = "传感器属性(NUMBER/SWITCH)") + private String sensorAttr; + + @ApiModelProperty(value = "传感器状态") + private String sensorStatus; + + @ApiModelProperty(value = "报警开关(1开0关)") + private Integer alarmSwitch; + + @ApiModelProperty(value = "是否阈值设定(0否1是)") + private Integer thresholdFlag; + + @ApiModelProperty(value = "安装位置") + private String installPosition; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/SensorDeviceThresholdCmd.java b/web-client/src/main/java/com/zcloud/dto/SensorDeviceThresholdCmd.java new file mode 100644 index 0000000..af4f33c --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/SensorDeviceThresholdCmd.java @@ -0,0 +1,47 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * SensorDeviceThresholdCmd - 传感器设备命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SensorDeviceThresholdCmd extends Command { + + @ApiModelProperty(value = "主键ID", name = "id", required = true) + private Long id; + + @ApiModelProperty(value = "单位", name = "unitName") + private String unitName; + + @ApiModelProperty(value = "量程下限", name = "rangeMin") + private String rangeMin; + + @ApiModelProperty(value = "量程上限", name = "rangeMax") + private String rangeMax; + + @ApiModelProperty(value = "低低报阈值", name = "thresholdLowLow") + private String thresholdLowLow; + + @ApiModelProperty(value = "低报阈值", name = "thresholdLow") + private String thresholdLow; + + @ApiModelProperty(value = "高报阈值", name = "thresholdHigh") + private String thresholdHigh; + + @ApiModelProperty(value = "高高报阈值", name = "thresholdHighHigh") + private String thresholdHighHigh; + + @ApiModelProperty(value = "连续报警确认次数", name = "continuousAlarmCount") + private Integer continuousAlarmCount; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/SensorDeviceUpdateCmd.java b/web-client/src/main/java/com/zcloud/dto/SensorDeviceUpdateCmd.java new file mode 100644 index 0000000..57f2b09 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/SensorDeviceUpdateCmd.java @@ -0,0 +1,71 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * SensorDeviceUpdateCmd - 传感器设备命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SensorDeviceUpdateCmd extends Command { + + @ApiModelProperty(value = "主键ID", name = "id", required = true) + private Long id; + + @ApiModelProperty(value = "传感器编码", name = "sensorCode") + private String sensorCode; + + @ApiModelProperty(value = "传感器名称", name = "sensorName") + private String sensorName; + + @ApiModelProperty(value = "传感器类型主键ID", name = "sensorTypeId") + private Long sensorTypeId; + + @ApiModelProperty(value = "传感器属性快照(NUMBER/SWITCH)", name = "sensorAttr") + private String sensorAttr; + + @ApiModelProperty(value = "安装位置", name = "installPosition") + private String installPosition; + + @ApiModelProperty(value = "传感器状态", name = "sensorStatus") + private String sensorStatus; + + @ApiModelProperty(value = "是否定位(0否1是)", name = "positioningFlag") + private Integer positioningFlag; + + @ApiModelProperty(value = "报警开关(1开0关)", name = "alarmSwitch") + private Integer alarmSwitch; + + @ApiModelProperty(value = "是否阈值设定(0否1是)", name = "thresholdFlag") + private Integer thresholdFlag; + + @ApiModelProperty(value = "单位", name = "unitName") + private String unitName; + + @ApiModelProperty(value = "量程下限", name = "rangeMin") + private String rangeMin; + + @ApiModelProperty(value = "量程上限", name = "rangeMax") + private String rangeMax; + + @ApiModelProperty(value = "连续报警确认次数(默认3次)", name = "continuousAlarmCount") + private Integer continuousAlarmCount; + + @ApiModelProperty(value = "出厂日期", name = "factoryDate") + private String factoryDate; + + @ApiModelProperty(value = "企业侧源编码", name = "enterpriseSourceCode") + private String enterpriseSourceCode; + + @ApiModelProperty(value = "备注", name = "remarks") + private String remarks; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/SensorTypeAddCmd.java b/web-client/src/main/java/com/zcloud/dto/SensorTypeAddCmd.java new file mode 100644 index 0000000..57476b2 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/SensorTypeAddCmd.java @@ -0,0 +1,38 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * SensorTypeAddCmd - 传感器类型命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SensorTypeAddCmd extends Command { + + @ApiModelProperty(value = "类型编码", name = "typeCode", required = true) + private String typeCode; + + @ApiModelProperty(value = "类型名称", name = "typeName", required = true) + private String typeName; + + @ApiModelProperty(value = "传感器属性(STRING/NUMBER/SWITCH)", name = "sensorAttr", required = true) + private String sensorAttr; + + @ApiModelProperty(value = "排序", name = "sortNo") + private Integer sortNo; + + @ApiModelProperty(value = "状态(1:启用 0:停用)", name = "status", required = true) + private Integer status; + + @ApiModelProperty(value = "备注", name = "remarks") + private String remarks; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/SensorTypePageQry.java b/web-client/src/main/java/com/zcloud/dto/SensorTypePageQry.java new file mode 100644 index 0000000..627f6fb --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/SensorTypePageQry.java @@ -0,0 +1,32 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * SensorTypePageQry - 传感器类型查询 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class SensorTypePageQry extends PageQuery { + + @ApiModelProperty(value = "类型名称") + private String typeName; + + @ApiModelProperty(value = "类型编码") + private String typeCode; + + @ApiModelProperty(value = "传感器属性(STRING/NUMBER/SWITCH)") + private String sensorAttr; + + @ApiModelProperty(value = "状态(1:启用 0:停用)") + private Integer status; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/SensorTypeUpdateCmd.java b/web-client/src/main/java/com/zcloud/dto/SensorTypeUpdateCmd.java new file mode 100644 index 0000000..6190b00 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/SensorTypeUpdateCmd.java @@ -0,0 +1,41 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * SensorTypeUpdateCmd - 传感器类型命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SensorTypeUpdateCmd extends Command { + + @ApiModelProperty(value = "主键ID", name = "id", required = true) + private Long id; + + @ApiModelProperty(value = "类型编码", name = "typeCode", required = false) + private String typeCode; + + @ApiModelProperty(value = "类型名称", name = "typeName", required = false) + private String typeName; + + @ApiModelProperty(value = "传感器属性(STRING/NUMBER/SWITCH)", name = "sensorAttr", required = false) + private String sensorAttr; + + @ApiModelProperty(value = "排序", name = "sortNo") + private Integer sortNo; + + @ApiModelProperty(value = "状态(1:启用 0:停用)", name = "status") + private Integer status; + + @ApiModelProperty(value = "备注", name = "remarks") + private String remarks; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/UnbindSensorCmd.java b/web-client/src/main/java/com/zcloud/dto/UnbindSensorCmd.java new file mode 100644 index 0000000..f607382 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/UnbindSensorCmd.java @@ -0,0 +1,26 @@ +package com.zcloud.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; + +/** + * UnbindSensorCmd - 解绑传感器命令 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class UnbindSensorCmd extends Command { + + @ApiModelProperty(value = "传感器ID", name = "sensorId", required = true) + private Long sensorId; + + @ApiModelProperty(value = "租户ID", name = "tenantId") + private Long tenantId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/clientobject/AlarmDisposeCO.java b/web-client/src/main/java/com/zcloud/dto/clientobject/AlarmDisposeCO.java new file mode 100644 index 0000000..a7b057d --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/clientobject/AlarmDisposeCO.java @@ -0,0 +1,125 @@ +package com.zcloud.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * AlarmDisposeCO - 报警处置客户端对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class AlarmDisposeCO extends ClientObject { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "业务ID(32位)") + private String alarmRecordId; + + @ApiModelProperty(value = "报警编号(32位)") + private String alarmNo; + + @ApiModelProperty(value = "报警来源 THRESHOLD/DCS") + private String alarmSource; + + @ApiModelProperty(value = "设备来源描述快照") + private String deviceSourceDesc; + + @ApiModelProperty(value = "传感器ID") + private Long sensorId; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "消防区域ID") + private Long fireRegionId; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "当前负责人ID") + private Long managerId; + + @ApiModelProperty(value = "报警级别") + private String alarmLevel; + + @ApiModelProperty(value = "报警类型") + private String alarmType; + + @ApiModelProperty(value = "阈值类型 HIGH/HIGH_HIGH/LOW/LOW_LOW") + private String thresholdType; + + @ApiModelProperty(value = "告警值") + private BigDecimal currentValue; + + @ApiModelProperty(value = "比较方向 UP/DOWN") + private String compareFlag; + + @ApiModelProperty(value = "单位") + private String unitName; + + @ApiModelProperty(value = "报警描述") + private String alarmDesc; + + @ApiModelProperty(value = "报警时间") + private String alarmTime; + + @ApiModelProperty(value = "当前状态 10待研判/20待处置/30已消警/40误报") + private Integer status; + + @ApiModelProperty(value = "分配时间") + private String assignTime; + + @ApiModelProperty(value = "处置时间") + private String disposeTime; + + @ApiModelProperty(value = "处置人ID") + private Long disposeUserId; + + @ApiModelProperty(value = "当前处置结果快照") + private String disposeResult; + + @ApiModelProperty(value = "当前处置说明快照") + private String disposeRemark; + + @ApiModelProperty(value = "图片地址") + private String pictureUrls; + + @ApiModelProperty(value = "是否活跃告警") + private Integer activeFlag; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "创建人ID") + private Long createId; + + @ApiModelProperty(value = "创建人姓名") + private String createName; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人ID") + private Long updateId; + + @ApiModelProperty(value = "更新人姓名") + private String updateName; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/clientobject/AlarmRecordCO.java b/web-client/src/main/java/com/zcloud/dto/clientobject/AlarmRecordCO.java new file mode 100644 index 0000000..14a640a --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/clientobject/AlarmRecordCO.java @@ -0,0 +1,128 @@ +package com.zcloud.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * AlarmRecordCO - 报警记录客户端对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class AlarmRecordCO extends ClientObject { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "业务ID(32位)") + private String alarmRecordId; + + @ApiModelProperty(value = "报警编号(32位)") + private String alarmNo; + + @ApiModelProperty(value = "报警来源 THRESHOLD/DCS") + private String alarmSource; + + @ApiModelProperty(value = "设备来源描述快照") + private String deviceSourceDesc; + + @ApiModelProperty(value = "传感器ID") + private Long sensorId; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "消防区域ID") + private Long fireRegionId; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "当前负责人ID") + private Long managerId; + + @ApiModelProperty(value = "报警级别") + private String alarmLevel; + + @ApiModelProperty(value = "报警类型") + private String alarmType; + + @ApiModelProperty(value = "阈值类型 HIGH/HIGH_HIGH/LOW/LOW_LOW") + private String thresholdType; + + @ApiModelProperty(value = "告警值") + private BigDecimal currentValue; + + @ApiModelProperty(value = "比较方向 UP/DOWN") + private String compareFlag; + + @ApiModelProperty(value = "单位") + private String unitName; + + @ApiModelProperty(value = "报警描述") + private String alarmDesc; + + @ApiModelProperty(value = "报警时间") + private String alarmTime; + + @ApiModelProperty(value = "当前状态 10待研判/20待处置/30已消警/40误报") + private Integer status; + + @ApiModelProperty(value = "分配时间") + private String assignTime; + + @ApiModelProperty(value = "处置时间") + private String disposeTime; + + @ApiModelProperty(value = "处置人ID") + private Long disposeUserId; + + @ApiModelProperty(value = "当前处置结果快照") + private String disposeResult; + + @ApiModelProperty(value = "当前处置说明快照") + private String disposeRemark; + + @ApiModelProperty(value = "图片地址") + private String pictureUrls; + + @ApiModelProperty(value = "外部记录唯一键") + private String sourceRecordKey; + + @ApiModelProperty(value = "是否活跃告警") + private Integer activeFlag; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "创建人ID") + private Long createId; + + @ApiModelProperty(value = "创建人姓名") + private String createName; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人ID") + private Long updateId; + + @ApiModelProperty(value = "更新人姓名") + private String updateName; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/clientobject/DeviceRegionCO.java b/web-client/src/main/java/com/zcloud/dto/clientobject/DeviceRegionCO.java new file mode 100644 index 0000000..bdde701 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/clientobject/DeviceRegionCO.java @@ -0,0 +1,67 @@ +package com.zcloud.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * DeviceRegionCO - 设备区域客户端对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class DeviceRegionCO extends ClientObject { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "业务ID(32位)") + private String regionConfigId; + + @ApiModelProperty(value = "外部消防区域主键") + private Long fireRegionId; + + @ApiModelProperty(value = "外部消防区域编码") + private String fireRegionCode; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "负责人ID") + private Long managerId; + + @ApiModelProperty(value = "状态 1启用0停用") + private Integer status; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "创建人ID") + private Long createId; + + @ApiModelProperty(value = "创建人姓名") + private String createName; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人ID") + private Long updateId; + + @ApiModelProperty(value = "更新人姓名") + private String updateName; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/clientobject/FireRegionCO.java b/web-client/src/main/java/com/zcloud/dto/clientobject/FireRegionCO.java new file mode 100644 index 0000000..d2b2f60 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/clientobject/FireRegionCO.java @@ -0,0 +1,38 @@ +package com.zcloud.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * FireRegionCO - 火灾区域客户端对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class FireRegionCO extends ClientObject { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "业务ID(32位)") + private String regionConfigId; + + @ApiModelProperty(value = "外部消防区域主键") + private Long fireRegionId; + + @ApiModelProperty(value = "外部消防区域编码") + private String fireRegionCode; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "负责人ID") + private Long managerId; + + @ApiModelProperty(value = "状态 1启用0停用") + private Integer status; + + @ApiModelProperty(value = "备注") + private String remarks; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/clientobject/RiskPointCo.java b/web-client/src/main/java/com/zcloud/dto/clientobject/RiskPointCo.java deleted file mode 100644 index 9e96685..0000000 --- a/web-client/src/main/java/com/zcloud/dto/clientobject/RiskPointCo.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.zcloud.dto.clientobject; - -import com.alibaba.cola.dto.ClientObject; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RiskPointCo extends ClientObject { - @ApiModelProperty(value = "id") - private Long id; - @ApiModelProperty(value = "风险点名称") - private String riskPointName; - @ApiModelProperty(value = "部门名称") - private String deptName; - @ApiModelProperty(value = "创建人") - private String createName; -} diff --git a/web-client/src/main/java/com/zcloud/dto/clientobject/SensorDeviceCO.java b/web-client/src/main/java/com/zcloud/dto/clientobject/SensorDeviceCO.java new file mode 100644 index 0000000..68f409c --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/clientobject/SensorDeviceCO.java @@ -0,0 +1,109 @@ +package com.zcloud.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * SensorDeviceCO - 传感器设备客户端对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class SensorDeviceCO extends ClientObject { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "传感器设备业务ID") + private String sensorDeviceId; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "传感器名称") + private String sensorName; + + @ApiModelProperty(value = "传感器类型主键ID") + private Long sensorTypeId; + + @ApiModelProperty(value = "传感器属性快照(NUMBER/SWITCH)") + private String sensorAttr; + + @ApiModelProperty(value = "安装位置") + private String installPosition; + + @ApiModelProperty(value = "传感器状态") + private String sensorStatus; + + @ApiModelProperty(value = "是否定位(0否1是)") + private Integer positioningFlag; + + @ApiModelProperty(value = "报警开关(1开0关)") + private Integer alarmSwitch; + + @ApiModelProperty(value = "是否阈值设定(0否1是)") + private Integer thresholdFlag; + + @ApiModelProperty(value = "单位") + private String unitName; + + @ApiModelProperty(value = "量程下限") + private String rangeMin; + + @ApiModelProperty(value = "量程上限") + private String rangeMax; + + @ApiModelProperty(value = "低低报阈值") + private String thresholdLowLow; + + @ApiModelProperty(value = "低报阈值") + private String thresholdLow; + + @ApiModelProperty(value = "高报阈值") + private String thresholdHigh; + + @ApiModelProperty(value = "高高报阈值") + private String thresholdHighHigh; + + @ApiModelProperty(value = "连续报警确认次数") + private Integer continuousAlarmCount; + + @ApiModelProperty(value = "出厂日期") + private String factoryDate; + + @ApiModelProperty(value = "企业侧源编码") + private String enterpriseSourceCode; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "创建人ID") + private Long createId; + + @ApiModelProperty(value = "创建人姓名") + private String createName; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人ID") + private Long updateId; + + @ApiModelProperty(value = "更新人姓名") + private String updateName; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/dto/clientobject/SensorTypeCO.java b/web-client/src/main/java/com/zcloud/dto/clientobject/SensorTypeCO.java new file mode 100644 index 0000000..83a815b --- /dev/null +++ b/web-client/src/main/java/com/zcloud/dto/clientobject/SensorTypeCO.java @@ -0,0 +1,67 @@ +package com.zcloud.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * SensorTypeCO - 传感器类型客户端对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +public class SensorTypeCO extends ClientObject { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "传感器类型业务ID") + private String sensorTypeId; + + @ApiModelProperty(value = "类型编码") + private String typeCode; + + @ApiModelProperty(value = "类型名称") + private String typeName; + + @ApiModelProperty(value = "传感器属性(STRING/NUMBER/SWITCH)") + private String sensorAttr; + + @ApiModelProperty(value = "排序") + private Integer sortNo; + + @ApiModelProperty(value = "状态(1:启用 0:停用)") + private Integer status; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "创建人ID") + private Long createId; + + @ApiModelProperty(value = "创建人姓名") + private String createName; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人ID") + private Long updateId; + + @ApiModelProperty(value = "更新人姓名") + private String updateName; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/gateway/AlarmDisposeLogGateway.java b/web-domain/src/main/java/com/zcloud/domain/gateway/AlarmDisposeLogGateway.java new file mode 100644 index 0000000..e997b97 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/gateway/AlarmDisposeLogGateway.java @@ -0,0 +1,27 @@ +package com.zcloud.domain.gateway; + +import com.zcloud.domain.model.AlarmDisposeLogE; +import java.util.List; + +/** + * AlarmDisposeLogGateway - 报警处置日志网关接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface AlarmDisposeLogGateway { + + /** + * 新增 + */ + Long add(AlarmDisposeLogE alarmDisposeLogE); + + /** + * 根据ID获取 + */ + AlarmDisposeLogE getById(Long id); + + /** + * 根据报警ID获取处置日志列表 + */ + List listByAlarmId(Long alarmId); +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/gateway/AlarmRecordGateway.java b/web-domain/src/main/java/com/zcloud/domain/gateway/AlarmRecordGateway.java new file mode 100644 index 0000000..4c22c72 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/gateway/AlarmRecordGateway.java @@ -0,0 +1,42 @@ +package com.zcloud.domain.gateway; + +import com.zcloud.domain.model.AlarmRecordE; +import java.util.List; + +/** + * AlarmRecordGateway - 报警记录网关接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface AlarmRecordGateway { + + /** + * 新增 + */ + Long add(AlarmRecordE alarmRecordE); + + /** + * 修改 + */ + Boolean update(AlarmRecordE alarmRecordE); + + /** + * 根据ID获取 + */ + AlarmRecordE getById(Long id); + + /** + * 根据报警编号获取 + */ + AlarmRecordE getByAlarmNo(String alarmNo); + + /** + * 根据租户ID获取所有报警记录 + */ + List listByTenantId(Long tenantId); + + /** + * 更新状态 + */ + Boolean updateStatus(Long id, Integer status, String assignTime); +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/gateway/DeviceRegionGateway.java b/web-domain/src/main/java/com/zcloud/domain/gateway/DeviceRegionGateway.java new file mode 100644 index 0000000..8f87c8a --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/gateway/DeviceRegionGateway.java @@ -0,0 +1,47 @@ +package com.zcloud.domain.gateway; + +import com.zcloud.domain.model.DeviceRegionE; +import java.util.List; + +/** + * DeviceRegionGateway - 设备区域网关接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface DeviceRegionGateway { + + /** + * 新增 + */ + Long add(DeviceRegionE deviceRegionE); + + /** + * 修改 + */ + Boolean update(DeviceRegionE deviceRegionE); + + /** + * 根据ID删除(软删除) + */ + Boolean deleteById(Long id); + + /** + * 根据ID获取 + */ + DeviceRegionE getById(Long id); + + /** + * 根据消防区域ID获取 + */ + DeviceRegionE getByFireRegionId(Long fireRegionId); + + /** + * 根据租户ID获取所有区域配置 + */ + List listByTenantId(Long tenantId); + + /** + * 更新负责人 + */ + Boolean updateManager(Long id, Long managerId, Long departmentId); +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/gateway/RegionSensorRelGateway.java b/web-domain/src/main/java/com/zcloud/domain/gateway/RegionSensorRelGateway.java new file mode 100644 index 0000000..faee89b --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/gateway/RegionSensorRelGateway.java @@ -0,0 +1,31 @@ +package com.zcloud.domain.gateway; + +import com.zcloud.domain.model.RegionSensorRelE; + +/** + * RegionSensorRelGateway - 区域传感器关系网关接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface RegionSensorRelGateway { + + /** + * 新增 + */ + Long add(RegionSensorRelE regionSensorRelE); + + /** + * 根据传感器ID删除(软删除) + */ + Boolean deleteBySensorId(Long sensorId); + + /** + * 根据传感器ID获取 + */ + RegionSensorRelE getBySensorId(Long sensorId); + + /** + * 检查传感器是否已绑定 + */ + Boolean isSensorBound(Long sensorId); +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/gateway/RiskPointGateway.java b/web-domain/src/main/java/com/zcloud/domain/gateway/RiskPointGateway.java deleted file mode 100644 index edb5400..0000000 --- a/web-domain/src/main/java/com/zcloud/domain/gateway/RiskPointGateway.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.zcloud.domain.gateway; - - -import com.zcloud.domain.model.RiskPointE; - -/** - * 领域getway - * @author lin - */ -public interface RiskPointGateway { - - /** - * 新增 - * @param riskPointE 准考证管理 - * @return 结果 - */ - Boolean add(RiskPointE riskPointE) ; - - /** - * 修改 - * @param riskPointE 准考证管理 - * @return 结果 - */ - Boolean update(RiskPointE riskPointE); - - /** - * 删除 - * @param id - * @return 结果 - */ - Boolean deletedRiskPointById(Long id); - Boolean deletedRiskPointByIds(Long[] id); -} diff --git a/web-domain/src/main/java/com/zcloud/domain/gateway/SensorDeviceGateway.java b/web-domain/src/main/java/com/zcloud/domain/gateway/SensorDeviceGateway.java new file mode 100644 index 0000000..6af0e0a --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/gateway/SensorDeviceGateway.java @@ -0,0 +1,31 @@ +package com.zcloud.domain.gateway; + +import com.zcloud.domain.model.SensorDeviceE; + +/** + * SensorDeviceGateway - 传感器设备网关接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface SensorDeviceGateway { + + /** + * 新增 + */ + Long add(SensorDeviceE sensorDeviceE); + + /** + * 修改 + */ + Boolean update(SensorDeviceE sensorDeviceE); + + /** + * 根据ID删除(软删除) + */ + Boolean deleteById(Long id); + + /** + * 根据ID获取 + */ + SensorDeviceE getById(Long id); +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/gateway/SensorTypeGateway.java b/web-domain/src/main/java/com/zcloud/domain/gateway/SensorTypeGateway.java new file mode 100644 index 0000000..273c962 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/gateway/SensorTypeGateway.java @@ -0,0 +1,31 @@ +package com.zcloud.domain.gateway; + +import com.zcloud.domain.model.SensorTypeE; + +/** + * SensorTypeGateway - 传感器类型网关接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface SensorTypeGateway { + + /** + * 新增 + */ + Long add(SensorTypeE sensorTypeE); + + /** + * 修改 + */ + Boolean update(SensorTypeE sensorTypeE); + + /** + * 根据ID删除(软删除) + */ + Boolean deleteById(Long id); + + /** + * 根据ID获取 + */ + SensorTypeE getById(Long id); +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/model/AlarmDisposeLogE.java b/web-domain/src/main/java/com/zcloud/domain/model/AlarmDisposeLogE.java new file mode 100644 index 0000000..a08dac2 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/model/AlarmDisposeLogE.java @@ -0,0 +1,85 @@ +package com.zcloud.domain.model; + +import com.jjb.saas.framework.domain.model.BaseE; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * AlarmDisposeLogE - 报警处置日志实体 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class AlarmDisposeLogE extends BaseE { + + /** + * 业务ID(32位) + */ + private String alarmDisposalLogId; + + /** + * 报警主键ID + */ + private Long alarmId; + + /** + * 报警编号(32位) + */ + private String alarmNo; + + /** + * 操作类型 AUTO_ASSIGN/MANUAL_ASSIGN/DISPOSE/INVALID + */ + private String actionType; + + /** + * 变更前状态 + */ + private Integer beforeStatus; + + /** + * 变更后状态 + */ + private Integer afterStatus; + + /** + * 操作人ID + */ + private Long operatorId; + + /** + * 操作说明 + */ + private String actionDesc; + + /** + * 处置结果 + */ + private String resultText; + + /** + * 附件图片 + */ + private String pictureUrls; + + /** + * 操作时间 + */ + private String actionTime; + + /** + * 删除标识 + */ + private String deleteEnum; + + /** + * 租户ID + */ + private Long tenantId; + + /** + * 组织ID + */ + private Long orgId; +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/model/AlarmRecordE.java b/web-domain/src/main/java/com/zcloud/domain/model/AlarmRecordE.java new file mode 100644 index 0000000..5734737 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/model/AlarmRecordE.java @@ -0,0 +1,167 @@ +package com.zcloud.domain.model; + +import com.jjb.saas.framework.domain.model.BaseE; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * AlarmRecordE - 报警记录实体 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class AlarmRecordE extends BaseE { + + /** + * 业务ID(32位) + */ + private String alarmRecordId; + + /** + * 报警编号(32位) + */ + private String alarmNo; + + /** + * 报警来源 THRESHOLD/DCS + */ + private String alarmSource; + + /** + * 设备来源描述快照 + */ + private String deviceSourceDesc; + + /** + * 传感器ID + */ + private Long sensorId; + + /** + * 传感器编码 + */ + private String sensorCode; + + /** + * 消防区域ID + */ + private Long fireRegionId; + + /** + * 负责部门ID + */ + private Long departmentId; + + /** + * 当前负责人ID + */ + private Long managerId; + + /** + * 报警级别 + */ + private String alarmLevel; + + /** + * 报警类型 + */ + private String alarmType; + + /** + * 阈值类型 HIGH/HIGH_HIGH/LOW/LOW_LOW + */ + private String thresholdType; + + /** + * 告警值 + */ + private BigDecimal currentValue; + + /** + * 比较方向 UP/DOWN + */ + private String compareFlag; + + /** + * 单位 + */ + private String unitName; + + /** + * 报警描述 + */ + private String alarmDesc; + + /** + * 报警时间 + */ + private String alarmTime; + + /** + * 当前状态 10待研判/20待处置/30已消警/40误报 + */ + private Integer status; + + /** + * 分配时间 + */ + private String assignTime; + + /** + * 处置时间 + */ + private String disposeTime; + + /** + * 处置人ID + */ + private Long disposeUserId; + + /** + * 当前处置结果快照 + */ + private String disposeResult; + + /** + * 当前处置说明快照 + */ + private String disposeRemark; + + /** + * 图片地址 + */ + private String pictureUrls; + + /** + * 外部记录唯一键 + */ + private String sourceRecordKey; + + /** + * 是否活跃告警 + */ + private Integer activeFlag; + + /** + * 备注 + */ + private String remarks; + + /** + * 删除标识 + */ + private String deleteEnum; + + /** + * 租户ID + */ + private Long tenantId; + + /** + * 组织ID + */ + private Long orgId; +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/model/DeviceRegionE.java b/web-domain/src/main/java/com/zcloud/domain/model/DeviceRegionE.java new file mode 100644 index 0000000..3a1d3bc --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/model/DeviceRegionE.java @@ -0,0 +1,65 @@ +package com.zcloud.domain.model; + +import com.jjb.saas.framework.domain.model.BaseE; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * DeviceRegionE - 设备区域实体 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceRegionE extends BaseE { + + /** + * 业务ID(32位) + */ + private String regionConfigId; + + /** + * 外部消防区域主键 + */ + private Long fireRegionId; + + /** + * 外部消防区域编码 + */ + private String fireRegionCode; + + /** + * 负责部门ID + */ + private Long departmentId; + + /** + * 负责人ID + */ + private Long managerId; + + /** + * 状态 1启用0停用 + */ + private Integer status; + + /** + * 备注 + */ + private String remarks; + + /** + * 删除标识 + */ + private String deleteEnum; + + /** + * 租户ID + */ + private Long tenantId; + + /** + * 组织ID + */ + private Long orgId; +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/model/RegionSensorRelE.java b/web-domain/src/main/java/com/zcloud/domain/model/RegionSensorRelE.java new file mode 100644 index 0000000..3f0c5d6 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/model/RegionSensorRelE.java @@ -0,0 +1,55 @@ +package com.zcloud.domain.model; + +import com.jjb.saas.framework.domain.model.BaseE; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * RegionSensorRelE - 区域传感器关系实体 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class RegionSensorRelE extends BaseE { + + /** + * 业务ID(32位) + */ + private String regionSensorRelId; + + /** + * 区域配置主键ID + */ + private Long regionConfigId; + + /** + * 外部消防区域ID + */ + private Long fireRegionId; + + /** + * 传感器ID + */ + private Long sensorId; + + /** + * 传感器编码快照 + */ + private String sensorCode; + + /** + * 删除标识 + */ + private String deleteEnum; + + /** + * 租户ID + */ + private Long tenantId; + + /** + * 组织ID + */ + private Long orgId; +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/model/RiskPointE.java b/web-domain/src/main/java/com/zcloud/domain/model/RiskPointE.java deleted file mode 100644 index 9230d8a..0000000 --- a/web-domain/src/main/java/com/zcloud/domain/model/RiskPointE.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zcloud.domain.model; - -import com.alibaba.cola.domain.Entity; -import com.jjb.saas.framework.domain.model.BaseE; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 领域模型,根据领域模型驱动设计 - * - * @author lin - */ -@Data -@Entity -@EqualsAndHashCode(callSuper = true) -public class RiskPointE extends BaseE { - private Long id; - private String riskPointName; - private String deptName; -} diff --git a/web-domain/src/main/java/com/zcloud/domain/model/SensorDeviceE.java b/web-domain/src/main/java/com/zcloud/domain/model/SensorDeviceE.java new file mode 100644 index 0000000..1f29b77 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/model/SensorDeviceE.java @@ -0,0 +1,135 @@ +package com.zcloud.domain.model; + +import com.jjb.saas.framework.domain.model.BaseE; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * SensorDeviceE - 传感器设备实体 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class SensorDeviceE extends BaseE { + + /** + * 传感器设备业务ID (生成32位UUID) + */ + private String sensorDeviceId; + + /** + * 传感器编码 + */ + private String sensorCode; + + /** + * 传感器名称 + */ + private String sensorName; + + /** + * 传感器类型主键ID + */ + private Long sensorTypeId; + + /** + * 传感器属性快照(NUMBER/SWITCH) + */ + private String sensorAttr; + + /** + * 安装位置 + */ + private String installPosition; + + /** + * 传感器状态 + */ + private String sensorStatus; + + /** + * 是否定位(0否1是) + */ + private Integer positioningFlag; + + /** + * 报警开关(1开0关) + */ + private Integer alarmSwitch; + + /** + * 是否阈值设定(0否1是) + */ + private Integer thresholdFlag; + + /** + * 单位 + */ + private String unitName; + + /** + * 量程下限 + */ + private String rangeMin; + + /** + * 量程上限 + */ + private String rangeMax; + + /** + * 低低报阈值 + */ + private String thresholdLowLow; + + /** + * 低报阈值 + */ + private String thresholdLow; + + /** + * 高报阈值 + */ + private String thresholdHigh; + + /** + * 高高报阈值 + */ + private String thresholdHighHigh; + + /** + * 连续报警确认次数(默认3次) + */ + private Integer continuousAlarmCount; + + /** + * 出厂日期 + */ + private String factoryDate; + + /** + * 企业侧源编码(同步映射键) + */ + private String enterpriseSourceCode; + + /** + * 备注 + */ + private String remarks; + + /** + * 删除标识 + */ + private String deleteEnum; + + /** + * 租户ID + */ + private Long tenantId; + + /** + * 组织ID + */ + private Long orgId; +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/domain/model/SensorTypeE.java b/web-domain/src/main/java/com/zcloud/domain/model/SensorTypeE.java new file mode 100644 index 0000000..ef3b902 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/domain/model/SensorTypeE.java @@ -0,0 +1,60 @@ +package com.zcloud.domain.model; + +import com.jjb.saas.framework.domain.model.BaseE; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * SensorTypeE - 传感器类型实体 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class SensorTypeE extends BaseE { + + /** + * 传感器类型业务ID (生成32位UUID) + */ + private String sensorTypeId; + + /** + * 类型编码 + */ + private String typeCode; + + /** + * 类型名称 + */ + private String typeName; + + /** + * 传感器属性(STRING/NUMBER/SWITCH) + */ + private String sensorAttr; + + /** + * 排序 + */ + private Integer sortNo; + + /** + * 状态(1:启用 0:停用) + */ + private Integer status; + + /** + * 备注 + */ + private String remarks; + + /** + * 租户ID + */ + private Long tenantId; + + /** + * 组织ID + */ + private Long orgId; +} \ No newline at end of file diff --git a/web-infrastructure/pom.xml b/web-infrastructure/pom.xml index 0cd4358..cf43777 100644 --- a/web-infrastructure/pom.xml +++ b/web-infrastructure/pom.xml @@ -23,6 +23,11 @@ web-domain + + com.zcloud + web-client + + com.jjb.saas jjb-saas-application-client @@ -39,5 +44,17 @@ com.jjb.saas jjb-saas-framework-facade + + com.jjb.saas + jjb-saas-framework-repository + + + com.jjb.saas + jjb-saas-framework-domain + + + com.jjb.saas + jjb-saas-base-starter + diff --git a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmDisposeLogGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmDisposeLogGatewayImpl.java new file mode 100644 index 0000000..d14626c --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmDisposeLogGatewayImpl.java @@ -0,0 +1,59 @@ +package com.zcloud.gatewayimpl; + +import com.zcloud.domain.gateway.AlarmDisposeLogGateway; +import com.zcloud.domain.model.AlarmDisposeLogE; +import com.zcloud.persistence.dataobject.AlarmDisposeLogDO; +import com.zcloud.persistence.repository.AlarmDisposeLogRepository; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * AlarmDisposeLogGatewayImpl - 报警处置日志网关实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Service +@AllArgsConstructor +public class AlarmDisposeLogGatewayImpl implements AlarmDisposeLogGateway { + + private final AlarmDisposeLogRepository alarmDisposeLogRepository; + + @Override + public Long add(AlarmDisposeLogE alarmDisposeLogE) { + AlarmDisposeLogDO d = new AlarmDisposeLogDO(); + BeanUtils.copyProperties(alarmDisposeLogE, d); + alarmDisposeLogRepository.save(d); + return d.getId(); + } + + @Override + public AlarmDisposeLogE getById(Long id) { + AlarmDisposeLogDO d = alarmDisposeLogRepository.getById(id); + if (d == null) { + return null; + } + AlarmDisposeLogE alarmDisposeLogE = new AlarmDisposeLogE(); + BeanUtils.copyProperties(d, alarmDisposeLogE); + return alarmDisposeLogE; + } + + @Override + public List listByAlarmId(Long alarmId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AlarmDisposeLogDO::getAlarmId, alarmId) + .eq(AlarmDisposeLogDO::getDeleteEnum, "FALSE") + .orderByDesc(AlarmDisposeLogDO::getActionTime); + + List list = alarmDisposeLogRepository.list(wrapper); + return list.stream().map(d -> { + AlarmDisposeLogE alarmDisposeLogE = new AlarmDisposeLogE(); + BeanUtils.copyProperties(d, alarmDisposeLogE); + return alarmDisposeLogE; + }).collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmRecordGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmRecordGatewayImpl.java new file mode 100644 index 0000000..b603057 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/AlarmRecordGatewayImpl.java @@ -0,0 +1,91 @@ +package com.zcloud.gatewayimpl; + +import com.zcloud.domain.gateway.AlarmRecordGateway; +import com.zcloud.domain.model.AlarmRecordE; +import com.zcloud.persistence.dataobject.AlarmRecordDO; +import com.zcloud.persistence.repository.AlarmRecordRepository; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * AlarmRecordGatewayImpl - 报警记录网关实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Service +@AllArgsConstructor +public class AlarmRecordGatewayImpl implements AlarmRecordGateway { + + private final AlarmRecordRepository alarmRecordRepository; + + @Override + public Long add(AlarmRecordE alarmRecordE) { + AlarmRecordDO d = new AlarmRecordDO(); + BeanUtils.copyProperties(alarmRecordE, d); + alarmRecordRepository.save(d); + return d.getId(); + } + + @Override + public Boolean update(AlarmRecordE alarmRecordE) { + AlarmRecordDO d = new AlarmRecordDO(); + BeanUtils.copyProperties(alarmRecordE, d); + alarmRecordRepository.updateById(d); + return true; + } + + @Override + public AlarmRecordE getById(Long id) { + AlarmRecordDO d = alarmRecordRepository.getById(id); + if (d == null) { + return null; + } + AlarmRecordE alarmRecordE = new AlarmRecordE(); + BeanUtils.copyProperties(d, alarmRecordE); + return alarmRecordE; + } + + @Override + public AlarmRecordE getByAlarmNo(String alarmNo) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AlarmRecordDO::getAlarmNo, alarmNo) + .eq(AlarmRecordDO::getDeleteEnum, "FALSE"); + + AlarmRecordDO d = alarmRecordRepository.getOne(wrapper); + if (d == null) { + return null; + } + AlarmRecordE alarmRecordE = new AlarmRecordE(); + BeanUtils.copyProperties(d, alarmRecordE); + return alarmRecordE; + } + + @Override + public List listByTenantId(Long tenantId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AlarmRecordDO::getTenantId, tenantId) + .eq(AlarmRecordDO::getDeleteEnum, "FALSE"); + + List list = alarmRecordRepository.list(wrapper); + return list.stream().map(d -> { + AlarmRecordE alarmRecordE = new AlarmRecordE(); + BeanUtils.copyProperties(d, alarmRecordE); + return alarmRecordE; + }).collect(Collectors.toList()); + } + + @Override + public Boolean updateStatus(Long id, Integer status, String assignTime) { + AlarmRecordDO d = new AlarmRecordDO(); + d.setId(id); + d.setStatus(status); + d.setAssignTime(assignTime); + alarmRecordRepository.updateById(d); + return true; + } +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/DeviceRegionGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/DeviceRegionGatewayImpl.java new file mode 100644 index 0000000..d40f7e1 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/DeviceRegionGatewayImpl.java @@ -0,0 +1,96 @@ +package com.zcloud.gatewayimpl; + +import com.zcloud.domain.gateway.DeviceRegionGateway; +import com.zcloud.domain.model.DeviceRegionE; +import com.zcloud.persistence.dataobject.DeviceRegionDO; +import com.zcloud.persistence.repository.DeviceRegionRepository; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * DeviceRegionGatewayImpl - 设备区域网关实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Service +@AllArgsConstructor +public class DeviceRegionGatewayImpl implements DeviceRegionGateway { + + private final DeviceRegionRepository deviceRegionRepository; + + @Override + public Long add(DeviceRegionE deviceRegionE) { + DeviceRegionDO d = new DeviceRegionDO(); + BeanUtils.copyProperties(deviceRegionE, d); + deviceRegionRepository.save(d); + return d.getId(); + } + + @Override + public Boolean update(DeviceRegionE deviceRegionE) { + DeviceRegionDO d = new DeviceRegionDO(); + BeanUtils.copyProperties(deviceRegionE, d); + deviceRegionRepository.updateById(d); + return true; + } + + @Override + public Boolean deleteById(Long id) { + return deviceRegionRepository.removeById(id); + } + + @Override + public DeviceRegionE getById(Long id) { + DeviceRegionDO d = deviceRegionRepository.getById(id); + if (d == null) { + return null; + } + DeviceRegionE deviceRegionE = new DeviceRegionE(); + BeanUtils.copyProperties(d, deviceRegionE); + return deviceRegionE; + } + + @Override + public DeviceRegionE getByFireRegionId(Long fireRegionId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceRegionDO::getFireRegionId, fireRegionId) + .eq(DeviceRegionDO::getDeleteEnum, "FALSE"); + + DeviceRegionDO d = deviceRegionRepository.getOne(wrapper); + if (d == null) { + return null; + } + DeviceRegionE deviceRegionE = new DeviceRegionE(); + BeanUtils.copyProperties(d, deviceRegionE); + return deviceRegionE; + } + + @Override + public List listByTenantId(Long tenantId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceRegionDO::getTenantId, tenantId) + .eq(DeviceRegionDO::getDeleteEnum, "FALSE"); + + List list = deviceRegionRepository.list(wrapper); + return list.stream().map(d -> { + DeviceRegionE deviceRegionE = new DeviceRegionE(); + BeanUtils.copyProperties(d, deviceRegionE); + return deviceRegionE; + }).collect(Collectors.toList()); + } + + @Override + public Boolean updateManager(Long id, Long managerId, Long departmentId) { + DeviceRegionDO d = new DeviceRegionDO(); + d.setId(id); + d.setManagerId(managerId); + d.setDepartmentId(departmentId); + deviceRegionRepository.updateById(d); + return true; + } +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RegionSensorRelGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RegionSensorRelGatewayImpl.java new file mode 100644 index 0000000..ad2fa8d --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RegionSensorRelGatewayImpl.java @@ -0,0 +1,62 @@ +package com.zcloud.gatewayimpl; + +import com.zcloud.domain.gateway.RegionSensorRelGateway; +import com.zcloud.domain.model.RegionSensorRelE; +import com.zcloud.persistence.dataobject.RegionSensorRelDO; +import com.zcloud.persistence.repository.RegionSensorRelRepository; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +/** + * RegionSensorRelGatewayImpl - 区域传感器关系网关实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Service +@AllArgsConstructor +public class RegionSensorRelGatewayImpl implements RegionSensorRelGateway { + + private final RegionSensorRelRepository regionSensorRelRepository; + + @Override + public Long add(RegionSensorRelE regionSensorRelE) { + RegionSensorRelDO d = new RegionSensorRelDO(); + BeanUtils.copyProperties(regionSensorRelE, d); + regionSensorRelRepository.save(d); + return d.getId(); + } + + @Override + public Boolean deleteBySensorId(Long sensorId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(RegionSensorRelDO::getSensorId, sensorId); + return regionSensorRelRepository.remove(wrapper); + } + + @Override + public RegionSensorRelE getBySensorId(Long sensorId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(RegionSensorRelDO::getSensorId, sensorId) + .eq(RegionSensorRelDO::getDeleteEnum, "FALSE"); + + RegionSensorRelDO d = regionSensorRelRepository.getOne(wrapper); + if (d == null) { + return null; + } + RegionSensorRelE regionSensorRelE = new RegionSensorRelE(); + BeanUtils.copyProperties(d, regionSensorRelE); + return regionSensorRelE; + } + + @Override + public Boolean isSensorBound(Long sensorId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(RegionSensorRelDO::getSensorId, sensorId) + .eq(RegionSensorRelDO::getDeleteEnum, "FALSE"); + + long count = regionSensorRelRepository.count(wrapper); + return count > 0; + } +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RiskPointGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RiskPointGatewayImpl.java deleted file mode 100644 index 460d218..0000000 --- a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/RiskPointGatewayImpl.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.zcloud.gatewayimpl; - -import com.zcloud.domain.gateway.RiskPointGateway; -import com.zcloud.domain.model.RiskPointE; -import com.zcloud.persistence.dataobject.RiskPointDO; -import com.zcloud.persistence.repository.RiskPointRepository; -import lombok.AllArgsConstructor; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -import java.util.Arrays; - -/** - * 持久层实现 - * - * @author lin - */ - -@Service -@AllArgsConstructor -public class RiskPointGatewayImpl implements RiskPointGateway { - private final RiskPointRepository riskPointRepository; - - @Override - public Boolean add(RiskPointE riskPointE) { - RiskPointDO d = new RiskPointDO(); - BeanUtils.copyProperties(riskPointE, d); - riskPointRepository.save(d); - return true; - } - - @Override - public Boolean update(RiskPointE riskPointE) { - RiskPointDO d = new RiskPointDO(); - BeanUtils.copyProperties(riskPointE, d); - riskPointRepository.updateById(d); - return true; - } - - @Override - public Boolean deletedRiskPointById(Long id) { - return riskPointRepository.removeById(id); - } - - @Override - public Boolean deletedRiskPointByIds(Long[] ids) { - return riskPointRepository.removeByIds(Arrays.asList(ids)); - } - - -} diff --git a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorDeviceGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorDeviceGatewayImpl.java new file mode 100644 index 0000000..beb5e8c --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorDeviceGatewayImpl.java @@ -0,0 +1,53 @@ +package com.zcloud.gatewayimpl; + +import com.zcloud.domain.gateway.SensorDeviceGateway; +import com.zcloud.domain.model.SensorDeviceE; +import com.zcloud.persistence.dataobject.SensorDeviceDO; +import com.zcloud.persistence.repository.SensorDeviceRepository; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +/** + * SensorDeviceGatewayImpl - 传感器设备网关实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Service +@AllArgsConstructor +public class SensorDeviceGatewayImpl implements SensorDeviceGateway { + + private final SensorDeviceRepository sensorDeviceRepository; + + @Override + public Long add(SensorDeviceE sensorDeviceE) { + SensorDeviceDO d = new SensorDeviceDO(); + BeanUtils.copyProperties(sensorDeviceE, d); + sensorDeviceRepository.save(d); + return d.getId(); + } + + @Override + public Boolean update(SensorDeviceE sensorDeviceE) { + SensorDeviceDO d = new SensorDeviceDO(); + BeanUtils.copyProperties(sensorDeviceE, d); + sensorDeviceRepository.updateById(d); + return true; + } + + @Override + public Boolean deleteById(Long id) { + return sensorDeviceRepository.removeById(id); + } + + @Override + public SensorDeviceE getById(Long id) { + SensorDeviceDO d = sensorDeviceRepository.getById(id); + if (d == null) { + return null; + } + SensorDeviceE sensorDeviceE = new SensorDeviceE(); + BeanUtils.copyProperties(d, sensorDeviceE); + return sensorDeviceE; + } +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorTypeGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorTypeGatewayImpl.java new file mode 100644 index 0000000..51d0505 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/gatewayimpl/SensorTypeGatewayImpl.java @@ -0,0 +1,53 @@ +package com.zcloud.gatewayimpl; + +import com.zcloud.domain.gateway.SensorTypeGateway; +import com.zcloud.domain.model.SensorTypeE; +import com.zcloud.persistence.dataobject.SensorTypeDO; +import com.zcloud.persistence.repository.SensorTypeRepository; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +/** + * SensorTypeGatewayImpl - 传感器类型网关实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Service +@AllArgsConstructor +public class SensorTypeGatewayImpl implements SensorTypeGateway { + + private final SensorTypeRepository sensorTypeRepository; + + @Override + public Long add(SensorTypeE sensorTypeE) { + SensorTypeDO d = new SensorTypeDO(); + BeanUtils.copyProperties(sensorTypeE, d); + sensorTypeRepository.save(d); + return d.getId(); + } + + @Override + public Boolean update(SensorTypeE sensorTypeE) { + SensorTypeDO d = new SensorTypeDO(); + BeanUtils.copyProperties(sensorTypeE, d); + sensorTypeRepository.updateById(d); + return true; + } + + @Override + public Boolean deleteById(Long id) { + return sensorTypeRepository.removeById(id); + } + + @Override + public SensorTypeE getById(Long id) { + SensorTypeDO d = sensorTypeRepository.getById(id); + if (d == null) { + return null; + } + SensorTypeE sensorTypeE = new SensorTypeE(); + BeanUtils.copyProperties(d, sensorTypeE); + return sensorTypeE; + } +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmDisposeLogDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmDisposeLogDO.java new file mode 100644 index 0000000..dc49dc4 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmDisposeLogDO.java @@ -0,0 +1,62 @@ +package com.zcloud.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * AlarmDisposeLogDO - 报警处置日志数据对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@TableName("iot_alarm_disposal_log") +@EqualsAndHashCode(callSuper = true) +public class AlarmDisposeLogDO extends BaseDO { + + @ApiModelProperty(value = "业务ID(32位)") + private String alarmDisposalLogId; + + @ApiModelProperty(value = "报警主键ID") + private Long alarmId; + + @ApiModelProperty(value = "报警编号(32位)") + private String alarmNo; + + @ApiModelProperty(value = "操作类型 AUTO_ASSIGN/MANUAL_ASSIGN/DISPOSE/INVALID") + private String actionType; + + @ApiModelProperty(value = "变更前状态") + private Integer beforeStatus; + + @ApiModelProperty(value = "变更后状态") + private Integer afterStatus; + + @ApiModelProperty(value = "操作人ID") + private Long operatorId; + + @ApiModelProperty(value = "操作说明") + private String actionDesc; + + @ApiModelProperty(value = "处置结果") + private String resultText; + + @ApiModelProperty(value = "附件图片") + private String pictureUrls; + + @ApiModelProperty(value = "操作时间") + private String actionTime; + + @ApiModelProperty(value = "删除标识") + @TableLogic + private String deleteEnum = "FALSE"; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmRecordDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmRecordDO.java new file mode 100644 index 0000000..6f7d8c0 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/AlarmRecordDO.java @@ -0,0 +1,112 @@ +package com.zcloud.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * AlarmRecordDO - 报警记录数据对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@TableName("iot_alarm_record") +@EqualsAndHashCode(callSuper = true) +public class AlarmRecordDO extends BaseDO { + + @ApiModelProperty(value = "业务ID(32位)") + private String alarmRecordId; + + @ApiModelProperty(value = "报警编号(32位)") + private String alarmNo; + + @ApiModelProperty(value = "报警来源 THRESHOLD/DCS") + private String alarmSource; + + @ApiModelProperty(value = "设备来源描述快照") + private String deviceSourceDesc; + + @ApiModelProperty(value = "传感器ID") + private Long sensorId; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "消防区域ID") + private Long fireRegionId; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "当前负责人ID") + private Long managerId; + + @ApiModelProperty(value = "报警级别") + private String alarmLevel; + + @ApiModelProperty(value = "报警类型") + private String alarmType; + + @ApiModelProperty(value = "阈值类型 HIGH/HIGH_HIGH/LOW/LOW_LOW") + private String thresholdType; + + @ApiModelProperty(value = "告警值") + private BigDecimal currentValue; + + @ApiModelProperty(value = "比较方向 UP/DOWN") + private String compareFlag; + + @ApiModelProperty(value = "单位") + private String unitName; + + @ApiModelProperty(value = "报警描述") + private String alarmDesc; + + @ApiModelProperty(value = "报警时间") + private String alarmTime; + + @ApiModelProperty(value = "当前状态 10待研判/20待处置/30已消警/40误报") + private Integer status; + + @ApiModelProperty(value = "分配时间") + private String assignTime; + + @ApiModelProperty(value = "处置时间") + private String disposeTime; + + @ApiModelProperty(value = "处置人ID") + private Long disposeUserId; + + @ApiModelProperty(value = "当前处置结果快照") + private String disposeResult; + + @ApiModelProperty(value = "当前处置说明快照") + private String disposeRemark; + + @ApiModelProperty(value = "图片地址") + private String pictureUrls; + + @ApiModelProperty(value = "外部记录唯一键") + private String sourceRecordKey; + + @ApiModelProperty(value = "是否活跃告警") + private Integer activeFlag; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "删除标识") + @TableLogic + private String deleteEnum = "FALSE"; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/DeviceRegionDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/DeviceRegionDO.java new file mode 100644 index 0000000..7c2767d --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/DeviceRegionDO.java @@ -0,0 +1,50 @@ +package com.zcloud.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * DeviceRegionDO - 设备区域数据对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@TableName("iot_alarm_region_config") +@EqualsAndHashCode(callSuper = true) +public class DeviceRegionDO extends BaseDO { + + @ApiModelProperty(value = "业务ID(32位)") + private String regionConfigId; + + @ApiModelProperty(value = "外部消防区域主键") + private Long fireRegionId; + + @ApiModelProperty(value = "外部消防区域编码") + private String fireRegionCode; + + @ApiModelProperty(value = "负责部门ID") + private Long departmentId; + + @ApiModelProperty(value = "负责人ID") + private Long managerId; + + @ApiModelProperty(value = "状态 1启用0停用") + private Integer status; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "删除标识") + @TableLogic + private String deleteEnum = "FALSE"; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RegionSensorRelDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RegionSensorRelDO.java new file mode 100644 index 0000000..85c01e2 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RegionSensorRelDO.java @@ -0,0 +1,44 @@ +package com.zcloud.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * RegionSensorRelDO - 区域传感器关系数据对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@TableName("iot_alarm_region_sensor_rel") +@EqualsAndHashCode(callSuper = true) +public class RegionSensorRelDO extends BaseDO { + + @ApiModelProperty(value = "业务ID(32位)") + private String regionSensorRelId; + + @ApiModelProperty(value = "区域配置主键ID") + private Long regionConfigId; + + @ApiModelProperty(value = "外部消防区域ID") + private Long fireRegionId; + + @ApiModelProperty(value = "传感器ID") + private Long sensorId; + + @ApiModelProperty(value = "传感器编码快照") + private String sensorCode; + + @ApiModelProperty(value = "删除标识") + @TableLogic + private String deleteEnum = "FALSE"; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RiskPointDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RiskPointDO.java deleted file mode 100644 index 7776a91..0000000 --- a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/RiskPointDO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zcloud.persistence.dataobject; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.jjb.saas.framework.repository.basedo.BaseDO; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -@TableName("risk_point") -public class RiskPointDO extends BaseDO { - - private String riskPointName; - - private String deptName; -} diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorDeviceDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorDeviceDO.java new file mode 100644 index 0000000..f1b6c64 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorDeviceDO.java @@ -0,0 +1,92 @@ +package com.zcloud.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * SensorDeviceDO - 传感器设备数据对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@TableName("iot_alarm_sensor_device") +@EqualsAndHashCode(callSuper = true) +public class SensorDeviceDO extends BaseDO { + + @ApiModelProperty(value = "传感器设备业务ID") + private String sensorDeviceId; + + @ApiModelProperty(value = "传感器编码") + private String sensorCode; + + @ApiModelProperty(value = "传感器名称") + private String sensorName; + + @ApiModelProperty(value = "传感器类型主键ID") + private Long sensorTypeId; + + @ApiModelProperty(value = "传感器属性快照(NUMBER/SWITCH)") + private String sensorAttr; + + @ApiModelProperty(value = "安装位置") + private String installPosition; + + @ApiModelProperty(value = "传感器状态") + private String sensorStatus; + + @ApiModelProperty(value = "是否定位(0否1是)") + private Integer positioningFlag; + + @ApiModelProperty(value = "报警开关(1开0关)") + private Integer alarmSwitch; + + @ApiModelProperty(value = "是否阈值设定(0否1是)") + private Integer thresholdFlag; + + @ApiModelProperty(value = "单位") + private String unitName; + + @ApiModelProperty(value = "量程下限") + private String rangeMin; + + @ApiModelProperty(value = "量程上限") + private String rangeMax; + + @ApiModelProperty(value = "低低报阈值") + private String thresholdLowLow; + + @ApiModelProperty(value = "低报阈值") + private String thresholdLow; + + @ApiModelProperty(value = "高报阈值") + private String thresholdHigh; + + @ApiModelProperty(value = "高高报阈值") + private String thresholdHighHigh; + + @ApiModelProperty(value = "连续报警确认次数") + private Integer continuousAlarmCount; + + @ApiModelProperty(value = "出厂日期") + private String factoryDate; + + @ApiModelProperty(value = "企业侧源编码") + private String enterpriseSourceCode; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "删除标识") + @TableLogic + private String deleteEnum = "FALSE"; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorTypeDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorTypeDO.java new file mode 100644 index 0000000..9b82f15 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/dataobject/SensorTypeDO.java @@ -0,0 +1,50 @@ +package com.zcloud.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * SensorTypeDO - 传感器类型数据对象 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Data +@TableName("iot_alarm_sensor_type") +@EqualsAndHashCode(callSuper = true) +public class SensorTypeDO extends BaseDO { + + @ApiModelProperty(value = "传感器类型业务ID") + private String sensorTypeId; + + @ApiModelProperty(value = "类型编码") + private String typeCode; + + @ApiModelProperty(value = "类型名称") + private String typeName; + + @ApiModelProperty(value = "传感器属性(NUMBER/SWITCH)") + private String sensorAttr; + + @ApiModelProperty(value = "排序") + private Integer sortNo; + + @ApiModelProperty(value = "状态(1:启用 0:停用)") + private Integer status; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "删除标识") + @TableLogic + private String deleteEnum = "FALSE"; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; + + @ApiModelProperty(value = "组织ID") + private Long orgId; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/domainobject/RiskPointDO.java b/web-infrastructure/src/main/java/com/zcloud/persistence/domainobject/RiskPointDO.java deleted file mode 100644 index b72f86a..0000000 --- a/web-infrastructure/src/main/java/com/zcloud/persistence/domainobject/RiskPointDO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zcloud.persistence.domainobject; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.jjb.saas.framework.repository.basedo.BaseDO; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -@TableName("risk_point") -public class RiskPointDO extends BaseDO { - - private String riskPointName; - - private String deptName; -} diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmDisposeLogMapper.java b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmDisposeLogMapper.java new file mode 100644 index 0000000..6d914ce --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmDisposeLogMapper.java @@ -0,0 +1,13 @@ +package com.zcloud.persistence.mapper; + +import com.zcloud.persistence.dataobject.AlarmDisposeLogDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * AlarmDisposeLogMapper - 报警处置日志Mapper + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Mapper +public interface AlarmDisposeLogMapper extends BaseMapper {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmRecordMapper.java b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmRecordMapper.java new file mode 100644 index 0000000..e782410 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/AlarmRecordMapper.java @@ -0,0 +1,13 @@ +package com.zcloud.persistence.mapper; + +import com.zcloud.persistence.dataobject.AlarmRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * AlarmRecordMapper - 报警记录Mapper + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Mapper +public interface AlarmRecordMapper extends BaseMapper {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/DeviceRegionMapper.java b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/DeviceRegionMapper.java new file mode 100644 index 0000000..781992b --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/DeviceRegionMapper.java @@ -0,0 +1,13 @@ +package com.zcloud.persistence.mapper; + +import com.zcloud.persistence.dataobject.DeviceRegionDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * DeviceRegionMapper - 设备区域Mapper + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Mapper +public interface DeviceRegionMapper extends BaseMapper {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RegionSensorRelMapper.java b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RegionSensorRelMapper.java new file mode 100644 index 0000000..dabd8c0 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RegionSensorRelMapper.java @@ -0,0 +1,13 @@ +package com.zcloud.persistence.mapper; + +import com.zcloud.persistence.dataobject.RegionSensorRelDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * RegionSensorRelMapper - 区域传感器关系Mapper + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Mapper +public interface RegionSensorRelMapper extends BaseMapper {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RiskPointMapper.java b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RiskPointMapper.java deleted file mode 100644 index 2872391..0000000 --- a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/RiskPointMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.zcloud.persistence.mapper; - -import com.zcloud.persistence.dataobject.RiskPointDO; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface RiskPointMapper extends BaseMapper { -} diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorDeviceMapper.java b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorDeviceMapper.java new file mode 100644 index 0000000..3aa52a7 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorDeviceMapper.java @@ -0,0 +1,13 @@ +package com.zcloud.persistence.mapper; + +import com.zcloud.persistence.dataobject.SensorDeviceDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * SensorDeviceMapper - 传感器设备Mapper + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Mapper +public interface SensorDeviceMapper extends BaseMapper {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorTypeMapper.java b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorTypeMapper.java new file mode 100644 index 0000000..493c37b --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/mapper/SensorTypeMapper.java @@ -0,0 +1,13 @@ +package com.zcloud.persistence.mapper; + +import com.zcloud.persistence.dataobject.SensorTypeDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * SensorTypeMapper - 传感器类型Mapper + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Mapper +public interface SensorTypeMapper extends BaseMapper {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmDisposeLogRepository.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmDisposeLogRepository.java new file mode 100644 index 0000000..87d3596 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmDisposeLogRepository.java @@ -0,0 +1,11 @@ +package com.zcloud.persistence.repository; + +import com.zcloud.persistence.dataobject.AlarmDisposeLogDO; +import com.jjb.saas.framework.repository.repo.BaseRepository; + +/** + * AlarmDisposeLogRepository - 报警处置日志仓储接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface AlarmDisposeLogRepository extends BaseRepository {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmRecordRepository.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmRecordRepository.java new file mode 100644 index 0000000..61f8e62 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/AlarmRecordRepository.java @@ -0,0 +1,11 @@ +package com.zcloud.persistence.repository; + +import com.zcloud.persistence.dataobject.AlarmRecordDO; +import com.jjb.saas.framework.repository.repo.BaseRepository; + +/** + * AlarmRecordRepository - 报警记录仓储接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface AlarmRecordRepository extends BaseRepository {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/DeviceRegionRepository.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/DeviceRegionRepository.java new file mode 100644 index 0000000..4080ffd --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/DeviceRegionRepository.java @@ -0,0 +1,11 @@ +package com.zcloud.persistence.repository; + +import com.zcloud.persistence.dataobject.DeviceRegionDO; +import com.jjb.saas.framework.repository.repo.BaseRepository; + +/** + * DeviceRegionRepository - 设备区域仓储接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface DeviceRegionRepository extends BaseRepository {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/RegionSensorRelRepository.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/RegionSensorRelRepository.java new file mode 100644 index 0000000..481c7e9 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/RegionSensorRelRepository.java @@ -0,0 +1,11 @@ +package com.zcloud.persistence.repository; + +import com.zcloud.persistence.dataobject.RegionSensorRelDO; +import com.jjb.saas.framework.repository.repo.BaseRepository; + +/** + * RegionSensorRelRepository - 区域传感器关系仓储接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface RegionSensorRelRepository extends BaseRepository {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/RiskPointRepository.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/RiskPointRepository.java deleted file mode 100644 index cf6609c..0000000 --- a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/RiskPointRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.zcloud.persistence.repository; - -import com.alibaba.cola.dto.PageResponse; -import com.zcloud.persistence.dataobject.RiskPointDO; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jjb.saas.framework.repository.repo.BaseRepository; - -import java.util.Map; - -/** - * @author lin - */ -public interface RiskPointRepository extends BaseRepository { - PageResponse listRiskPointPage(Map parmas); -} diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorDeviceRepository.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorDeviceRepository.java new file mode 100644 index 0000000..d77d368 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorDeviceRepository.java @@ -0,0 +1,11 @@ +package com.zcloud.persistence.repository; + +import com.zcloud.persistence.dataobject.SensorDeviceDO; +import com.jjb.saas.framework.repository.repo.BaseRepository; + +/** + * SensorDeviceRepository - 传感器设备仓储接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface SensorDeviceRepository extends BaseRepository {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorTypeRepository.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorTypeRepository.java new file mode 100644 index 0000000..984ce68 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/SensorTypeRepository.java @@ -0,0 +1,11 @@ +package com.zcloud.persistence.repository; + +import com.zcloud.persistence.dataobject.SensorTypeDO; +import com.jjb.saas.framework.repository.repo.BaseRepository; + +/** + * SensorTypeRepository - 传感器类型仓储接口 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +public interface SensorTypeRepository extends BaseRepository {} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/RiskPointRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/RiskPointRepositoryImpl.java deleted file mode 100644 index acbd77c..0000000 --- a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/RiskPointRepositoryImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.zcloud.persistence.repository.impl; - -import com.alibaba.cola.dto.PageResponse; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jjb.saas.framework.repository.common.PageHelper; -import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; -import com.zcloud.persistence.dataobject.RiskPointDO; -import com.zcloud.persistence.mapper.RiskPointMapper; -import com.zcloud.persistence.repository.RiskPointRepository; -import com.zcloud.utils.PageQueryHelper; -import com.zcloud.utils.Query; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.util.Map; - -/** - * @author lin - */ -@Service -@RequiredArgsConstructor -public class RiskPointRepositoryImpl extends BaseRepositoryImpl implements RiskPointRepository { - private final RiskPointMapper riskPointMapper; - - @Override - public PageResponse listRiskPointPage(Map parmas) { - IPage iPage = new Query().getPage(parmas); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, parmas); - queryWrapper.orderByDesc("create_time"); - IPage result = riskPointMapper.selectPage(iPage, queryWrapper); - return PageHelper.pageToResponse(result, result.getRecords()); - } -} diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorDeviceRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorDeviceRepositoryImpl.java new file mode 100644 index 0000000..94cc367 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorDeviceRepositoryImpl.java @@ -0,0 +1,18 @@ +package com.zcloud.persistence.repository.impl; + +import com.zcloud.persistence.dataobject.SensorDeviceDO; +import com.zcloud.persistence.mapper.SensorDeviceMapper; +import com.zcloud.persistence.repository.SensorDeviceRepository; +import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +/** + * SensorDeviceRepositoryImpl - 传感器设备仓储实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Repository +@RequiredArgsConstructor +public class SensorDeviceRepositoryImpl extends BaseRepositoryImpl implements SensorDeviceRepository { +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorTypeRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorTypeRepositoryImpl.java new file mode 100644 index 0000000..3cad21e --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/persistence/repository/impl/SensorTypeRepositoryImpl.java @@ -0,0 +1,18 @@ +package com.zcloud.persistence.repository.impl; + +import com.zcloud.persistence.dataobject.SensorTypeDO; +import com.zcloud.persistence.mapper.SensorTypeMapper; +import com.zcloud.persistence.repository.SensorTypeRepository; +import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +/** + * SensorTypeRepositoryImpl - 传感器类型仓储实现类 + * @Author wangyan + * @Date 2026-04-03 00:00:00 + */ +@Repository +@RequiredArgsConstructor +public class SensorTypeRepositoryImpl extends BaseRepositoryImpl implements SensorTypeRepository { +} \ No newline at end of file diff --git a/web-infrastructure/src/main/resources/mybatis/RiskPointMapper.xml b/web-infrastructure/src/main/resources/mybatis/RiskPointMapper.xml deleted file mode 100644 index e2b6d64..0000000 --- a/web-infrastructure/src/main/resources/mybatis/RiskPointMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/web-infrastructure/src/main/resources/mybatis/mybatis-config.xml b/web-infrastructure/src/main/resources/mybatis/mybatis-config.xml index f7c8d88..d046e94 100644 --- a/web-infrastructure/src/main/resources/mybatis/mybatis-config.xml +++ b/web-infrastructure/src/main/resources/mybatis/mybatis-config.xml @@ -5,6 +5,5 @@ "http://mybatis.org/dtd/mybatis-3-config.dtd"> - \ No newline at end of file