Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

wangyangyang před 4 roky
rodič
revize
009a07125a

+ 1 - 1
sms_water/src/main/java/com/huaxu/async/MonitorDataReportTaskAsync.java

@@ -34,7 +34,7 @@ public class MonitorDataReportTaskAsync {
     public void monitorDataReportForHour() {
         try{
             log.info("日报报任务开始执行");
-            monitorDataService.getMonitorDataByHour();
+            monitorDataService.getMonitorDataReportByHour();
             log.info("日报任务执行结束");
         }catch (Exception e){
             e.printStackTrace();

+ 14 - 11
sms_water/src/main/java/com/huaxu/controller/MonitorDataReportController.java

@@ -41,7 +41,7 @@ public class MonitorDataReportController {
             @ApiParam(value = "类型,1年2月3日", required = true) @RequestParam Integer reportType
     ){
         LocalDate localDate =LocalDate.now();
-        if(null == reportDate){
+        if(null != reportDate){
             localDate = LocalDate.parse(reportDate,DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         }
         if(sceneId != null){
@@ -66,20 +66,23 @@ public class MonitorDataReportController {
             @ApiParam(value = "类型,1年2月3日", required = true) @RequestParam Integer reportType
     ){
         LocalDate localDate =LocalDate.now();
-        if(null == reportDate){
+        if(null != reportDate){
             localDate = LocalDate.parse(reportDate,DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         }
        List<List<MonitorDataChartReportDeviceDto>> reportList=new ArrayList<>();
-        //能耗(供水量3、耗电量5)
-        List<MonitorDataChartReportDeviceDto> energy = monitorDataReportService.MonitorDataEnergyReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
-        //水质(PH8、余氯11、浊度10)
-        List<MonitorDataChartReportDeviceDto> quality = monitorDataReportService.MonitorDataQualityReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
-        //报警(报警次数)
-        List<MonitorDataChartReportDeviceDto> alarm = monitorDataReportService.DeviceAlarmReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
+        if(sceneIds != null && sceneIds.size() > 0){
 
-        reportList.add(energy);
-        reportList.add(quality);
-        reportList.add(alarm);
+            //能耗(供水量3、耗电量5)
+            List<MonitorDataChartReportDeviceDto> energy = monitorDataReportService.MonitorDataEnergyReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
+            //水质(PH8、余氯11、浊度10)
+            List<MonitorDataChartReportDeviceDto> quality = monitorDataReportService.MonitorDataQualityReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
+            //报警(报警次数)
+            List<MonitorDataChartReportDeviceDto> alarm = monitorDataReportService.DeviceAlarmReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
+
+            reportList.add(energy);
+            reportList.add(quality);
+            reportList.add(alarm);
+        }
         return new AjaxMessage<>(ResultStatus.OK, reportList);
     }
 }

+ 8 - 0
sms_water/src/main/java/com/huaxu/entity/DayReportEntity.java

@@ -137,4 +137,12 @@ public class DayReportEntity{
     @ApiModelProperty(value = "更新人")
     @JsonIgnore
     private String updateBy;
+
+    public String getMapkey(){
+        StringBuilder stringBuilder=new StringBuilder();
+        stringBuilder.append(this.deviceId);
+        stringBuilder.append(this.attributeId);
+        return stringBuilder.toString();
+    }
+
 }

+ 1 - 2
sms_water/src/main/java/com/huaxu/quartz/job/MonitorDataReportByDayJob.java

@@ -4,7 +4,6 @@ import com.huaxu.service.MonitorDataService;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -28,7 +27,7 @@ public  class MonitorDataReportByDayJob implements Job, Serializable {
     public void execute(JobExecutionContext context)  {
         try {
             log.info("日报报任务开始执行");
-            monitorDataService.getMonitorDataByHour();
+            monitorDataService.getMonitorDataReportByHour();
             log.info("日报任务执行结束");
         } catch (Exception e) {
             e.printStackTrace();

+ 4 - 13
sms_water/src/main/java/com/huaxu/service/MonitorDataService.java

@@ -5,6 +5,7 @@ import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.MonthReportEntity;
 import com.huaxu.entity.YearReportEntity;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -40,18 +41,6 @@ public interface MonitorDataService {
      */
     MonitorDataEntity findById(Long id);
 
-    /**
-     * 查询列表(另外再写,此处单纯测试)
-     * @return
-     */
-    List<MonitorDataEntity> findList();
-
-    /**
-     * 聚合(另外再写,此处单纯测试)
-     * @return
-     */
-    List<MonitorDataEntity> groupBy();
-
     /**
      * 查询基础设备信息
      * @param deviceCode
@@ -59,11 +48,13 @@ public interface MonitorDataService {
      */
     MonitorDataEntity getDeviceMonitorInfoByDeviceCode(String deviceCode);
 
+    List<DayReportEntity> getMonitorDataGroupByHour(LocalDateTime dateTime);
+
     /**
      * 生成每小时数据的日报
      * @return
      */
-    List<DayReportEntity> getMonitorDataByHour();
+    List<DayReportEntity> getMonitorDataReportByHour();
     /**
      * 生成每天数据的月报
      * @return

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

@@ -38,7 +38,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
     @Override
     public List<MonitorDataChartReportDeviceDto> MonitorDataChartReportByMonth(Long sceneId,Integer year,Integer month ) {
         LoginUser loginUser = UserUtil.getCurrentUser();
-        List<MonitorDataChartReportDeviceDto> monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataChartReport(2,year,month,null,sceneId,"sms_day_report",
+        List<MonitorDataChartReportDeviceDto> monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataChartReport(2,year,month,null,sceneId,"sms_month_report",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         FillLoseData(monitorDataChartReportDeviceDtos,2,year,month,1);
         return monitorDataChartReportDeviceDtos;
@@ -47,7 +47,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
     @Override
     public List<MonitorDataChartReportDeviceDto> MonitorDataChartReportByYear(Long sceneId,Integer year) {
         LoginUser loginUser = UserUtil.getCurrentUser();
-        List<MonitorDataChartReportDeviceDto> monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataChartReport(1,year,null,null,sceneId,"sms_day_report",
+        List<MonitorDataChartReportDeviceDto> monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataChartReport(1,year,null,null,sceneId,"sms_year_report",
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         FillLoseData(monitorDataChartReportDeviceDtos,1,year,1,1);
         return monitorDataChartReportDeviceDtos;
@@ -64,7 +64,9 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                         List<MonitorDataChartReportValueDto> monitorDataChartReportValueDtos = monitorDataChartReportAttributeDto.getMonitorDataChartReportValue();
                         Integer maxValue =0;
                         LocalDateTime localDateTime=LocalDateTime.now();
+                        Integer growingBase = 1;
                         if(type != null && type ==3){
+                            growingBase = 0;
                             maxValue = 24;
                             localDateTime=LocalDateTime.of(year,month,day,0,0,0);
                         }else if(type != null && type ==2){
@@ -78,16 +80,32 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                             if(i == monitorDataChartReportValueDtos.size()){
                                 MonitorDataChartReportValueDto monitorDataChartReportValueDto = new MonitorDataChartReportValueDto();
                                 monitorDataChartReportValueDto.setData(0.0);
-                                monitorDataChartReportValueDto.setDate(localDateTime);
-                                monitorDataChartReportValueDto.setDateLabel(i+1);
+                                if(type != null && type ==3){
+                                    monitorDataChartReportValueDto.setDate(localDateTime.plusHours(i));
+                                }
+                                if(type != null && type ==2){
+                                    monitorDataChartReportValueDto.setDate(localDateTime.plusDays(i));
+                                }
+                                if(type != null && type ==1){
+                                    monitorDataChartReportValueDto.setDate(localDateTime.plusMonths(i));
+                                }
+                                monitorDataChartReportValueDto.setDateLabel(i+growingBase);
                                 monitorDataChartReportValueDto.setMonitorData("");
                                 monitorDataChartReportValueDtos.add(i,monitorDataChartReportValueDto);
                             }else
-                            if(!monitorDataChartReportValueDtos.get(i).getDateLabel().equals(i+1)){
+                            if(!monitorDataChartReportValueDtos.get(i).getDateLabel().equals(i+growingBase)){
                                 MonitorDataChartReportValueDto monitorDataChartReportValueDto = new MonitorDataChartReportValueDto();
                                 monitorDataChartReportValueDto.setData(0.0);
-                                monitorDataChartReportValueDto.setDate(localDateTime);
-                                monitorDataChartReportValueDto.setDateLabel(i+1);
+                                if(type != null && type ==3){
+                                    monitorDataChartReportValueDto.setDate(localDateTime.plusHours(i));
+                                }
+                                if(type != null && type ==2){
+                                    monitorDataChartReportValueDto.setDate(localDateTime.plusDays(i));
+                                }
+                                if(type != null && type ==1){
+                                    monitorDataChartReportValueDto.setDate(localDateTime.plusMonths(i));
+                                }
+                                monitorDataChartReportValueDto.setDateLabel(i+growingBase);
                                 monitorDataChartReportValueDto.setMonitorData("");
                                 monitorDataChartReportValueDtos.add(i,monitorDataChartReportValueDto);
                             }

+ 31 - 49
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataServiceImpl.java

@@ -1,6 +1,7 @@
 package com.huaxu.service.impl;
 
 import com.huaxu.dao.MonitorDataMapper;
+import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.entity.DayReportEntity;
 import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.MonthReportEntity;
@@ -26,11 +27,9 @@ import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -119,49 +118,12 @@ public class MonitorDataServiceImpl implements MonitorDataService , Initializing
         return monitorDataEntity;
     }
 
-
     @Override
-    public List<MonitorDataEntity> findList() {
-        Criteria criteria = new Criteria();
-        criteria.and("collectDate").lt(new Date());
-        Query query = new Query(criteria);
-        List<MonitorDataEntity> monitorDataEntitys = mongoTemplate.find(query, MonitorDataEntity.class,"SMS_MONITOR_DATA");
-        return monitorDataEntitys;
-    }
-
-    public List<MonitorDataEntity> groupBy(){
-        Criteria criteria = new Criteria();
-//        criteria.and("collectDate").lt(new Date());
-
-        Criteria elemMatchCriteria = new Criteria();
-        elemMatchCriteria.and("dataValue").gt(33);
-        criteria.and("dataValues").elemMatch(elemMatchCriteria);//查询数组里面的数据
-        Aggregation agg = Aggregation.newAggregation(
-                Aggregation.match(criteria),    //查询条件
-                Aggregation.unwind("dataValues"),//将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值
-//                Aggregation.sort(Sort.Direction.DESC, "readDate"),//在聚合之前对数据进行排序
-                Aggregation.group("deviceId","dataValues.attributeId" )
-                        .sum("$dataValues.dataValue").as("sumDataValue")
-                        .max("$dataValues.dataValue").as("maxDataValue")
-                        .min("$dataValues.dataValue").as("minDataValue")
-                        .avg("$dataValues.dataValue").as("avgDataValue")
-                        .first("$dataValues.dataValue").as("firstDataValue")
-                        .count().as("countDataValue")
-        );
-//        AggregationResults<MonitorDataEntity> durationData =
-//                mongoTemplate.aggregate(agg, "SMS_MONITOR_DATA", MonitorDataEntity.class);
-//        List<MonitorDataEntity> monitorDataEntities = durationData.getMappedResults();
-//        return monitorDataEntities;
-        AggregationResults<Object> durationData =
-                mongoTemplate.aggregate(agg, "SMS_MONITOR_DATA", Object.class);
-        List<Object> monitorDataEntities = durationData.getMappedResults();
-        return null;
-    }
-
-    public List<DayReportEntity> getMonitorDataByHour(){
-        //取前一个小时的时间
-        LocalDateTime dateTime = LocalDateTime.now().plusHours(-1);
+    public List<DayReportEntity> getMonitorDataGroupByHour(LocalDateTime dateTime ){
 
+        if(dateTime == null ){
+            return null;
+        }
         Criteria criteria = new Criteria();
         criteria.and("year").is(dateTime.getYear());
         criteria.and("month").is(dateTime.getMonthValue());
@@ -176,7 +138,7 @@ public class MonitorDataServiceImpl implements MonitorDataService , Initializing
                         .min("$dataValues.dataValue").as("minValue")
                         .max("$dataValues.dataValue").as("maxValue")
                         .avg("$dataValues.dataValue").as("avgValue")
-                        .sum("$dataValues.dataValue").as("sumValue")
+//                        .sum("$dataValues.dataValue").as("sumValue")
                         .last("$dataValues.dataValue").as("latestValue")
                         .last("$collectDate").as("collectDate")
                         .count().as("countNum")
@@ -185,11 +147,31 @@ public class MonitorDataServiceImpl implements MonitorDataService , Initializing
                 mongoTemplate.aggregate(agg, "SMS_MONITOR_DATA", DayReportEntity.class);
         //获取查询结果
         List<DayReportEntity> monthReportEntities = durationData.getMappedResults();
+        return monthReportEntities;
+    }
+
+    @Override
+    public List<DayReportEntity> getMonitorDataReportByHour(){
+        //取前一个小时的时间
+        LocalDateTime dateTime = LocalDateTime.now().plusHours(-1);
+
+        List<DayReportEntity> HourData = getMonitorDataGroupByHour(dateTime);
+        List<DayReportEntity> lastHourData = getMonitorDataGroupByHour(dateTime.plusHours(-1));
+
+        Map<String,DayReportEntity> lastHourDataMap = lastHourData.stream().collect(Collectors.toMap(DayReportEntity::getMapkey, a -> a,(k1, k2)->k1));
+
         //保存日报表数据
-        if(monthReportEntities.size()>0){
-            monitorDataMapper.batchInsertDayReport(monthReportEntities);
+        if(HourData.size()>0){
+            //计算累计值
+            for(DayReportEntity dayReportEntity : HourData){
+                if(dayReportEntity.getLatestValue()!=null && lastHourDataMap.containsKey(dayReportEntity.getMapkey())
+                 && lastHourDataMap.get(dayReportEntity.getMapkey()).getLatestValue() != null){
+                    dayReportEntity.setSumValue(new BigDecimal(dayReportEntity.getLatestValue().toString()).subtract(new BigDecimal(lastHourDataMap.get(dayReportEntity.getMapkey()).getLatestValue().toString())).doubleValue());
+                }
+            }
+            monitorDataMapper.batchInsertDayReport(HourData);
         }
-        return monthReportEntities;
+        return HourData;
     }
 
     @Override

+ 1 - 0
sms_water/src/main/java/com/huaxu/service/impl/OnlineMonitorImpl.java

@@ -142,6 +142,7 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
         List<Long> sceneIds = pages.getList().stream().map(OnlineDataDto::getSceneId).collect(Collectors.toList());
         monitorDataCollectDto.setType(2);
         monitorDataCollectDto.setSceneIds(sceneIds);
+        monitorDataCollectDto.setTenantId(loginUser.getTenantId());
         List<MonitorDataCollectDto> calculateRes=onlineMonitorMapper.selectSceneParam(monitorDataCollectDto);
 
         GetCalOnlineData(pages.getList(),calculateRes);//获取在线数据及计算数据

+ 3 - 0
sms_water/src/main/resources/mapper/AlarmSettingMapper.xml

@@ -46,6 +46,9 @@
             <if test="alarm.id != null">
                 and t1.id = #{alarm.id}
             </if>
+            <if test="alarm.tenantId != null and alarm.tenantId != ''">
+                and t1.tenant_id = #{alarm.tenantId}
+            </if>
             <if test="alarm.attributeName != null and alarm.attributeName != ''">
                 and t4.name like CONCAT('%',#{alarm.attributeName},'%')
             </if>

+ 2 - 16
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -113,8 +113,8 @@
             <if test="type != null and type ==3">
                 r.`HOUR` as "dateLabel",
             </if>
-            cast(ifnull(r.LATEST_VALUE -r2.LATEST_VALUE,'') as char)+ifnull(da.UNIT,'') as "monitorData"
-            ,ifnull((r.LATEST_VALUE -r2.LATEST_VALUE),0)  as "data"
+            cast(ifnull(r.SUM_VALUE,0) as char)+ifnull(da.UNIT,'') as "monitorData"
+            ,ifnull(r.SUM_VALUE ,0)  as "data"
             ,r.COLLECT_DATE as "date"
 
             ,d.DEVICE_CODE as "devoceCode"
@@ -131,20 +131,6 @@
             from sms_day_report r
         </if>
         <include refid="MonitorDataReportJoins"/>
-
-        <if test="type != null and type ==1">
-            left join sms_year_report r2 on r.DEVICE_ID=r2.DEVICE_ID and r.ATTRIBUTE_ID=r2.ATTRIBUTE_ID
-                                    and	r.year=r2.`YEAR`and r.`MONTH`-1=r2.`MONTH`
-        </if>
-        <if test="type != null and type ==2">
-            left join sms_month_report r2 on r.DEVICE_ID=r2.DEVICE_ID and r.ATTRIBUTE_ID=r2.ATTRIBUTE_ID
-                                    and	r.year=r2.`YEAR`and r.`MONTH`=r2.`MONTH`and r.`DAY`-1=r2.`DAY`
-        </if>
-        <if test="type != null and type ==3">
-            left join sms_day_report r2 on r.DEVICE_ID=r2.DEVICE_ID and r.ATTRIBUTE_ID=r2.ATTRIBUTE_ID
-                                    and	r.year=r2.`YEAR`and r.`MONTH`=r2.`MONTH` and r.`DAY`=r2.`DAY` and r.`HOUR`-1 =r2.`HOUR`
-        </if>
-
         where (da.ATTRIBUTE_TYPE=3 or da.ATTRIBUTE_TYPE=5)
         <if test="sceneIds != null and sceneIds.size()>0">
             and r.PARENT_SCENE_ID in

+ 15 - 0
sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml

@@ -81,6 +81,9 @@
         <if test="sceneName != null and sceneName != ''">
             and t1.scene_name  like concat('%',#{sceneName},'%')
         </if>
+        <if test="tenantId != null and tenantId != ''">
+            and t1.tenant_id = #{tenantId}
+        </if>
         order by t1.scene_name
     </select>
     <!--查询实时报警数量-->
@@ -101,6 +104,9 @@
         <if test="sceneName != null and sceneName != ''">
             and t1.scene_name  like concat('%',#{sceneName},'%')
         </if>
+        <if test="tenantId != null and tenantId != ''">
+            and t1.tenant_id = #{tenantId}
+        </if>
         group by t1.scene_name
         order by alalmCount desc
     </select>
@@ -122,6 +128,9 @@
                 #{item}
             </foreach>
         </if>
+        <if test="tenantId != null and tenantId != ''">
+            and t1.tenant_id = #{tenantId}
+        </if>
         order by t1.scene_name,t5.seq
     </select>
     <!--查询地图参数数据-->
@@ -159,6 +168,9 @@
         <if test="onlineDataDto.sceneName != null and onlineDataDto.sceneName != ''">
             and t1.scene_name  like concat('%',#{onlineDataDto.sceneName},'%')
         </if>
+        <if test="onlineDataDto.tenantId != null and onlineDataDto.tenantId != ''">
+            and t1.tenant_id = #{onlineDataDto.tenantId}
+        </if>
         order by  t1.date_create
     </select>
     <!--查询设备报警分析-->
@@ -226,6 +238,9 @@
                 #{item}
             </foreach>
         </if>
+        <if test="tenantId != null and tenantId != ''">
+            and t1.tenant_id = #{tenantId}
+        </if>
         order by t1.scene_name,t5.seq
     </select>
 </mapper>

+ 1 - 0
user_auth/src/main/resources/mapper/UserMapper.xml

@@ -54,6 +54,7 @@
         join uims_org c on a.COMPANY_ORG_ID=c.id left join
         uims_org d on a.DEPT_ORG_ID=d.ID
         <where>
+                          and a.status=1
             <if test="id != null">
                 and ID = #{id}
             </if>