Browse Source

主页水质修改

wangli 4 years ago
parent
commit
c6a9609b54

+ 6 - 2
sms_water/src/main/java/com/huaxu/config/RabbitConfig.java

@@ -180,9 +180,13 @@ public class RabbitConfig {
     public SimpleRabbitListenerContainerFactory ReceiveDatarabbitListenerContainerFactory() {
         SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
         factory.setConnectionFactory(ReceiveDataconnectionFactory());
-//        factory.setConcurrentConsumers(3);
-//        factory.setMaxConcurrentConsumers(10);
+        //最小的并发消费者的数量
+        factory.setConcurrentConsumers(1);
+        //设置最大的并发的消费者数量
+        factory.setMaxConcurrentConsumers(10);
+
         factory.setPrefetchCount(dataPrefetch);
+
         factory.setAcknowledgeMode(dataAcknowledgeMode);//设置确认模式手工确认
         return factory;
     }

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

@@ -44,6 +44,7 @@ public interface HomePageReportMapper {
                                              @Param("programItems")List<ProgramItem> programItems);
 
     WaterQualityRate getWaterQualification(@Param("companyOrgId")Integer companyOrgId,@Param("sceneType")String sceneType,
+                                            @Param("parmTypes")List<Integer> parmTypes,
                                              @Param("tenantId")String tenantId, @Param("userType")String userType,
                                              @Param("permissonType")Integer permissonType,
                                              @Param("programItems")List<ProgramItem> programItems);

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

@@ -10,10 +10,6 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 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;
 
 /**
  * @description

+ 0 - 3
sms_water/src/main/java/com/huaxu/dto/generalView/WaterSupplyData.java

@@ -7,9 +7,6 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
 
 /**
  * @description

+ 2 - 1
sms_water/src/main/java/com/huaxu/dto/homePage/WaterQualityRate.java

@@ -2,6 +2,7 @@ package com.huaxu.dto.homePage;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.huaxu.util.jsonSerializer.BigDecimalJsonSerializer;
+import com.huaxu.util.jsonSerializer.BigDecimalJsonSerializerTwo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,7 +21,7 @@ public class WaterQualityRate {
     @ApiModelProperty("异常数量")
     private Integer abnormal;
     @ApiModelProperty("综合(平均)水质")
-    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    @JsonSerialize(using = BigDecimalJsonSerializerTwo.class)
     private BigDecimal averageQuality;
     @ApiModelProperty("水源水质")
     @JsonSerialize(using = BigDecimalJsonSerializer.class)

+ 9 - 8
sms_water/src/main/java/com/huaxu/service/impl/HomePageReportServiceImpl.java

@@ -23,11 +23,9 @@ import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * @description
@@ -178,14 +176,16 @@ public class HomePageReportServiceImpl implements HomePageReportService {
     public WaterQualityRate getWaterQualification(Integer companyOrgId) {
         LoginUser loginUser = UserUtil.getCurrentUser();
         WaterQualityRate waterQualityRate = new WaterQualityRate();
+        List<Integer> list1 = Stream.of(15, 7, 9, 11, 18, 19).collect(Collectors.toList()); //取水
+        List<Integer> list2 = Stream.of(15, 8, 10, 11, 18, 19).collect(Collectors.toList()); //供水
         //管网水质
         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 waterSourceQuality = homePageReportMapper.getWaterQualification(companyOrgId,"水源",list1,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //水厂水质
-        WaterQualityRate waterFactoryQuality = homePageReportMapper.getWaterQualification(companyOrgId,"水厂",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        WaterQualityRate waterFactoryQuality = homePageReportMapper.getWaterQualification(companyOrgId,"水厂",list2,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //二供水质
-        WaterQualityRate pumpingStationQuality = homePageReportMapper.getWaterQualification(companyOrgId,"泵站",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        WaterQualityRate pumpingStationQuality = homePageReportMapper.getWaterQualification(companyOrgId,"泵站",list2,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
 
         if(pipeNetworkQuality != null){
             waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+pipeNetworkQuality.getAbnormal());
@@ -275,7 +275,7 @@ public class HomePageReportServiceImpl implements HomePageReportService {
         BigDecimal chlorine =  homePageReportMapper.getWaterQualificationByMonth(localDate,11,sceneId,"水源",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //浊度
-        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationByMonth(localDate,9,sceneId,"水源",
+        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationByMonth(localDate,10,sceneId,"水源",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //PH
         BigDecimal ph =  homePageReportMapper.getWaterQualificationByMonth(localDate,7,sceneId,"水源",
@@ -400,4 +400,5 @@ public class HomePageReportServiceImpl implements HomePageReportService {
 //        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort).reversed());
         return waterSupplyCharts;
     }
+
 }

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

@@ -14,6 +14,7 @@ import java.time.*;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Random;
 
 /**
  * @description
@@ -54,8 +55,12 @@ public class TestDataServiceImpl implements TestDataService {
         LocalDateTime beginDateTime=beginDate.atStartOfDay();
         LocalDateTime endDateTime=endDate.atStartOfDay();
 
+        Random r = new Random();
+        Double j =0d;
         List<DayReportEntity> dayReportEntities =new ArrayList<>();
-        for(int i=0,j=10000; beginDateTime.isBefore(endDateTime);i++,j++){
+        for(int i=0; beginDateTime.isBefore(endDateTime);i++,j++){
+            Double value = r.nextDouble() * 120000;
+
             if(i==24){
                 i=0;
             }
@@ -79,11 +84,12 @@ public class TestDataServiceImpl implements TestDataService {
                 dayReport.setMonth(beginDateTime.getMonthValue());
                 dayReport.setDay(beginDateTime.getDayOfMonth());
                 dayReport.setHour(i);
-                dayReport.setMinValue(new Double(j));
-                dayReport.setMaxValue(j+1000.0);
-                dayReport.setAvgValue(j+500.0);
-                dayReport.setSumValue(1000d);
-                dayReport.setLatestValue(j+1000.0);
+                dayReport.setMinValue(j);
+                dayReport.setAvgValue(j+(value/2));
+                dayReport.setSumValue(value);
+                j+=value;
+                dayReport.setMaxValue(j);
+                dayReport.setLatestValue(j);
                 dayReport.setCollectDate(Date.from(beginDateTime.atZone(ZoneId.systemDefault()).toInstant()));
                 dayReportEntities.add(dayReport);
             }

+ 26 - 0
sms_water/src/main/java/com/huaxu/util/jsonSerializer/BigDecimalJsonSerializerTwo.java

@@ -0,0 +1,26 @@
+package com.huaxu.util.jsonSerializer;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+
+/**
+ * @description BigDecimal保留两位小数
+ * @auto wangli
+ * @data 2020/12/31 14:17
+ */
+public class BigDecimalJsonSerializerTwo extends JsonSerializer<BigDecimal> {
+
+    private DecimalFormat df = new DecimalFormat("0.00");
+
+    @Override
+    public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        if(bigDecimal != null){
+            jsonGenerator.writeString(df.format(bigDecimal));
+        }
+    }
+}

+ 22 - 17
sms_water/src/main/resources/mapper/HomePageReportMapper.xml

@@ -120,21 +120,22 @@
         (
             select
                 s.id as "sceneId"
-                ,d.id as "deviceId"
+                ,dp.DEVICE_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 ='管网'
+            from sms_scene_type pst
+            left join sms_scene ps on ps.SCENE_TYPE_ID =pst.ID
+            left join sms_scene s on s.PARENT_SCENE_ID =ps.ID
+            left join sms_scene_type st on s.SCENE_TYPE_ID =st.ID
+
+            left join sms_device_parm dp on dp.PARENT_SCENE_ID =ps.ID and dp.SCENE_ID =s.ID
+            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 and ad.ALARM_TYPE = '参数报警'
+            where pst.`STATUS` = 1 and st.`STATUS` = 1 and ps.`STATUS` = 1 and s.`STATUS` = 1 and dp.`STATUS` = 1
+            and pst.SCENE_TYPE_NAME ='管网' and st.SCENE_TYPE_NAME ='水质'
             <if test="companyOrgId != null">
-            and s.COMPANY_ORG_ID = #{companyOrgId}
-        </if>
-            and s.TENANT_ID=#{tenantId}
+            and ps.COMPANY_ORG_ID = #{companyOrgId}
+            </if>
+            and ps.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
@@ -163,7 +164,7 @@
             </if>
         </if>
 
-        group by s.id,d.id
+        group by s.id,dp.DEVICE_ID
         ) a
     </select>
 
@@ -173,8 +174,12 @@
         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"
+            s.id as "sceneId"
+            ,sum( if(dp.PARM_TYPE IN
+                <foreach collection="parmTypes" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                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
@@ -212,7 +217,7 @@
                     and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
                 </if>
             </if>
-            group by s.SCENE_NAME
+            group by s.id
         ) a
 
     </select>