Forráskód Böngészése

综合展示修改

wangyangyang 4 éve
szülő
commit
4a6c6baf2c

+ 16 - 74
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -51,6 +51,8 @@ public class MonitorInfoController {
     private AlarmDetailsService alarmDetailsService;
     @Autowired
     private  DeviceAttributeSpecsService deviceAttributeSpecsService;
+    @Autowired
+    private MonitorDataReportService monitorDataReportService;
 
     @ApiOperation(value = "按场景ID查询供水量出水量耗药量耗电量")
     @RequestMapping(value = "/findTotalUsageBySceneId",method = RequestMethod.GET)
@@ -58,80 +60,20 @@ public class MonitorInfoController {
     public  AjaxMessage<SceneUsageDto> findTotalUsageBySceneId(@ApiParam(value = "场景ID", required = true) @RequestParam Long id,@ApiParam(value = "类型(0综合调度 1综合展示)", required = false) @RequestParam(required = false) Integer... type) {
         SceneUsageDto sceneUsageDto = new SceneUsageDto();
         //查询场景下的所有设备信息
-        List<DeviceDto> devices = new ArrayList<>();
-        DeviceDto deviceDto = new DeviceDto();
-        deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
-        if(deviceDto.getSceneIds().size()==0)
-            return  null;
-        devices.addAll(deviceService.selectList(deviceDto));
-        //取前一个小时的时间
-        LocalDateTime dateTime = LocalDateTime.now().plusDays(-1);
-        for (DeviceDto item : devices) {
-            //设备的几个参数值
-            SceneDeviceAttributeDto sceneDeviceAttributeDto = new SceneDeviceAttributeDto();
-            sceneDeviceAttributeDto.setDeviceId(item.getId());
-            sceneDeviceAttributeDto.setYear(dateTime.getYear());
-            sceneDeviceAttributeDto.setMonth(dateTime.getMonthValue());
-            sceneDeviceAttributeDto.setDay(dateTime.getDayOfMonth());
-            sceneDeviceAttributeDto.setSceneId(id);
-            List<SceneDeviceAttributeDto> sceneDeviceAttributeDtos = monitorInfoService.findAttributeList(sceneDeviceAttributeDto);
-            //取缓存里的数据
-            byte[] bytes = redisUtil.get(("sms_water_" + item.getDeviceCode()).getBytes());
-            if (bytes != null && bytes.length > 0) {
-                MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
-                sceneUsageDto.setCollectDate(monitorDataEntity.getCollectDate());
-                //筛选该设备相同属性的值
-                Map<Long, MonitorDataValueEntity> map = new HashMap<>();
-                //将缓存中的实时数据放到map中方便进行遍历
-                for (MonitorDataValueEntity dateValue : monitorDataEntity.getDataValues()) {
-                    map.put(dateValue.getAttributeId(), dateValue);
-                }
-                for (SceneDeviceAttributeDto itemAttribute : sceneDeviceAttributeDtos) {
-                    Double attributeDiffValue = 0d;
-                    if (!map.containsKey(itemAttribute.getAttributeId())) {
-                        continue;
-                    }
-                    if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() != null) {
-                        attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue() - itemAttribute.getLatestValue();
-                    } else if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() == null) {
-                        attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue();
-                    }
-                    switch (itemAttribute.getAttributeType()) {
-                        case "3":
-                            sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? (double) Math.round((sceneUsageDto.getYieldWaterUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
-                            break;
-                        case "4":
-                            sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? (double) Math.round((sceneUsageDto.getIntakeWaterUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
-                            break;
-                        case "5":
-                            sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? (double) Math.round((sceneUsageDto.getPowerUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
-                            break;
-                        case "6":
-                            sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? (double) Math.round((sceneUsageDto.getDrugUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
-                            break;
-                    }
-                }
-                if (sceneUsageDto.getYieldWaterUsage() == null)
-                    sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage());
-                if (sceneUsageDto.getIntakeWaterUsage() == null)
-                    sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage());
-                if (sceneUsageDto.getPowerUsage() == null)
-                    sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage());
-                if (sceneUsageDto.getDrugUsage() == null)
-                    sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage());
-
-                if (type != null && type.length > 0) {
-                    sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                    sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                    sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                    sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                }else {
-                    sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                    sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                    sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                    sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-                }
-            }
+        sceneUsageDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,3,1).doubleValue());
+        sceneUsageDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,4,1).doubleValue());
+        sceneUsageDto.setPowerUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,5,1).doubleValue());
+        sceneUsageDto.setDrugUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,6,1).doubleValue());
+        if (type != null && type.length > 0) {
+            sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+            sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+            sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+            sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+        }else {
+            sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+            sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+            sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+            sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
         }
         return new AjaxMessage<>(ResultStatus.OK,sceneUsageDto);
     }

+ 24 - 3
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -1054,7 +1054,14 @@
         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 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
+        where  dp.`STATUS`=1 and
+        <if test="sceneTypeName!=null">
+            and st.SCENE_TYPE_NAME = #{sceneTypeName}
+        </if>
+        <if test="sceneTypeName == null">
+            and (st.SCENE_TYPE_NAME = '水源' or st.SCENE_TYPE_NAME = '水厂' or st.SCENE_TYPE_NAME = '泵站')
+        </if>
+        and s.ENABLE_STATE = 1
         <if test="companyOrgId != null">
             and s.COMPANY_ORG_ID = #{companyOrgId}
         </if>
@@ -1098,7 +1105,14 @@
         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 and r.year = #{year} and r.month= #{month}
-        where  dp.`STATUS`=1 and st.SCENE_TYPE_NAME = #{sceneTypeName} and s.ENABLE_STATE = 1
+        where  dp.`STATUS`=1
+        <if test="sceneTypeName!=null">
+           and st.SCENE_TYPE_NAME = #{sceneTypeName}
+        </if>
+        <if test="sceneTypeName == null">
+            and (st.SCENE_TYPE_NAME = '水源' or st.SCENE_TYPE_NAME = '水厂' or st.SCENE_TYPE_NAME = '泵站')
+        </if>
+        and s.ENABLE_STATE = 1
         <if test="companyOrgId != null">
             and s.COMPANY_ORG_ID = #{companyOrgId}
         </if>
@@ -1142,7 +1156,14 @@
         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 and r.year = #{year}
-        where  dp.`STATUS`=1 and st.SCENE_TYPE_NAME = #{sceneTypeName} and s.ENABLE_STATE = 1
+        where  dp.`STATUS`=1
+        <if test="sceneTypeName!=null">
+            and st.SCENE_TYPE_NAME = #{sceneTypeName}
+        </if>
+        <if test="sceneTypeName == null">
+            and (st.SCENE_TYPE_NAME = '水源' or st.SCENE_TYPE_NAME = '水厂' or st.SCENE_TYPE_NAME = '泵站')
+        </if>
+        and s.ENABLE_STATE = 1
         <if test="companyOrgId != null">
             and s.COMPANY_ORG_ID = #{companyOrgId}
         </if>