ソースを参照

Merge remote-tracking branch 'origin/20210223' into 20210223

# Conflicts:
#	readme.md
#	sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java
wangyangyang 4 年 前
コミット
3800cd801d
59 ファイル変更2309 行追加203 行削除
  1. 7 2
      operation_manager/src/main/java/com/huaxu/evaluation/job/EvaluationResultJob.java
  2. 35 2
      operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java
  3. 3 2
      operation_manager/src/main/resources/application-dev.properties
  4. 3 2
      operation_manager/src/main/resources/application-prd.properties
  5. 5 4
      operation_manager/src/main/resources/application-sit.properties
  6. 6 1
      readme.md
  7. 114 0
      sms_water/src/main/java/com/huaxu/controller/DataAlarmController.java
  8. 48 127
      sms_water/src/main/java/com/huaxu/controller/DayMonthYearReportController.java
  9. 59 0
      sms_water/src/main/java/com/huaxu/controller/EquipmentStatisticsController.java
  10. 110 0
      sms_water/src/main/java/com/huaxu/controller/RevenueController.java
  11. 79 0
      sms_water/src/main/java/com/huaxu/controller/WaterPropertyController.java
  12. 42 2
      sms_water/src/main/java/com/huaxu/dao/RevenueMapper.java
  13. 17 0
      sms_water/src/main/java/com/huaxu/dao/WaterPropertyMapper.java
  14. 31 0
      sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmAnalysisMapper.java
  15. 40 0
      sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmDetailMapper.java
  16. 70 0
      sms_water/src/main/java/com/huaxu/dao/alarm/DataAlarmManageMapper.java
  17. 4 0
      sms_water/src/main/java/com/huaxu/dto/MonthRevenueDto.java
  18. 19 0
      sms_water/src/main/java/com/huaxu/dto/QueryDeviceMonitorDto.java
  19. 2 0
      sms_water/src/main/java/com/huaxu/dto/ReportQueryDto.java
  20. 35 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmDto.java
  21. 28 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmManageDto.java
  22. 33 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmQueryDto.java
  23. 55 0
      sms_water/src/main/java/com/huaxu/dto/alarm/DataAlarmSettingDto.java
  24. 53 0
      sms_water/src/main/java/com/huaxu/entity/BaseEntity.java
  25. 20 2
      sms_water/src/main/java/com/huaxu/entity/MonthRevenueEntity.java
  26. 77 0
      sms_water/src/main/java/com/huaxu/entity/WaterPropertyEntity.java
  27. 31 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmAnalysisEntity.java
  28. 40 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmDetailEntity.java
  29. 22 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmManageEntity.java
  30. 51 0
      sms_water/src/main/java/com/huaxu/entity/alarm/DataAlarmSetting.java
  31. 30 0
      sms_water/src/main/java/com/huaxu/enums/DataAlarmTypeEnum.java
  32. 82 0
      sms_water/src/main/java/com/huaxu/enums/MathematicalSymbolEnum.java
  33. 2 1
      sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java
  34. 25 0
      sms_water/src/main/java/com/huaxu/service/DataAlarmAnalysisService.java
  35. 35 0
      sms_water/src/main/java/com/huaxu/service/DataAlarmDetailService.java
  36. 65 0
      sms_water/src/main/java/com/huaxu/service/DataAlarmManageService.java
  37. 48 4
      sms_water/src/main/java/com/huaxu/service/RevenueService.java
  38. 91 0
      sms_water/src/main/java/com/huaxu/service/WaterPropertyService.java
  39. 36 1
      sms_water/src/main/java/com/huaxu/service/impl/RevenueServiceImpl.java
  40. 31 0
      sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmAnalysisServiceImpl.java
  41. 37 0
      sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmDetailServiceImpl.java
  42. 87 0
      sms_water/src/main/java/com/huaxu/service/impl/alarm/DataAlarmManageServiceImpl.java
  43. 3 1
      sms_water/src/main/java/com/huaxu/util/ReportExcelUtil.java
  44. 31 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmAnalysisVo.java
  45. 28 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmDetailsVo.java
  46. 28 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmManageVo.java
  47. 56 0
      sms_water/src/main/java/com/huaxu/vo/DataAlarmSettingVo.java
  48. 3 1
      sms_water/src/main/resources/application-sit.properties
  49. 1 1
      sms_water/src/main/resources/application.properties
  50. 2 0
      sms_water/src/main/resources/mapper/AlarmSettingMapper.xml
  51. 37 0
      sms_water/src/main/resources/mapper/DataAlarmAnalysisMapper.xml
  52. 50 0
      sms_water/src/main/resources/mapper/DataAlarmDetailMapper.xml
  53. 150 0
      sms_water/src/main/resources/mapper/DataAlarmManageMapper.xml
  54. 123 3
      sms_water/src/main/resources/mapper/RevenueMapper.xml
  55. 43 22
      user_center/src/main/java/com/huaxu/controller/VerManageController.java
  56. 6 1
      user_center/src/main/java/com/huaxu/dao/VerManageMapper.java
  57. 8 0
      user_center/src/main/java/com/huaxu/entity/VerManageEntity.java
  58. 10 23
      user_center/src/main/java/com/huaxu/service/VerManageService.java
  59. 22 1
      user_center/src/main/resources/mapper/VerManageMapper.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));
+    }
+
+
 }

+ 35 - 2
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java

@@ -8,7 +8,6 @@ import com.huaxu.common.ConvertXY;
 import com.huaxu.common.FileUploadUtil;
 import com.huaxu.common.MyPoint;
 import com.huaxu.entity.Message;
-import com.huaxu.evaluation.service.EvaluationCycleService;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.model.Pagination;
@@ -45,6 +44,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.io.File;
 import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -84,9 +84,11 @@ public class WorkOrderManageController {
     @Value("${UMIS.sys_video_path}")
     private String videoDir;
 
+    @Value("${UMIS.sys_app_package_path}")
+    private String appPackageDir;
+
     /**select
      * 新增一条数据
-     *
      * @param workOrderManage 实体类
      * @return Response对象
      */
@@ -355,6 +357,37 @@ public class WorkOrderManageController {
         return new AjaxMessage<>(ResultStatus.OK, avatar);
     }
 
+    @ApiOperation(value = "上传APP安装包")
+    @RequestMapping(value = "addAppPackage", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<String> addAppPackage(@ApiParam(value = "上传APP安装包", required = true) @RequestParam("avatarfile") MultipartFile file) {
+        String avatar = "";
+        if (!file.isEmpty()) {
+            try {
+                //上传简单文件名
+                String originalFilename = file.getOriginalFilename();
+                String suffixName = originalFilename.substring(originalFilename.lastIndexOf("."));
+                //存储路径
+                if(!suffixName.toLowerCase().equals(".apk")&&!suffixName.toLowerCase().equals(".ipa")){
+                    return new AjaxMessage<>(ResultStatus.ERROR, "上传文件类型不正确");
+                }
+                long size = file.getSize();
+                if (size >  1024 * 1024 * 200) {
+                    return   new AjaxMessage<>(ResultStatus.ERROR, "文件不能超过200M");
+                }
+                avatar = new StringBuffer(appPackageDir).append(originalFilename).toString();
+                File dest = new File(avatar);
+                if(!dest.getParentFile().exists()){
+                    dest.getParentFile().mkdirs();
+                }
+                file.transferTo(new File(avatar));
+            } catch (IOException e) {
+                return new AjaxMessage<>(ResultStatus.ERROR, e.getMessage());
+            }
+        }
+        return new AjaxMessage<>(ResultStatus.OK, avatar);
+    }
+
     @GetMapping("/event/select")
     @ApiOperation(value = "查询事件隐患/所有工单")
     public AjaxMessage<Pagination<WorkOrderManageDto>> selectEvent(

+ 3 - 2
operation_manager/src/main/resources/application-dev.properties

@@ -44,8 +44,8 @@ security.oauth2.resource.user-info-uri=http://localhost:8321/user/principal
 security.oauth2.resource.prefer-token-info=false
 
 
-spring.servlet.multipart.max-file-size=100MB
-spring.servlet.multipart.max-request-size=100MB
+spring.servlet.multipart.max-file-size=200MB
+spring.servlet.multipart.max-request-size=200MB
 spring.servlet.multipart.location=${logging.path}/data
 
 #kafka server
@@ -84,6 +84,7 @@ spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
 UMIS.sys_config_path=/UMIS_USER_IMAGES/
 UMIS.sys_excel_path=/UMIS_USER_EXCEL/
 UMIS.sys_video_path=/UMIS_USER_VIDEOS/
+UMIS.sys_app_package_path=/UMIS_USER_APP_PACKAGE/
 wf.svg.file.path=D:/test/
 
 #=====================ÐÂÔö²ÎÊýÏ̳߳ØÅäÖÃ

+ 3 - 2
operation_manager/src/main/resources/application-prd.properties

@@ -44,8 +44,8 @@ security.oauth2.resource.user-info-uri=http://localhost:8321/user/principal
 security.oauth2.resource.prefer-token-info=false
 
 
-spring.servlet.multipart.max-file-size=100MB
-spring.servlet.multipart.max-request-size=100MB
+spring.servlet.multipart.max-file-size=200MB
+spring.servlet.multipart.max-request-size=200MB
 spring.servlet.multipart.location=${logging.path}/data
 
 #kafka server
@@ -85,6 +85,7 @@ spring.cloud.nacos.discovery.server-addr=10.0.0.136:8848
 UMIS.sys_config_path=/UMIS_USER_IMAGES/
 UMIS.sys_excel_path=/UMIS_USER_EXCEL/
 UMIS.sys_video_path=/UMIS_USER_VIDEOS/
+UMIS.sys_app_package_path=/UMIS_USER_APP_PACKAGE/
 wf.svg.file.path=D:/test/
 
 # 设置 feign 客户端超时时间(OpenFeign 默认支持 ribbon)

+ 5 - 4
operation_manager/src/main/resources/application-sit.properties

@@ -44,8 +44,8 @@ security.oauth2.resource.user-info-uri=http://localhost:8321/user/principal
 security.oauth2.resource.prefer-token-info=false
 
 
-spring.servlet.multipart.max-file-size=100MB
-spring.servlet.multipart.max-request-size=100MB
+spring.servlet.multipart.max-file-size=200MB
+spring.servlet.multipart.max-request-size=200MB
 spring.servlet.multipart.location=${logging.path}/data
 
 #kafka server
@@ -82,8 +82,9 @@ dispath.queue=dispathTest1
 #nacos
 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
 UMIS.sys_config_path=/UMIS_USER_IMAGES/
-UMIS.sys_excel_path=/UMIS_USER_EXCEL/
-UMIS.sys_video_path=/UMIS_USER_VIDEOS/
+UMIS.sys_excel_path=/UMIS_USER_EXCEL
+UMIS.sys_video_path=/UMIS_USER_VIDEOS//
+UMIS.sys_app_package_path=/UMIS_USER_APP_PACKAGE/
 wf.svg.file.path=D:/test/
 
 # 设置 feign 客户端超时时间(OpenFeign 默认支持 ribbon)

+ 6 - 1
readme.md

@@ -250,4 +250,9 @@ CREATE TABLE `uims_ver_manage` (
 
 
 =========已升级到正式环境20210527==================================================================================
-ALTER TABLE sms_report_dimension_setting ADD type int(1) null COMMENT 'null 统计分析 1历史数据';
+## sms 调度数据库
+ALTER TABLE sms_water_property ADD TENANT_ID varchar(100) null COMMENT '租户标识'
+,ADD COMPANY_ORG_ID varchar(11) null COMMENT '所属公司'
+,ADD STATUS smallint(6) null COMMENT '数据删除标记';
+ALTER TABLE sms_month_revenue ADD GENERAL_USER_USAGE_RECEIVED decimal(18,4) null COMMENT '普通用户实收金额',
+ADD BIG_USER_USAGE_RECEIVED decimal(18,4) null COMMENT '大用户实收金额' ;

+ 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)));
+    }
+
+}

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

@@ -62,6 +62,35 @@ public class DayMonthYearReportController {
         Pagination<ReportDto> pages = new Pagination<>(iPage);
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
+
+    @ApiOperation(value = "按年月日统计报表")
+    @RequestMapping(value = "/getReportBySceneIdsNews", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getReportBySceneIdsNews(@RequestBody ReportQueryDto queryDto) {
+        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
+            queryDto.setStartTime(null);
+            queryDto.setEndTime(null);
+        }
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getReportBySceneIdsNew(iPage, queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
+    @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
+    @RequestMapping(value = "/getDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getDevicePressReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
+        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
+            queryDto.setStartTime(null);
+            queryDto.setEndTime(null);
+        }
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage, queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
     @ApiOperation(value = "按设备统计压力及流量年月日统计报表")
     @RequestMapping(value = "/getDevicePressReportByDeviceIds", method = RequestMethod.POST)
     @ResponseBody
@@ -89,6 +118,18 @@ public class DayMonthYearReportController {
 
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
+
+    @ApiOperation(value = "按设备统计水质年月日统计报表")
+    @RequestMapping(value = "/getDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<ReportDto>> getDevicWaterReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
+        queryDto.setType(3);
+        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
+        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage,queryDto);
+        Pagination<ReportDto> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK,pages);
+    }
+
     @ApiOperation(value = "按设备统计水质年月日统计报表")
     @RequestMapping(value = "/getDevicWaterReportByDeviceIds", method = RequestMethod.POST)
     @ResponseBody
@@ -129,123 +170,25 @@ public class DayMonthYearReportController {
         return new AjaxMessage<>(ResultStatus.OK,pages);
     }
 
-
-    @ApiOperation(value = "【统计分析】--按年月日统计报表")
-    @RequestMapping(value = "/getReportBySceneIdsNews", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getReportBySceneIdsNews(@RequestBody ReportQueryDto queryDto) {
-        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
-            queryDto.setStartTime(null);
-            queryDto.setEndTime(null);
-        }
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getReportBySceneIdsNew(iPage, queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
-
-    @ApiOperation(value = "【历史数据】--按日期获取历史数据统计报表")
-    @RequestMapping(value = "/getHistoryDataReportBySceneIdsNews", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getHistoryDataReportBySceneIdsNews(@RequestBody ReportQueryDto queryDto) {
-        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
-            queryDto.setStartTime(null);
-            queryDto.setEndTime(null);
-        }
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getHistoryDataReportBySceneIdsNews(iPage, queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
-    @ApiOperation(value = "【统计分析】--按设备统计压力及流量年月日统计报表")
-    @RequestMapping(value = "/getDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getDevicePressReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
-        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
-            queryDto.setStartTime(null);
-            queryDto.setEndTime(null);
-        }
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage, queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
-    @ApiOperation(value = "【历史数据】--按设备统计压力及流量年月日统计报表")
-    @RequestMapping(value = "/getHistoryDataDevicePressReportByDeviceIdsNew", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getHistoryDataDevicePressReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
-        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())){
-            queryDto.setStartTime(null);
-            queryDto.setEndTime(null);
-        }
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getPipeHistoryDataDevicePressReportByDeviceIds(iPage, queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
-    @ApiOperation(value = "【统计分析】--按设备统计水质年月日统计报表")
-    @RequestMapping(value = "/getDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getDevicWaterReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
-        queryDto.setType(3);
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getPipeDevicePressReportByDeviceIds(iPage,queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
-    @ApiOperation(value = "【历史数据】--按设备统计水质年月日统计报表")
-    @RequestMapping(value = "/getHistoryDataDevicWaterReportByDeviceIdsNew", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<Pagination<ReportDto>> getHistoryDataDevicWaterReportByDeviceIdsNew(@RequestBody ReportQueryDto queryDto) {
-        queryDto.setType(3);
-        IPage<ReportDto> iPage = new Page<>(queryDto.getPageNum(), queryDto.getPageSize());
-        iPage = reportService.getPipeHistoryDataDevicePressReportByDeviceIds(iPage,queryDto);
-        Pagination<ReportDto> pages = new Pagination<>(iPage);
-        return new AjaxMessage<>(ResultStatus.OK,pages);
-    }
-
-    @ApiOperation(value = "【统计分析】--获取自定义报表统计维度")
+    @ApiOperation(value = "获取自定义报表统计维度")
     @RequestMapping(value = "/getCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> getCustomDimension(
             @ApiParam(value = "场景IDS", required = true) @RequestParam(required = true) Long[] ids
            ) {
-        return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(ids, null,0));
-    }
-
-    @ApiOperation(value = "【历史数据】--获取历史数据自定义报表统计维度")
-    @RequestMapping(value = "/getHistoryDataCustomDimension", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<List<ReportAttributeDto>> getHistoryDataCustomDimension(
-            @ApiParam(value = "场景IDS", required = true) @RequestParam(required = true) Long[] ids
-    ) {
-        return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(ids, null, 1));
+        return new AjaxMessage<>(ResultStatus.OK, reportService.findAttributeNameList(ids, null));
     }
 
-    @ApiOperation(value = "【统计分析】--获取管网自定义报表统计维度")
+    @ApiOperation(value = "获取管网自定义报表统计维度")
     @RequestMapping(value = "/getPipelineCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> getPipelineCustomDimension(
             @ApiParam(value = "设备ID", required = true) @RequestParam(required = true) Long deviceId,
             @ApiParam(value = "类型:1压力,2流量,3水质", required = true) @RequestParam(required = true) Integer type) {
-        return new AjaxMessage<>(ResultStatus.OK, reportService.findPipeAttributeNameList(deviceId, type,0));
-    }
-
-    @ApiOperation(value = "【历史数据】--获取管网自定义报表统计维度")
-    @RequestMapping(value = "/getHistoryDataPipelineCustomDimension", method = RequestMethod.POST)
-    @ResponseBody
-    public AjaxMessage<List<ReportAttributeDto>> getHistoryDataPipelineCustomDimension(
-            @ApiParam(value = "设备ID", required = true) @RequestParam(required = true) Long deviceId,
-            @ApiParam(value = "类型:1压力,2流量,3水质", required = true) @RequestParam(required = true) Integer type) {
-        return new AjaxMessage<>(ResultStatus.OK, reportService.findPipeAttributeNameList(deviceId, type,1));
+        return new AjaxMessage<>(ResultStatus.OK, reportService.findPipeAttributeNameList(deviceId, type));
     }
 
-    @ApiOperation(value = "【统计分析/历史数据】--修改自定义报表统计维度")
+    @ApiOperation(value = "修改自定义报表统计维度")
     @RequestMapping(value = "/updateCustomDimension", method = RequestMethod.POST)
     @ResponseBody
     public AjaxMessage<List<ReportAttributeDto>> updateCustomDimension(@RequestBody @Valid List<ReportStatisticalDimensionDto> dataList) {
@@ -254,8 +197,8 @@ public class DayMonthYearReportController {
     }
 
     @RequestMapping(value = "/export/excel", method = RequestMethod.POST)
-    @ApiOperation(value = "【统计分析】--报表导出")
-    public AjaxMessage<String> exportExcel(@RequestBody ReportQueryDto queryDto) {
+    @ApiOperation(value = "报表导出")
+    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);
@@ -275,26 +218,4 @@ public class DayMonthYearReportController {
         return new AjaxMessage<>(ResultStatus.OK, filePath);
     }
 
-    @RequestMapping(value = "/export/historyDataExcel", method = RequestMethod.POST)
-    @ApiOperation(value = "【历史数据】--报表导出")
-    public AjaxMessage<String> historyDataExcel(@RequestBody ReportQueryDto queryDto) {
-        IPage<ReportDto> iPage = new Page<>(1, 1000000);
-        if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())) {
-            queryDto.setStartTime(null);
-            queryDto.setEndTime(null);
-        }
-        if (queryDto.getType() == null) {
-            iPage = reportService.getHistoryDataReportBySceneIdsNews(iPage, queryDto);
-        } else {
-            iPage = reportService.getPipeHistoryDataDevicePressReportByDeviceIds(iPage, queryDto);
-        }
-        List<ReportDto> list = iPage.getRecords();
-        if (CollectionUtil.isEmpty(list)) {
-            return new AjaxMessage<>(ResultStatus.OK);
-        }
-        List<List<String>> reportTitle = ReportExcelUtil.toExcelTitleList(list.get(0).getReportTitle(), queryDto.getSceneType());
-        String filePath = ExcelUtil.writeSimpleExcelWithHeader(baseDir, SceneEnum.getMsg(queryDto.getSceneType()) + "报表", reportTitle, ReportExcelUtil.toReportExcelDto(list, queryDto.getSceneType()));
-        return new AjaxMessage<>(ResultStatus.OK, filePath);
-    }
-
 }

+ 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;
+    }
+}

+ 110 - 0
sms_water/src/main/java/com/huaxu/controller/RevenueController.java

@@ -6,6 +6,7 @@ import com.huaxu.common.StringUtils;
 import com.huaxu.dto.*;
 import com.huaxu.entity.AlarmSetting;
 import com.huaxu.entity.MonthRevenueEntity;
+import com.huaxu.entity.MonthSellwaterEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
@@ -107,11 +108,120 @@ public class RevenueController {
         }
         return new AjaxMessage<>(ResultStatus.OK, result);
     }
+    /**
+     * 同步水表数量
+     *
+     * @return
+     */
     @RequestMapping(value = "syncMeterCount", method = RequestMethod.GET)
     @ApiOperation(value = "同步水表数量")
     public AjaxMessage<Integer> syncMeterCount() {
         revenueService.syncMeterCount();
         return new AjaxMessage<>(ResultStatus.OK);
     }
+    /**
+     * 新增营收数据
+     *
+     * @return
+     */
+    @RequestMapping(value = "addRevenue", method = RequestMethod.POST)
+    @ApiOperation(value = "新增营收数据")
+    public AjaxMessage<Integer> addRevenue(
+            @ApiParam(value = "营收数据", required = true) @RequestBody MonthRevenueDto monthRevenueDto) {
+        try{
+            LoginUser loginUser = UserUtil.getCurrentUser();
+            //插入营收数据
+            monthRevenueDto.setCreateBy(loginUser.getUsername());
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            monthRevenueDto.setCollectDate(sdf.parse(monthRevenueDto.getCollectDateString()));
+            monthRevenueDto.setTenantId(loginUser.getTenantId());
+            convertWRevenue(monthRevenueDto);
+            revenueService.insert(monthRevenueDto);
+            //插入售水数据
+            for (MonthSellwaterEntity entity : monthRevenueDto.getMonthSellList()) {
+                entity.setTenantId(loginUser.getTenantId());
+                entity.setCreateBy(loginUser.getUsername());
+                entity.setCompanyOrgId(monthRevenueDto.getCompanyOrgId());
+                entity.setCollectDate(monthRevenueDto.getCollectDate());
+                if(entity.getWaterUsage() != null){
+                    entity.setWaterUsage(entity.getWaterUsage()/10000);
+                }
+                revenueService.insertSellWater(entity);
+            }
+            return new AjaxMessage<>(ResultStatus.OK);
+        }catch (Exception e){
+            return new AjaxMessage<>(ResultStatus.ERROR);
+        }
 
+    }
+    /**
+     * 修改营收数据
+     *
+     * @return
+     */
+    @RequestMapping(value = "updateRevenue", method = RequestMethod.POST)
+    @ApiOperation(value = "修改营收数据")
+    public AjaxMessage<Integer> updateRevenue(
+            @ApiParam(value = "营收数据", required = true) @RequestBody MonthRevenueDto monthRevenueDto) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        //修改营收数据
+        monthRevenueDto.setUpdateBy(loginUser.getUsername());
+        convertWRevenue(monthRevenueDto);
+        revenueService.updateRevenue(monthRevenueDto);
+        //修改售水数据
+        for (MonthSellwaterEntity entity : monthRevenueDto.getMonthSellList()) {
+            entity.setUpdateBy(loginUser.getUsername());
+            if(entity.getWaterUsage() != null){
+                entity.setWaterUsage(entity.getWaterUsage()/10000);
+            }
+            if(entity.getId() == null){
+                revenueService.insertSellWater(entity);
+            }else{
+                revenueService.updateSellWater(entity);
+            }
+        }
+        return new AjaxMessage<>(ResultStatus.OK);
+    }
+    /**
+     * 将营收数据转换成万
+     *
+     */
+    public void convertWRevenue(MonthRevenueDto monthRevenueDto){
+        if(monthRevenueDto.getBigUserUsage() != null){
+            monthRevenueDto.setBigUserUsage(monthRevenueDto.getBigUserUsage()/10000);
+        }
+        if(monthRevenueDto.getGeneralUserUsage() != null){
+            monthRevenueDto.setGeneralUserUsage(monthRevenueDto.getGeneralUserUsage()/10000);
+        }
+        if(monthRevenueDto.getReceivableTotalAmount() != null){
+            monthRevenueDto.setReceivableTotalAmount(monthRevenueDto.getReceivableTotalAmount()/10000);
+        }
+        if(monthRevenueDto.getBigUserUsageReceived() != null){
+            monthRevenueDto.setBigUserUsageReceived(monthRevenueDto.getBigUserUsageReceived()/10000);
+        }
+        if(monthRevenueDto.getGeneralUserUsageReceived() != null){
+            monthRevenueDto.setGeneralUserUsageReceived(monthRevenueDto.getGeneralUserUsageReceived()/10000);
+        }
+        if(monthRevenueDto.getReceivedTotalAmount() != null){
+            monthRevenueDto.setReceivedTotalAmount(monthRevenueDto.getReceivedTotalAmount()/10000);
+        }
+    }
+    /**
+     * 查询营收数据列表
+     *
+     * @return
+     */
+    @RequestMapping(value = "selectList", method = RequestMethod.GET)
+    @ApiOperation(value = "查询营收数据列表")
+    public AjaxMessage<List<MonthRevenueDto>> selectList(
+            @ApiParam(value = "公司机构id", required = true)@RequestParam Integer companyOrgId,
+            @ApiParam(value = "开始日期(yyyy-MM)", required = true)@RequestParam String startDate,
+            @ApiParam(value = "结束日期(yyyy-MM)", required = true)@RequestParam String endDate) {
+        MonthRevenueDto monthRevenueDto=new MonthRevenueDto();
+        monthRevenueDto.setCompanyOrgId(companyOrgId);
+        monthRevenueDto.setStartDate(startDate);
+        monthRevenueDto.setEndDate(endDate);
+        List<MonthRevenueDto> result = revenueService.selectList(monthRevenueDto);
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
 }

+ 79 - 0
sms_water/src/main/java/com/huaxu/controller/WaterPropertyController.java

@@ -0,0 +1,79 @@
+package com.huaxu.controller;
+
+
+import com.huaxu.entity.WaterPropertyEntity;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.LoginUser;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.service.WaterPropertyService;
+import com.huaxu.util.UserUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 用水性质控制层
+ *
+ * @author yjy
+ * @since 2021-5-31
+ */
+@RestController
+@RequestMapping("/waterProperty")
+@Api(tags = "用水性质")
+public class WaterPropertyController {
+    /**
+     * 服务对象
+     */
+    @Autowired
+    private WaterPropertyService waterPropertyService;
+
+    @RequestMapping(value = "insert", method = RequestMethod.POST)
+    @ApiOperation(value = "增加用水性质信息")
+    public AjaxMessage<Boolean> insert(@ApiParam(value = "用水性质", required = true) @RequestBody WaterPropertyEntity waterPropertyEntity) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        waterPropertyEntity.setTenantId(currentUser.getTenantId());
+        waterPropertyEntity.setCreateBy(currentUser.getUsername());
+        waterPropertyEntity.setStatus(1);
+        return new AjaxMessage<>(ResultStatus.OK, waterPropertyService.insert(waterPropertyEntity));
+    }
+
+    @RequestMapping(value = "delete", method = RequestMethod.GET)
+    @ApiOperation(value = "删除用水性质信息")
+    public AjaxMessage<Boolean> delete(@ApiParam(value = "用水性质id", required = true) @RequestParam Integer id) {
+        return new AjaxMessage<>(ResultStatus.OK, waterPropertyService.delete(id));
+    }
+
+    @RequestMapping(value = "update", method = RequestMethod.POST)
+    @ApiOperation(value = "修改用水性质信息")
+    public AjaxMessage<Boolean> update(@ApiParam(value = "用水性质", required = true) @RequestBody WaterPropertyEntity waterPropertyEntity) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        waterPropertyEntity.setUpdateBy(currentUser.getUsername());
+        return new AjaxMessage<>(ResultStatus.OK, waterPropertyService.update(waterPropertyEntity));
+    }
+
+    @RequestMapping(value = "select", method = RequestMethod.GET)
+    @ApiOperation(value = "查询用水性质信息")
+    public AjaxMessage<List<WaterPropertyEntity>> select(@ApiParam(value = "所属公司id", required = true) @RequestParam Integer companyOrgId) {
+        if(companyOrgId==null){
+            LoginUser currentUser = UserUtil.getCurrentUser();
+            companyOrgId=currentUser.getCompanyId();
+        }
+        return new AjaxMessage<>(ResultStatus.OK, waterPropertyService.select(companyOrgId));
+    }
+
+    @RequestMapping(value = "save", method = RequestMethod.POST)
+    @ApiOperation(value = "批量保存用水性质列表")
+    public AjaxMessage<Boolean> insert(@ApiParam(value = "用水性质列表", required = true) @RequestBody List<WaterPropertyEntity> waterPropertyList) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        for(WaterPropertyEntity waterPropertyEntity:waterPropertyList){
+            waterPropertyEntity.setTenantId(currentUser.getTenantId());
+            waterPropertyEntity.setCreateBy(currentUser.getUsername());
+            waterPropertyEntity.setStatus(1);
+        }
+        return new AjaxMessage<>(ResultStatus.OK, waterPropertyService.save(waterPropertyList));
+    }
+}

+ 42 - 2
sms_water/src/main/java/com/huaxu/dao/RevenueMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.*;
 import com.huaxu.entity.AlarmDetailsEntity;
 import com.huaxu.entity.MonthRevenueEntity;
+import com.huaxu.entity.MonthSellwaterEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -12,7 +13,7 @@ import java.util.List;
 
 /**
  * @description
- * @auto yjy
+ * @author yjy
  * @data 2021-2-24
  */
 @Mapper
@@ -20,58 +21,97 @@ public interface RevenueMapper {
 
     /**
      * 查询本月售水信息
+     * @param monthSellwaterDto 售水信息
      * @return
      */
     List<MonthSellwaterDto> selectMonthSell(MonthSellwaterDto monthSellwaterDto);
 
     /**
      * 查询近6个月的售水量
+     * @param monthSellwaterDto 售水信息
      * @return
      */
     List<MonthSellwaterDto> selectMonthSellTotal(MonthSellwaterDto monthSellwaterDto);
 
     /**
      * 查询近几个月的月营收情况
+     * @param monthRevenueDto 营收信息
      * @return
      */
     List<MonthRevenueDto> selectMonthRevenue(MonthRevenueDto monthRevenueDto);
 
     /**
      * 查询本月各分公司的营收情况
+     * @param monthRevenueDto 营收信息
      * @return
      */
     List<MonthRevenueDto> selectCompanyRevenue(MonthRevenueDto monthRevenueDto);
 
     /**
      * 查询App总览售水数据
+     * @param monthRevenueDto 营收信息
+     * @return
      */
     List<MonthRevenueDto> selectOverviewRevenue(MonthRevenueDto monthRevenueDto);
 
-
+    /**
+     * 查询App总览售水环比
+     * @param monthRevenueDto 营收信息
+     * @return
+     */
     List<MonthRevenueDto> selectRevenueByDate(MonthRevenueDto monthRevenueDto);
 
     /**
      * 查询是否当月有营收数据
+     * @param tenantId 租户id
      * @return
      */
     Integer isExistThisMonthRevenue(String tenantId);
 
     /**
      * 插入营收数据
+     * @param monthRevenueEntity 营收数据
      * @return
      */
     Integer insert(MonthRevenueEntity monthRevenueEntity);
 
     /**
      * 修改营收数据
+     * @param monthRevenueEntity 营收数据
      * @return
      */
     Integer update(MonthRevenueEntity monthRevenueEntity);
 
     /**
      * 查询该租户一级公司id
+     * @param tenantId 租户id
      * @return
      */
     Integer selectCompanyIdByTenant(String tenantId);
 
+    /**
+     * 插入售水数据
+     * @param monthSellwaterEntity 售水信息
+     * @return
+     */
+    Integer insertSellWater(MonthSellwaterEntity monthSellwaterEntity);
+    /**
+     * 修改售水数据
+     * @param monthSellwaterEntity 售水信息
+     * @return
+     */
+    Integer updateSellWater(MonthSellwaterEntity monthSellwaterEntity);
+    /**
+     * 修改营业数据
+     * @param monthRevenueEntity 营业信息
+     * @return
+     */
+    Integer updateRevenue(MonthRevenueEntity monthRevenueEntity);
+    /**
+     * 查询月营收情况
+     * @param monthRevenueDto 营业信息查询条件
+     * @return
+     */
+    List<MonthRevenueDto> selectList(MonthRevenueDto monthRevenueDto);
+
 }

+ 17 - 0
sms_water/src/main/java/com/huaxu/dao/WaterPropertyMapper.java

@@ -0,0 +1,17 @@
+package com.huaxu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaxu.entity.WaterPropertyEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * 用水性质设置Dao接口
+ *
+ * @author yjy
+ * @since 2021-5-31
+ */
+@Mapper
+public interface WaterPropertyMapper extends BaseMapper<WaterPropertyEntity> {
+
+}

+ 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);
+}

+ 4 - 0
sms_water/src/main/java/com/huaxu/dto/MonthRevenueDto.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.huaxu.common.converter.Double1Serializer;
 import com.huaxu.entity.MonthRevenueEntity;
+import com.huaxu.entity.MonthSellwaterEntity;
 import com.huaxu.model.ProgramItem;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -62,4 +63,7 @@ public class MonthRevenueDto extends MonthRevenueEntity {
     @JsonIgnore
     private String userType;
 
+    @ApiModelProperty(value = "用水性质列表")
+    private List<MonthSellwaterEntity> monthSellList;
+
 }

+ 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;
+}

+ 20 - 2
sms_water/src/main/java/com/huaxu/entity/MonthRevenueEntity.java

@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huaxu.common.converter.Double1Serializer;
+import com.huaxu.common.converter.Double3Serializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -46,9 +49,11 @@ public class MonthRevenueEntity implements Serializable {
     private Integer meterReadingCount;
 
     @ApiModelProperty(value = "抄表总水量")
+    @JsonSerialize(using = Double3Serializer.class)
     private Double meterReadingUsage;
 
     @ApiModelProperty(value = "计费总水量")
+    @JsonSerialize(using = Double3Serializer.class)
     private Double chargingUsage;
 
     @ApiModelProperty(value = "抄表完成率")
@@ -64,20 +69,33 @@ public class MonthRevenueEntity implements Serializable {
     private Double receivableTotalAmount;
 
     @ApiModelProperty(value = "实收总金额")
+    @JsonSerialize(using = Double3Serializer.class)
     private Double receivedTotalAmount;
 
     @ApiModelProperty(value = "开票总金额")
+    @JsonSerialize(using = Double3Serializer.class)
     private Double invoicedTotalAmount;
 
     @ApiModelProperty(value = "欠费总金额")
+    @JsonSerialize(using = Double3Serializer.class)
     private Double arrearsTotalAmount;
 
-    @ApiModelProperty(value = "普通客户用水")
+    @ApiModelProperty(value = "普通客户应收金额")
+    @JsonSerialize(using = Double3Serializer.class)
     private Double generalUserUsage;
 
-    @ApiModelProperty(value = "大客户用水")
+    @ApiModelProperty(value = "大客户应收金额")
+    @JsonSerialize(using = Double3Serializer.class)
     private Double bigUserUsage;
 
+    @ApiModelProperty(value = "普通客户实收金额")
+    @JsonSerialize(using = Double3Serializer.class)
+    private Double generalUserUsageReceived;
+
+    @ApiModelProperty(value = "大客户实收金额")
+    @JsonSerialize(using = Double3Serializer.class)
+    private Double bigUserUsageReceived;
+
     @ApiModelProperty(value = "备注")
     private String remark;
 

+ 77 - 0
sms_water/src/main/java/com/huaxu/entity/WaterPropertyEntity.java

@@ -0,0 +1,77 @@
+package com.huaxu.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用水性质(sms_water_property)实体类
+ *
+ * @author yjy
+ * @since 2021-5-31
+ */
+@Data
+@ApiModel
+@TableName("sms_water_property")
+public class WaterPropertyEntity implements Serializable {
+    private static final long serialVersionUID = 460807634914426955L;
+    /**
+     * 主键
+     */
+    @ApiModelProperty(value = "主键")
+    @TableId(type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 租户标识
+     */
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+    /**
+     * 所属公司
+     */
+    @ApiModelProperty(value = "所属公司")
+    private Long companyOrgId;
+    /**
+     * 用水性质
+     */
+    @ApiModelProperty(value = "用水性质")
+    private String propertyName;
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remark;
+    /**
+     * 数据删除标识
+     */
+    @ApiModelProperty(value = "数据删除标识")
+    @TableLogic
+    private Integer status;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date dateCreate;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
+    private Date dateUpdate;
+}

+ 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);
+}

+ 48 - 4
sms_water/src/main/java/com/huaxu/service/RevenueService.java

@@ -4,30 +4,35 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.*;
 import com.huaxu.entity.AlarmDetailsEntity;
 import com.huaxu.entity.MonthRevenueEntity;
+import com.huaxu.entity.MonthSellwaterEntity;
 
 import java.util.List;
 
 /**
+ * @author yjy
  * @description
- * @auto yjy
  * @data 2021-2-24
  */
 public interface RevenueService {
 
     /**
      * 查询本月售水信息
+     * @param companyOrgId 公司id
      * @return
      */
     List<MonthSellwaterDto> selectMonthSell(Integer companyOrgId);
 
     /**
      * 查询近6个月总售水量
+     * @param companyOrgId 公司id
      * @return
      */
     List<MonthSellwaterDto> selectMonthSellTotal(Integer companyOrgId);
 
     /**
      * 查询月营收情况
+     * @param companyOrgId 公司id
+     * @param months 几个月
      * @return
      */
     List<MonthRevenueDto> selectMonthRevenue(Integer companyOrgId,Integer months);
@@ -38,31 +43,45 @@ public interface RevenueService {
      */
     List<MonthRevenueDto> selectCompanyRevenue();
 
-
-    //查询App总览售水数据
+    /**
+     * 查询App总览售水数据
+     * @param companyOrgId 公司id
+     * @param months 几个月
+     * @return
+     */
     List<MonthRevenueDto> selectOverviewRevenue(Integer companyOrgId,Integer months);
 
-    //查询App总览售水环比
+    /**
+     * 查询App总览售水环比
+     * @param companyOrgId 公司id
+     * @param startDate 开始时间
+     * @param endDate 结束时间
+     * @return
+     */
     List<MonthRevenueDto> selectRevenueByDate(Integer companyOrgId, String startDate, String endDate);
 
     /**
      * 查询是否当月有营收数据
+     * @param tenantId 租户id
      * @return
      */
     Integer isExistThisMonthRevenue(String tenantId);
 
     /**
      * 插入营收数据
+   * @param monthRevenueEntity 营收数据
      * @return
      */
     Integer insert(MonthRevenueEntity monthRevenueEntity);
     /**
      * 修改营收数据
+     * @param monthRevenueEntity 营收数据
      * @return
      */
     Integer update(MonthRevenueEntity monthRevenueEntity);
     /**
      * 查询该租户一级公司id
+     * @param tenantId 租户id
      * @return
      */
     Integer selectCompanyIdByTenant(String tenantId);
@@ -72,5 +91,30 @@ public interface RevenueService {
      */
     void syncMeterCount();
 
+    /**
+     * 插入售水数据
+     * @param monthSellwaterEntity 售水信息
+     * @return
+     */
+    Integer insertSellWater(MonthSellwaterEntity monthSellwaterEntity);
+    /**
+     * 修改售水数据
+     * @param monthSellwaterEntity 售水信息
+     * @return
+     */
+    Integer updateSellWater(MonthSellwaterEntity monthSellwaterEntity);
+
+    /**
+     * 修改营业数据
+     * @param monthRevenueEntity 营业信息
+     * @return
+     */
+    Integer updateRevenue(MonthRevenueEntity monthRevenueEntity);
 
+    /**
+     * 查询月营收情况
+     * @param monthRevenueDto 营业信息查询条件
+     * @return
+     */
+    List<MonthRevenueDto> selectList(MonthRevenueDto monthRevenueDto);
 }

+ 91 - 0
sms_water/src/main/java/com/huaxu/service/WaterPropertyService.java

@@ -0,0 +1,91 @@
+package com.huaxu.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaxu.dao.WaterPropertyMapper;
+import com.huaxu.dto.OnlineDataDto;
+import com.huaxu.entity.WaterPropertyEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 用水性质服务接口
+ *
+ * @author yjy
+ * @since 2021-5-31
+ */
+@Service
+public class WaterPropertyService extends ServiceImpl<WaterPropertyMapper, WaterPropertyEntity> {
+
+    /**
+     * 增加数据
+     *
+     * @param waterPropertyEntity
+     * @return
+     * */
+    public boolean insert(WaterPropertyEntity waterPropertyEntity) {
+        return this.save(waterPropertyEntity);
+    }
+    /**
+     * 删除数据
+     *
+     * @param id
+     * @return
+     * */
+    public boolean delete(Integer id) {
+        return this.removeById(id);
+    }
+    /**
+     * 修改数据
+     *
+     * @param waterPropertyEntity
+     * @return
+     * */
+    public boolean update(WaterPropertyEntity waterPropertyEntity) {
+        return this.updateById(waterPropertyEntity);
+    }
+    /**
+     * 查询数据
+     *
+     * @param companyOrgId
+     * @return
+     * */
+    public List<WaterPropertyEntity> select(Integer companyOrgId) {
+        return this.list(new QueryWrapper<WaterPropertyEntity>().eq("COMPANY_ORG_ID", companyOrgId));
+    }
+    /**
+     * 保存数据
+     *
+     * @param waterPropertyList
+     * @return
+     * */
+    public boolean save(List<WaterPropertyEntity> waterPropertyList) {
+        boolean flag=true;
+        try {
+            if(waterPropertyList.size()>0){
+                //删除多余的数据
+                List<WaterPropertyEntity> oldList=this.list(new QueryWrapper<WaterPropertyEntity>()
+                        .eq("COMPANY_ORG_ID", waterPropertyList.get(0).getCompanyOrgId()));
+                List<Integer> newIdList=waterPropertyList.stream().map(WaterPropertyEntity::getId).collect(Collectors.toList());
+                List<Integer> removeIds=new ArrayList<>();
+                //原来数据中id 没有 现在的id的 为要删除的数据
+                for(WaterPropertyEntity entity : oldList){
+                    if(!newIdList.contains(entity.getId())){
+                        removeIds.add(entity.getId());
+                    }
+                }
+                if(removeIds.size()>0){
+                    flag=this.removeByIds(removeIds);
+                }
+                //新增和修改数据
+                flag=this.saveOrUpdateBatch(waterPropertyList);
+            }
+        }catch (Exception e){
+            flag=false;
+        }
+        return flag;
+    }
+}

+ 36 - 1
sms_water/src/main/java/com/huaxu/service/impl/RevenueServiceImpl.java

@@ -3,6 +3,7 @@ package com.huaxu.service.impl;
 import com.huaxu.dao.RevenueMapper;
 import com.huaxu.dto.*;
 import com.huaxu.entity.MonthRevenueEntity;
+import com.huaxu.entity.MonthSellwaterEntity;
 import com.huaxu.model.LoginUser;
 import com.huaxu.quartz.entity.QuartzEntity;
 import com.huaxu.quartz.job.SyncMeterCountJob;
@@ -21,7 +22,7 @@ import java.util.*;
 
 /**
  * @description
- * @auto yjy
+ * @author yjy
  * @data 2021-2-24
  */
 @Service
@@ -257,4 +258,38 @@ public class RevenueServiceImpl implements RevenueService, InitializingBean {
             }
         }
     }
+
+    /**
+     * 插入售水数据
+     * @return
+     */
+    @Override
+    public  Integer insertSellWater(MonthSellwaterEntity monthSellwaterEntity) {
+        return revenueMapper.insertSellWater(monthSellwaterEntity);
+    }
+    /**
+     * 修改售水数据
+     * @return
+     */
+    @Override
+    public  Integer updateSellWater(MonthSellwaterEntity monthSellwaterEntity) {
+        return revenueMapper.updateSellWater(monthSellwaterEntity);
+    }
+    /**
+     * 修改营业数据
+     * @return
+     */
+    @Override
+    public  Integer updateRevenue(MonthRevenueEntity monthRevenueEntity) {
+        return revenueMapper.updateRevenue(monthRevenueEntity);
+    }
+    /**
+     * 查询月营收情况
+     * @param monthRevenueDto 营业信息查询条件
+     * @return
+     */
+    @Override
+    public List<MonthRevenueDto> selectList(MonthRevenueDto monthRevenueDto){
+        return revenueMapper.selectList(monthRevenueDto);
+    }
 }

+ 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>

+ 123 - 3
sms_water/src/main/resources/mapper/RevenueMapper.xml

@@ -1,6 +1,24 @@
 <?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.RevenueMapper">
+    <!-- 结果集 -->
+    <resultMap type="com.huaxu.dto.MonthRevenueDto" id="revenueDtoMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="collectDateString" column="collect_date_string" jdbcType="VARCHAR"/>
+        <result property="receivableTotalAmount" column="receivable_total_amount" jdbcType="VARCHAR"/>
+        <result property="receivedTotalAmount" column="received_total_amount" jdbcType="VARCHAR"/>
+        <result property="meterReadingUsage" column="meter_reading_usage" jdbcType="VARCHAR"/>
+        <result property="generalUserUsage" column="general_user_usage" jdbcType="VARCHAR"/>
+        <result property="bigUserUsage" column="big_user_usage" jdbcType="VARCHAR"/>
+        <result property="generalUserUsageReceived" column="general_user_usage_received" jdbcType="VARCHAR"/>
+        <result property="bigUserUsageReceived" column="big_user_usage_received" jdbcType="VARCHAR"/>
+        <collection property="monthSellList" ofType="com.huaxu.entity.MonthSellwaterEntity" javaType="list">
+            <result property="id" column="sell_id" jdbcType="INTEGER"/>
+            <result property="propertyId" column="property_id" jdbcType="INTEGER"/>
+            <result property="waterUsage" column="water_usage" jdbcType="VARCHAR"/>
+        </collection>
+    </resultMap>
+
     <!--查询本月售水信息-->
     <select id="selectMonthSell" resultType="com.huaxu.dto.MonthSellwaterDto">
         select t2.property_name ,sum(t1.water_usage) water_usage
@@ -177,11 +195,12 @@
         insert into sms_month_revenue(`tenant_id`, `company_org_id`, `collect_date`, `user_meter_count`, `user_meter_add_count`,
         `meter_reading_count`, `meter_reading_usage`, `charging_usage`, `meter_reading_finished_rate`, `meter_reading_arrival_rate`,
         `meter_reading_error_rate`, `receivable_total_amount`, `received_total_amount`, `invoiced_total_amount`,
-        `arrears_total_amount`, `general_user_usage`, `big_user_usage`, `remark`, `date_create`, `create_by`, `date_update`, `update_by`)
+        `arrears_total_amount`, `general_user_usage`, `big_user_usage`, `remark`, `date_create`, `create_by`, `date_update`, `update_by`,
+        `general_user_usage_received`, `big_user_usage_received`)
         values (#{tenantId},#{companyOrgId},#{collectDate},#{userMeterCount},#{userMeterAddCount},#{meterReadingCount},
         #{meterReadingUsage},#{chargingUsage},#{meterReadingFinishedRate},#{meterReadingArrivalRate},#{meterReadingErrorRate},
         #{receivableTotalAmount},#{receivedTotalAmount},#{invoicedTotalAmount},#{arrearsTotalAmount},#{generalUserUsage},
-        #{bigUserUsage},#{remark},now(),null,now(),null)
+        #{bigUserUsage},#{remark},now(),null,now(),null,#{generalUserUsageReceived},#{bigUserUsageReceived})
     </insert>
     <!-- 通过租户id修改当月数据 -->
     <update id="update">
@@ -193,7 +212,7 @@
             <if test="userMeterAddCount != null and userMeterAddCount != 0">
                 user_meter_add_count  = #{userMeterAddCount},
             </if>
-            DATE_UPDATE  = now()
+            date_update  = now()
         </set>
         where tenant_id  = #{tenantId} and collect_date>=date_format(curdate(), '%Y-%m-1' )
     </update>
@@ -203,4 +222,105 @@
         from  uims.uims_org
         where parent_org_id=0 and tenant_id=#{tenantId}
     </select>
+    <!-- 新增售水信息-->
+    <insert id="insertSellWater">
+        insert into sms_month_sellwater (tenant_id,company_org_id,property_id,collect_date,water_usage,remark,create_by)
+        values(#{tenantId}, #{companyOrgId}, #{propertyId}, #{collectDate}, #{waterUsage},#{remark},#{createBy})
+    </insert>
+    <!-- 通过id修改营收数据 -->
+    <update id="updateRevenue">
+        update  sms_month_revenue
+        <set>
+            <if test="collectDate != null">
+                collect_date  = #{collectDate},
+            </if>
+            <if test="userMeterAddCount != null">
+                user_meter_add_count  = #{userMeterAddCount},
+            </if>
+            <if test="userMeterCount != null">
+                user_meter_count  = #{userMeterCount},
+            </if>
+            <if test="meterReadingCount != null">
+                meter_reading_count  = #{meterReadingCount},
+            </if>
+            <if test="meterReadingUsage != null">
+                meter_reading_usage  = #{meterReadingUsage},
+            </if>
+            <if test="chargingUsage != null">
+                charging_usage  = #{chargingUsage},
+            </if>
+            <if test="meterReadingFinishedRate != null">
+                meter_reading_finished_rate  = #{meterReadingFinishedRate},
+            </if>
+            <if test="meterReadingArrivalRate != null">
+                meter_reading_arrival_rate  = #{meterReadingArrivalRate},
+            </if>
+            <if test="meterReadingErrorRate != null">
+                meter_reading_error_rate  = #{meterReadingErrorRate},
+            </if>
+            <if test="receivableTotalAmount != null">
+                receivable_total_amount  = #{receivableTotalAmount},
+            </if>
+            <if test="receivedTotalAmount != null">
+                received_total_amount  = #{receivedTotalAmount},
+            </if>
+            <if test="invoicedTotalAmount != null">
+                invoiced_total_amount  = #{invoicedTotalAmount},
+            </if>
+            <if test="arrearsTotalAmount != null">
+                arrears_total_amount  = #{arrearsTotalAmount},
+            </if>
+            <if test="generalUserUsage != null">
+                general_user_usage  = #{generalUserUsage},
+            </if>
+            <if test="bigUserUsage != null">
+                big_user_usage  = #{bigUserUsage},
+            </if>
+            <if test="remark != null">
+                remark  = #{remark},
+            </if>
+            <if test="updateBy != null">
+                update_by  = #{updateBy},
+            </if>
+            <if test="generalUserUsageReceived != null">
+                general_user_usage_received  = #{generalUserUsageReceived},
+            </if>
+            <if test="bigUserUsageReceived != null">
+                big_user_usage_received  = #{bigUserUsageReceived},
+            </if>
+        </set>
+        where id  = #{id}
+    </update>
+    <!-- 通过id修改售水数据 -->
+    <update id="updateSellWater">
+        update  sms_month_sellwater
+        <set>
+            <if test="collectDate != null">
+                collect_date  = #{collectDate},
+            </if>
+            <if test="waterUsage != null">
+                water_usage  = #{waterUsage},
+            </if>
+            <if test="remark != null">
+                remark  = #{remark},
+            </if>
+            <if test="updateBy != null">
+                update_by  = #{updateBy},
+            </if>
+        </set>
+        where id  = #{id}
+    </update>
+    <!-- 通过公司id查询营收数据 -->
+    <select id="selectList" resultMap="revenueDtoMap">
+        select t1.id,date_format(t1.collect_date,'%Y年%m月') as collect_date_string,meter_reading_usage*10000 as meter_reading_usage
+               ,receivable_total_amount*10000 as receivable_total_amount,received_total_amount*10000 as received_total_amount,big_user_usage*10000 as big_user_usage
+               ,general_user_usage*10000 as general_user_usage,t2.id as property_id,t3.id as sell_id,t3.water_usage*10000 as water_usage
+               ,general_user_usage_received*10000 as general_user_usage_received,big_user_usage_received*10000 as big_user_usage_received
+        from sms_month_revenue t1
+        left join sms_water_property t2 on t1.company_org_id=t2.company_org_id and t1.tenant_id=t2.tenant_id and t2.status=1
+        left join sms_month_sellwater t3 on t2.id=t3.property_id and date_format(t1.collect_date,'%Y-%m-%d')= date_format(t3.collect_date,'%Y-%m-%d')
+        where t1.company_org_id = #{companyOrgId} and t1.collect_date >= concat(#{startDate}, '-1')
+            and t1.collect_date  &lt; concat(#{endDate}, '-1') + interval 1 month
+        order by t1.collect_date
+    </select>
 </mapper>

+ 43 - 22
user_center/src/main/java/com/huaxu/controller/VerManageController.java

@@ -2,11 +2,12 @@ package com.huaxu.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.huaxu.entity.App;
+
+import com.huaxu.entity.Dict;
 import com.huaxu.entity.UserEntity;
 import com.huaxu.entity.VerManageEntity;
 import com.huaxu.model.*;
-import com.huaxu.service.AppService;
+import com.huaxu.service.DictService;
 import com.huaxu.service.UserService;
 import com.huaxu.service.VerManageService;
 import com.huaxu.util.UserUtil;
@@ -14,14 +15,10 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.StringUtils;
+
 import org.springframework.web.bind.annotation.*;
 
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -43,15 +40,8 @@ public class VerManageController {
     @Autowired
     private UserService userService;
 
-    /**
-     * 查询app版本信息
-     * @return 单条数据
-     */
-    @RequestMapping(value = "selectVer", method = RequestMethod.GET)
-    @ApiOperation(value = "查询app版本信息")
-    public AjaxMessage<VerManageEntity> selectVer() {
-        return new AjaxMessage<>(ResultStatus.OK, verManageService.selectVer());
-    }
+    @Autowired
+    private DictService dictService;
 
     /**
      * 查询app版本信息
@@ -59,12 +49,16 @@ public class VerManageController {
      */
     @RequestMapping(value = "findVerManage", method = RequestMethod.GET)
     @ApiOperation(value = "查询app版本信息")
-    public AjaxMessage<List<VerManageEntity>> findVerManage(
+    public AjaxMessage<Pagination<VerManageEntity>> findVerManage(
+            @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum,
+            @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize,
             @ApiParam(value = "版本ID", required = false) @RequestParam(required = false) String verId,
             @ApiParam(value = "产品类型", required = false) @RequestParam(required = false) String productType) {
-        List<VerManageEntity> list = verManageService.findVerManage(verId,productType);
-        setName(list);
-        return new AjaxMessage<>(ResultStatus.OK, list);
+        IPage<VerManageEntity> iPage = new Page<>(pageNum, pageSize);
+        iPage = verManageService.findVerManage(iPage,verId,productType);
+        Pagination<VerManageEntity> pages = new Pagination<>(iPage);
+        setName(pages.getList());
+        return new AjaxMessage<>(ResultStatus.OK, pages);
     }
 
     /**
@@ -102,6 +96,26 @@ public class VerManageController {
     }
 
 
+    /**
+     * 删除APP版本信息
+     */
+    @PostMapping(value = "deleteVerManage")
+    @ApiOperation(value = "删除版本管理")
+    public AjaxMessage<Object> deleteVerManage(
+            @ApiParam(value = "要删除的版本ID,多个ID之间用逗号隔开", required = true) @RequestBody String ids){
+        String [] idArray = ids.split(",");
+        if(idArray.length==0){
+            return new AjaxMessage<>(ResultStatus.ERROR,"参数异常");
+        }
+        List<String> idList = Arrays.asList(idArray);
+        int result = verManageService.deleteSelective(idList);
+        if(result>0){
+            return new AjaxMessage<>(ResultStatus.OK);
+        }
+        return new AjaxMessage<>(ResultStatus.ERROR);
+    }
+
+
     /**
      * 获取并设置用户、任务工单类型名称
      * @param result
@@ -124,10 +138,17 @@ public class VerManageController {
                 }
                 List<UserEntity> userEntityList=userService.findUserIdsByUserIds(idList);
                 Map<Long,String> userMap = userEntityList.stream().collect(Collectors.toMap(UserEntity::getId, UserEntity::getUsername));
-                Map<Long,String> userPhoneMap = userEntityList.stream().collect(Collectors.toMap(UserEntity::getId, UserEntity::getPhone));
+                String parentDictCodes="SYSTEM_PRODUCT_TYPE";
+                Map<String,String> dictMap=new HashMap<>();
+                for(String parentDictCode:parentDictCodes.split(",")){
+                    Dict dict=new Dict();
+                    dict.setParentDictCode(parentDictCode);
+                    dictMap.putAll(dictService.selectList(dict).stream().collect(Collectors.toMap(Dict::getDictCode, Dict::getDictValue)));
+                }
                 for(int i = 0; i < result.size(); i++) {
                     VerManageEntity verManage = result.get(i);
                     try {
+                        verManage.setProductTypeName(dictMap.get(verManage.getProductType()));
                         if (verManage.getCreateBy() != null) {
                             verManage.setCreateByName(userMap.get(Long.valueOf(verManage.getCreateBy())));
                         }

+ 6 - 1
user_center/src/main/java/com/huaxu/dao/VerManageMapper.java

@@ -1,9 +1,12 @@
 package com.huaxu.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.entity.VerManageEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 /**
@@ -15,9 +18,11 @@ import java.util.List;
 @Mapper
 public interface VerManageMapper extends BaseMapper<VerManageEntity> {
 
-    List<VerManageEntity> findVerManage(@Param("verId") String verId,@Param("productType") String productType);
+    Page<VerManageEntity> findVerManage(IPage<VerManageEntity> page, @Param("verId") String verId, @Param("productType") String productType);
 
     int insertSelective(VerManageEntity verManageEntity);
 
     int updateByPrimaryKeySelective(VerManageEntity verManageEntity);
+
+    int deleteSelective(@Param("ids") List<String> ids);
 }

+ 8 - 0
user_center/src/main/java/com/huaxu/entity/VerManageEntity.java

@@ -80,9 +80,17 @@ public class VerManageEntity implements Serializable {
     @ApiModelProperty(value = "产品类型")
     private String productType;
 
+    /** 产品类型 */
+    @ApiModelProperty(value = "产品类型名称")
+    private String productTypeName;
+
     /** 强制升级版本 */
     @ApiModelProperty(value = "强制升级版本")
     private String forcedUpgradeVer;
+    
+    /** 下载地址 */
+    @ApiModelProperty(value = "下载地址")
+    private String download;
 
     /** 是否最新版本 */
     @ApiModelProperty(value = "是否最新版本")

+ 10 - 23
user_center/src/main/java/com/huaxu/service/VerManageService.java

@@ -1,36 +1,19 @@
 package com.huaxu.service;
 
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.huaxu.common.ToolUtil;
-import com.huaxu.dao.OrgMapper;
-import com.huaxu.dao.UserMapper;
 import com.huaxu.dao.VerManageMapper;
-import com.huaxu.dto.MaintainerCountDto;
-import com.huaxu.dto.UserListDto;
+
 import com.huaxu.entity.*;
-import com.huaxu.model.LoginUser;
-import com.huaxu.util.ByteArrayUtils;
-import com.huaxu.util.RedisUtil;
-import com.huaxu.util.UserUtil;
+
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
+
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
 
-import javax.annotation.Resource;
-import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.stream.Collectors;
+
 
 /**
  *
@@ -52,8 +35,8 @@ public class VerManageService extends ServiceImpl<VerManageMapper, VerManageEnti
 		return res;
 	}
 
-	public List<VerManageEntity> findVerManage(String verId, String productType){
-		return verManageMapper.findVerManage(verId,productType);
+	public Page<VerManageEntity> findVerManage(IPage<VerManageEntity> page,String verId, String productType){
+		return verManageMapper.findVerManage(page, verId, productType);
 	}
 
 	public int insertSelective(VerManageEntity verManageEntity){
@@ -63,4 +46,8 @@ public class VerManageService extends ServiceImpl<VerManageMapper, VerManageEnti
 	public int updateByPrimaryKeySelective(VerManageEntity verManageEntity){
 		return verManageMapper.updateByPrimaryKeySelective(verManageEntity);
 	}
+
+	public int deleteSelective(List<String> ids){
+		return verManageMapper.deleteSelective(ids);
+	}
 }

+ 22 - 1
user_center/src/main/resources/mapper/VerManageMapper.xml

@@ -18,6 +18,7 @@
         <result property="productType"    column="product_type"    />
         <result property="forcedUpgradeVer"    column="forced_upgrade_ver"    />
         <result property="isNewestVer"    column="is_newest_ver"    />
+        <result property="download"    column="download"    />
     </resultMap>
 
     <!--  实体  -->
@@ -35,7 +36,8 @@
          a.cur_app_ver as "curAppVer" ,
          a.product_type as "productType" ,
          a.forced_upgrade_ver as "forcedUpgradeVer" ,
-         a.is_newest_ver as "isNewestVer"
+         a.is_newest_ver as "isNewestVer" ,
+         a.download as "download"
      </sql>
 
     <!--  根据主键获取实体   -->
@@ -61,6 +63,9 @@
             <if test="verUrl != null" >
                 ver_url,
             </if>
+            <if test="download != null" >
+                download,
+            </if>
             <if test="isForcedUpgrade != null" >
                 is_forced_upgrade,
             </if>
@@ -103,6 +108,9 @@
             <if test="verUrl != null" >
                 #{verUrl,jdbcType=VARCHAR},
             </if>
+            <if test="download != null" >
+                #{download,jdbcType=VARCHAR},
+            </if>
             <if test="isForcedUpgrade != null" >
                 #{isForcedUpgrade,jdbcType=INTEGER},
             </if>
@@ -149,6 +157,9 @@
             <if test="verUrl != null" >
                 ver_url = #{verUrl,jdbcType=VARCHAR},
             </if>
+            <if test="download != null" >
+                download = #{download,jdbcType=VARCHAR},
+            </if>
             <if test="isForcedUpgrade != null" >
                 is_forced_upgrade = #{isForcedUpgrade,jdbcType=INTEGER},
             </if>
@@ -182,4 +193,14 @@
         </set>
         where id = #{id,jdbcType=INTEGER}
     </update>
+
+    <delete id="deleteSelective" parameterType="map">
+        update uims_ver_manage
+        set status = 0
+        where id in
+        <foreach collection="ids" item="item" open="(" close=")" separator=",">
+            #{item,jdbcType=INTEGER}
+        </foreach>
+    </delete>
+
 </mapper>