|
@@ -0,0 +1,168 @@
|
|
|
+package com.huaxu.service.impl;
|
|
|
+
|
|
|
+import com.huaxu.dao.AlarmDetailMapper;
|
|
|
+import com.huaxu.dao.MonitorDataMapper;
|
|
|
+import com.huaxu.dao.TestDataMapper;
|
|
|
+import com.huaxu.dto.DeviceCheckAlarmDto;
|
|
|
+import com.huaxu.entity.AlarmDetailsEntity;
|
|
|
+import com.huaxu.entity.DayReportEntity;
|
|
|
+import com.huaxu.service.TestDataService;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.time.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description
|
|
|
+ * @auto wangli
|
|
|
+ * @data 2020/12/14 14:36
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class TestDataServiceImpl implements TestDataService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AlarmDetailMapper alarmDetailMapper;
|
|
|
+ @Resource
|
|
|
+ private TestDataMapper testDataMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private MonitorDataMapper monitorDataMapper;
|
|
|
+
|
|
|
+ public List<DayReportEntity> selectDeviceInfo(Long id){
|
|
|
+ return testDataMapper.selectDeviceInfo(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void createDataByYear(Long id ,LocalDate beginDate, LocalDate endDate) {
|
|
|
+ while(beginDate.isBefore(endDate)){
|
|
|
+ testDataMapper.batchInsertYearReport(beginDate.getYear(),id);
|
|
|
+ beginDate=beginDate.plusYears(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void createDataByMonth(Long id ,LocalDate beginDate, LocalDate endDate) {
|
|
|
+ while(beginDate.isBefore(endDate)){
|
|
|
+ testDataMapper.batchInsertMonthReport(beginDate.getYear(),beginDate.getMonthValue(),id);
|
|
|
+ beginDate=beginDate.plusMonths(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public void createDataByDay(List<DayReportEntity> dayReportEntityList,LocalDate beginDate, LocalDate endDate) {
|
|
|
+ LocalDateTime beginDateTime=beginDate.atStartOfDay();
|
|
|
+ LocalDateTime endDateTime=endDate.atStartOfDay();
|
|
|
+
|
|
|
+ List<DayReportEntity> dayReportEntities =new ArrayList<>();
|
|
|
+ for(int i=0,j=0; beginDateTime.isBefore(endDateTime);i++,j++){
|
|
|
+ if(i==24){
|
|
|
+ i=0;
|
|
|
+ }
|
|
|
+ beginDateTime = beginDateTime.plusHours(1);
|
|
|
+ for(DayReportEntity dayReportEntity : dayReportEntityList){
|
|
|
+
|
|
|
+ DayReportEntity dayReport = new DayReportEntity();
|
|
|
+ dayReport.setTenantId(dayReportEntity.getTenantId());
|
|
|
+ dayReport.setParentSceneId(dayReportEntity.getParentSceneId());
|
|
|
+ dayReport.setParentSceneName(dayReportEntity.getParentSceneName());
|
|
|
+ dayReport.setSceneId(dayReportEntity.getSceneId());
|
|
|
+ dayReport.setSceneName(dayReportEntity.getSceneName());
|
|
|
+ dayReport.setDeviceId(dayReportEntity.getDeviceId());
|
|
|
+ dayReport.setDeviceName(dayReportEntity.getDeviceName());
|
|
|
+ dayReport.setDeviceCode(dayReportEntity.getDeviceCode());
|
|
|
+ dayReport.setAttributeId(dayReportEntity.getAttributeId());
|
|
|
+ dayReport.setAttributeName(dayReportEntity.getAttributeName());
|
|
|
+
|
|
|
+
|
|
|
+ dayReport.setYear(beginDateTime.getYear());
|
|
|
+ dayReport.setMonth(beginDateTime.getMonthValue());
|
|
|
+ dayReport.setDay(beginDateTime.getDayOfMonth());
|
|
|
+ dayReport.setHour(i);
|
|
|
+ dayReport.setMinValue(new Double(j));
|
|
|
+ dayReport.setMaxValue(j+1.0);
|
|
|
+ dayReport.setAvgValue(j+0.5);
|
|
|
+ dayReport.setSumValue(1d);
|
|
|
+ dayReport.setLatestValue(j+1.0);
|
|
|
+ dayReport.setCollectDate(Date.from(beginDateTime.atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
+ dayReportEntities.add(dayReport);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(dayReportEntities.size()>0){
|
|
|
+ for(int i=0;500*i<dayReportEntities.size();i++){
|
|
|
+ if(500*i+500<dayReportEntities.size()){
|
|
|
+ monitorDataMapper.batchInsertDayReport(dayReportEntities.subList(500*i,500*i+500));
|
|
|
+ }else{
|
|
|
+ monitorDataMapper.batchInsertDayReport(dayReportEntities.subList(500*i,dayReportEntities.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void createAlarmByDay(Integer deviceId,LocalDate beginDate, LocalDate endDate,Integer times){
|
|
|
+
|
|
|
+ List<DeviceCheckAlarmDto> deviceCheckAlarmDtos = alarmDetailMapper.selectDeviceForCheckAlarm(deviceId,"状态报警");
|
|
|
+
|
|
|
+ ZoneOffset zoneOffset = ZoneOffset.ofHours(8);
|
|
|
+ Long beginTimestamp = beginDate.atStartOfDay().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
|
|
|
+ Long endTimestamp = endDate.atStartOfDay().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
|
|
|
+ int size =deviceCheckAlarmDtos.size();
|
|
|
+ List<DayReportEntity> dayReportEntities =new ArrayList<>();
|
|
|
+ if(size>0){
|
|
|
+ List<AlarmDetailsEntity> deviceStateAlarmDtoNews = new ArrayList<>();
|
|
|
+ for(int i=0;i<times;i++){
|
|
|
+ //随机时间报警
|
|
|
+ Long timestamp = new Double(Math.random()*(endTimestamp-beginTimestamp+1)+beginTimestamp).longValue();
|
|
|
+ Integer m = (int)(Math.random()*size);
|
|
|
+ //随机报警参数
|
|
|
+// DeviceCheckAlarmDto d=deviceCheckAlarmDtos.get(m);
|
|
|
+ DeviceCheckAlarmDto d=deviceCheckAlarmDtos.get(0);
|
|
|
+
|
|
|
+ AlarmDetailsEntity alarmDetailsEntity = new AlarmDetailsEntity();
|
|
|
+ alarmDetailsEntity.setDateUpdate(new Date(timestamp));
|
|
|
+ alarmDetailsEntity.setDateCreate(new Date(timestamp));
|
|
|
+ alarmDetailsEntity.setStatus(1);
|
|
|
+ alarmDetailsEntity.setOpState(1);
|
|
|
+ alarmDetailsEntity.setState(1);
|
|
|
+ alarmDetailsEntity.setAlarmStartTime(new Date(timestamp));
|
|
|
+ alarmDetailsEntity.setAlarmContent(d.getDeviceName()+"离线时间"+d.getAlarmCondition() +d.getAlarmValue()+"分钟");
|
|
|
+ alarmDetailsEntity.setAlarmValue(d.getDuration());
|
|
|
+ alarmDetailsEntity.setAttributeId(d.getAttributeId());
|
|
|
+ alarmDetailsEntity.setAlarmType("状态报警");
|
|
|
+ alarmDetailsEntity.setDeptOrgId(d.getDeptOrgId());
|
|
|
+ alarmDetailsEntity.setCompanyOrgId(d.getCompanyOrgId());
|
|
|
+ alarmDetailsEntity.setDeviceId(d.getDeviceId());
|
|
|
+ alarmDetailsEntity.setTenantId(d.getTenantId());
|
|
|
+ alarmDetailsEntity.setAlarmSettingId(d.getAlarmSettingId());
|
|
|
+ deviceStateAlarmDtoNews.add(alarmDetailsEntity);
|
|
|
+ }
|
|
|
+ if(deviceStateAlarmDtoNews.size()>0){
|
|
|
+ for(int i=0;500*i<dayReportEntities.size();i++){
|
|
|
+ if(500*i+500<dayReportEntities.size()){
|
|
|
+ alarmDetailMapper.batchInsert(deviceStateAlarmDtoNews.subList(500*i,500*i+500));
|
|
|
+ }else{
|
|
|
+ alarmDetailMapper.batchInsert(deviceStateAlarmDtoNews.subList(500*i,dayReportEntities.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ int max=8,min=7;
|
|
|
+ int ran2 = (int) (Math.random()*(max-min+1)+min);
|
|
|
+ int a=(int) (Math.random()*10);
|
|
|
+ int b=(int)(Math.random()*10);
|
|
|
+ System.out.println(a+"..."+b+"......."+ran2);
|
|
|
+
|
|
|
+// Long timestamp = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
|
|
|
+// Long timestamp2 = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
|
|
|
+// LocalDate localDate = Instant.ofEpochSecond(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDate();
|
|
|
+// LocalDateTime localDateTime = Instant.ofEpochSecond(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
|
|
|
+// System.out.println(timestamp);
|
|
|
+// System.out.println(timestamp2);
|
|
|
+// System.out.println(localDate.toString());
|
|
|
+// System.out.println(localDateTime.toString());
|
|
|
+ }
|
|
|
+}
|