Ver código fonte

Merge branch '20210223' of http://114.135.61.188:53000/UIMS/Code into 20210223

wangbo 4 anos atrás
pai
commit
d6375ce214
38 arquivos alterados com 1474 adições e 7 exclusões
  1. 7 2
      operation_manager/src/main/java/com/huaxu/evaluation/job/EvaluationResultJob.java
  2. 114 0
      sms_water/src/main/java/com/huaxu/controller/DataAlarmController.java
  3. 1 1
      sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java
  4. 59 0
      sms_water/src/main/java/com/huaxu/controller/EquipmentStatisticsController.java
  5. 31 0
      sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmAnalysisMapper.java
  6. 40 0
      sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmDetailMapper.java
  7. 70 0
      sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmManageMapper.java
  8. 19 0
      sms_water/src/main/java/com/huaxu/dto/QueryDeviceMonitorDto.java
  9. 2 0
      sms_water/src/main/java/com/huaxu/dto/ReportQueryDto.java
  10. 35 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmDto.java
  11. 28 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmManageDto.java
  12. 33 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmQueryDto.java
  13. 55 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmSettingDto.java
  14. 53 0
      sms_water/src/main/java/com/huaxu/entity/BaseEntity.java
  15. 31 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmAnalysisEntity.java
  16. 40 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmDetailEntity.java
  17. 22 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmManageEntity.java
  18. 51 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmSetting.java
  19. 30 0
      sms_water/src/main/java/com/huaxu/enums/DataAlarmTypeEnum.java
  20. 82 0
      sms_water/src/main/java/com/huaxu/enums/MathematicalSymbolEnum.java
  21. 2 1
      sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java
  22. 25 0
      sms_water/src/main/java/com/huaxu/service/DataAlarmAnalysisService.java
  23. 35 0
      sms_water/src/main/java/com/huaxu/service/DataAlarmDetailService.java
  24. 65 0
      sms_water/src/main/java/com/huaxu/service/DataAlarmManageService.java
  25. 31 0
      sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmAnalysisServiceImpl.java
  26. 37 0
      sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmDetailServiceImpl.java
  27. 87 0
      sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmManageServiceImpl.java
  28. 3 1
      sms_water/src/main/java/com/huaxu/util/ReportExcelUtil.java
  29. 31 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmAnalysisVo.java
  30. 28 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmDetailsVo.java
  31. 28 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmManageVo.java
  32. 56 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmSettingVo.java
  33. 3 1
      sms_water/src/main/resources/application-sit.properties
  34. 1 1
      sms_water/src/main/resources/application.properties
  35. 2 0
      sms_water/src/main/resources/mapper/AlarmSettingMapper.xml
  36. 37 0
      sms_water/src/main/resources/mapper/DataAlarmAnalysisMapper.xml
  37. 50 0
      sms_water/src/main/resources/mapper/DataAlarmDetailMapper.xml
  38. 150 0
      sms_water/src/main/resources/mapper/DataAlarmManageMapper.xml

+ 7 - 2
operation_manager/src/main/java/com/huaxu/evaluation/job/EvaluationResultJob.java

@@ -88,14 +88,14 @@ public class EvaluationResultJob {
 
 
     /***
-     *
      * @Scheduled(cron = "0/5 * * * * ?")
+     *
      *  异步启动定时任务,每天凌晨4点
      * @Author lihui
      * @Date 18:26 2021/5/17
      * @return void
      **/
-    @Scheduled(cron="0 0 4 * * ?")
+    @Scheduled(cron = "0 0 4 * * ?")
     @Async
     public void run(){
         if (lock){
@@ -425,4 +425,9 @@ public class EvaluationResultJob {
     }
 
 
+    public static void main(String[] args) {
+        System.out.println(String.format("%02d",3));
+    }
+
+
 }

+ 114 - 0
sms_water/src/main/java/com/huaxu/controller/DataAlarmController.java

@@ -0,0 +1,114 @@
+package com.huaxu.controller;
+
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.dto.alarm.DataAlarmManageDto;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.Pagination;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.service.DataAlarmAnalysisService;
+import com.huaxu.service.DataAlarmDetailService;
+import com.huaxu.service.DataAlarmManageService;
+import com.huaxu.vo.DataAlarmAnalysisVo;
+import com.huaxu.vo.DataAlarmDetailsVo;
+import com.huaxu.vo.DataAlarmManageVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+
+/***
+ * 数据报警处理
+ * @author lihui
+ * @date 14:17 2021/5/31
+ **/
+@RestController
+@RequestMapping("/data/alarm")
+@Api(tags = "数据报警")
+@Slf4j
+public class DataAlarmController {
+
+    @Resource
+    private DataAlarmManageService dataAlarmManageService;
+
+    @Resource
+    private DataAlarmDetailService dataAlarmDetailService;
+
+    @Resource
+    private DataAlarmAnalysisService dataAlarmAnalysisService;
+
+    @Value("${SMS.sys_excel_path}")
+    private String baseDir;
+
+    @RequestMapping(value="list/manage" , method = RequestMethod.POST)
+    @ApiOperation(value = "查询报警管理")
+    public AjaxMessage<Pagination<DataAlarmManageVo>> listManage(@RequestBody @Valid DataAlarmDto dataAlarmDto) {
+        return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(dataAlarmManageService.findPage(dataAlarmDto)));
+    }
+
+    @RequestMapping(value="save/manage" , method = RequestMethod.POST)
+    @ApiOperation(value = "保存报警管理设置")
+    public AjaxMessage<String> saveManage(@RequestBody @Valid DataAlarmManageDto dataAlarmManageDto) {
+        dataAlarmManageService.saveDataAlarmManage(dataAlarmManageDto);
+        return new AjaxMessage<>(ResultStatus.OK );
+    }
+
+    @RequestMapping(value="find/manage" , method = RequestMethod.POST)
+    @ApiOperation(value = "查询报警管理")
+    public AjaxMessage<DataAlarmManageVo> findManage(@ApiParam(value = "报警设置ID", required = true) @RequestParam("alarmId") Long alarmId) {
+        return new AjaxMessage<>(ResultStatus.OK, dataAlarmManageService.findAlarmManage(alarmId));
+    }
+
+    @RequestMapping(value="update/manage" , method = RequestMethod.POST)
+    @ApiOperation(value = "更新报警管理设置")
+    public AjaxMessage<String> updateManage(@RequestBody @Valid DataAlarmManageDto dataAlarmManageDto) {
+        dataAlarmManageService.updateDataAlarmManage(dataAlarmManageDto);
+        return new AjaxMessage<>(ResultStatus.OK );
+    }
+
+    @RequestMapping(value="del/manage" , method = RequestMethod.POST)
+    @ApiOperation(value = "删除报警管理设置")
+    public AjaxMessage<String> delManage(@RequestBody List<Long> alarmId) {
+        dataAlarmManageService.delDataAlarmManage(alarmId);
+        return new AjaxMessage<>(ResultStatus.OK );
+    }
+
+    @RequestMapping(value="list/realtime" , method = RequestMethod.POST)
+    @ApiOperation(value = "查询实时报警数据")
+    public AjaxMessage<Pagination<DataAlarmDetailsVo>> listRealTime(@RequestBody @Valid DataAlarmDto dataAlarmDto) {
+        return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(dataAlarmDetailService.findPage(dataAlarmDto, 0)));
+    }
+
+    @RequestMapping(value="del/realtime" , method = RequestMethod.POST)
+    @ApiOperation(value = "删除实时报警数据")
+    public AjaxMessage<String> delRealTime(@ApiParam(value = "报警设置ID", required = true) @RequestParam("alarmId") Long alarmId) {
+        dataAlarmDetailService.deldelAlarmDetails(alarmId);
+        return new AjaxMessage<>(ResultStatus.OK);
+    }
+
+    @RequestMapping(value="list/history" , method = RequestMethod.POST)
+    @ApiOperation(value = "查询历史报警数据")
+    public AjaxMessage<Pagination<DataAlarmDetailsVo>> listHistory(@RequestBody @Valid DataAlarmDto dataAlarmDto) {
+        return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(dataAlarmDetailService.findPage(dataAlarmDto, 1)));
+    }
+
+    @RequestMapping(value="del/history" , method = RequestMethod.POST)
+    @ApiOperation(value = "删除历史报警数据")
+    public AjaxMessage<String> delHistory(@ApiParam(value = "报警设置ID", required = true) @RequestParam("alarmId") Long alarmId) {
+        dataAlarmDetailService.deldelAlarmDetails(alarmId);
+        return new AjaxMessage<>(ResultStatus.OK);
+    }
+
+    @RequestMapping(value="list/analysis" , method = RequestMethod.POST)
+    @ApiOperation(value = "查询数据分析")
+    public AjaxMessage<Pagination<DataAlarmAnalysisVo>> listAnalysis(@RequestBody @Valid DataAlarmDto dataAlarmDto) {
+        return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(dataAlarmAnalysisService.findPage(dataAlarmDto)));
+    }
+
+}

+ 1 - 1
sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java

@@ -198,7 +198,7 @@ public class DayMonthYearReportController {
 
     @RequestMapping(value = "/export/excel", method = RequestMethod.POST)
     @ApiOperation(value = "报表导出")
-    public AjaxMessage<String> exportExcel(@RequestBody ReportQueryDto queryDto) {
+    public AjaxMessage<String> exportExcel(@RequestBody @Valid ReportQueryDto queryDto) {
         IPage<ReportDto> iPage = new Page<>(1, 1000000);
         if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
             queryDto.setStartTime(null);

+ 59 - 0
sms_water/src/main/java/com/huaxu/controller/EquipmentStatisticsController.java

@@ -0,0 +1,59 @@
+package com.huaxu.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.huaxu.dto.QueryDeviceMonitorDto;
+import com.huaxu.entity.DeviceParmEntity;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.util.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.ArrayList;
+
+@RestController
+@RequestMapping("/equipmentStatistics")
+public class EquipmentStatisticsController {
+    @Autowired
+    RestTemplate restTemplate;
+    @Value("${get_map_info_url}")
+    private String getMapInfoUrl;
+    @Value("${get_device_url}")
+    private String getDeviceUrl;
+    @GetMapping("/getTheMapInformationOfTheDevice")
+   private AjaxMessage getTheMapInformationOfTheDevice(QueryDeviceMonitorDto queryDeviceMonitorDto){
+        queryDeviceMonitorDto.setTenantId(UserUtil.getCurrentUser().getTenantId());
+        return new AjaxMessage<>(ResultStatus.OK, JSON.parse(sendApiReQuest(getMapInfoUrl,JSON.toJSONString(queryDeviceMonitorDto))));
+   }
+    @GetMapping("/getDeviceListInformation")
+    private AjaxMessage getDeviceListInformation(QueryDeviceMonitorDto queryDeviceMonitorDto){
+        queryDeviceMonitorDto.setTenantId(UserUtil.getCurrentUser().getTenantId());
+        String result=sendApiReQuest(getDeviceUrl,JSON.toJSONString(queryDeviceMonitorDto));
+        JSONObject info = JSON.parseObject(result);
+        if(info.getInteger("total")==0){
+            info.put("list",new ArrayList<>());
+        }
+        return new AjaxMessage<>(ResultStatus.OK, info);
+    }
+    private  String sendApiReQuest(String path , String args){
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        org.springframework.http.HttpEntity<String> formEntity = new org.springframework.http.HttpEntity<>(args, headers);
+        ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(path, formEntity,
+                String.class);
+        JSONObject info = JSON.parseObject(stringResponseEntity.getBody());
+        String result=null;
+        if(info.getInteger("status")==0){
+            result=info.getString("data");
+        }
+        return result;
+    }
+}

+ 31 - 0
sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmAnalysisMapper.java

@@ -0,0 +1,31 @@
+package com.huaxu.dao.alarm;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.vo.DataAlarmAnalysisVo;
+import com.huaxu.vo.DataAlarmDetailsVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 数据报警分析mapper
+ *
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Mapper
+public interface DataAlarmAnalysisMapper {
+
+
+    /***
+     * 分页查询
+     * @author lihui
+     * @date 15:01 2021/5/31
+     * @param page : 页码
+     * @param dto :  参数
+     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.vo.DataAlarmDetailsVo>
+     **/
+    Page<DataAlarmAnalysisVo> findPage(@Param("page") IPage<DataAlarmDto> page, DataAlarmDto dto);
+}

+ 40 - 0
sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmDetailMapper.java

@@ -0,0 +1,40 @@
+package com.huaxu.dao.alarm;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.vo.DataAlarmDetailsVo;
+import com.huaxu.vo.DataAlarmManageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 数据报警详情mapper
+ *
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Mapper
+public interface DataAlarmDetailMapper {
+
+
+    /***
+     * 分页查询
+     * @author lihui
+     * @date 15:01 2021/5/31
+     * @param page : 页码
+     * @param dto :  参数
+     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.vo.DataAlarmDetailsVo>
+     **/
+    Page<DataAlarmDetailsVo> findPage(@Param("page") IPage<DataAlarmDto> page, DataAlarmDto dto, int isHistory);
+
+    /***
+     * 删除
+     * @author lihui
+     * @date 15:50 2021/5/31
+     * @param alarmId :
+     * @return void
+     **/
+    void deldelAlarmDetails(Long alarmId);
+}

+ 70 - 0
sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmManageMapper.java

@@ -0,0 +1,70 @@
+package com.huaxu.dao.alarm;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.dto.alarm.DataAlarmManageDto;
+import com.huaxu.dto.alarm.DataAlarmQueryDto;
+import com.huaxu.entity.alarm.DataAlarmManageEntity;
+import com.huaxu.vo.DataAlarmManageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 数据报警管理mapper
+ *
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Mapper
+public interface DataAlarmManageMapper {
+
+    /***
+     * 保存报警管理
+     * @author lihui
+     * @date 14:48 2021/5/31
+     * @param entity : 数据entity
+     * @return void
+     **/
+    void saveDataAlarmManage(DataAlarmManageEntity entity);
+
+    /***
+     * 查找报警管理
+     * @author lihui
+     * @date 15:11 2021/5/31
+     * @param aramId :
+     * @return com.huaxu.vo.DataAlarmManageVo
+     **/
+    DataAlarmManageVo findAlarmManage(Long aramId);
+
+    /***
+     * 分页查询
+     * @author lihui
+     * @date 15:01 2021/5/31
+     * @param page : 页码
+     * @param dto :  参数
+     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.vo.DataAlarmManageVo>
+     **/
+    Page<DataAlarmManageVo> findPage(@Param("page")IPage<DataAlarmDto> page, @Param("dto") DataAlarmQueryDto dto);
+
+    /***
+     * 修改数据
+     * @author lihui
+     * @date 15:14 2021/5/31
+     * @param dto : 数据
+     * @return void
+     **/
+    void updateDataAlarmManage(DataAlarmManageDto dto);
+
+    /***
+     * 删除数据
+     * @author lihui
+     * @date 15:19 2021/5/31
+     * @param alarmIds :
+     * @return void
+     **/
+    void delDataAlarmManage(List<Long> alarmIds);
+}

+ 19 - 0
sms_water/src/main/java/com/huaxu/dto/QueryDeviceMonitorDto.java

@@ -0,0 +1,19 @@
+package com.huaxu.dto;
+
+import lombok.Data;
+
+@Data
+public class QueryDeviceMonitorDto {
+    private Integer type;
+    private Integer province;
+    private Integer city;
+    private Integer region;
+    private Integer community;
+    private Integer buildingId;
+    private String keywords;
+    private String tenantId;
+    private Integer page;
+    private Integer size;
+    private String northEast;
+    private String southWest;
+}

+ 2 - 0
sms_water/src/main/java/com/huaxu/dto/ReportQueryDto.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 @Data
@@ -28,6 +29,7 @@ public class ReportQueryDto implements Serializable {
     private Integer type;
 
     @ApiModelProperty(value = "场景类型:1:水源,2:水厂,3:泵站,4:管网")
+    @NotNull
     private Integer sceneType;
 
     @ApiModelProperty("年")

+ 35 - 0
sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmDto.java

@@ -0,0 +1,35 @@
+package com.huaxu.dto.alarm;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 数据报警查询字段
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+@Api("数据报警查询字段")
+public class DataAlarmDto implements Serializable {
+
+    @ApiModelProperty(value = "名称")
+    @NotNull
+    private String alarName;
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "页码")
+    private int pageNum;
+
+    @ApiModelProperty(value = "大小")
+    private int pageSize;
+}

+ 28 - 0
sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmManageDto.java

@@ -0,0 +1,28 @@
+package com.huaxu.dto.alarm;
+
+import com.huaxu.entity.alarm.DataAlarmSetting;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 数据报警查询字段
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+@Api("数据报警管理保存字段")
+public class DataAlarmManageDto extends DataAlarmSettingDto implements Serializable {
+
+    @ApiModelProperty(value = "报警ID")
+    private Long alarId;
+
+    @ApiModelProperty(value = "名称")
+    @NotNull
+    private String alarmName;
+
+}

+ 33 - 0
sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmQueryDto.java

@@ -0,0 +1,33 @@
+package com.huaxu.dto.alarm;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.huaxu.model.ProgramItem;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 数据报警查询字段
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+@Api("数据报警QUERY查询字段")
+public class DataAlarmQueryDto extends DataAlarmDto implements Serializable {
+
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    @ApiModelProperty(value ="权限",hidden = true)
+    @JsonIgnore
+    private List<ProgramItem> programItems;
+
+    @ApiModelProperty(value = "用户类型(-9999 超管 -999普通用户 2普通用户)",hidden = true)
+    @JsonIgnore
+    private String userType;
+}

+ 55 - 0
sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmSettingDto.java

@@ -0,0 +1,55 @@
+package com.huaxu.dto.alarm;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 数据报警设置
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+public class DataAlarmSettingDto {
+
+    @ApiModelProperty(value = "场景ID")
+    private Long beSceneId;
+
+    @ApiModelProperty(value = "设备ID")
+    private Long beDeviceId;
+
+    @ApiModelProperty(value = "参数ID")
+    private Long beAttributeId;
+
+    @ApiModelProperty(value = "地址")
+    private String beAddress;
+
+    @ApiModelProperty(value = "类型")
+    private int beType;
+
+    @ApiModelProperty(value = "计算规则")
+    private String computeRules;
+
+    @ApiModelProperty(value = "对比场景ID")
+    private Long toSceneId;
+
+    @ApiModelProperty(value = "对比设备ID")
+    private Long toDeviceId;
+
+    @ApiModelProperty(value = "对比参数ID")
+    private Long toAttributeId;
+
+    @ApiModelProperty(value = "地址")
+    private String toAddress;
+
+    @ApiModelProperty(value = "对比类型")
+    private int toType;
+
+    @ApiModelProperty(value = "对比报警规则")
+    private String alarRules;
+
+    @ApiModelProperty(value = "报警值")
+    private BigDecimal alarValue;
+}

+ 53 - 0
sms_water/src/main/java/com/huaxu/entity/BaseEntity.java

@@ -0,0 +1,53 @@
+package com.huaxu.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName BaseEntity
+ * @Description: 公共基类
+ * @Author lihui
+ * @Date 2021/4/20
+ * @Version V1.0
+ **/
+@Data
+public class BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "主键")
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    @ApiModelProperty(value = "所属公司ID")
+    private Integer companyOrgId;
+
+    @ApiModelProperty(value = "所属部门ID")
+    private Integer deptOrgId;
+
+    @ApiModelProperty(value = "创建日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    private Date dateCreate;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    private Date dateUpdate;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "数据删除标记")
+    @TableLogic
+    private Integer status;
+}

+ 31 - 0
sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmAnalysisEntity.java

@@ -0,0 +1,31 @@
+package com.huaxu.entity.alarm;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 数据分析
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+@Data
+@TableName("sms_data_alarm_analysis")
+public class DataAlarmAnalysisEntity extends DataAlarmSetting {
+
+    @ApiModelProperty(value = "名称")
+    private String alarmName;
+
+    @ApiModelProperty(value = "报警值")
+    private BigDecimal beAlarValue;
+
+    @ApiModelProperty(value = "报警对比值")
+    private BigDecimal toAlarValue;
+
+    @ApiModelProperty(value = "报警结果值")
+    private BigDecimal resultAlarValue;
+
+}

+ 40 - 0
sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmDetailEntity.java

@@ -0,0 +1,40 @@
+package com.huaxu.entity.alarm;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 数据报警详情
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+@TableName("sms_data_alarm_detail")
+public class DataAlarmDetailEntity extends DataAlarmSetting {
+
+    @ApiModelProperty(value = "名称")
+    private String alarmName;
+
+    @ApiModelProperty(value = "报警开始时间")
+    private Date alarmStartTime;
+
+    @ApiModelProperty(value = "报警结束时间")
+    private Date alarmEndTime;
+
+    @ApiModelProperty(value = "报警值")
+    private BigDecimal beAlarValue;
+
+    @ApiModelProperty(value = "对比报警值")
+    private BigDecimal toAlarValue;
+
+    @ApiModelProperty(value = "报警结果值")
+    private BigDecimal resultAlarValue;
+
+    @ApiModelProperty(value = "历史数据:0不是,1是")
+    private int isHistory;
+}

+ 22 - 0
sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmManageEntity.java

@@ -0,0 +1,22 @@
+package com.huaxu.entity.alarm;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 数据报警管理
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+@TableName("sms_data_alarm_manage")
+public class DataAlarmManageEntity extends DataAlarmSetting {
+
+    @ApiModelProperty(value = "名称")
+    private String alarmName;
+
+    @ApiModelProperty(value = "报警规则详情")
+    private String alarmContent;
+}

+ 51 - 0
sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmSetting.java

@@ -0,0 +1,51 @@
+package com.huaxu.entity.alarm;
+
+import com.huaxu.entity.BaseEntity;
+import com.huaxu.enums.MathematicalSymbolEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 数据报警设置
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+public class DataAlarmSetting extends BaseEntity {
+
+    @ApiModelProperty(value = "场景ID")
+    private Long beSceneId;
+
+    @ApiModelProperty(value = "设备ID")
+    private Long beDeviceId;
+
+    @ApiModelProperty(value = "参数ID")
+    private Long beAttributeId;
+
+    @ApiModelProperty(value = "类型")
+    private int beType;
+
+    @ApiModelProperty(value = "计算规则")
+    private String computeRules;
+
+    @ApiModelProperty(value = "对比场景ID")
+    private Long toSceneId;
+
+    @ApiModelProperty(value = "对比设备ID")
+    private Long toDeviceId;
+
+    @ApiModelProperty(value = "对比参数ID")
+    private Long toAttributeId;
+
+    @ApiModelProperty(value = "对比类型")
+    private int toType;
+
+    @ApiModelProperty(value = "对比报警规则")
+    private String alarRules;
+
+    @ApiModelProperty(value = "报警值")
+    private BigDecimal alarValue;
+}

+ 30 - 0
sms_water/src/main/java/com/huaxu/enums/DataAlarmTypeEnum.java

@@ -0,0 +1,30 @@
+package com.huaxu.enums;
+
+import lombok.Getter;
+
+/**
+ * 报警设置类型
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+@Getter
+public enum DataAlarmTypeEnum {
+
+    LATEST_VALUE(1, "最新值"),
+
+    DAY_SUM_VALUE(2, "日合计值"),
+
+    MONTH_SUM_VALUE(3, "月合计值")
+    ,
+    ;
+
+    private int type;
+
+    private String msg;
+
+    DataAlarmTypeEnum(int type, String msg){
+        this.type = type;
+        this.msg = msg;
+    }
+}

+ 82 - 0
sms_water/src/main/java/com/huaxu/enums/MathematicalSymbolEnum.java

@@ -0,0 +1,82 @@
+package com.huaxu.enums;
+
+import lombok.Getter;
+
+/**
+ * 数据运算符号
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+@Getter
+public enum MathematicalSymbolEnum {
+
+    /**
+     * 相加
+     */
+    ADD("+", 1),
+
+    /**
+     * 相减
+     */
+    REDUCE("-", 1),
+
+    /**
+     * 相乘
+     */
+    MULTIPLY("*", 1),
+
+    /**
+     * 相除
+     */
+    DIVIDE("/", 1),
+
+    /**
+     * 等于
+     */
+    EQ("=", 2),
+
+    /**
+     * 不等于
+     */
+    NEQ("≠", 2),
+
+
+    /**
+     * 大于
+     */
+    GT(">", 2),
+
+    /**
+     * 小于
+     */
+    LT("<", 2),
+
+    /**
+     * 大于等于
+     */
+    GTE("≥", 2),
+
+    /**
+     * 小于等于
+     */
+    LTE("≤", 2),
+
+    ;
+
+    /**
+     * 运算符号
+     */
+    private String symbol;
+
+    /**
+     * 运算类型 1:算法,2:结果
+     */
+    private int type;
+
+
+    MathematicalSymbolEnum(String symbol, int type){
+        this.type = type;
+        this.symbol = symbol;
+    }
+}

+ 2 - 1
sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java

@@ -105,7 +105,8 @@ public class ReceiveData {
     //"eventTime":"2020-11-25 19:05:56","id":781234302422745088,"manufacturer":"lvyuantest","mode":"TCP-JSON",
     //"originalData":"{\"temp\":0,\"currentPress\":30,\"positiveFlow\":50,\"meterElectricity\":70,\"reverseFlow\":60,\"PH\":8.474,\"currentFlow\":20,\"VOL_STATUS\":1,\"EC\":0,\"currentFlowRate\":40}",
     //"originalDataFormat":"application/json",
-    //"parsedData":"{\"temp\":0,\"currentPress\":30,\"positiveFlow\":50,\"meterElectricity\":70,\"reverseFlow\":60,\"PH\":8.474,\"currentFlow\":20,\"VOL_STATUS\":1,\"EC\":0,\"currentFlowRate\":40}",
+    //"parsedData":"{\"temp\":0,\"currentPress\":30,\"positiveFlow\":50,\"meterElectricity\":70,
+        // \"reverseFlow\":60,\"PH\":8.474,\"currentFlow\":20,\"VOL_STATUS\":1,\"EC\":0,\"currentFlowRate\":40}",
     //"type":"水质监测仪","unitIdentifier":"HX_DH-001"}
 
         JSONObject jsonObject = JSONObject.parseObject(new String(receivedData));

+ 25 - 0
sms_water/src/main/java/com/huaxu/service/DataAlarmAnalysisService.java

@@ -0,0 +1,25 @@
+package com.huaxu.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.vo.DataAlarmAnalysisVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 数据报警数据分析
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+public interface DataAlarmAnalysisService {
+
+    /***
+     * 分页查询
+     * @author lihui
+     * @date 15:01 2021/5/31
+     * @param dto :  参数
+     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.vo.DataAlarmDetailsVo>
+     **/
+    Page<DataAlarmAnalysisVo> findPage(DataAlarmDto dto);
+}

+ 35 - 0
sms_water/src/main/java/com/huaxu/service/DataAlarmDetailService.java

@@ -0,0 +1,35 @@
+package com.huaxu.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.vo.DataAlarmDetailsVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 数据报警详情
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+public interface DataAlarmDetailService {
+
+    /***
+     * 分页查询
+     * @author lihui
+     * @date 15:01 2021/5/31
+     * @param dto :  参数
+     * @param isHistory : 0不是,1是
+     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.vo.DataAlarmDetailsVo>
+     **/
+    Page<DataAlarmDetailsVo> findPage(DataAlarmDto dto, int isHistory);
+
+    /***
+     * 删除
+     * @author lihui
+     * @date 15:50 2021/5/31
+     * @param alarmId :
+     * @return void
+     **/
+    void deldelAlarmDetails(Long alarmId);
+}

+ 65 - 0
sms_water/src/main/java/com/huaxu/service/DataAlarmManageService.java

@@ -0,0 +1,65 @@
+package com.huaxu.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.dto.alarm.DataAlarmManageDto;
+import com.huaxu.entity.alarm.DataAlarmManageEntity;
+import com.huaxu.vo.DataAlarmManageVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 数据报警管理
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+public interface DataAlarmManageService {
+
+    /***
+     * 保存报警管理
+     * @author lihui
+     * @date 14:48 2021/5/31
+     * @param entity : 数据entity
+     * @return void
+     **/
+    void saveDataAlarmManage(DataAlarmManageDto entity);
+
+    /***
+     * 查找报警管理
+     * @author lihui
+     * @date 15:11 2021/5/31
+     * @param aramId :
+     * @return com.huaxu.vo.DataAlarmManageVo
+     **/
+    DataAlarmManageVo findAlarmManage(Long aramId);
+
+    /***
+     * 分页查询
+     * @author lihui
+     * @date 15:01 2021/5/31
+     * @param dto :  参数
+     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.vo.DataAlarmManageVo>
+     **/
+    Page<DataAlarmManageVo> findPage(DataAlarmDto dto);
+
+    /***
+     * 修改数据
+     * @author lihui
+     * @date 15:14 2021/5/31
+     * @param dto : 数据
+     * @return void
+     **/
+    void updateDataAlarmManage(DataAlarmManageDto dto);
+
+    /***
+     * 删除数据
+     * @author lihui
+     * @date 15:19 2021/5/31
+     * @param alarmIds :
+     * @return void
+     **/
+    void delDataAlarmManage(List<Long> alarmIds);
+}

+ 31 - 0
sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmAnalysisServiceImpl.java

@@ -0,0 +1,31 @@
+package com.huaxu.service.impl.alarm;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dao.alarm.DataAlarmAnalysisMapper;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.service.DataAlarmAnalysisService;
+import com.huaxu.vo.DataAlarmAnalysisVo;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 数据报警数据分析
+ *
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Service
+@Log4j2
+public class DataAlarmAnalysisServiceImpl implements DataAlarmAnalysisService {
+
+    @Resource
+    private DataAlarmAnalysisMapper dataAlarmAnalysisMapper;
+
+    @Override
+    public Page<DataAlarmAnalysisVo> findPage(DataAlarmDto dto) {
+        return dataAlarmAnalysisMapper.findPage(new Page<>(dto.getPageNum(), dto.getPageSize()), dto);
+    }
+}

+ 37 - 0
sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmDetailServiceImpl.java

@@ -0,0 +1,37 @@
+package com.huaxu.service.impl.alarm;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dao.alarm.DataAlarmAnalysisMapper;
+import com.huaxu.dao.alarm.DataAlarmDetailMapper;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.service.DataAlarmDetailService;
+import com.huaxu.vo.DataAlarmDetailsVo;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 数据报警详情
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Service
+@Log4j2
+public class DataAlarmDetailServiceImpl implements DataAlarmDetailService {
+
+    @Resource
+    private DataAlarmDetailMapper dataAlarmDetailMapper;
+
+
+    @Override
+    public Page<DataAlarmDetailsVo> findPage(DataAlarmDto dto, int isHistory) {
+        return dataAlarmDetailMapper.findPage(new Page<>(dto.getPageNum(), dto.getPageSize()), dto, isHistory);
+    }
+
+    @Override
+    public void deldelAlarmDetails(Long alarmId) {
+        dataAlarmDetailMapper.deldelAlarmDetails(alarmId);
+    }
+}

+ 87 - 0
sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmManageServiceImpl.java

@@ -0,0 +1,87 @@
+package com.huaxu.service.impl.alarm;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.common.StringUtils;
+import com.huaxu.dao.alarm.DataAlarmManageMapper;
+import com.huaxu.dto.alarm.DataAlarmDto;
+import com.huaxu.dto.alarm.DataAlarmManageDto;
+import com.huaxu.dto.alarm.DataAlarmQueryDto;
+import com.huaxu.entity.alarm.DataAlarmManageEntity;
+import com.huaxu.model.LoginUser;
+import com.huaxu.service.DataAlarmManageService;
+import com.huaxu.util.UserUtil;
+import com.huaxu.vo.DataAlarmManageVo;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 数据报警管理
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Service
+@Log4j2
+public class DataAlarmManageServiceImpl implements DataAlarmManageService {
+
+    @Resource
+    private DataAlarmManageMapper dataAlarmManageMapper;
+
+    @Override
+    public void saveDataAlarmManage(DataAlarmManageDto dto) {
+        DataAlarmManageEntity entity = new DataAlarmManageEntity();
+        BeanUtils.copyProperties(dto, entity);
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        if (currentUser == null || StringUtils.isEmpty(currentUser.getTenantId())) {
+            log.error("保存数据报警设置失败,用户数据为空");
+            return;
+        }
+        entity.setTenantId(currentUser.getTenantId());
+        entity.setCompanyOrgId(currentUser.getCompanyId());
+        entity.setDeptOrgId(currentUser.getDepartmentId());
+        entity.setStatus(1);
+        entity.setDateCreate(new Date());
+        entity.setDateUpdate(new Date());
+        entity.setAlarmContent("");
+        dataAlarmManageMapper.saveDataAlarmManage(entity);
+    }
+
+    @Override
+    public DataAlarmManageVo findAlarmManage(Long alarmId) {
+        if (alarmId == null || alarmId == 0) {
+            return null;
+        }
+        return dataAlarmManageMapper.findAlarmManage(alarmId);
+    }
+
+    @Override
+    public Page<DataAlarmManageVo> findPage(DataAlarmDto dto) {
+        DataAlarmQueryDto queryDto = new DataAlarmQueryDto();
+        BeanUtils.copyProperties(dto, queryDto);
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        queryDto.setTenantId(loginUser.getTenantId());
+        queryDto.setProgramItems(loginUser.getProgramItemList());
+        queryDto.setUserType(loginUser.getType());
+        return dataAlarmManageMapper.findPage(new Page<>(dto.getPageNum(), dto.getPageSize()), queryDto);
+    }
+
+    @Override
+    public void updateDataAlarmManage(DataAlarmManageDto dto) {
+        dataAlarmManageMapper.updateDataAlarmManage(dto);
+    }
+
+    @Override
+    public void delDataAlarmManage(List<Long> alarmIds) {
+        if (CollectionUtil.isEmpty(alarmIds)){
+            return;
+        }
+        dataAlarmManageMapper.delDataAlarmManage(alarmIds);
+    }
+}

+ 3 - 1
sms_water/src/main/java/com/huaxu/util/ReportExcelUtil.java

@@ -102,7 +102,9 @@ public class ReportExcelUtil {
             }
             result.add(listString);
         }
-        result.addAll(titleList);
+        if (!isEmpty) {
+            result.addAll(titleList);
+        }
         return result;
     }
 

+ 31 - 0
sms_water/src/main/java/com/huaxu/vo/DataAlarmAnalysisVo.java

@@ -0,0 +1,31 @@
+package com.huaxu.vo;
+
+import com.huaxu.entity.alarm.DataAlarmSetting;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 数据报警分析
+ *
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+@Data
+public class DataAlarmAnalysisVo extends DataAlarmSetting implements Serializable {
+
+    @ApiModelProperty("报警设置ID")
+    private Long id;
+
+    @ApiModelProperty("报警名字")
+    private String alarmName;
+
+    @ApiModelProperty("报警设置详情")
+    private String alarmSettingDetail;
+
+    @ApiModelProperty("分析值")
+    private String resultAlarValue;
+
+}

+ 28 - 0
sms_water/src/main/java/com/huaxu/vo/DataAlarmDetailsVo.java

@@ -0,0 +1,28 @@
+package com.huaxu.vo;
+
+import com.huaxu.entity.alarm.DataAlarmSetting;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 报警设置管理Vo
+ *
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+@Data
+public class DataAlarmDetailsVo extends DataAlarmSetting implements Serializable {
+
+    @ApiModelProperty("报警设置ID")
+    private Long id;
+
+    @ApiModelProperty("报警名字")
+    private String alarmName;
+
+    @ApiModelProperty("报警设置详情")
+    private String alarmSettingDetail;
+
+}

+ 28 - 0
sms_water/src/main/java/com/huaxu/vo/DataAlarmManageVo.java

@@ -0,0 +1,28 @@
+package com.huaxu.vo;
+
+import com.huaxu.entity.alarm.DataAlarmSetting;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 报警设置管理Vo
+ *
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/28
+ **/
+@Data
+public class DataAlarmManageVo extends DataAlarmSetting implements Serializable {
+
+    @ApiModelProperty("报警设置ID")
+    private Long id;
+
+    @ApiModelProperty("报警名字")
+    private String alarmName;
+
+    @ApiModelProperty("报警设置规则")
+    private String alarmSettingRules;
+
+}

+ 56 - 0
sms_water/src/main/java/com/huaxu/vo/DataAlarmSettingVo.java

@@ -0,0 +1,56 @@
+package com.huaxu.vo;
+
+import com.huaxu.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 数据报警设置
+ * @author lihui
+ * @version V1.0
+ * @date 2021/5/31
+ **/
+@Data
+public class DataAlarmSettingVo {
+
+    @ApiModelProperty(value = "场景ID")
+    private Long beSceneId;
+
+    @ApiModelProperty(value = "设备ID")
+    private Long beDeviceId;
+
+    @ApiModelProperty(value = "参数ID")
+    private Long beAttributeId;
+
+    @ApiModelProperty(value = "地址")
+    private Long beAddress;
+
+    @ApiModelProperty(value = "类型")
+    private int beType;
+
+    @ApiModelProperty(value = "计算规则")
+    private String computeRules;
+
+    @ApiModelProperty(value = "对比场景ID")
+    private Long toSceneId;
+
+    @ApiModelProperty(value = "对比设备ID")
+    private Long toDeviceId;
+
+    @ApiModelProperty(value = "对比参数ID")
+    private Long toAttributeId;
+
+    @ApiModelProperty(value = "地址")
+    private Long toAddress;
+
+    @ApiModelProperty(value = "对比类型")
+    private int toType;
+
+    @ApiModelProperty(value = "对比报警规则")
+    private String alarRules;
+
+    @ApiModelProperty(value = "报警值")
+    private BigDecimal alarValue;
+}

+ 3 - 1
sms_water/src/main/resources/application-sit.properties

@@ -163,4 +163,6 @@ aysnc.queue-capacity=100000
 #线程名称前缀
 aysnc.thread-name-prefix=aysnc-thread-
 #指令下发调用接口地址
-send.setsetup.url=http://114.135.61.188:48322/center/command/send
+send.setsetup.url=http://114.135.61.188:48322/center/command/send
+get_map_info_url=http://114.135.61.188:58080/api/platform/getTheMapInformationOfTheDevice
+get_device_url=http://114.135.61.188:58080/api/platform/getDeviceListInformation

+ 1 - 1
sms_water/src/main/resources/application.properties

@@ -1,2 +1,2 @@
 #开发环境:dev  测试环境:sit  线上环境:prd
-spring.profiles.active=dev
+spring.profiles.active=sit

+ 2 - 0
sms_water/src/main/resources/mapper/AlarmSettingMapper.xml

@@ -105,6 +105,8 @@
         order by t3.seq
     </select>
 
+
+
     <!-- 修改实时报警数据 -->
     <update id="updateRealtimeAlarm">
         update  sms_alarm_details

+ 37 - 0
sms_water/src/main/resources/mapper/DataAlarmAnalysisMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.alarm.DataAlarmAnalysisMapper">
+
+    <sql id="result_list" >
+            a.ID,
+            a.alarm_name,
+            a.be_scene_id,
+            a.be_device_id,
+            a.be_attribute_id,
+            a.be_address,
+            a.be_type,
+            a.compute_rules,
+            a.to_scene_id,
+            a.to_device_id,
+            a.to_attribute_id,
+            a.to_address,
+            a.to_type,
+            a.alar_rules,
+            a.alar_value,
+            a.date_create,
+            a.result_alar_value
+    </sql>
+
+    <select id="findPage" resultType="com.huaxu.vo.DataAlarmAnalysisVo">
+        select
+        <include refid="result_list"></include>
+        from sms_data_alarm_analysis a
+        <where>
+            <if test="alarmName != null and alarmName != ''">
+                and a.alarm_name like CONCAT('%',#{alarmName,jdbcType=VARCHAR},'%')
+            </if>
+            a.status = 1
+        </where>
+        order by id desc
+    </select>
+</mapper>

+ 50 - 0
sms_water/src/main/resources/mapper/DataAlarmDetailMapper.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.alarm.DataAlarmDetailMapper">
+
+    <sql id="result_list" >
+        a.ID,
+            a.alarm_name,
+            a.be_scene_id,
+            a.be_device_id,
+            a.be_attribute_id,
+            a.be_address,
+            a.be_type,
+            a.compute_rules,
+            a.to_scene_id,
+            a.to_device_id,
+            a.to_attribute_id,
+            a.to_address,
+            a.to_type,
+            a.alar_rules,
+            a.alar_value,
+            a.alarm_start_time,
+            a.alarm_end_time
+    </sql>
+
+    <select id="findPage" resultType="com.huaxu.vo.DataAlarmDetailsVo">
+    select
+        <include refid="result_list"></include>
+    from sms_data_alarm_detail a
+    <where>
+        <if test="alarmName != null and alarmName != ''">
+            and a.alarm_name like CONCAT('%',#{alarmName,jdbcType=VARCHAR},'%')
+        </if>
+        <if test="isHistory = 0  and beginTime != null and endTime != null and beginTime != '' and endTime != ''">
+            and a.alarm_start_time  between #{beginTime} and #{endTime}
+        </if>
+        <if test="isHistory = 1  and beginTime != null and endTime != null and beginTime != '' and endTime != ''">
+            and a.alarm_start_time  >= #{beginTime} and  #{endTime} >= a.alarm_start_time
+        </if>
+        a.is_history = #{isHistory} and a.status = 1
+        order by id desc
+    </where>
+    </select>
+
+    <update id="deldelAlarmDetails">
+        update sms_data_alarm_detail
+        set status = 0
+        where id =#{alarmId}
+    </update>
+
+</mapper>

+ 150 - 0
sms_water/src/main/resources/mapper/DataAlarmManageMapper.xml

@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.alarm.DataAlarmManageMapper">
+
+    <sql id="alarmManage_result_list" >
+            a.ID,
+            a.alarm_name,
+            a.be_scene_id,
+            a.be_device_id,
+            a.be_attribute_id,
+            a.be_address,
+            a.be_type,
+            a.compute_rules,
+            a.to_scene_id,
+            a.to_device_id,
+            a.to_attribute_id,
+            a.to_address,
+            a.to_type,
+            a.alar_rules,
+            a.alar_value
+    </sql>
+
+    <insert id="saveDataAlarmManage" useGeneratedKeys="true"  keyProperty="id" parameterType="com.huaxu.entity.alarm.DataAlarmManageEntity">
+        insert sms_data_alarm_manage (alarm_name,company_org_id,dept_org_id,tenant_id,be_scene_id,be_device_id,be_attribute_id,be_type,compute_rules,
+               to_scene_id,to_device_id,to_attribute_id,to_type,alar_rules,alar_value,date_create,status)
+        values
+            (#{alarmName}, #{companyOrgId}, #{deptOrgId}, #{tenantId}, #{beSceneId},#{beDeviceId},
+            #{beAttributeId}, #{beType}, #{computeRules}, #{toSceneId},
+            #{toDeviceId}, #{toAttributeId}, #{toType}, #{alarRules},
+            #{alarValue}, #{dateCreate},#{status})
+    </insert>
+
+    <select id="findPage" resultType="com.huaxu.vo.DataAlarmManageVo">
+        select
+               m.id,m.alarm_name, t2.name as be_attribute_name,s.SCENE_NAME as be_scene_name,
+               m.compute_rules,m.alar_rules,m.alar_value,mm.to_attribute_name,mm.to_scene_name
+        from
+           sms_data_alarm_manage  m
+        INNER JOIN sms_scene s on s.id = m.be_scene_id and s.status = 1
+        INNER JOIN sms_device t1 on m.be_device_id = t1.id and t1.status = 1
+        INNER JOIN sms_device_attribute t2 on m.be_attribute_id=t2.id  and t2.status =1
+        LEFT JOIN  (
+            select m.id, t2.name as to_attribute_name,s.SCENE_NAME as to_scene_name
+            from
+            sms_data_alarm_manage  m
+            INNER JOIN sms_scene s on s.id = m.to_scene_id and s.status = 1
+            INNER JOIN sms_device t1 on m.to_device_id = t1.id and t1.status = 1
+            INNER JOIN sms_device_attribute t2 on m.to_attribute_id=t2.id  and t2.status =1
+        ) mm on mm.id = m.id
+        <where>
+            <if test="dto.userType != null and dto.userType != -999 and dto.userType!=-9999 and  dto.programItems != null and dto.programItems.size() > 0">
+                <if test="dto.permissonType == 5 or dto.permissonType == 2">
+                    and ( a.DEPT_ORG_ID in
+                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    or
+                    a.COMPANY_ORG_ID in
+                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    )
+                </if>
+                <if test="dto.permissonType == 4 or dto.permissonType == 3">
+                    and a.DEPT_ORG_ID in
+                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="dto.permissonType == 1">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                </if>
+            </if>
+            <if test="dto.alarmName != null and dto.alarmName != ''">
+                and a.alarm_name like CONCAT('%',#{dto.alarmName,jdbcType=VARCHAR},'%')
+            </if>
+            a.status = 1
+        </where>
+        order by id desc
+    </select>
+
+    <select id="findAlarmManage" resultType="com.huaxu.vo.DataAlarmManageVo">
+        select
+        <include refid="alarmManage_result_list"></include>
+        from sms_data_alarm_manage a
+        where
+            a.id = #{alarId} and a.status = 1
+    </select>
+
+    <update id="updateDataAlarmManage">
+    update sms_data_alarm_manage
+    set
+        alarm_name = #{alarmName},
+        be_scene_id =#{beSceneId},
+        be_device_id = #{beDeviceId},
+        be_attribute_id = #{beAttributeId},
+        be_address = #{beAddress},
+        be_type = #{beType},
+        compute_rules = #{beAddress},
+        to_scene_id = #{toSceneId},
+        to_device_id= #{toDeviceId},
+        to_attribute_id = #{toAttributeId},
+        to_address = #{toAddress},
+        to_type = #{toType},
+        alar_rules = #{alarRules},
+        alar_value = #{alarValue},
+        date_update = #{dateUpdate}
+    where
+        id =#{alarmId}
+    </update>
+
+    <update id="delDataAlarmManage">
+        update sms_data_alarm_manage
+        set
+            status = 0
+        where
+            id in
+        <foreach collection="alarmIds" item="alarmId" open="(" close=")" separator=",">
+            #{alarmId}
+        </foreach>
+    </update>
+
+
+    <select id="selectDeviceAttributes">
+        select t2.id attribute_id,
+               t2.name attribute_name,
+               t1.ADDRESS,
+               t1.POINT_X,
+               t1.POINT_Y,
+               t1.DEVICE_NAME,
+               a.SCENE_NAME
+        from  sms_data_alarm_manage m
+              inner join sms_device t1
+              inner join sms_device_attribute t2 on t1.device_type_id = t2.device_type_id and t2.status = 1
+              inner join sms_device_parm t3 on t3.device_id = t1.id and t3.attribute_id=t2.id and t3.status=1
+        where
+              t3.device_id=#{deviceId}
+          and t3.scene_id=#{sceneId}
+          and t3.scene_id=#{sceneId}
+          and t2.id = #{attrId}
+          and t1.status  = 1
+          and t3.is_alarm= 1
+    </select>
+
+
+</mapper>