Browse Source

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

hym 4 years ago
parent
commit
e93f6ddec0
21 changed files with 1200 additions and 9 deletions
  1. 5 0
      sms_water/src/main/java/com/huaxu/client/UserCenterClient.java
  2. 132 0
      sms_water/src/main/java/com/huaxu/controller/HomePageReportController.java
  3. 65 0
      sms_water/src/main/java/com/huaxu/dao/HomePageReportMapper.java
  4. 5 2
      sms_water/src/main/java/com/huaxu/dao/MonitorDataReportMapper.java
  5. 3 1
      sms_water/src/main/java/com/huaxu/dto/generalView/DeviceWaterSupply.java
  6. 10 0
      sms_water/src/main/java/com/huaxu/dto/generalView/WaterSupplyChart.java
  7. 28 0
      sms_water/src/main/java/com/huaxu/dto/homePage/CompanyCount.java
  8. 43 0
      sms_water/src/main/java/com/huaxu/dto/homePage/CompanyProduce.java
  9. 47 0
      sms_water/src/main/java/com/huaxu/dto/homePage/WaterQualityRate.java
  10. 35 0
      sms_water/src/main/java/com/huaxu/dto/homePage/WaterQualityRateForScene.java
  11. 52 0
      sms_water/src/main/java/com/huaxu/service/HomePageReportService.java
  12. 5 0
      sms_water/src/main/java/com/huaxu/service/MonitorDataReportService.java
  13. 355 0
      sms_water/src/main/java/com/huaxu/service/impl/HomePageReportServiceImpl.java
  14. 6 6
      sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java
  15. 369 0
      sms_water/src/main/resources/mapper/HomePageReportMapper.xml
  16. 7 0
      sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml
  17. 4 0
      user_center/src/main/java/com/huaxu/controller/OrgController.java
  18. 5 0
      user_center/src/main/java/com/huaxu/dao/OrgMapper.java
  19. 3 0
      user_center/src/main/java/com/huaxu/service/OrgService.java
  20. 6 0
      user_center/src/main/java/com/huaxu/service/impl/OrgServiceImpl.java
  21. 15 0
      user_center/src/main/resources/mapper/OrgMapper.xml

+ 5 - 0
sms_water/src/main/java/com/huaxu/client/UserCenterClient.java

@@ -6,6 +6,8 @@ import com.huaxu.entity.Org;
 import com.huaxu.model.AjaxMessage;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
@@ -30,4 +32,7 @@ public interface UserCenterClient {
 
     @PostMapping("/user/findUserIdsByPermissonOrg")
     List<Integer> findUserIdsByPermissonOrg(@RequestParam("tenantId")String tenantId, @RequestParam("companyOrgId")Integer companyOrgId, @RequestParam("deptOrgId")Integer deptOrgId);
+
+    @PostMapping(value = "/org/countCompanyByUser")
+    Integer countCompanyByUser();
 }

+ 132 - 0
sms_water/src/main/java/com/huaxu/controller/HomePageReportController.java

@@ -0,0 +1,132 @@
+package com.huaxu.controller;
+
+import com.huaxu.dto.generalView.DeviceWaterSupply;
+import com.huaxu.dto.generalView.WaterSupplyChart;
+import com.huaxu.dto.homePage.CompanyCount;
+import com.huaxu.dto.homePage.CompanyProduce;
+import com.huaxu.dto.homePage.WaterQualityRate;
+import com.huaxu.dto.homePage.WaterQualityRateForScene;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.service.HomePageReportService;
+import com.huaxu.service.MonitorDataReportService;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2021/2/24 9:09
+ */
+@RestController
+@RequestMapping("/homePageReport")
+@Api(tags = "主页大屏报表")
+public class HomePageReportController {
+
+    @Autowired
+    private HomePageReportService homePageReportService;
+
+
+
+
+    @RequestMapping(value = "getDeviceWaterIntake",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——取水图表")
+    public AjaxMessage<List<DeviceWaterSupply>> getDeviceWaterIntake(
+            @ApiParam(value = "公司id,总公司传空值") Integer companyOrgId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.deviceWaterReportForSixMonth(companyOrgId,"水源",4));
+    }
+
+    @RequestMapping(value = "getDeviceWaterMaking",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——制水图表")
+    public AjaxMessage<List<DeviceWaterSupply>> getDeviceWaterMaking(
+            @ApiParam(value = "公司id,总公司传空值") Integer companyOrgId
+    ){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.deviceWaterReportForSixMonth(companyOrgId,"水厂",3));
+    }
+
+
+    @RequestMapping(value = "getCompanyResouces",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——公司资源统计")
+    public AjaxMessage<CompanyCount> getCompanyResouces(
+            @ApiParam(value = "公司id,总公司传空值") Integer companyOrgId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.countSceneByType(companyOrgId));
+    }
+
+    @RequestMapping(value = "getDeviceWaterAmount",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——生产经营(制水售水)统计")
+    public AjaxMessage<CompanyProduce> getDeviceWaterAmount(
+            @ApiParam(value = "公司id,总公司传空值") Integer companyOrgId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.deviceWaterAmount(companyOrgId));
+    }
+
+    @RequestMapping(value = "getWaterQualification",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——水质安全")
+    public AjaxMessage<WaterQualityRate> getWaterQualification(
+            @ApiParam(value = "公司id,总公司传空值") Integer companyOrgId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.getWaterQualification(companyOrgId));
+    }
+
+    @RequestMapping(value = "getWaterIntakeFifteenDays",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——水库取水15天")
+    public AjaxMessage<List<DeviceWaterSupply>> getWaterIntakeFifteenDays(
+            @ApiParam(value = "水库id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.monitorDataFifteenDays(sceneId,"水源",4));
+    }
+    @RequestMapping(value = "getWaterLevelFifteenDays",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——水库水位15天")
+    public AjaxMessage<List<DeviceWaterSupply>> getWaterLevelFifteenDays(
+            @ApiParam(value = "水库id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.monitorDataFifteenDays(sceneId,"水源",12));
+    }
+
+    @RequestMapping(value = "getWaterMakingFifteenDays",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——水厂制水15天")
+    public AjaxMessage<List<DeviceWaterSupply>> getWaterMakingFifteenDays(
+            @ApiParam(value = "水厂id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.monitorDataFifteenDays(sceneId,"水厂",3));
+    }
+
+    @RequestMapping(value = "getWaterQualityRateForWaterSource",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——水库水质")
+    public AjaxMessage<WaterQualityRateForScene> waterQualityRateForWaterSource(
+            @ApiParam(value = "水库id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.waterQualityRateForWaterSource(sceneId));
+    }
+
+    @RequestMapping(value = "waterQualityRateForWaterFactory",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——水厂水质")
+    public AjaxMessage<WaterQualityRateForScene> waterQualityRateForWaterFactory(
+            @ApiParam(value = "水厂id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.waterQualityRateForWaterFactory(sceneId));
+    }
+
+    @RequestMapping(value = "waterQualityRateForPumpingStation",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——泵站水质")
+    public AjaxMessage<WaterQualityRateForScene> waterQualityRateForPumpingStation(
+            @ApiParam(value = "泵站id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.waterQualityRateForPumpingStation(sceneId));
+    }
+
+    @RequestMapping(value = "waterEnergyConsumptionForWaterFactory",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——水厂能耗")
+    public AjaxMessage<List<WaterSupplyChart>> waterEnergyConsumptionForWaterFactory(
+            @ApiParam(value = "水厂id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.waterEnergyConsumption(sceneId,"水厂"));
+    }
+
+    @RequestMapping(value = "waterEnergyConsumptionForPumpingStation",method = RequestMethod.GET)
+    @ApiOperation(value = "综合展示——泵站能耗")
+    public AjaxMessage<List<WaterSupplyChart>> waterEnergyConsumptionForPumpingStation(
+            @ApiParam(value = "泵站id",required = true) @RequestParam Integer sceneId){
+        return new AjaxMessage<>(ResultStatus.OK,homePageReportService.waterEnergyConsumption(sceneId,"泵站"));
+    }
+
+}

+ 65 - 0
sms_water/src/main/java/com/huaxu/dao/HomePageReportMapper.java

@@ -0,0 +1,65 @@
+package com.huaxu.dao;
+
+import com.huaxu.dto.generalView.DeviceWaterSupply;
+import com.huaxu.dto.generalView.WaterSupplyData;
+import com.huaxu.dto.homePage.CompanyCount;
+import com.huaxu.dto.homePage.CompanyProduce;
+import com.huaxu.dto.homePage.WaterQualityRate;
+import com.huaxu.model.ProgramItem;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2021/2/24 13:43
+ */
+@Mapper
+public interface HomePageReportMapper {
+
+
+    List<DeviceWaterSupply> getDeviceWaterForSixMonth(@Param("companyOrgId")Integer companyOrgId,
+                                                      @Param("sceneType")String sceneType, @Param("parmType")Integer parmType,
+                                                      @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                                      @Param("permissonType")Integer permissonType,
+                                                      @Param("programItems")List<ProgramItem> programItems);
+
+
+    CompanyCount countSceneByType(@Param("companyOrgId")Integer companyOrgId,
+                                        @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                        @Param("permissonType")Integer permissonType,
+                                        @Param("programItems")List<ProgramItem> programItems);
+
+    CompanyProduce getWaterSalesDetails(@Param("companyOrgId")Integer companyOrgId,
+                                        @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                        @Param("programItems")List<ProgramItem> programItems);
+
+    WaterQualityRate getPipeNetworkQualification(@Param("companyOrgId")Integer companyOrgId,
+                                             @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                             @Param("permissonType")Integer permissonType,
+                                             @Param("programItems")List<ProgramItem> programItems);
+
+    WaterQualityRate getWaterQualification(@Param("companyOrgId")Integer companyOrgId,@Param("sceneType")String sceneType,
+                                             @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                             @Param("permissonType")Integer permissonType,
+                                             @Param("programItems")List<ProgramItem> programItems);
+
+    List<DeviceWaterSupply> getMonitorDataFifteenDays(@Param("sceneId")Integer sceneId,@Param("sceneType")String sceneType,@Param("parmType")Integer parmType,
+                                                        @Param("tenantId")String tenantId,
+                                                      @Param("userType")String userType,@Param("permissonType")Integer permissonType,
+                                                      @Param("programItems")List<ProgramItem> programItems);
+
+    BigDecimal getWaterQualificationForScene(@Param("parmType")Integer parmType,@Param("sceneId")Integer sceneId,@Param("sceneType")String sceneType,
+                                             @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                             @Param("permissonType")Integer permissonType,
+                                             @Param("programItems")List<ProgramItem> programItems);
+
+    List<WaterSupplyData> getWaterSupplyData( @Param("sceneId")Integer sceneId,@Param("sceneType")String sceneType,
+                                              @Param("tenantId")String tenantId,
+                                             @Param("userType")String userType, @Param("permissonType")Integer permissonType,
+                                             @Param("programItems")List<ProgramItem> programItems);
+
+}

+ 5 - 2
sms_water/src/main/java/com/huaxu/dao/MonitorDataReportMapper.java

@@ -98,11 +98,14 @@ public interface MonitorDataReportMapper {
     List<DeviceWaterDetail> getDeviceWaterDetailForNow(@Param("sceneTypeName")String sceneTypeName,@Param("parmType")Integer parmType,@Param("tenantId")String tenantId,
                                                        @Param("userType")String userType,@Param("permissonType")Integer permissonType,
                                                        @Param("programItems")List<ProgramItem> programItems);
-    List<DeviceWaterDetail> getDeviceWaterDetailForDay(@Param("sceneTypeName")String sceneTypeName,@Param("parmType")Integer parmType,@Param("tenantId")String tenantId,
+
+    List<DeviceWaterDetail> getDeviceWaterDetailForDay(@Param("companyOrgId")Integer companyOrgId,
+                                                        @Param("sceneTypeName")String sceneTypeName,@Param("parmType")Integer parmType,@Param("tenantId")String tenantId,
                                                        @Param("year")Integer year, @Param("month")Integer month, @Param("day")Integer day,
                                                        @Param("userType")String userType,@Param("permissonType")Integer permissonType,
                                                        @Param("programItems")List<ProgramItem> programItems);
-    BigDecimal getDeviceWaterDetailForMonth(@Param("sceneTypeName")String sceneTypeName,@Param("parmType")Integer parmType,@Param("tenantId")String tenantId,
+    BigDecimal getDeviceWaterDetailForMonth(@Param("companyOrgId")Integer companyOrgId,
+                                            @Param("sceneTypeName")String sceneTypeName,@Param("parmType")Integer parmType,@Param("tenantId")String tenantId,
                                             @Param("year")Integer year, @Param("month")Integer month,
                                             @Param("userType")String userType,@Param("permissonType")Integer permissonType,
                                             @Param("programItems")List<ProgramItem> programItems);

+ 3 - 1
sms_water/src/main/java/com/huaxu/dto/generalView/DeviceWaterSupply.java

@@ -16,7 +16,7 @@ import java.time.LocalDate;
  * @data 2020/12/31 14:05
  */
 @Data
-@Api("供水")
+@Api("数据统计")
 public class DeviceWaterSupply implements Serializable {
     private static final long serialVersionUID = 3472349298203388378L;
 
@@ -33,6 +33,8 @@ public class DeviceWaterSupply implements Serializable {
     private BigDecimal amount = BigDecimal.ZERO;
     @ApiModelProperty("日期")
     private LocalDate date;
+    @ApiModelProperty("日期格式化")
+    private String dateLabel;
 
 
 }

+ 10 - 0
sms_water/src/main/java/com/huaxu/dto/generalView/WaterSupplyChart.java

@@ -12,6 +12,7 @@ import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Comparator;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -50,4 +51,13 @@ public class WaterSupplyChart implements Serializable {
         this.date= DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDate.now().plusDays(-i));
 
     }
+
+    public WaterSupplyChart (Integer i,String dateString){
+        this.sort=i;
+        this.waterData=BigDecimal.ZERO;
+        this.powerData=BigDecimal.ZERO;
+        this.drugData=BigDecimal.ZERO;
+        this.date= dateString;
+
+    }
 }

+ 28 - 0
sms_water/src/main/java/com/huaxu/dto/homePage/CompanyCount.java

@@ -0,0 +1,28 @@
+package com.huaxu.dto.homePage;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description 公司(场景)个数统计
+ * @auto wangli
+ * @data 2021/2/24 16:01
+ */
+@Data
+@Api("公司(场景)个数统计")
+public class CompanyCount {
+
+    @ApiModelProperty("公司数量")
+    private Integer company;
+    @ApiModelProperty("水源数量")
+    private Integer waterSource;
+    @ApiModelProperty("泵站数量")
+    private Integer pumpingStation;
+    @ApiModelProperty("管网数量")
+    private Integer pipeNetwork;
+    @ApiModelProperty("水厂数量")
+    private Integer waterFactory;
+    @ApiModelProperty("水表数量")
+    private Integer waterMeter;
+}

+ 43 - 0
sms_water/src/main/java/com/huaxu/dto/homePage/CompanyProduce.java

@@ -0,0 +1,43 @@
+package com.huaxu.dto.homePage;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huaxu.util.jsonSerializer.BigDecimalJsonSerializer;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2021/3/1 10:17
+ */
+@Data
+@Api("制水售水统计")
+public class CompanyProduce {
+
+    @ApiModelProperty("取水量")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal waterIntake;
+    @ApiModelProperty("制水量")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal waterSupply;
+    @ApiModelProperty("售水量")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal waterSale;
+    @ApiModelProperty("营收金额")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal receivableAmount;
+    @ApiModelProperty("实收金额")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal receivedAmount ;
+
+    public CompanyProduce(){
+        this.waterIntake = BigDecimal.ZERO;
+        this.waterSupply = BigDecimal.ZERO;
+        this.waterSale = BigDecimal.ZERO;
+        this.receivableAmount = BigDecimal.ZERO;
+        this.receivedAmount = BigDecimal.ZERO;
+    }
+}

+ 47 - 0
sms_water/src/main/java/com/huaxu/dto/homePage/WaterQualityRate.java

@@ -0,0 +1,47 @@
+package com.huaxu.dto.homePage;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huaxu.util.jsonSerializer.BigDecimalJsonSerializer;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2021/3/1 16:25
+ */
+@Api("水质安全")
+@Data
+public class WaterQualityRate {
+
+    @ApiModelProperty("异常数量")
+    private Integer abnormal;
+    @ApiModelProperty("综合(平均)水质")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal averageQuality;
+    @ApiModelProperty("水源水质")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal waterSourceQuality;
+    @ApiModelProperty("水厂水质")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal waterFactoryQuality;
+    @ApiModelProperty("二供(泵站)水质")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal pumpingStationQuality;
+    @ApiModelProperty("管网水质")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal pipeNetworkQuality;
+
+    public WaterQualityRate(){
+        this.abnormal=0;
+        this.averageQuality=BigDecimal.ZERO;
+        this.waterSourceQuality=BigDecimal.ZERO;
+        this.waterFactoryQuality=BigDecimal.ZERO;
+        this.pumpingStationQuality=BigDecimal.ZERO;
+        this.pipeNetworkQuality=BigDecimal.ZERO;
+    }
+
+}

+ 35 - 0
sms_water/src/main/java/com/huaxu/dto/homePage/WaterQualityRateForScene.java

@@ -0,0 +1,35 @@
+package com.huaxu.dto.homePage;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huaxu.util.jsonSerializer.BigDecimalJsonSerializer;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2021/3/1 16:25
+ */
+@Api("合格率")
+@Data
+public class WaterQualityRateForScene {
+
+    @ApiModelProperty("余氯")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal chlorine;
+    @ApiModelProperty("浊度")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal turbidity;
+    @ApiModelProperty("PH")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal ph;
+    @ApiModelProperty("压力")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal pressure;
+
+
+
+}

+ 52 - 0
sms_water/src/main/java/com/huaxu/service/HomePageReportService.java

@@ -0,0 +1,52 @@
+package com.huaxu.service;
+
+import com.huaxu.dto.generalView.DeviceWaterAmount;
+import com.huaxu.dto.generalView.DeviceWaterSupply;
+import com.huaxu.dto.generalView.WaterSupplyChart;
+import com.huaxu.dto.homePage.CompanyCount;
+import com.huaxu.dto.homePage.CompanyProduce;
+import com.huaxu.dto.homePage.WaterQualityRate;
+import com.huaxu.dto.homePage.WaterQualityRateForScene;
+
+import java.util.List;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2021/2/24 10:42
+ */
+public interface HomePageReportService {
+
+    //近6月取水量(水源:4)
+    //近6月制水量(水厂:3)
+    List<DeviceWaterSupply> deviceWaterReportForSixMonth(Integer companyOrgId,String sceneType, Integer parmType);
+
+    //公司投资统计(公司场景)
+    CompanyCount countSceneByType(Integer companyOrgId);
+
+    //取水制水售水统计
+    CompanyProduce deviceWaterAmount(Integer companyOrgId);
+
+    //水质统计
+    WaterQualityRate getWaterQualification(Integer companyOrgId);
+
+    //水库取水15天
+    //水库水位15天
+    //水厂制水15天
+    // 水厂 3 水源 4 水位 12
+    List<DeviceWaterSupply> monitorDataFifteenDays(Integer sceneId, String sceneType, Integer parmType);
+
+    //水库水质
+    WaterQualityRateForScene waterQualityRateForWaterSource(Integer sceneId);
+
+
+    //水厂水质合格率
+    WaterQualityRateForScene waterQualityRateForWaterFactory(Integer sceneId);
+    //泵站水质合格率
+    WaterQualityRateForScene waterQualityRateForPumpingStation(Integer sceneId);
+
+    //泵站能耗分析
+    //水厂能耗分析
+    List<WaterSupplyChart> waterEnergyConsumption(Integer sceneId, String sceneType);
+
+}

+ 5 - 0
sms_water/src/main/java/com/huaxu/service/MonitorDataReportService.java

@@ -3,9 +3,12 @@ package com.huaxu.service;
 import com.huaxu.dto.MonitorDataChartReportDeviceDto;
 import com.huaxu.dto.generalView.*;
 import com.huaxu.entity.DeviceEntity;
+import com.huaxu.entity.MonitorDataEntity;
+import com.huaxu.model.LoginUser;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @description
@@ -59,6 +62,8 @@ public interface MonitorDataReportService {
 
 
     List<WaterSupplyChart>  waterSupplyChartsByMonth(String sceneTypeName, Integer companyOrgId);
+
+    Map<Integer, MonitorDataEntity> getIntegerMonitorDataEntityMap(LoginUser loginUser);
 }
 
 

+ 355 - 0
sms_water/src/main/java/com/huaxu/service/impl/HomePageReportServiceImpl.java

@@ -0,0 +1,355 @@
+package com.huaxu.service.impl;
+
+import com.huaxu.client.UserCenterClient;
+import com.huaxu.dao.HomePageReportMapper;
+import com.huaxu.dao.MonitorDataReportMapper;
+import com.huaxu.dto.generalView.DeviceWaterDetail;
+import com.huaxu.dto.generalView.DeviceWaterSupply;
+import com.huaxu.dto.generalView.WaterSupplyChart;
+import com.huaxu.dto.generalView.WaterSupplyData;
+import com.huaxu.dto.homePage.CompanyCount;
+import com.huaxu.dto.homePage.CompanyProduce;
+import com.huaxu.dto.homePage.WaterQualityRate;
+import com.huaxu.dto.homePage.WaterQualityRateForScene;
+import com.huaxu.entity.MonitorDataEntity;
+import com.huaxu.entity.MonitorDataValueEntity;
+import com.huaxu.model.LoginUser;
+import com.huaxu.service.HomePageReportService;
+import com.huaxu.service.MonitorDataReportService;
+import com.huaxu.util.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.temporal.TemporalAdjusters;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @description
+ * @auto wangli
+ * @data 2021/2/24 10:42
+ */
+@Service
+public class HomePageReportServiceImpl implements HomePageReportService {
+
+    @Resource
+    private HomePageReportMapper homePageReportMapper;
+
+    @Autowired
+    private UserCenterClient userCenterClient;
+
+    @Resource
+    private MonitorDataReportMapper monitorDataReportMapper;
+
+    @Autowired
+    private MonitorDataReportService MonitorDataReportService;
+
+    @Override
+    public List<DeviceWaterSupply> deviceWaterReportForSixMonth(Integer companyOrgId,String sceneType, Integer parmType) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        String tenantId = loginUser.getTenantId();
+        List<DeviceWaterSupply> deviceWaterSupplies = homePageReportMapper.getDeviceWaterForSixMonth(companyOrgId,sceneType,parmType ,tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+
+        LocalDate localDate = LocalDate.now();
+
+        for (int i = 0; i < 6; i++) {
+            LocalDate newLocalDate = localDate.plusMonths(-i - 1);
+            if (i == deviceWaterSupplies.size()
+                    || newLocalDate.getMonthValue() != deviceWaterSupplies.get(i).getMonth().intValue()
+                    || newLocalDate.getYear() != deviceWaterSupplies.get(i).getYear().intValue()) {
+
+                DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
+                deviceWaterSupply.setOrderNo(i + 1);
+                deviceWaterSupply.setAmount(BigDecimal.ZERO);
+                deviceWaterSupply.setYear(newLocalDate.getYear());
+                deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
+                deviceWaterSupply.setDate(newLocalDate);
+                deviceWaterSupply.setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
+                deviceWaterSupplies.add(i, deviceWaterSupply);
+            } else {
+                deviceWaterSupplies.get(i).setOrderNo(i + 1);
+                deviceWaterSupplies.get(i).setDate(newLocalDate);
+                deviceWaterSupplies.get(i).setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
+            }
+        }
+        deviceWaterSupplies.sort(Comparator.comparing(DeviceWaterSupply::getOrderNo).reversed());
+        return deviceWaterSupplies;
+    }
+
+
+    @Override
+    public CompanyCount countSceneByType(Integer companyOrgId) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        CompanyCount companyCount = homePageReportMapper.countSceneByType(companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        Integer company = userCenterClient.countCompanyByUser();
+        companyCount.setCompany(company != null ? company:0);
+        return companyCount;
+    }
+
+
+    @Override
+    public CompanyProduce deviceWaterAmount(Integer companyOrgId) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        String tenantId = loginUser.getTenantId();
+        Map<Integer, MonitorDataEntity> MonitorDataMap = MonitorDataReportService.getIntegerMonitorDataEntityMap(loginUser);
+
+        LocalDate localDate = LocalDate.now();
+
+        CompanyProduce companyProduce = homePageReportMapper.getWaterSalesDetails(companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getProgramItemList());
+
+        if(companyProduce == null ){
+            companyProduce = new CompanyProduce();
+        }
+        BigDecimal waterSupplyAmountForDay = BigDecimal.ZERO;
+        BigDecimal waterIntakeAmountForDay = BigDecimal.ZERO;
+
+        //3供水 4取水
+        List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(companyOrgId,"水厂", 3, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        List<DeviceWaterDetail> deviceIntakeWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(companyOrgId,"水源", 4, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+
+        //水厂获取实时流量并计算出当天流量
+        for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForDay) {
+            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0
+                    && deviceWaterDetail != null && deviceWaterDetail.getLatestValue() != null) {
+                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
+                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
+                        //累计当天流量
+                        waterSupplyAmountForDay = waterSupplyAmountForDay.add(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()));
+                    }
+                }
+            }
+        }
+        //水源获取实时流量并计算出当天流量
+        for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForDay) {
+            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0
+                    && deviceWaterDetail != null && deviceWaterDetail.getLatestValue() != null) {
+                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
+                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
+                        //累计当天流量
+                        waterIntakeAmountForDay = waterIntakeAmountForDay.add(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()));
+                    }
+                }
+            }
+        }
+
+        BigDecimal waterSupplyAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth(companyOrgId,"水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        if (waterSupplyAmountForMonth == null) {
+            waterSupplyAmountForMonth = BigDecimal.ZERO;
+        }
+        //水厂当月流量
+        companyProduce.setWaterSupply(
+                (waterSupplyAmountForMonth.add(waterSupplyAmountForDay)).divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
+
+        BigDecimal waterIntakeAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth(companyOrgId,"水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        if (waterIntakeAmountForMonth == null) {
+            waterIntakeAmountForMonth = BigDecimal.ZERO;
+        }
+        //水源当月流量
+        companyProduce.setWaterIntake(
+                (waterIntakeAmountForMonth.add(waterIntakeAmountForDay)).divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
+
+        return companyProduce;
+    }
+
+
+    @Override
+    public WaterQualityRate getWaterQualification(Integer companyOrgId) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        WaterQualityRate waterQualityRate = new WaterQualityRate();
+        //管网水质
+        WaterQualityRate pipeNetworkQuality = homePageReportMapper.getPipeNetworkQualification(companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //水源水质
+        WaterQualityRate waterSourceQuality = homePageReportMapper.getWaterQualification(companyOrgId,"水源",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //水厂水质
+        WaterQualityRate waterFactoryQuality = homePageReportMapper.getWaterQualification(companyOrgId,"水厂",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //二供水质
+        WaterQualityRate pumpingStationQuality = homePageReportMapper.getWaterQualification(companyOrgId,"泵站",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+
+        if(pipeNetworkQuality != null){
+            waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+pipeNetworkQuality.getAbnormal());
+            waterQualityRate.setPipeNetworkQuality(pipeNetworkQuality.getAverageQuality());
+            waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(pipeNetworkQuality.getAverageQuality()));
+        }
+        if(waterSourceQuality != null){
+            waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+waterSourceQuality.getAbnormal());
+            waterQualityRate.setWaterSourceQuality(waterSourceQuality.getAverageQuality());
+            waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(waterSourceQuality.getAverageQuality()));
+        }
+        if(waterFactoryQuality != null){
+            waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+waterFactoryQuality.getAbnormal());
+            waterQualityRate.setWaterFactoryQuality(waterFactoryQuality.getAverageQuality());
+            waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(waterFactoryQuality.getAverageQuality()));
+        }
+        if(pumpingStationQuality != null){
+            waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+pumpingStationQuality.getAbnormal());
+            waterQualityRate.setPumpingStationQuality(pumpingStationQuality.getAverageQuality());
+            waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(pumpingStationQuality.getAverageQuality()));
+        }
+        waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().divide(new BigDecimal("4"),3,BigDecimal.ROUND_HALF_UP));
+
+        return waterQualityRate;
+    }
+
+
+    /**
+     * 水厂 3 水源 4 水位 12
+     * @return
+     */
+    @Override
+    public List<DeviceWaterSupply> monitorDataFifteenDays(Integer sceneId, String sceneType, Integer parmType) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+
+        List<DeviceWaterSupply> deviceWaterSupplies = homePageReportMapper.getMonitorDataFifteenDays( sceneId, sceneType, parmType,
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+
+        LocalDate localDate = LocalDate.now();
+        for (int i = 0; i < 15; i++) {
+            LocalDate newLocalDate = localDate.plusDays(-i - 1);
+            if (i == deviceWaterSupplies.size()
+                    || !newLocalDate.isEqual(LocalDate.of(deviceWaterSupplies.get(i).getYear(),
+                    deviceWaterSupplies.get(i).getMonth(),
+                    deviceWaterSupplies.get(i).getDay()))) {
+
+                DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
+                deviceWaterSupply.setOrderNo(i + 1);
+                deviceWaterSupply.setAmount(BigDecimal.ZERO);
+                deviceWaterSupply.setYear(newLocalDate.getYear());
+                deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
+                deviceWaterSupply.setDay(newLocalDate.getDayOfMonth());
+                deviceWaterSupply.setDate(newLocalDate);
+                deviceWaterSupplies.add(i, deviceWaterSupply);
+            } else {
+                deviceWaterSupplies.get(i).setOrderNo(i + 1);
+                deviceWaterSupplies.get(i).setDate(newLocalDate);
+            }
+        }
+        deviceWaterSupplies.sort(Comparator.comparing(DeviceWaterSupply::getOrderNo).reversed());
+
+        return deviceWaterSupplies;
+    }
+
+
+    @Override
+    public WaterQualityRateForScene waterQualityRateForWaterSource(Integer sceneId) {
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        //余氯
+        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationForScene(11,sceneId,"水源",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //浊度
+        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationForScene(9,sceneId,"水源",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //PH
+        BigDecimal ph =  homePageReportMapper.getWaterQualificationForScene(7,sceneId,"水源",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+       //压力
+        BigDecimal pressure =  homePageReportMapper.getWaterQualificationForScene(13,sceneId,"水源",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+
+        WaterQualityRateForScene waterQualityRateForScene = new WaterQualityRateForScene();
+        waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:BigDecimal.ZERO);
+        waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:BigDecimal.ZERO);
+        waterQualityRateForScene.setPh(ph!=null?ph:BigDecimal.ZERO);
+        waterQualityRateForScene.setPressure(pressure!=null?pressure:BigDecimal.ZERO);
+        return waterQualityRateForScene;
+    }
+
+    @Override
+    public WaterQualityRateForScene waterQualityRateForPumpingStation(Integer sceneId) {
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        //余氯
+        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationForScene(11,sceneId,"泵站",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //浊度
+        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationForScene(10,sceneId,"泵站",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //PH
+        BigDecimal ph =  homePageReportMapper.getWaterQualificationForScene(8,sceneId,"泵站",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //压力
+        BigDecimal pressure =  homePageReportMapper.getWaterQualificationForScene(13,sceneId,"泵站",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+
+        WaterQualityRateForScene waterQualityRateForScene = new WaterQualityRateForScene();
+        waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:BigDecimal.ZERO);
+        waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:BigDecimal.ZERO);
+        waterQualityRateForScene.setPh(ph!=null?ph:BigDecimal.ZERO);
+        waterQualityRateForScene.setPressure(pressure!=null?pressure:BigDecimal.ZERO);
+        return waterQualityRateForScene;
+    }
+
+    @Override
+    public WaterQualityRateForScene waterQualityRateForWaterFactory(Integer sceneId) {
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        //余氯
+        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationForScene(11,sceneId,"水厂",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //浊度
+        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationForScene(10,sceneId,"水厂",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //PH
+        BigDecimal ph =  homePageReportMapper.getWaterQualificationForScene(8,sceneId,"水厂",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //压力
+        BigDecimal pressure =  homePageReportMapper.getWaterQualificationForScene(13,sceneId,"水厂",
+                loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+
+        WaterQualityRateForScene waterQualityRateForScene = new WaterQualityRateForScene();
+        waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:BigDecimal.ZERO);
+        waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:BigDecimal.ZERO);
+        waterQualityRateForScene.setPh(ph!=null?ph:BigDecimal.ZERO);
+        waterQualityRateForScene.setPressure(pressure!=null?pressure:BigDecimal.ZERO);
+        return waterQualityRateForScene;
+    }
+    //水厂制水、药耗、电耗对比曲线
+    @Override
+    public List<WaterSupplyChart> waterEnergyConsumption( Integer sceneId,String sceneType) {
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        String tenantId = loginUser.getTenantId();
+
+        List<WaterSupplyData> waterSupplyDatas = homePageReportMapper.getWaterSupplyData(sceneId,sceneType,tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        List<WaterSupplyChart> waterSupplyCharts = new ArrayList<>();
+        waterSupplyDatas.stream()
+                .collect(Collectors.groupingBy(item -> item.getYear() + "-" + item.getMonth() + "-" + item.getDay()))
+                .forEach((key, value) -> {
+                    WaterSupplyChart waterSupplyChart = new WaterSupplyChart();
+                    waterSupplyChart.setDate(key);
+                    value.stream().forEach(waterSupplyData -> {
+                        waterSupplyChart.setSort(waterSupplyData.getDay());
+
+                        if (waterSupplyData.getParmType() == 3) { //供水
+                            waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
+                        } else if (waterSupplyData.getParmType() == 5) {//电耗
+                            waterSupplyChart.setPowerData(waterSupplyData.getAmount().divide(new BigDecimal("1000"),3,BigDecimal.ROUND_HALF_UP));
+                        } else if (waterSupplyData.getParmType() == 6) {//药耗
+                            waterSupplyChart.setDrugData(waterSupplyData.getAmount());
+                        }
+                    });
+                    waterSupplyCharts.add(waterSupplyChart);
+                });
+
+        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort));
+
+        Integer maxDay =  LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
+        for(int i=0;i<maxDay;i++){
+
+            if(i == waterSupplyCharts.size() || !waterSupplyCharts.get(i).getSort().equals(i+1)){
+                waterSupplyCharts.add(i,new WaterSupplyChart(i+1, LocalDate.now().getYear()+"-"+LocalDate.now().getMonthValue()+"-"+(i+1)));
+            }
+        }
+//        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort).reversed());
+        return waterSupplyCharts;
+    }
+
+}

+ 6 - 6
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java

@@ -625,8 +625,8 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         }
 
         //3供水 4取水
-        List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay("水厂", 3, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
-        List<DeviceWaterDetail> deviceIntakeWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay("水源", 4, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(null,"水厂", 3, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        List<DeviceWaterDetail> deviceIntakeWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(null,"水源", 4, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
 
         //水厂获取实时流量并计算出当天流量
         for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForDay) {
@@ -656,7 +656,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
             }
         }
 
-        BigDecimal waterSupplyAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth("水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        BigDecimal waterSupplyAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth(null,"水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         BigDecimal waterSupplyAmountForYear = monitorDataReportMapper.getDeviceWaterDetailForYear("水厂", 3, tenantId, localDate.getYear(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         if (waterSupplyAmountForMonth == null) {
             waterSupplyAmountForMonth = BigDecimal.ZERO;
@@ -678,7 +678,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         }
 
 
-        BigDecimal waterIntakeAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth("水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        BigDecimal waterIntakeAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth(null,"水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         BigDecimal waterIntakeAmountForYear = monitorDataReportMapper.getDeviceWaterDetailForYear("水源", 4, tenantId, localDate.getYear(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         if (waterIntakeAmountForMonth == null) {
             waterIntakeAmountForMonth = BigDecimal.ZERO;
@@ -842,7 +842,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         Map<Integer, MonitorDataEntity> MonitorDataMap = getIntegerMonitorDataEntityMap(loginUser);
 
         LocalDate localDate = LocalDate.now();
-        List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay("水厂", 3, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(null,"水厂", 3, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
 
         List<SceneWaterAmount> sceneWaterAmounts = new ArrayList<>();
         deviceSupplyWaterDetailsForDay.stream()
@@ -946,7 +946,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
     }
 
     //查询设备实时数据
-    private Map<Integer, MonitorDataEntity> getIntegerMonitorDataEntityMap(LoginUser loginUser) {
+    public Map<Integer, MonitorDataEntity> getIntegerMonitorDataEntityMap(LoginUser loginUser) {
 
         //查询设备编码
         List<String> deviceCodes = monitorDataReportMapper.selectDeviceCode(loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());

+ 369 - 0
sms_water/src/main/resources/mapper/HomePageReportMapper.xml

@@ -0,0 +1,369 @@
+<?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.HomePageReportMapper">
+
+    <select id="getDeviceWaterForSixMonth" resultType="com.huaxu.dto.generalView.DeviceWaterSupply">
+        select
+        r.year,r.month,
+        sum(r.SUM_VALUE)/10000 as "amount"
+        from sms_scene_type st
+        left join sms_scene s on s.SCENE_TYPE_ID =st.id
+        left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
+        left join sms_year_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
+
+        where  dp.`STATUS`=1  and s.ENABLE_STATE = 1 and dp.TENANT_ID=#{tenantId}
+        <if test="companyOrgId != null">
+            and s.COMPANY_ORG_ID = #{companyOrgId}
+        </if>
+        and dp.PARM_TYPE = #{parmType} and st.SCENE_TYPE_NAME = #{sceneType}
+        and r.year*12 + r.month >=  year(CURDATE())*12 + month(CURDATE()) - 6
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+        group by r.year,r.month
+        order by r.year desc,r.month desc
+    </select>
+
+    <select id="countSceneByType" resultType="com.huaxu.dto.homePage.CompanyCount">
+
+        select
+            sum(if(SCENE_TYPE_NAME = "水源",1,0)) as "waterSource"
+            ,sum(if(SCENE_TYPE_NAME = "水厂",1,0)) as "waterFactory"
+            ,sum(if(SCENE_TYPE_NAME = "管网",1,0)) as "pipeNetwork"
+            ,sum(if(SCENE_TYPE_NAME = "泵站",1,0)) as "pumpingStation"
+            ,0 as "waterMeter"
+        from  sms_scene s
+        left join sms_scene_type st on s.SCENE_TYPE_ID =st.ID
+        where s.PARENT_SCENE_ID= 0 and s.`STATUS` = 1 and st.`STATUS` = 1
+         and st.SCENE_TYPE_NAME in ('水源','水厂','管网','泵站')
+         <if test="companyOrgId != null">
+            and s.COMPANY_ORG_ID = #{companyOrgId}
+         </if>
+        and s.TENANT_ID=#{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+    </select>
+
+    <select id="getWaterSalesDetails" resultType="com.huaxu.dto.homePage.CompanyProduce">
+        select
+            RECEIVABLE_TOTAL_AMOUNT/10000  as "receivableAmount"
+            ,RECEIVED_TOTAL_AMOUNT/10000 as "receivedAmount"
+            ,METER_READING_USAGE/10000 as "waterSale"
+        from sms_month_revenue r
+        where r.TENANT_ID = #{tenantId}
+        <if test="companyOrgId != null">
+            and r.COMPANY_ORG_ID = #{companyOrgId}
+        </if>
+        and year(r.COLLECT_DATE) =year(CURDATE()) and month(r.COLLECT_DATE) = year(CURDATE())
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            and r.COMPANY_ORG_ID in
+            <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                #{item.orgId}
+            </foreach>
+        </if>
+    </select>
+
+    <select id="getPipeNetworkQualification" resultType="com.huaxu.dto.homePage.WaterQualityRate">
+        select
+            sum(alarmNumber ) as  "abnormal",
+            ROUND(sum(if(alarmNumber > 0 ,0,1))/if(count(1) != 0, count(1),1) * 100,2) as "averageQuality"
+        from
+        (
+            select
+                s.id as "sceneId"
+                ,d.id as "deviceId"
+                ,count(ad.id) as  "alarmNumber"
+            from sms_scene_type st
+            left join sms_scene s on s.SCENE_TYPE_ID =st.ID
+            left join sms_device_scene ds on ds.PARENT_SCENE_ID = s.ID
+            left join sms_device d on d.id=ds.DEVICE_ID
+            left join sms_device_parm dp on dp.SCENE_ID =ds.SCENE_ID and dp.DEVICE_ID =ds.DEVICE_ID and dp.PARM_TYPE in (7,9,11)
+            left join sms_alarm_details ad on dp.SCENE_ID =ad.SCENE_ID and dp.DEVICE_ID =ad.DEVICE_ID and dp.ATTRIBUTE_ID =ad.ATTRIBUTE_ID
+            and ad.STATE = 1  and ad.`STATUS` =1
+            where st.`STATUS` = 1 and s.`STATUS` = 1 and ds.`STATUS` = 1 and d.`STATUS` = 1 and dp.`STATUS` = 1
+            and st.SCENE_TYPE_NAME ='管网'
+            <if test="companyOrgId != null">
+            and s.COMPANY_ORG_ID = #{companyOrgId}
+        </if>
+            and s.TENANT_ID=#{tenantId}
+            <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+
+        group by s.id,d.id
+        ) a
+    </select>
+
+    <select id="getWaterQualification" resultType="com.huaxu.dto.homePage.WaterQualityRate">
+        select
+        sum(alarmNumber ) as  "abnormal",
+        ROUND(sum(if(alarmNumber > 0 ,0,1))/if(count(1) != 0, count(1),1) * 100,2) as "averageQuality"
+        from (
+            select
+            s.SCENE_NAME as "sceneName"
+            ,sum( if(dp.PARM_TYPE IN ( 15,7, 8, 10, 11, 18, 19 ) and ad.id is not null,1,0) ) AS "alarmNumber"
+            from sms_scene_type st
+            left join sms_scene s on s.SCENE_TYPE_ID =st.id and PARENT_SCENE_ID ='0'
+            left join sms_device_parm dp on dp.PARENT_SCENE_ID =s.ID
+            left join sms_alarm_details ad on ad.STATE = 1 and ad.PARENT_SCENE_ID=dp.PARENT_SCENE_ID and ad.DEVICE_ID =dp.DEVICE_ID and ad.ATTRIBUTE_ID =dp.ATTRIBUTE_ID
+
+            where s.`STATUS`=1  and s.ENABLE_STATE = 1 and dp.`STATUS` = 1 and st.SCENE_TYPE_NAME = #{sceneType}
+            <if test="companyOrgId != null">
+                and s.COMPANY_ORG_ID = #{companyOrgId}
+            </if>
+            and s.TENANT_ID =#{tenantId}
+            <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+                <if test="permissonType == 5 or permissonType == 2">
+                    and ( s.DEPT_ORG_ID in
+                    <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    or
+                    s.COMPANY_ORG_ID in
+                    <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    )
+                </if>
+                <if test="permissonType == 4 or permissonType == 3">
+                    and s.DEPT_ORG_ID in
+                    <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="permissonType == 1">
+                    and s.COMPANY_ORG_ID in
+                    <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+                </if>
+            </if>
+            group by s.SCENE_NAME
+        ) a
+
+    </select>
+
+    <select id="getMonitorDataFifteenDays" resultType="com.huaxu.dto.generalView.DeviceWaterSupply">
+        select
+        r.year,r.month,r.day,
+        sum(r.SUM_VALUE)/10000 as "amount"
+        from sms_scene_type st
+        left join sms_scene s on s.SCENE_TYPE_ID =st.id
+        left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
+        left join sms_month_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
+        where  st.`STATUS`=1 and dp.`STATUS`=1  and s.ENABLE_STATE = 1
+        and s.id = #{sceneId}
+        and st.SCENE_TYPE_NAME = #{sceneType}
+        and dp.PARM_TYPE = #{parmType}
+        and dp.TENANT_ID=#{tenantId}
+        and r.COLLECT_DATE >= DATE_SUB(CURDATE(),INTERVAL 15 day)
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+        group by r.year,r.month,r.day
+        order by r.year desc,r.month desc,r.day desc
+    </select>
+
+    <select id="getWaterQualificationForScene" resultType="java.math.BigDecimal">
+        select
+            ROUND(sum(if(alarmNumber > 0 ,0,1))/if(count(1) != 0, count(1),1) * 100,2)
+        from
+        (
+        select
+            s.id as "sceneId"
+            ,d.id as "deviceId"
+            ,count(ad.id) as  "alarmNumber"
+        from sms_scene_type st
+        left join sms_scene s on s.SCENE_TYPE_ID =st.ID
+        left join sms_device_scene ds on ds.PARENT_SCENE_ID = s.ID
+        left join sms_device d on d.id=ds.DEVICE_ID
+        left join sms_device_parm dp on dp.SCENE_ID =ds.SCENE_ID and dp.DEVICE_ID =ds.DEVICE_ID and dp.PARM_TYPE =#{parmType}
+        left join sms_alarm_details ad on dp.SCENE_ID =ad.SCENE_ID and dp.DEVICE_ID =ad.DEVICE_ID and dp.ATTRIBUTE_ID =ad.ATTRIBUTE_ID
+        and ad.STATE = 1  and ad.`STATUS` =1
+        where st.`STATUS` = 1 and s.`STATUS` = 1 and ds.`STATUS` = 1 and d.`STATUS` = 1 and dp.`STATUS` = 1
+        and s.id= #{sceneId}
+        and st.SCENE_TYPE_NAME = #{sceneType}
+        and s.TENANT_ID=#{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+
+        group by s.id,d.id
+        ) a
+
+    </select>
+
+    <select id="getWaterSupplyData" resultType="com.huaxu.dto.generalView.WaterSupplyData">
+        select
+        r.year
+        ,r.month
+        ,r.day
+        ,dp.PARM_TYPE as "parmType"
+        ,sum(r.SUM_VALUE) as "amount"
+        ,da.UNIT as "unit"
+        from sms_scene_type st
+        left join sms_scene s on s.SCENE_TYPE_ID =st.id
+        left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
+        left join sms_device_attribute da on dp.ATTRIBUTE_ID =da.ID
+        left join sms_month_report r on r.DEVICE_ID =dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
+        where  dp.`STATUS`=1  and st.`STATUS`=1 and s.`STATUS`=1 and s.ENABLE_STATE = 1
+        and r.COLLECT_DATE >= date_add(curdate(), interval - day(curdate()) + 1 day)
+        and dp.PARM_TYPE in (3,5,6)
+        and s.id= #{sceneId}
+        and st.SCENE_TYPE_NAME = #{sceneType}
+        and dp.TENANT_ID=#{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+
+        group by r.year,r.month,r.day,dp.PARM_TYPE,da.UNIT
+    </select>
+
+
+</mapper>

+ 7 - 0
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -1007,6 +1007,9 @@
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
         left join sms_month_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID and r.year = #{year} and r.month= #{month} and r.day = #{day}
         where  dp.`STATUS`=1 and st.SCENE_TYPE_NAME = #{sceneTypeName} and s.ENABLE_STATE = 1
+        <if test="companyOrgId != null">
+            and s.COMPANY_ORG_ID = #{companyOrgId}
+        </if>
         and dp.PARM_TYPE =#{parmType}   and dp.TENANT_ID=#{tenantId}
         <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
@@ -1045,6 +1048,9 @@
         left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
         left join sms_month_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID and r.year = #{year} and r.month= #{month}
         where  dp.`STATUS`=1 and st.SCENE_TYPE_NAME = #{sceneTypeName} and s.ENABLE_STATE = 1
+        <if test="companyOrgId != null">
+            and s.COMPANY_ORG_ID = #{companyOrgId}
+        </if>
         and dp.PARM_TYPE =#{parmType}   and dp.TENANT_ID=#{tenantId}
         <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             <if test="permissonType == 5 or permissonType == 2">
@@ -1254,6 +1260,7 @@
 
         group by r.year,r.month,r.day,dp.PARM_TYPE,da.UNIT
     </select>
+
     <select id="getWaterSupplyDataByMonth" resultType="com.huaxu.dto.generalView.WaterSupplyData">
         select
         r.year

+ 4 - 0
user_center/src/main/java/com/huaxu/controller/OrgController.java

@@ -162,4 +162,8 @@ public class OrgController {
         return new AjaxMessage<>(ResultStatus.OK, orgService.selectList(org)) ;
     }
 
+    @RequestMapping(value = "countCompanyByUser", method = RequestMethod.POST)
+    public Integer countCompanyByUser() {
+        return orgService.countCompanyByUser();
+    }
 }

+ 5 - 0
user_center/src/main/java/com/huaxu/dao/OrgMapper.java

@@ -3,6 +3,7 @@ package com.huaxu.dao;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.OrgTree;
 import com.huaxu.entity.Org;
+import com.huaxu.model.ProgramItem;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -90,4 +91,8 @@ public interface OrgMapper {
     List<Org> findOrgByTenant(String tenantId);
 
     String findParentOrgByChildId(@Param(value = "childId") Integer childId);
+
+    Integer countCompanyByUser( @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                @Param("programItems")List<ProgramItem> programItems);
+
 }

+ 3 - 0
user_center/src/main/java/com/huaxu/service/OrgService.java

@@ -3,6 +3,7 @@ package com.huaxu.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.OrgTree;
 import com.huaxu.entity.Org;
+import com.huaxu.model.ProgramItem;
 
 import java.util.List;
 
@@ -89,4 +90,6 @@ public interface OrgService {
     List<OrgTree> getTrees(Org org);
     List<OrgTree>getUserTrees(Org org);
     String findParentOrgByChildId(Integer childId);
+
+    Integer countCompanyByUser();
 }

+ 6 - 0
user_center/src/main/java/com/huaxu/service/impl/OrgServiceImpl.java

@@ -331,4 +331,10 @@ public class OrgServiceImpl implements OrgService {
    {
       return  orgMapper.findParentOrgByChildId(childId);
    }
+
+    @Override
+    public Integer countCompanyByUser() {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        return orgMapper.countCompanyByUser(loginUser.getTenantId(),loginUser.getType(),loginUser.getProgramItemList());
+    }
 }

+ 15 - 0
user_center/src/main/resources/mapper/OrgMapper.xml

@@ -302,4 +302,19 @@
     <select id="findParentOrgByChildId" resultType="String">
        select getParentList(#{childId})
     </select>
+    <select id="countCompanyByUser" resultType="java.lang.Integer">
+        select count(1)
+        from uims_org p
+        left join uims_org o on p.id=o.PARENT_ORG_ID
+        where p.`STATUS` = 1 and o.`STATUS` =1
+        and p.PARENT_ORG_ID = 0 and o.ORG_TYPE = 'company'
+        and p.TENANT_ID = #{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            and o.id in
+            <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                #{item.orgId}
+            </foreach>
+        </if>
+    </select>
+
 </mapper>