Browse Source

Merge branch '20210223' of http://114.135.61.188:53000/UIMS/Code into 20210223

wangbo 4 years ago
parent
commit
ff4cb68fc8

+ 2 - 0
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -83,11 +83,13 @@ public class MonitorInfoController {
     @ResponseBody
     public  AjaxMessage<SceneUsageDto> findTotalUsageBySceneIdForComDsiplay(@ApiParam(value = "场景ID", required = true) @RequestParam Long id,@ApiParam(value = "场景类型(0水源 1水厂 2泵站)", required = false) @RequestParam(required = false) Integer type) {
         SceneUsageDto sceneUsageDto = new SceneUsageDto();
+
         //查询场景下的所有设备信息
         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());
+        sceneUsageDto.setCollectDate(monitorDataReportService.getLastCollectTime(null, id.intValue(), null, 3, 1));
         if (type.equals(1) || type.equals(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);

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

@@ -10,6 +10,7 @@ import com.huaxu.model.LoginUser;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -80,6 +81,16 @@ public interface MonitorDataReportService {
      * @return
      */
     BigDecimal getAmountCount(Integer companyOrgId, Integer sceneId, String sceneTypeName, Integer parmType, Integer searchType);
+    /**
+     *
+     * @param companyOrgId 公司id
+     * @param sceneId 场景类型
+     * @param sceneTypeName 场景类型
+     * @param parmType  标记值
+     * @param searchType 查询类型:1日 2月 3年
+     * @return
+     */
+    Date getLastCollectTime(Integer companyOrgId, Integer sceneId, String sceneTypeName, Integer parmType, Integer searchType);
 
     /**
      * 获取用水量

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

@@ -1141,6 +1141,36 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         return monitorDataEntities.stream().collect(Collectors.toMap(MonitorDataEntity::getDeviceId, a -> a, (k1, k2) -> k1));
     }
 
+    /**
+     * 获取设备的最后采集时间
+     * @param companyOrgId
+     * @param sceneId
+     * @param sceneTypeName
+     * @param parmType
+     * @param searchType
+     * @return
+     */
+   public Date getLastCollectTime(Integer companyOrgId, Integer sceneId, String sceneTypeName, Integer parmType,Integer searchType)
+   {
+       LoginUser loginUser = UserUtil.getCurrentUser();
+       String tenantId = loginUser.getTenantId();
+       //查询设备编码
+       List<String> deviceCodes = monitorDataReportMapper.selectDeviceCodeByConditions(companyOrgId,sceneId,sceneTypeName, loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+       //根据编码获取redis中的实时数据
+       List<MonitorDataEntity> monitorDataEntities = new ArrayList<>();
+       for (String deviceCode : deviceCodes) {
+           //先取缓存里的数据
+           byte[] bytes = redisUtil.get(("sms_water_" + deviceCode).getBytes());
+           if (bytes != null && bytes.length > 0) {
+               monitorDataEntities.add((MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get());
+           }
+       }
+       if(monitorDataEntities.size()>0) {
+           monitorDataEntities.sort(Comparator.comparing(MonitorDataEntity::getCollectDate).reversed());
+           return  monitorDataEntities.get(0).getCollectDate();
+       }
+       return  null;
+   }
     /**
      *
      * @param companyOrgId 公司id