Browse Source

水质合格率修改

wangli 4 năm trước cách đây
mục cha
commit
c0b10a7cd2

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

@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -57,6 +58,11 @@ public interface HomePageReportMapper {
                                              @Param("permissonType")Integer permissonType,
                                              @Param("programItems")List<ProgramItem> programItems);
 
+    BigDecimal getWaterQualificationByMonth(@Param("monthDate") LocalDate monthDate, @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,

+ 27 - 24
sms_water/src/main/java/com/huaxu/service/impl/HomePageReportServiceImpl.java

@@ -241,24 +241,25 @@ public class HomePageReportServiceImpl implements HomePageReportService {
     public WaterQualityRateForScene waterQualityRateForWaterSource(Integer sceneId) {
 
         LoginUser loginUser = UserUtil.getCurrentUser();
+        LocalDate localDate = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
         //余氯
-        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationForScene(11,sceneId,"水源",
+        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationByMonth(localDate,11,sceneId,"水源",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //浊度
-        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationForScene(9,sceneId,"水源",
+        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationByMonth(localDate,9,sceneId,"水源",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //PH
-        BigDecimal ph =  homePageReportMapper.getWaterQualificationForScene(7,sceneId,"水源",
+        BigDecimal ph =  homePageReportMapper.getWaterQualificationByMonth(localDate,7,sceneId,"水源",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
        //压力
-        BigDecimal pressure =  homePageReportMapper.getWaterQualificationForScene(13,sceneId,"水源",
+        BigDecimal pressure =  homePageReportMapper.getWaterQualificationByMonth(localDate,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);
+        waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:new BigDecimal("100"));
+        waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:new BigDecimal("100"));
+        waterQualityRateForScene.setPh(ph!=null?ph:new BigDecimal("100"));
+        waterQualityRateForScene.setPressure(pressure!=null?pressure:new BigDecimal("100"));
         return waterQualityRateForScene;
     }
 
@@ -266,24 +267,25 @@ public class HomePageReportServiceImpl implements HomePageReportService {
     public WaterQualityRateForScene waterQualityRateForPumpingStation(Integer sceneId) {
 
         LoginUser loginUser = UserUtil.getCurrentUser();
+        LocalDate localDate = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
         //余氯
-        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationForScene(11,sceneId,"泵站",
+        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationByMonth(localDate,11,sceneId,"泵站",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //浊度
-        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationForScene(10,sceneId,"泵站",
+        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationByMonth(localDate,10,sceneId,"泵站",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //PH
-        BigDecimal ph =  homePageReportMapper.getWaterQualificationForScene(8,sceneId,"泵站",
+        BigDecimal ph =  homePageReportMapper.getWaterQualificationByMonth(localDate,8,sceneId,"泵站",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //压力
-        BigDecimal pressure =  homePageReportMapper.getWaterQualificationForScene(13,sceneId,"泵站",
+        BigDecimal pressure =  homePageReportMapper.getWaterQualificationByMonth(localDate,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);
+        waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:new BigDecimal("100"));
+        waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:new BigDecimal("100"));
+        waterQualityRateForScene.setPh(ph!=null?ph:new BigDecimal("100"));
+        waterQualityRateForScene.setPressure(pressure!=null?pressure:new BigDecimal("100"));
         return waterQualityRateForScene;
     }
 
@@ -291,24 +293,25 @@ public class HomePageReportServiceImpl implements HomePageReportService {
     public WaterQualityRateForScene waterQualityRateForWaterFactory(Integer sceneId) {
 
         LoginUser loginUser = UserUtil.getCurrentUser();
+        LocalDate localDate = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
         //余氯
-        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationForScene(11,sceneId,"水厂",
+        BigDecimal chlorine =  homePageReportMapper.getWaterQualificationByMonth(localDate,11,sceneId,"水厂",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //浊度
-        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationForScene(10,sceneId,"水厂",
+        BigDecimal turbidity =  homePageReportMapper.getWaterQualificationByMonth(localDate,10,sceneId,"水厂",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //PH
-        BigDecimal ph =  homePageReportMapper.getWaterQualificationForScene(8,sceneId,"水厂",
+        BigDecimal ph =  homePageReportMapper.getWaterQualificationByMonth(localDate,8,sceneId,"水厂",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         //压力
-        BigDecimal pressure =  homePageReportMapper.getWaterQualificationForScene(13,sceneId,"水厂",
+        BigDecimal pressure =  homePageReportMapper.getWaterQualificationByMonth(localDate,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);
+        waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:new BigDecimal("100"));
+        waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:new BigDecimal("100"));
+        waterQualityRateForScene.setPh(ph!=null?ph:new BigDecimal("100"));
+        waterQualityRateForScene.setPressure(pressure!=null?pressure:new BigDecimal("100"));
         return waterQualityRateForScene;
     }
     //水厂制水、药耗、电耗对比曲线

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

@@ -315,6 +315,62 @@
 
     </select>
 
+    <select id="getWaterQualificationByMonth" resultType="java.math.BigDecimal">
+        select
+        ROUND(if(count(deviceId) >0 ,1-((sum(alarmNumber) /count(deviceId))/timestampdiff(MINUTE,#{monthDate},now())),1)* 100,2)
+        from
+        (
+        select
+        s.id as "sceneId"
+        ,d.id as "deviceId"
+        ,ifnull(sum(
+            if(ad.state = 1,
+            timestampdiff(MINUTE,if(ad.ALARM_START_TIME > #{monthDate},ad.ALARM_START_TIME ,#{monthDate}),now())
+            ,if(ad.ALARM_START_TIME > #{monthDate}, timestampdiff(MINUTE,#{monthDate},now()) ,timestampdiff(MINUTE,ad.ALARM_START_TIME,ad.alarm_end_time))
+            )),0) 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 and (ad.alarm_end_time > #{monthDate} or ad.state = 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