123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- package com.gyee.ghost.service;/*
- @author 谢生杰
- @date 2022/10/25-10:33
- */
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.gyee.common.contant.Contant;
- import com.gyee.common.model.PointData;
- import com.gyee.common.model.StringUtils;
- import com.gyee.common.util.CommonUtils;
- import com.gyee.common.util.DateUtils;
- import com.gyee.common.util.DoubleUtils;
- import com.gyee.ghost.init.CacheContext;
- import com.gyee.ghost.model.auto.ProEconStationStatusmx;
- import com.gyee.ghost.model.auto.ProEconWindturbineStatus2;
- import com.gyee.ghost.model.auto.Windturbine;
- import com.gyee.ghost.model.auto.Windturbinetestingpointai;
- import com.gyee.ghost.service.auto.IProEconStationStatusmxService;
- import com.gyee.ghost.service.auto.IProEconStatusmxService;
- import com.gyee.ghost.service.auto.IProEconWindturbineStatus2Service;
- import com.gyee.ghost.util.realtimesource.IEdosUtil;
- import lombok.extern.slf4j.Slf4j;
- import oracle.sql.Datum;
- import org.apache.ibatis.annotations.Update;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- @Slf4j
- public class RealtimeService {
- @Resource
- private IProEconWindturbineStatus2Service proEconWindturbineStatus2Service;
- @Resource
- private IProEconStationStatusmxService proEconStationStatusmxService;
- @Resource
- private IEdosUtil edosUtil;
- public void saveWindturbineStatus2() throws ParseException {
- List<ProEconWindturbineStatus2> resultList = new ArrayList<>();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- List<Windturbine> wtls = CacheContext.wtls;
- Map<Integer, String> statusmxMap = CacheContext.statusmxMap;
- Map<String, Map<String, Windturbinetestingpointai>> wtpAimap = CacheContext.wtpAimap;
- Date samedayZero = DateUtils.getSamedayZero();
- Date currentDate = sdf.parse(DateUtils.toDate(DateUtils.getCurrentDate()));
- // Date befroeDate = DateUtils.addSeconds(currentDate, -1);
- Date befroeDate = DateUtils.addMinutes(currentDate,-5);
- Date startOfDay = DateUtils.getStartOfDay(currentDate);
- Date endOfDay = DateUtils.getEndOfDay(currentDate);
- wtls.stream().forEach(wt->{
- Map<String, Windturbinetestingpointai> stringWindturbinetestingpointaiMap = wtpAimap.get(wt.getId());
- Windturbinetestingpointai windturbinetestingpointai = stringWindturbinetestingpointaiMap.get(Contant.ZTMX);
- Windturbinetestingpointai windturbinetestingpointaifs = stringWindturbinetestingpointaiMap.get(Contant.AI022);
- try {
- PointData realData = edosUtil.getSectionData(windturbinetestingpointai,currentDate.getTime());
- double aDouble = realData.getPointValueInDouble();
- PointData sectionData = edosUtil.getSectionData(windturbinetestingpointai, befroeDate.getTime());
- double tempDouble = sectionData.getPointValueInDouble();
- double speed = edosUtil.getRealData(windturbinetestingpointaifs).getPointValueInDouble();
- if (isEq(DateUtils.toDate(currentDate),DateUtils.toDate(startOfDay)) || aDouble != tempDouble){
- ProEconWindturbineStatus2 proEconWindturbineStatus2 = new ProEconWindturbineStatus2();
- proEconWindturbineStatus2.setId(CommonUtils.getUUID());
- proEconWindturbineStatus2.setWindpowerstationId(wt.getWindpowerstationid());
- proEconWindturbineStatus2.setWindturbineId(wt.getId());
- proEconWindturbineStatus2.setStopTime(DateUtils.parseLongToDate(currentDate.getTime()));
- proEconWindturbineStatus2.setStartTime(DateUtils.parseLongToDate(currentDate.getTime()));
- proEconWindturbineStatus2.setStopHours(DateUtils.hoursDiff2(proEconWindturbineStatus2.getStopTime(), proEconWindturbineStatus2.getStartTime()));
- proEconWindturbineStatus2.setLossPower(0.0);
- proEconWindturbineStatus2.setShutdownEventId("");
- proEconWindturbineStatus2.setProjectId(wt.getProjectid());
- proEconWindturbineStatus2.setSatusCode(new Double(aDouble).intValue());
- proEconWindturbineStatus2.setSpeed(speed);
- proEconWindturbineStatus2.setAvgSpeed(0.0);
- String statusName = statusmxMap.get(new Double(aDouble).intValue());
- proEconWindturbineStatus2.setStatusDesc(statusName);
- resultList.add(proEconWindturbineStatus2);
- // proEconWindturbineStatus2Service.save(proEconWindturbineStatus2);
- QueryWrapper<ProEconWindturbineStatus2> qw = new QueryWrapper<>();
- qw.eq("windTurbine_Id",wt.getId());
- // Date beforeFive = DateUtils.addMinutes(sdf.parse(DateUtils.toDate1(currentDate)), -5);
- // String toDate = DateUtils.toDate(beforeFive);
- // Date parse = sdf.parse(toDate);
- qw.eq("stop_Time",befroeDate);
- qw.orderByDesc("start_time");
- Optional<ProEconWindturbineStatus2> first = proEconWindturbineStatus2Service.list(qw).stream().findFirst();
- if (first.isPresent()){
- ProEconWindturbineStatus2 proEconWindturbineStatus = first.get();
- proEconWindturbineStatus.setStopTime(DateUtils.parseLongToDate(currentDate.getTime()));
- proEconWindturbineStatus.setStopHours(DateUtils.hoursDiff2(proEconWindturbineStatus.getStopTime(), proEconWindturbineStatus.getStartTime()));
- proEconWindturbineStatus.setLossPower(0.0);
- proEconWindturbineStatus.setSpeed(speed);
- proEconWindturbineStatus.setAvgSpeed(0.0);
- resultList.add(proEconWindturbineStatus);
- // proEconWindturbineStatus2Service.updateById(proEconWindturbineStatus);
- }
- }else {
- QueryWrapper<ProEconWindturbineStatus2> qw = new QueryWrapper<>();
- qw.eq("windTurbine_Id",wt.getId());
- // Date beforeFive = DateUtils.addMinutes(sdf.parse(DateUtils.toDate1(currentDate)), -5);
- // String toDate = DateUtils.toDate(beforeFive);
- // Date parse = sdf.parse(toDate);
- qw.eq("stop_Time",befroeDate);
- qw.orderByDesc("start_time");
- Optional<ProEconWindturbineStatus2> first = proEconWindturbineStatus2Service.list(qw).stream().findFirst();
- if (first.isPresent()){
- ProEconWindturbineStatus2 proEconWindturbineStatus2 = first.get();
- proEconWindturbineStatus2.setStopTime(DateUtils.parseLongToDate(currentDate.getTime()));
- proEconWindturbineStatus2.setStopHours(DateUtils.hoursDiff2(proEconWindturbineStatus2.getStopTime(), proEconWindturbineStatus2.getStartTime()));
- proEconWindturbineStatus2.setLossPower(0.0);
- proEconWindturbineStatus2.setSpeed(speed);
- proEconWindturbineStatus2.setAvgSpeed(0.0);
- // proEconWindturbineStatus2Service.updateById(proEconWindturbineStatus2);
- resultList.add(proEconWindturbineStatus2);
- }else {
- ProEconWindturbineStatus2 proEconWindturbineStatus2 = new ProEconWindturbineStatus2();
- proEconWindturbineStatus2.setId(CommonUtils.getUUID());
- proEconWindturbineStatus2.setWindpowerstationId(wt.getWindpowerstationid());
- proEconWindturbineStatus2.setWindturbineId(wt.getId());
- proEconWindturbineStatus2.setStopTime(DateUtils.parseLongToDate(currentDate.getTime()));
- proEconWindturbineStatus2.setStartTime(DateUtils.parseLongToDate(currentDate.getTime()));
- proEconWindturbineStatus2.setStopHours(DateUtils.hoursDiff2(proEconWindturbineStatus2.getStopTime(), proEconWindturbineStatus2.getStartTime()));
- proEconWindturbineStatus2.setLossPower(0.0);
- proEconWindturbineStatus2.setShutdownEventId("");
- proEconWindturbineStatus2.setProjectId(wt.getProjectid());
- proEconWindturbineStatus2.setSatusCode(new Double(aDouble).intValue());
- proEconWindturbineStatus2.setSpeed(speed);
- proEconWindturbineStatus2.setAvgSpeed(0.0);
- String statusName = statusmxMap.get(new Double(aDouble).intValue());
- proEconWindturbineStatus2.setStatusDesc(statusName);
- resultList.add(proEconWindturbineStatus2);
- // proEconWindturbineStatus2Service.save(proEconWindturbineStatus2);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- proEconWindturbineStatus2Service.saveOrUpdateBatch(resultList);
- }
- public void saveWindstationStatus(String beginDate,String endDate) {
- List<ProEconStationStatusmx> resultList = new ArrayList<>();
- List<String> days = DateUtils.getDays(beginDate, endDate);
- List<Windturbine> wtls = CacheContext.wtls;
- Map<Integer, String> statusmxMap = CacheContext.statusmxMap;
- Set<Integer> status = statusmxMap.keySet();
- days.stream().forEach(day->{
- Date date = DateUtils.parseDate1(day);
- Date addDays = DateUtils.addDays(date, 1);
- Map<String,Object> delMap = new HashMap<>();
- delMap.put("recorddate",date);
- proEconStationStatusmxService.removeByMap(delMap);
- wtls.stream().forEach(wt->{
- QueryWrapper<ProEconWindturbineStatus2> qw = new QueryWrapper<>();
- qw.eq("windTurbine_Id",wt.getId());
- qw.le("stop_Time",addDays).ge("start_Time",date);
- List<ProEconWindturbineStatus2> windturbineStatus2s = proEconWindturbineStatus2Service.list(qw);
- status.stream().forEach(sta->{
- ProEconStationStatusmx proEconStationStatusmx = new ProEconStationStatusmx();
- proEconStationStatusmx.setId(CommonUtils.getUUID());
- proEconStationStatusmx.setProjectId(wt.getProjectid());
- proEconStationStatusmx.setWindpowerstationId(wt.getWindpowerstationid());
- proEconStationStatusmx.setWindturbineId(wt.getId());
- proEconStationStatusmx.setRecorddate(date);
- proEconStationStatusmx.setStopHours(windturbineStatus2s.stream().filter(i->i.getSatusCode().equals(sta)).mapToDouble(ProEconWindturbineStatus2::getStopHours).sum());
- proEconStationStatusmx.setLossPower(0.0);
- proEconStationStatusmx.setSatusCode(sta);
- proEconStationStatusmx.setStatusDesc(statusmxMap.get(sta));
- proEconStationStatusmx.setAvgSpeed(0.0);
- resultList.add(proEconStationStatusmx);
- });
- });
- proEconStationStatusmxService.saveBatch(resultList);
- });
- // List<ProEconStationStatusmx> resultList = new ArrayList<>();
- // List<String> days = DateUtils.getDays(beginDate, endDate);
- // List<Windturbine> wtls = CacheContext.wtls;
- // Map<Integer, String> statusmxMap = CacheContext.statusmxMap;
- // Set<Integer> status = statusmxMap.keySet();
- //
- // Map<String, Map<String, Windturbinetestingpointai>> wtpAimap = CacheContext.wtpAimap;
- //
- // Date samedayZero = DateUtils.getSamedayZero();
- // Date currentDate = DateUtils.getCurrentDate();
- //// Date befroeDate = DateUtils.addSeconds(currentDate,-1);
- //// Date befroeDate = DateUtils.addMinutes(currentDate,-5);
- // days.forEach(day->{
- // Date date = DateUtils.parseDate(day);
- // Date addday = DateUtils.addDays(date, 1);
- // wtls.stream().forEach(wt->{
- // Map<String, Windturbinetestingpointai> stringWindturbinetestingpointaiMap = wtpAimap.get(wt.getId());
- // Windturbinetestingpointai windturbinetestingpointai = stringWindturbinetestingpointaiMap.get(Contant.ZTMX);
- // Windturbinetestingpointai windturbinetestingpointaifs = stringWindturbinetestingpointaiMap.get(Contant.AI022);
- // try {
- // List<PointData> historyDatasSnap = edosUtil.getHistoryDatasSnap(windturbinetestingpointai, date.getTime() / 1000, addday.getTime() / 1000, null, 60l);
- // status.stream().forEach(sta->{
- // int minutes = historyDatasSnap.stream().filter(i -> i.getPointValueInDouble() == sta).collect(Collectors.toList()).size();
- // ProEconStationStatusmx proEconStationStatusmx = new ProEconStationStatusmx();
- // proEconStationStatusmx.setId(CommonUtils.getUUID());
- // proEconStationStatusmx.setProjectId(wt.getProjectid());
- // proEconStationStatusmx.setWindpowerstationId(wt.getWindpowerstationid());
- // proEconStationStatusmx.setWindturbineId(wt.getId());
- // proEconStationStatusmx.setRecorddate(date);
- // proEconStationStatusmx.setStopHours(DoubleUtils.keepPrecision(new Double(minutes)/60,2));
- // proEconStationStatusmx.setLossPower(0.0);
- // proEconStationStatusmx.setSatusCode(sta);
- // proEconStationStatusmx.setStatusDesc(statusmxMap.get(sta));
- // proEconStationStatusmx.setAvgSpeed(0.0);
- //// proEconStationStatusmxService.save(proEconStationStatusmx);
- // resultList.add(proEconStationStatusmx);
- // });
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- //
- // });
- // });
- //
- // proEconStationStatusmxService.saveBatch(resultList);
- }
- public void saveWindstationStatus1(String beginDate,String endDate) {
- List<ProEconStationStatusmx> resultList = new ArrayList<>();
- List<String> days = DateUtils.getDays(beginDate, endDate);
- List<Windturbine> wtls = CacheContext.wtls;
- Map<Integer, String> statusmxMap = CacheContext.statusmxMap;
- Set<Integer> status = statusmxMap.keySet();
- Map<String, Map<String, Windturbinetestingpointai>> wtpAimap = CacheContext.wtpAimap;
- Date samedayZero = DateUtils.getSamedayZero();
- Date currentDate = DateUtils.getCurrentDate();
- // Date befroeDate = DateUtils.addSeconds(currentDate,-1);
- // Date befroeDate = DateUtils.addMinutes(currentDate,-5);
- days.forEach(day->{
- Date date = DateUtils.parseDate(day);
- Date addday = DateUtils.addDays(date, 1);
- wtls.stream().forEach(wt->{
- Map<String, Windturbinetestingpointai> stringWindturbinetestingpointaiMap = wtpAimap.get(wt.getId());
- Windturbinetestingpointai windturbinetestingpointai = stringWindturbinetestingpointaiMap.get(Contant.ZTMX);
- Windturbinetestingpointai windturbinetestingpointaifs = stringWindturbinetestingpointaiMap.get(Contant.AI022);
- try {
- List<PointData> historyDatasSnap = edosUtil.getHistoryDatasSnap(windturbinetestingpointai, date.getTime() / 1000, addday.getTime() / 1000, null, 60l);
- status.stream().forEach(sta->{
- int minutes = historyDatasSnap.stream().filter(i -> i.getPointValueInDouble() == sta).collect(Collectors.toList()).size();
- ProEconStationStatusmx proEconStationStatusmx = new ProEconStationStatusmx();
- proEconStationStatusmx.setId(CommonUtils.getUUID());
- proEconStationStatusmx.setProjectId(wt.getProjectid());
- proEconStationStatusmx.setWindpowerstationId(wt.getWindpowerstationid());
- proEconStationStatusmx.setWindturbineId(wt.getId());
- proEconStationStatusmx.setRecorddate(date);
- proEconStationStatusmx.setStopHours(DoubleUtils.keepPrecision(new Double(minutes)/60,2));
- proEconStationStatusmx.setLossPower(0.0);
- proEconStationStatusmx.setSatusCode(sta);
- proEconStationStatusmx.setStatusDesc(statusmxMap.get(sta));
- proEconStationStatusmx.setAvgSpeed(0.0);
- // proEconStationStatusmxService.save(proEconStationStatusmx);
- resultList.add(proEconStationStatusmx);
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- });
- proEconStationStatusmxService.saveBatch(resultList);
- }
- /**
- * 获取两日期间日期list
- *
- * @param beginDate
- * @param endDate
- * @return
- */
- private boolean isEq(String beginDate, String endDate) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- Date date1 = sdf.parse(beginDate);
- Date date2 = sdf.parse(endDate);
- if(date1.equals(date2)) {
- return true;
- }else {
- return false;
- }
- }
- }
|