|
@@ -0,0 +1,131 @@
|
|
|
+package com.gyee.ghost.service.auto;/*
|
|
|
+@author 谢生杰
|
|
|
+@date 2022/8/3-15:52
|
|
|
+*/
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+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.Fanoperation;
|
|
|
+import com.gyee.ghost.model.auto.Windturbine;
|
|
|
+import com.gyee.ghost.model.auto.Windturbineinfoday;
|
|
|
+import com.gyee.ghost.model.auto.Windturbineinfoday3;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class GhostService {
|
|
|
+ @Resource
|
|
|
+ private IWindturbineinfodayService windturbineinfodayService;
|
|
|
+ @Resource
|
|
|
+ private IWindturbineinfoday3Service windturbineinfoday3Service;
|
|
|
+ @Resource
|
|
|
+ private IFanoperationService fanoperationService;
|
|
|
+ /**
|
|
|
+ * 存储fanoperation运行分析表
|
|
|
+ */
|
|
|
+ public void saveFanoperation(String beginDate,String endDate){
|
|
|
+ List<String> days = DateUtils.getDays(beginDate, endDate);
|
|
|
+ days.stream().forEach(day->{
|
|
|
+
|
|
|
+
|
|
|
+ List<Fanoperation> resultList = new ArrayList<>();
|
|
|
+ Date date = DateUtils.parseDate(day);
|
|
|
+
|
|
|
+ QueryWrapper<Fanoperation> delQw = new QueryWrapper<>();
|
|
|
+ delQw.eq("recorddate",date);
|
|
|
+ fanoperationService.remove(delQw);
|
|
|
+
|
|
|
+
|
|
|
+ QueryWrapper<Windturbineinfoday> windturbineinfodayQueryWrapper = new QueryWrapper<>();
|
|
|
+ windturbineinfodayQueryWrapper.eq("recorddate",date);
|
|
|
+ List<Windturbineinfoday> windturbineinfodayList = windturbineinfodayService.list(windturbineinfodayQueryWrapper);
|
|
|
+
|
|
|
+ QueryWrapper<Windturbineinfoday3> windturbineinfoday3QueryWrapper = new QueryWrapper<>();
|
|
|
+ windturbineinfoday3QueryWrapper.eq("recorddate",date);
|
|
|
+ List<Windturbineinfoday3> windturbineinfoday3List = windturbineinfoday3Service.list(windturbineinfoday3QueryWrapper);
|
|
|
+
|
|
|
+ List<Windturbine> wtls = CacheContext.wtls;
|
|
|
+ wtls.stream().forEach(wt->{
|
|
|
+ Fanoperation fanoperation = new Fanoperation();
|
|
|
+ fanoperation.setId(CommonUtils.getUUID());
|
|
|
+ fanoperation.setWindturbineid(wt.getId());
|
|
|
+ fanoperation.setWindturbinename(wt.getName());
|
|
|
+ fanoperation.setWindpowerstationid(wt.getWindpowerstationid());
|
|
|
+ Optional<Windturbineinfoday> optionalWindturbineinfoday = windturbineinfodayList.stream().filter(w -> w.getWindturbineid().equals(wt.getId())).findFirst();
|
|
|
+ Optional<Windturbineinfoday3> optionalWindturbineinfoday3 = windturbineinfoday3List.stream().filter(w -> w.getWindturbineid().equals(wt.getId())).findFirst();
|
|
|
+
|
|
|
+ if (optionalWindturbineinfoday.isPresent()){
|
|
|
+ Windturbineinfoday windturbineinfoday = optionalWindturbineinfoday.get();
|
|
|
+ fanoperation.setGeneratingcapacity(DoubleUtils.keepPrecision(windturbineinfoday.getGeneratingcapacity(),2));
|
|
|
+ fanoperation.setAvailability(DoubleUtils.keepPrecision(windturbineinfoday.getDaysbklyl(),2));
|
|
|
+ fanoperation.setRuntime(DoubleUtils.keepPrecision(windturbineinfoday.getRuntime(),2));
|
|
|
+ fanoperation.setMaintime(DoubleUtils.keepPrecision(windturbineinfoday.getMaintaintime(),2));
|
|
|
+ fanoperation.setFaulttime(DoubleUtils.keepPrecision(windturbineinfoday.getFaulttime(),2));
|
|
|
+ fanoperation.setStoptime(DoubleUtils.keepPrecision(windturbineinfoday.getStoptime(),2));
|
|
|
+ fanoperation.setOfftime(DoubleUtils.keepPrecision(windturbineinfoday.getInterrupttime(),2));
|
|
|
+ }
|
|
|
+ if (optionalWindturbineinfoday3.isPresent()){
|
|
|
+ Windturbineinfoday3 windturbineinfoday3 = optionalWindturbineinfoday3.get();
|
|
|
+ fanoperation.setDaynhgzssdl(DoubleUtils.keepPrecision(windturbineinfoday3.getDaynhgzssdl(),2));
|
|
|
+ fanoperation.setDaynhwhssdl(DoubleUtils.keepPrecision(windturbineinfoday3.getDaynhwhssdl(),2));
|
|
|
+ fanoperation.setDaynhxdssdl(DoubleUtils.keepPrecision(windturbineinfoday3.getDaynhxdssdl(),2));
|
|
|
+ fanoperation.setDaynhqfdl(DoubleUtils.keepPrecision(windturbineinfoday3.getDaynhqfdl(),2));
|
|
|
+ fanoperation.setDaynhcfdl(DoubleUtils.keepPrecision(windturbineinfoday3.getDaynhcfdl(),2));
|
|
|
+ }
|
|
|
+ fanoperation.setTheoreticalcapacity(DoubleUtils.keepPrecision((fanoperation.getGeneratingcapacity()+fanoperation.getDaynhgzssdl()+fanoperation.getDaynhwhssdl()+fanoperation.getDaynhxdssdl()+fanoperation.getDaynhqfdl()+fanoperation.getDaynhcfdl()),2));
|
|
|
+ fanoperation.setRecorddate(date);
|
|
|
+ fanoperation.setStormtime(0.0);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ resultList.add(fanoperation);
|
|
|
+ });
|
|
|
+
|
|
|
+ fanoperationService.saveBatch(resultList);
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询运行分析
|
|
|
+ * @return
|
|
|
+ * @param beginDate
|
|
|
+ * @param endDate
|
|
|
+ */
|
|
|
+ public List<Fanoperation> listFunction(String wpid,String beginDate, String endDate) {
|
|
|
+ List<Fanoperation> resultList = new ArrayList<>();
|
|
|
+ Date begin = DateUtils.parseDate(beginDate);
|
|
|
+ Date end = DateUtils.parseDate(endDate);
|
|
|
+ QueryWrapper<Fanoperation> qw = new QueryWrapper<>();
|
|
|
+ qw.select("windturbineid,windturbinename,sum(generatingcapacity) generatingcapacity,sum(theoreticalcapacity) theoreticalcapacity,sum(daynhgzssdl) daynhgzssdl,sum(daynhwhssdl) daynhwhssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl,avg(availability) availability,avg(powerfactor) powerfactor,sum(runtime) runtime,sum(maintime) maintime,sum(faulttime) faulttime,sum(stoptime) stoptime,sum(stormtime) stormtime,sum(offtime) offtime");
|
|
|
+ qw.ge("recorddate",begin).le("recorddate",end);
|
|
|
+ if (StringUtils.isNotEmpty(wpid)){
|
|
|
+ qw.eq("windpowerstationid",wpid);
|
|
|
+ }
|
|
|
+ qw.groupBy("windturbineid,windturbinename");
|
|
|
+ List<Fanoperation> list = fanoperationService.list(qw);
|
|
|
+ resultList.addAll(list);
|
|
|
+
|
|
|
+ qw.clear();
|
|
|
+ qw.select("sum(generatingcapacity) generatingcapacity,sum(theoreticalcapacity) theoreticalcapacity,sum(daynhgzssdl) daynhgzssdl,sum(daynhwhssdl) daynhwhssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl,avg(availability) availability,avg(powerfactor) powerfactor,sum(runtime) runtime,sum(maintime) maintime,sum(faulttime) faulttime,sum(stoptime) stoptime,sum(stormtime) stormtime,sum(offtime) offtime");
|
|
|
+ qw.ge("recorddate",begin).le("recorddate",end);
|
|
|
+ if (StringUtils.isNotEmpty(wpid)){
|
|
|
+ qw.eq("windpowerstationid",wpid);
|
|
|
+ }
|
|
|
+ List<Fanoperation> hjlist = fanoperationService.list(qw);
|
|
|
+ if (StringUtils.isNotEmpty(hjlist)){
|
|
|
+ resultList.add(hjlist.get(0));
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+}
|