package com.gyee.benchmarkingimpala.service; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.gyee.benchmarkingimpala.common.PointData; import com.gyee.benchmarkingimpala.common.StringUtils; import com.gyee.benchmarkingimpala.contant.Contant; import com.gyee.benchmarkingimpala.init.CacheContext; import com.gyee.benchmarkingimpala.model.auto.*; import com.gyee.benchmarkingimpala.model.vo.*; import com.gyee.benchmarkingimpala.service.auto.*; import com.gyee.benchmarkingimpala.util.*; import com.gyee.benchmarkingimpala.util.taos.EdosUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** * @ClassName : BenchmarkingService * @Author : xieshengjie * @Date: 2021/6/15 17:46 * @Description : 对标管理service */ @Service public class BenchmarkingService { private final String TYPE_DATE = "date"; private final String TYPE_WIND = "wind"; private final String TYPE_PROJECT = "project"; private final String TYPE_LINE = "line"; private final String TYPE_WINDTURBINE = "windturbine"; private EdosUtil edosUtil = new EdosUtil(); @Resource private IEquipmentdayinfoService equipmentdayinfoService; @Resource private IEquipmentdaydetailedService equipmentdaydetailedService; @Resource private IDutyscheduleService dutyscheduleService; @Resource private IOperationrecordService operationrecordService; @Resource private IBenchmarkingbetweenService benchmarkingbetweenService; @Resource private IWindturbineanalysisdayService windturbineanalysisdayService; @Resource private IWindturbinethewindinfoService windturbinethewindinfoService; @Resource private IWindturbinecurvefittingService windturbinecurvefittingService; @Resource private IWindpowerinfodayService windpowerinfodayService; @Resource private IWindpowerinfoday3Service windpowerinfoday3Service; @Resource private IBenchmarkService benchmarkService; @Resource private IWpmttrandmtbfdayService wpmttrandmtbfdayService; @Resource private IWindpowerspecificinfodayService windpowerspecificinfodayService; @Resource private IWindpowerstationthewindinfoService windpowerstationthewindinfoService; @Resource private IWindpowerstationService windpowerstationService; /** * 保存日信息表 * @param beginDate * @param endDate */ public void saveEquipmentdayinfo(String beginDate,String endDate){ Map> wtpAimap = CacheContext.wtpAimap; List wtls = CacheContext.wtls.stream().filter(i->i.getWindpowerstationid().equals("MHS_FDC") || i.getWindpowerstationid().equals("NSS_FDC") || i.getWindpowerstationid().equals("QS_FDC") || i.getWindpowerstationid().equals("SBQ_FDC") || i.getWindpowerstationid().equals("XS_FDC")).collect(Collectors.toList()); String[] uniformcodes = Contant.WXSS.split(","); List days = getDays(beginDate, endDate); for (String d : days) { Map delMap = new HashMap<>(); delMap.put("recorddate",DateUtils.parseDate(d)); equipmentdayinfoService.removeByMap(delMap); List resultList = new ArrayList<>(); Date date = DateUtils.parseDate(d); Date addDays = DateUtils.addDays(date, 1); Date begin = DateUtils.getStartOfDay(addDays); Date end = DateUtils.addSeconds(begin, 1); wtls.stream().filter(i->i.getWindpowerstationid().endsWith("FDC")).forEach(wt->{ Map wtDataMap = new HashMap<>(); Map nmap = wtpAimap.get(wt.getId()); for (String uniformcode : uniformcodes) { try { Windturbinetestingpointai2 windturbinetestingpointai2 = nmap.get(uniformcode); if (windturbinetestingpointai2!=null){ List pointDatas = edosUtil.getHistoryDatasSnap(windturbinetestingpointai2, begin.getTime()/1000, end.getTime()/1000,1l,1l); Optional first = pointDatas.stream().findFirst(); Double value = first.isPresent()?first.get().getPointValueInDouble():0; wtDataMap.put(wt.getId()+"_"+uniformcode,value); }else { System.out.println(wt.getId()+"----"+uniformcode); } } catch (Exception e) { e.printStackTrace(); } } Equipmentdayinfo equipmentdayinfo = new Equipmentdayinfo(); equipmentdayinfo.setId(StringUtils.getUUID()); equipmentdayinfo.setWindturbineid(wt.getId()); equipmentdayinfo.setLineid(wt.getLineid()); equipmentdayinfo.setProjectid(wt.getProjectid()); equipmentdayinfo.setWindpowerstationid(wt.getWindpowerstationid()); equipmentdayinfo.setRecorddate(DateUtils.parseDate(d)); equipmentdayinfo.setGenecapacity(wtDataMap.get(wt.getId()+"_RFDL")); equipmentdayinfo.setSpeed(wtDataMap.get(wt.getId()+"_AI022")); //维护:RJXSSDL-ZS,RLZSSDL-ZS equipmentdayinfo.setDaynhwhssdl(wtDataMap.get(wt.getId()+"_RJXSSDL-ZS") + wtDataMap.get(wt.getId()+"_RLZSSDL-ZS")); //故障:RGZSSDL-ZS,NSZSSDL-ZS equipmentdayinfo.setDaynhgzssdl(wtDataMap.get(wt.getId()+"_RGZSSDL-ZS") + wtDataMap.get(wt.getId()+"_NSZSSDL-ZS")); //限电:RQFSSDL-ZS,RXDSSDL-ZS equipmentdayinfo.setDaynhxdssdl(wtDataMap.get(wt.getId()+"_RQFSSDL-ZS") + wtDataMap.get(wt.getId()+"_RXDSSDL-ZS")); //性能:RDJSSDL-ZS,RSTSSDL-ZS,RXNSSDL-ZS,RQXSSDL-ZS(集团项目需把发电欠发去掉) equipmentdayinfo.setDaynhqfdl(wtDataMap.get(wt.getId()+"_RDJSSDL-ZS") + wtDataMap.get(wt.getId()+"_RSTSSDL-ZS") + wtDataMap.get(wt.getId()+"_RXNSSDL-ZS") + wtDataMap.get(wt.getId()+"_RQXSSDL-ZS")); //受累:RWZSSDL-ZS,RTZSSDL-ZS equipmentdayinfo.setDaynhcfdl(wtDataMap.get(wt.getId()+"_RWZSSDL-ZS") + wtDataMap.get(wt.getId()+"_RTZSSDL-ZS")); equipmentdayinfo.setTherogenecapacity(equipmentdayinfo.getGenecapacity()+equipmentdayinfo.getDaynhwhssdl()+equipmentdayinfo.getDaynhgzssdl()+equipmentdayinfo.getDaynhxdssdl()+equipmentdayinfo.getDaynhqfdl()+equipmentdayinfo.getDaynhcfdl()); resultList.add(equipmentdayinfo); }); equipmentdayinfoService.saveBatch(resultList); } } /** * 保存日信息明细 * @param beginDate * @param endDate */ public void saveEquipmentdaydetailed(String beginDate,String endDate){ Map> wtpAimap = CacheContext.wtpAimap; List wtls = CacheContext.wtls; String[] uniformcodes = Contant.WXSS.split(","); List days = getDays(beginDate, endDate); for (String d : days) { Map delMap = new HashMap<>(); delMap.put("recorddate",DateUtils.parseDate(d)); equipmentdaydetailedService.removeByMap(delMap); List resultList = new ArrayList<>(); Date date = DateUtils.parseDate(d); Date addDays = DateUtils.addDays(date, 1); Date begin = DateUtils.getStartOfDay(addDays); Date end = DateUtils.addSeconds(begin, 1); wtls.stream().filter(i->i.getWindpowerstationid().endsWith("FDC")).forEach(wt->{ Map wtDataMap = new HashMap<>(); Map nmap = wtpAimap.get(wt.getId()); for (String uniformcode : uniformcodes) { try { Windturbinetestingpointai2 windturbinetestingpointai2 = nmap.get(uniformcode); List pointDatas = edosUtil.getHistoryDatasSnap(windturbinetestingpointai2, begin.getTime()/1000, end.getTime()/1000,1l,1l); Optional first = pointDatas.stream().findFirst(); Double value = first.isPresent()?first.get().getPointValueInDouble():0; wtDataMap.put(wt.getId()+"_"+uniformcode,value); } catch (Exception e) { e.printStackTrace(); } } Equipmentdaydetailed equipmentdayinfo = new Equipmentdaydetailed(); equipmentdayinfo.setId(StringUtils.getUUID()); equipmentdayinfo.setWindturbineid(wt.getId()); equipmentdayinfo.setLineid(wt.getLineid()); equipmentdayinfo.setProjectid(wt.getProjectid()); equipmentdayinfo.setWindpowerstationid(wt.getWindpowerstationid()); equipmentdayinfo.setRecorddate(DateUtils.parseDate(d)); equipmentdayinfo.setGenecapacity(wtDataMap.get(wt.getId()+"_RFDL")); equipmentdayinfo.setSpeed(wtDataMap.get(wt.getId()+"_AI022")); //维护:RJXSSDL-ZS,RLZSSDL-ZS equipmentdayinfo.setDaynhwhssdl1(wtDataMap.get(wt.getId()+"_RJXSSDL-ZS")); equipmentdayinfo.setDaynhwhssdl2(wtDataMap.get(wt.getId()+"_RLZSSDL-ZS")); //故障:RGZSSDL-ZS,NSZSSDL-ZS equipmentdayinfo.setDaynhgzssdl1(wtDataMap.get(wt.getId()+"_RGZSSDL-ZS")); equipmentdayinfo.setDaynhgzssdl2(wtDataMap.get(wt.getId()+"_NSZSSDL-ZS")); //限电:RQFSSDL-ZS,RXDSSDL-ZS equipmentdayinfo.setDaynhxdssdl1(wtDataMap.get(wt.getId()+"_RQFSSDL-ZS")); equipmentdayinfo.setDaynhxdssdl2(wtDataMap.get(wt.getId()+"_RXDSSDL-ZS")); //性能:RDJSSDL-ZS,RSTSSDL-ZS,RXNSSDL-ZS,RQXSSDL-ZS equipmentdayinfo.setDaynhqfdl1(wtDataMap.get(wt.getId()+"_RDJSSDL-ZS")); equipmentdayinfo.setDaynhqfdl2(wtDataMap.get(wt.getId()+"_RSTSSDL-ZS")); equipmentdayinfo.setDaynhqfdl3(wtDataMap.get(wt.getId()+"_RXNSSDL-ZS")); equipmentdayinfo.setDaynhqfdl4(wtDataMap.get(wt.getId()+"_RQXSSDL-ZS")); //受累:RWZSSDL-ZS,RTZSSDL-ZS equipmentdayinfo.setDaynhcfdl1(wtDataMap.get(wt.getId()+"_RWZSSDL-ZS")); equipmentdayinfo.setDaynhcfdl2(wtDataMap.get(wt.getId()+"_RTZSSDL-ZS")); equipmentdayinfo.setTherogenecapacity(equipmentdayinfo.getGenecapacity()+equipmentdayinfo.getDaynhwhssdl1()+equipmentdayinfo.getDaynhwhssdl2() +equipmentdayinfo.getDaynhgzssdl1()+equipmentdayinfo.getDaynhgzssdl2() +equipmentdayinfo.getDaynhxdssdl1()+equipmentdayinfo.getDaynhxdssdl2() +equipmentdayinfo.getDaynhqfdl1()+equipmentdayinfo.getDaynhqfdl2()+equipmentdayinfo.getDaynhqfdl3()+equipmentdayinfo.getDaynhqfdl4() +equipmentdayinfo.getDaynhcfdl1()+equipmentdayinfo.getDaynhcfdl2()); resultList.add(equipmentdayinfo); }); equipmentdaydetailedService.saveBatch(resultList); } } /** * 保存值际操作指令表 * @param beginDate * @param endDate */ public void saveOperationrecord(String beginDate,String endDate) throws ParseException { List days = getDays(beginDate, endDate); for (String day : days) { Date date = DateUtils.parseDate(day); Date startOfDay = DateUtils.getStartOfDay(date); Date endOfDay = DateUtils.getEndOfDay(date); Map params1 = new HashMap<>(); params1.put("createdate", date); List dutyList = dutyscheduleService.listByMap(params1); params1.remove("createdate"); params1.put("time",date); operationrecordService.removeByMap(params1); Map> wtpointMap = CacheContext.wtpAimap; String[] points = Contant.opePoints.split(","); List wtls = CacheContext.wtls; List resuList = new ArrayList<>(); for (Windturbine wt : wtls) { if (wt.getWindpowerstationid().endsWith("GDC")){ continue; } for (String point : points) { Windturbinetestingpointai2 windturbinetestingpointai2 = wtpointMap.get(wt.getId()).get(point); try { List pointDatas = edosUtil.getHistoryDatasRaw(windturbinetestingpointai2.getId(), startOfDay.getTime()/1000, endOfDay.getTime()/1000); pointDatas.stream().forEach(pointData -> { OpeVo vo = new OpeVo(); vo.setWtid(wt.getId()); vo.setTime(DateUtils.parseLongToDate(pointData.getPointTime()*1000)); vo.setValue(pointData.getPointValueInDouble()); resuList.add(vo); }); } catch (Exception e) { e.printStackTrace(); } } } for (Dutyschedule duty : dutyList) { for (OpeVo vo : resuList) { if (isTimeRange(duty,vo.getTime())) { Operationrecord operationrecord = new Operationrecord(); operationrecord.setDutyname(duty.getName()); operationrecord.setWtid(vo.getWtid()); operationrecord.setTime(vo.getTime()); operationrecord.setValue(vo.getValue()); operationrecordService.save(operationrecord); } } } } } /** * 保存值际五损 * @param beginDate * @param endDate */ public void saveBeanchmarkList(String beginDate,String endDate) throws Exception { List days = getDays(beginDate, endDate); for (String day : days) { Date date = DateUtils.parseDate(day); Date startOfDay = DateUtils.getStartOfDay(date); Date endOfDay = DateUtils.getEndOfDay(date); Map params = new HashMap<>(); params.put("theday", date); benchmarkingbetweenService.removeByMap(params); Map params1 = new HashMap<>(); params1.put("createdate", date); List dutyList = dutyscheduleService.listByMap(params1); String[] points = Contant.benchPoints.split(","); Map wpmap = CacheContext.wppointmap.get("0"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map> remap = new HashMap<>(); for (Dutyschedule dutyschedule : dutyList) { String[] begins = dutyschedule.getBegin().split(","); String[] ends = dutyschedule.getEnd().split(","); Map map = new HashMap<>(); for (int i = 0; i < begins.length; i++) { Date begin = df.parse(day + " " + begins[i] + ":00"); Date end = df.parse(day + " " + ends[i] + ":00"); for (String point : points) { Windpowerstationtestingpoint2 windpowerstationtestingpoint2 = wpmap.get(point); List maxs = edosUtil.getHistStat(windpowerstationtestingpoint2.getCode(), begin.getTime() / 1000, end.getTime() / 1000, (long) 1, null, 0); List mins = edosUtil.getHistStat(windpowerstationtestingpoint2.getCode(), begin.getTime() / 1000, end.getTime() / 1000, (long) 1, null, 1); double ssdl = 0; if (StringUtils.isNotEmpty(maxs) && StringUtils.isNotEmpty(mins)) { ssdl = (maxs.get(0).getPointValueInDouble() - mins.get(0).getPointValueInDouble()) / 10000; } if (!map.containsKey(point)) { map.put(point, ssdl); } else { map.put(point, map.get(point) + ssdl); } } Windpowerstationtestingpoint2 windpowerstationtestingpoint2 = wpmap.get("RFDL"); List maxs = edosUtil.getHistStat(windpowerstationtestingpoint2.getCode(), begin.getTime() / 1000, end.getTime() / 1000, (long) 1, null, 0); List mins = edosUtil.getHistStat(windpowerstationtestingpoint2.getCode(), begin.getTime() / 1000, end.getTime() / 1000, (long) 1, null, 1); double fdl = 0; if (StringUtils.isNotEmpty(maxs) && StringUtils.isNotEmpty(mins)) { fdl = maxs.get(0).getPointValueInDouble() - mins.get(0).getPointValueInDouble(); } if (!map.containsKey("RFDL")) { map.put("RFDL", fdl); } else { map.put("RFDL", map.get("RFDL") + fdl); } remap.put(dutyschedule.getName(), map); } } Set dutyset = remap.keySet(); for (String duty : dutyset) { Benchmarkingbetween bench = new Benchmarkingbetween(); bench.setDutyname(duty); bench.setTheday(date); Map pointmap = remap.get(duty); bench.setPerformanceloss(pointmap.get("RSDJZSDL") + pointmap.get("RSSTZSDL") + pointmap.get("RXNZSDL") + pointmap.get("RSQXZSDL")); bench.setFaultloss(pointmap.get("RGZZSDL") + pointmap.get("RSZZSDL")); bench.setMainloss(pointmap.get("RJXZSDL") + pointmap.get("RLZZSDL")); bench.setRationingloss(pointmap.get("RQFZSDL") + pointmap.get("RXDZSDL")); bench.setInvolvesloss(pointmap.get("RWZZSDL") + pointmap.get("RTZZSDL")); bench.setGeneratity(pointmap.get("RFDL")); bench.setTheoreticalgeneratity(bench.getPerformanceloss() + bench.getFaultloss() + bench.getMainloss() + bench.getRationingloss() + bench.getInvolvesloss() + bench.getGeneratity()); benchmarkingbetweenService.save(bench); } } } /** * 判断实际操作指令时间是否属于某个值班 * @param duty * @param time * @return * @throws ParseException */ private boolean isTimeRange(Dutyschedule duty,Date time) throws ParseException { SimpleDateFormat df = new SimpleDateFormat("HH:mm"); Date now = df.parse(df.format(time)); String[] begins=duty.getBegin().split(","); String[] ends=duty.getEnd().split(","); for (int i=0 ; i getDays(String beginDate, String endDate) { List days = null; if (StringUtils.isNotEmpty(beginDate) && StringUtils.isNotEmpty(endDate)) { days = DateUtils.getDays(beginDate, endDate); } else { days = new ArrayList<>(); days.add(DateUtils.getYesterdayStr("yyyy-MM-dd")); } return days; } /** * 风机绩效榜 * @param wpids * @param projectids * @param lineids * @param beginDate * @param endDate * @param type * @return */ public List fjjxb(String wpids, String projectids, String lineids, String beginDate, String endDate, String type,String target,String sort) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); StringBuilder sb = new StringBuilder(); if (type.equals("1") ){ sb.append("windpowerstationid,"); }else if (type.equals("2")){ sb.append("projectid,"); } else if (type.equals("3")){ sb.append("lineid,"); }else { sb.append("windturbineid,"); } sb.append("sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,avg(speed) speed,sum(daynhwhssdl) daynhwhssdl,sum(daynhgzssdl) daynhgzssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl"); qw.select(String.valueOf(sb)); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (StringUtils.isNotEmpty(wpids)){ List wpList = Arrays.asList(wpids.split(",")); qw.in("windpowerstationid",wpList); } if (StringUtils.isNotEmpty(projectids)){ List proList = Arrays.asList(projectids.split(",")); qw.in("projectid",proList); } if (StringUtils.isNotEmpty(lineids)){ List lineList = Arrays.asList(lineids.split(",")); qw.in("lineid",lineList); } if (type.equals("1")){ qw.groupBy("windpowerstationid"); }else if(type.equals("2")){ qw.groupBy("projectid"); }else if(type.equals("3")){ qw.groupBy("lineid"); }else{ qw.groupBy("windturbineid"); } List list = equipmentdayinfoService.list(qw); AtomicReference llfdl = new AtomicReference<>((double) 0); AtomicReference sjfdl = new AtomicReference<>((double) 0); AtomicReference pjfs = new AtomicReference<>((double) 0); AtomicReference wh = new AtomicReference<>((double) 0); AtomicReference gz = new AtomicReference<>((double) 0); AtomicReference xd = new AtomicReference<>((double) 0); AtomicReference xn = new AtomicReference<>((double) 0); AtomicReference sl = new AtomicReference<>((double) 0); list.stream().forEach(i->{ FjjxbVo vo = new FjjxbVo(); if (type.equals("1")){ vo.setId(i.getWindpowerstationid()); vo.setName(CacheContext.wpmap.get(i.getWindpowerstationid().trim()).getName()); }else if(type.equals("2")){ vo.setId(i.getProjectid()); vo.setName(CacheContext.projects.stream().filter(p->p.getId().equals(i.getProjectid().trim())).findFirst().get().getName()); }else if(type.equals("3")){ vo.setId(i.getLineid()); vo.setName(CacheContext.lines.stream().filter(l->l.getId().equals(i.getLineid().trim())).findFirst().get().getName()); }else{ vo.setId(i.getWindturbineid()); vo.setName(CacheContext.wtls.stream().filter(w->w.getId().equals(i.getWindturbineid().trim())).findFirst().get().getName()); } vo.setSjfdl(BigDecimalUtils.divide(new BigDecimal(i.getGenecapacity()),new BigDecimal(10000),2).doubleValue()); vo.setLlfdl(BigDecimalUtils.divide(new BigDecimal(i.getTherogenecapacity()),new BigDecimal(10000),2).doubleValue()); vo.setSpeed(BigDecimalUtils.divide(new BigDecimal(i.getSpeed()),new BigDecimal(1),2).doubleValue()); vo.setFjhjx(BigDecimalUtils.divide(new BigDecimal(i.getDaynhgzssdl()),new BigDecimal(10000),2).doubleValue()); vo.setJhjx(BigDecimalUtils.divide(new BigDecimal(i.getDaynhwhssdl()),new BigDecimal(10000),2).doubleValue()); vo.setXd(BigDecimalUtils.divide(new BigDecimal(i.getDaynhxdssdl()),new BigDecimal(10000),2).doubleValue()); vo.setSl(BigDecimalUtils.divide(new BigDecimal(i.getDaynhcfdl()),new BigDecimal(10000),2).doubleValue()); vo.setXn(BigDecimalUtils.divide(new BigDecimal(i.getDaynhqfdl()),new BigDecimal(10000),2).doubleValue()); // vo.setLlfdl(DoubleUtils.getRoundingNum(vo.getSjfdl()+vo.getFjhjx()+vo.getJhjx()+vo.getXd()+vo.getXn(),2)); vo.setFnlly(vo.getLlfdl()!=0?keepPrecision(vo.getSjfdl()/vo.getLlfdl()*100,2):0); llfdl.updateAndGet(v -> new Double((double) (v + vo.getLlfdl()))); sjfdl.updateAndGet(v -> new Double((double) (v + vo.getSjfdl()))); pjfs.updateAndGet(v -> new Double((double) (v + vo.getSpeed()))); wh.updateAndGet(v -> new Double((double) (v + vo.getJhjx()))); gz.updateAndGet(v -> new Double((double) (v + vo.getFjhjx()))); xd.updateAndGet(v -> new Double((double) (v + vo.getXd()))); xn.updateAndGet(v -> new Double((double) (v + vo.getXn()))); sl.updateAndGet(v -> new Double((double) (v + vo.getSl()))); resultList.add(vo); }); if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)){ if (sort.equals("1")){ SortUtils.sort(resultList,target,SortUtils.ASC); }else { SortUtils.sort(resultList,target,SortUtils.DESC); } }else { SortUtils.sort(resultList,"fnlly",SortUtils.ASC); } FjjxbVo vo = new FjjxbVo(); vo.setId("hj"); vo.setName("合计"); vo.setSjfdl(keepPrecision(sjfdl.get().doubleValue(),2)); vo.setLlfdl(keepPrecision(llfdl.get().doubleValue(),2)); vo.setSpeed(list.size()!=0?keepPrecision(pjfs.get().doubleValue()/list.size(),2):0.0); vo.setJhjx(keepPrecision(wh.get().doubleValue(),2)); vo.setFjhjx(keepPrecision(gz.get().doubleValue(),2)); vo.setXd(keepPrecision(xd.get().doubleValue(),2)); vo.setXn(keepPrecision(xn.get().doubleValue(),2)); vo.setSl(keepPrecision(sl.get().doubleValue(),2)); vo.setFnlly(vo.getLlfdl()!=0?keepPrecision(vo.getSjfdl()/vo.getLlfdl()*100,2):0.0); resultList.add(vo); return resultList; } /** * 保留两位小数 * @param number * @param precision * @return */ private double keepPrecision(double number, int precision) { BigDecimal bg = new BigDecimal(number); return bg.setScale(precision, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 风机绩效榜明细 * @param wpids * @param projectids * @param lineids * @param beginDate * @param endDate * @param type * @return */ public List fjjxbmx(String wpids, String projectids, String lineids, String beginDate, String endDate, String type,String target,String sort) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); StringBuilder sb = new StringBuilder(); if (type.equals("1") ){ sb.append("windpowerstationid,"); }else if (type.equals("2")){ sb.append("projectid,"); } else if (type.equals("3")){ sb.append("lineid,"); }else { sb.append("windturbineid,"); } sb.append("sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,avg(speed) speed,sum(daynhwhssdl1) daynhwhssdl1,sum(daynhwhssdl2) daynhwhssdl2,sum(daynhgzssdl1) daynhgzssdl1,sum(daynhgzssdl2) daynhgzssdl2,sum(daynhxdssdl1) daynhxdssdl1,sum(daynhxdssdl2) daynhxdssdl2,sum(daynhqfdl1) daynhqfdl1,sum(daynhqfdl2) daynhqfdl2,sum(daynhqfdl3) daynhqfdl3,sum(daynhqfdl4) daynhqfdl4,sum(daynhcfdl1) daynhcfdl1,sum(daynhcfdl2) daynhcfdl2 "); qw.select(String.valueOf(sb)); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (StringUtils.isNotEmpty(wpids)){ List wpList = Arrays.asList(wpids.split(",")); qw.in("windpowerstationid",wpList); } if (StringUtils.isNotEmpty(projectids)){ List proList = Arrays.asList(projectids.split(",")); qw.in("projectid",proList); } if (StringUtils.isNotEmpty(lineids)){ List lineList = Arrays.asList(lineids.split(",")); qw.in("lineid",lineList); } if (type.equals("1")){ qw.groupBy("windpowerstationid"); }else if(type.equals("2")){ qw.groupBy("projectid"); }else if(type.equals("3")){ qw.groupBy("lineid"); }else{ qw.groupBy("windturbineid"); } List list = equipmentdaydetailedService.list(qw); AtomicReference llfdl = new AtomicReference<>((double) 0); AtomicReference sjfdl = new AtomicReference<>((double) 0); AtomicReference pjfs = new AtomicReference<>((double) 0); AtomicReference wh1 = new AtomicReference<>((double) 0); AtomicReference wh2 = new AtomicReference<>((double) 0); AtomicReference gz1 = new AtomicReference<>((double) 0); AtomicReference gz2 = new AtomicReference<>((double) 0); AtomicReference xd1 = new AtomicReference<>((double) 0); AtomicReference xd2 = new AtomicReference<>((double) 0); AtomicReference xn1 = new AtomicReference<>((double) 0); AtomicReference xn2 = new AtomicReference<>((double) 0); AtomicReference xn3 = new AtomicReference<>((double) 0); AtomicReference xn4 = new AtomicReference<>((double) 0); AtomicReference sl1 = new AtomicReference<>((double) 0); AtomicReference sl2 = new AtomicReference<>((double) 0); list.stream().forEach(i->{ FjjxbmxVo vo = new FjjxbmxVo(); if (type.equals("1")){ vo.setId(i.getWindpowerstationid()); vo.setName(CacheContext.wpmap.get(i.getWindpowerstationid().trim()).getName()); }else if(type.equals("2")){ vo.setId(i.getProjectid()); vo.setName(CacheContext.projects.stream().filter(p->p.getId().equals(i.getProjectid().trim())).findFirst().get().getName()); }else if(type.equals("3")){ vo.setId(i.getLineid()); vo.setName(CacheContext.lines.stream().filter(l->l.getId().equals(i.getLineid().trim())).findFirst().get().getName()); }else{ vo.setId(i.getWindturbineid()); vo.setName(CacheContext.wtls.stream().filter(w->w.getId().equals(i.getWindturbineid().trim())).findFirst().get().getName()); } vo.setSjfdl(keepPrecision(i.getGenecapacity()/10000,2)); vo.setLlfdl(keepPrecision(i.getTherogenecapacity()/10000,2)); vo.setSpeed(keepPrecision(i.getSpeed(),2)); vo.setFjhjx1(keepPrecision(i.getDaynhgzssdl1()/10000,2)); vo.setFjhjx2(keepPrecision(i.getDaynhgzssdl2()/10000,2)); vo.setJhjx1(keepPrecision(i.getDaynhwhssdl1()/10000,2)); vo.setJhjx2(keepPrecision(i.getDaynhwhssdl2()/10000,2)); vo.setXd1(keepPrecision(i.getDaynhxdssdl1()/10000,2)); vo.setXd2(keepPrecision(i.getDaynhxdssdl2()/10000,2)); vo.setSl1(keepPrecision(i.getDaynhcfdl1()/10000,2)); vo.setSl2(keepPrecision(i.getDaynhcfdl2()/10000,2)); vo.setXn1(keepPrecision(i.getDaynhqfdl1()/10000,2)); vo.setXn2(keepPrecision(i.getDaynhqfdl2()/10000,2)); vo.setXn3(keepPrecision(i.getDaynhqfdl3()/10000,2)); vo.setXn4(keepPrecision(i.getDaynhqfdl4()/10000,2)); vo.setFnlly(vo.getLlfdl()!=0?keepPrecision(vo.getSjfdl()/vo.getLlfdl()*100,2):0.0); llfdl.updateAndGet(v -> new Double((double) (v + vo.getLlfdl()))); sjfdl.updateAndGet(v -> new Double((double) (v + vo.getSjfdl()))); pjfs.updateAndGet(v -> new Double((double) (v + vo.getSpeed()))); wh1.updateAndGet(v -> new Double((double) (v + vo.getJhjx1()))); wh2.updateAndGet(v -> new Double((double) (v + vo.getJhjx2()))); gz1.updateAndGet(v -> new Double((double) (v + vo.getFjhjx1()))); gz2.updateAndGet(v -> new Double((double) (v + vo.getFjhjx2()))); xd1.updateAndGet(v -> new Double((double) (v + vo.getXd1()))); xd2.updateAndGet(v -> new Double((double) (v + vo.getXd2()))); xn1.updateAndGet(v -> new Double((double) (v + vo.getXn1()))); xn2.updateAndGet(v -> new Double((double) (v + vo.getXn2()))); xn3.updateAndGet(v -> new Double((double) (v + vo.getXn3()))); xn4.updateAndGet(v -> new Double((double) (v + vo.getXn4()))); sl1.updateAndGet(v -> new Double((double) (v + vo.getSl1()))); sl2.updateAndGet(v -> new Double((double) (v + vo.getSl2()))); resultList.add(vo); }); if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)){ if (sort.equals("1")){ SortUtils.sort(resultList,target,SortUtils.ASC); }else { SortUtils.sort(resultList,target,SortUtils.DESC); } }else { SortUtils.sort(resultList,"fnlly",SortUtils.ASC); } FjjxbmxVo vo = new FjjxbmxVo(); vo.setId("hj"); vo.setName("合计"); vo.setSjfdl(keepPrecision(sjfdl.get().doubleValue(),2)); vo.setLlfdl(keepPrecision(llfdl.get().doubleValue(),2)); vo.setSpeed(list.size()!=0?keepPrecision(pjfs.get().doubleValue()/list.size(),2):0.0); vo.setJhjx1(keepPrecision(wh1.get().doubleValue(),2)); vo.setJhjx2(keepPrecision(wh2.get().doubleValue(),2)); vo.setFjhjx1(keepPrecision(gz1.get().doubleValue(),2)); vo.setFjhjx2(keepPrecision(gz2.get().doubleValue(),2)); vo.setXd1(keepPrecision(xd1.get().doubleValue(),2)); vo.setXd2(keepPrecision(xd2.get().doubleValue(),2)); vo.setXn1(keepPrecision(xn1.get().doubleValue(),2)); vo.setXn2(keepPrecision(xn2.get().doubleValue(),2)); vo.setXn3(keepPrecision(xn3.get().doubleValue(),2)); vo.setXn4(keepPrecision(xn4.get().doubleValue(),2)); vo.setSl1(keepPrecision(sl1.get().doubleValue(),2)); vo.setSl2(keepPrecision(sl2.get().doubleValue(),2)); vo.setFnlly(vo.getLlfdl()!=0?keepPrecision(vo.getSjfdl()/vo.getLlfdl()*100,2):0.0); resultList.add(vo); return resultList; } /** * 场站列表 * @return */ public List wplist() { List wplist = CacheContext.wplist.stream().filter(i->i.getId().endsWith("FDC") && i.getCompanyid().equals("NXGD_GS")).collect(Collectors.toList()); return wplist; } /** * GF场站列表 * @return */ public List wpGFList() { List wplist = CacheContext.wplist.stream().filter(i->i.getId().endsWith("GDC") && i.getCompanyid().equals("NXGD_GS")).collect(Collectors.toList()); return wplist; } /** * 根据场站查询风机列表 * @param wpid * @return */ public List wtList(String wpid) { List windturbineList = CacheContext.wtls.stream().filter(i -> i.getWindpowerstationid().equals(wpid)).collect(Collectors.toList()); return windturbineList; } /** * 根据场站查询项目列表 * @param wpids * @return */ public List projectList(String wpids) { List projects = CacheContext.projects.stream().filter(i -> wpids.contains(i.getWindpowerstationid())).collect(Collectors.toList()); return projects; } /** * 根据项目查询线路列表 * @param projects * @return */ public List lineList(String projects) { List lines = CacheContext.lines.stream().filter(i -> projects.contains(i.getProjectid())).collect(Collectors.toList()); return lines; } /** * 五项损失率 * @param wpids * @param projectids * @param lineids * @param beginDate * @param endDate * @return */ public List wxssl(String wpids, String projectids, String lineids, String beginDate, String endDate,String target,String sort) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); StringBuilder sb = new StringBuilder(); if (StringUtils.isNotEmpty(wpids) && StringUtils.isEmpty(projectids) && StringUtils.isEmpty(lineids)){ sb.append("windpowerstationid,"); }else if (StringUtils.isNotEmpty(wpids) && StringUtils.isNotEmpty(projectids) && StringUtils.isEmpty(lineids)){ sb.append("projectid,"); } else if (StringUtils.isNotEmpty(wpids) && StringUtils.isNotEmpty(projectids) && StringUtils.isNotEmpty(lineids)){ sb.append("lineid,"); }else { sb.append("windpowerstationid,"); } sb.append("sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,sum(daynhwhssdl) daynhwhssdl,sum(daynhgzssdl) daynhgzssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl"); qw.select(String.valueOf(sb)); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (StringUtils.isNotEmpty(wpids)){ List wpList = Arrays.asList(wpids.split(",")); qw.in("windpowerstationid",wpList); } if (StringUtils.isNotEmpty(projectids)){ List proList = Arrays.asList(projectids.split(",")); qw.in("projectid",proList); } if (StringUtils.isNotEmpty(lineids)){ List lineList = Arrays.asList(lineids.split(",")); qw.in("lineid",lineList); } if (StringUtils.isNotEmpty(wpids) && StringUtils.isEmpty(projectids) && StringUtils.isEmpty(lineids)){ qw.groupBy("windpowerstationid"); }else if (StringUtils.isNotEmpty(wpids) && StringUtils.isNotEmpty(projectids) && StringUtils.isEmpty(lineids)){ qw.groupBy("projectid"); } else if (StringUtils.isNotEmpty(wpids) && StringUtils.isNotEmpty(projectids) && StringUtils.isNotEmpty(lineids)){ qw.groupBy("lineid"); }else { qw.groupBy("windpowerstationid"); } List list = equipmentdayinfoService.list(qw); Map station = windpowerstationService.list() .stream().collect(Collectors.toMap(Windpowerstation::getId,Windpowerstation::getOrdernum)); list.stream().forEach(i->{ WxsslVo vo = new WxsslVo(); station.get(i.getWindpowerstationid()); vo.setOrdernum(station.get(i.getWindpowerstationid())); if (StringUtils.isNotEmpty(wpids) && StringUtils.isEmpty(projectids) && StringUtils.isEmpty(lineids)){ vo.setId(i.getWindpowerstationid()); vo.setName(CacheContext.wpmap.get(i.getWindpowerstationid().trim()).getName()); }else if (StringUtils.isNotEmpty(wpids) && StringUtils.isNotEmpty(projectids) && StringUtils.isEmpty(lineids)){ vo.setId(i.getProjectid()); vo.setName(CacheContext.projects.stream().filter(p->p.getId().equals(i.getProjectid().trim())).findFirst().get().getName()); } else if (StringUtils.isNotEmpty(wpids) && StringUtils.isNotEmpty(projectids) && StringUtils.isNotEmpty(lineids)){ vo.setId(i.getLineid()); vo.setName(CacheContext.lines.stream().filter(l->l.getId().equals(i.getLineid().trim())).findFirst().get().getName()); }else { vo.setId(i.getWindpowerstationid()); vo.setName(CacheContext.wpmap.get(i.getWindpowerstationid().trim()).getName()); } vo.setFdl(keepPrecision(i.getGenecapacity()/10000,2)); vo.setLlfdl(keepPrecision(i.getTherogenecapacity()/10000,2)); vo.setJxssdl(keepPrecision(i.getDaynhwhssdl()/10000,2)); vo.setGzssdl(keepPrecision(i.getDaynhgzssdl()/10000,2)); vo.setXdssdl(keepPrecision(i.getDaynhxdssdl()/10000,2)); vo.setSlssdl(keepPrecision(i.getDaynhcfdl()/10000,2)); vo.setXnssdl(keepPrecision(i.getDaynhqfdl()/10000,2)); vo.setZssdl(keepPrecision((vo.getGzssdl()+vo.getJxssdl()+vo.getXdssdl()+vo.getXnssdl()+vo.getSlssdl())/10000,2)); vo.setFnlyl(vo.getLlfdl()!=0?keepPrecision(vo.getFdl()/vo.getLlfdl()*100,2):0.0); vo.setGzssl(vo.getLlfdl()!=0?keepPrecision(vo.getGzssdl()/vo.getLlfdl()*100,2):0.0); vo.setJxssl(vo.getLlfdl()!=0?keepPrecision(vo.getJxssdl()/vo.getLlfdl()*100,2):0.0); vo.setQfl(vo.getLlfdl()!=0?keepPrecision(vo.getXdssdl()/vo.getLlfdl()*100,2):0.0); vo.setXnssl(vo.getLlfdl()!=0?keepPrecision(vo.getXnssdl()/vo.getLlfdl()*100,2):0.0); vo.setSlssl(vo.getLlfdl()!=0?keepPrecision(vo.getSlssdl()/vo.getLlfdl()*100,2):0.0); resultList.add(vo); }); SortUtils.sort(resultList,"fdl",SortUtils.DESC); for (int i=0;i cndb(String wpid, String beginDate, String endDate,String target,String sort) { QueryWrapper qw = new QueryWrapper<>(); List resultList = new ArrayList<>(); qw.select("recorddate,sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,sum(daynhwhssdl) daynhwhssdl,sum(daynhgzssdl) daynhgzssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl"); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (StringUtils.isNotEmpty(wpid)){ qw.eq("windpowerstationid",wpid); } qw.groupBy("recorddate"); List wxsslVoList = getWxsslSortVos(qw,resultList,TYPE_DATE); if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)){ if (sort.equals("1")){ SortUtils.sort(resultList,target,SortUtils.ASC); }else { SortUtils.sort(resultList,target,SortUtils.DESC); } }else { SortUtils.sort(resultList,"date",SortUtils.ASC); } return wxsslVoList; } /** * 场际对标 * @param wpids * @param beginDate * @param endDate * @return */ public List cjdb(String wpids, String beginDate, String endDate,String target,String sort) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); qw.select("windpowerstationid,sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,sum(daynhwhssdl) daynhwhssdl,sum(daynhgzssdl) daynhgzssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl"); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (StringUtils.isNotEmpty(wpids)){ List wpList = Arrays.asList(wpids.split(",")); qw.in("windpowerstationid",wpList); } qw.groupBy("windpowerstationid"); List wxsslVoList = getWxsslSortVos(qw,resultList,TYPE_WIND); if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)){ if (sort.equals("1")){ SortUtils.sort(resultList,target,SortUtils.ASC); }else { SortUtils.sort(resultList,target,SortUtils.DESC); } }else { SortUtils.sort(resultList,"ordernum",SortUtils.ASC); } return wxsslVoList; } /** * 项目对标 * @param wpids * @param projectids * @param beginDate * @param endDate * @return */ public List xmdb(String wpids, String projectids, String beginDate, String endDate,String target,String sort) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); qw.select("projectid,sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,sum(daynhwhssdl) daynhwhssdl,sum(daynhgzssdl) daynhgzssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl"); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (StringUtils.isNotEmpty(wpids)){ List wpList = Arrays.asList(wpids.split(",")); qw.in("windpowerstationid",wpList); } if (StringUtils.isNotEmpty(projectids)){ List projectList = Arrays.asList(projectids.split(",")); qw.in("projectid",projectList); } qw.groupBy("projectid"); List wxsslVoList = getWxsslSortVos(qw,resultList,TYPE_PROJECT); if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)){ if (sort.equals("1")){ SortUtils.sort(resultList,target,SortUtils.ASC); }else { SortUtils.sort(resultList,target,SortUtils.DESC); } }else { SortUtils.sort(resultList,"fdl",SortUtils.ASC); } return wxsslVoList; } /** * 线路对标 * @param wpids * @param projectids * @param lineids * @param beginDate * @param endDate * @return */ public List xldb(String wpids, String projectids, String lineids, String beginDate, String endDate,String target,String sort) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); qw.select("lineid,sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,sum(daynhwhssdl) daynhwhssdl,sum(daynhgzssdl) daynhgzssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl"); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (StringUtils.isNotEmpty(wpids)){ List wpList = Arrays.asList(wpids.split(",")); qw.in("windpowerstationid",wpList); } if (StringUtils.isNotEmpty(projectids)){ List projectList = Arrays.asList(projectids.split(",")); qw.in("projectid",projectList); } if (StringUtils.isNotEmpty(lineids)){ List lineList = Arrays.asList(lineids.split(",")); qw.in("lineid",lineList); } qw.groupBy("lineid"); List wxsslVoList = getWxsslSortVos(qw,resultList,TYPE_LINE); if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)){ if (sort.equals("1")){ SortUtils.sort(resultList,target,SortUtils.ASC); }else { SortUtils.sort(resultList,target,SortUtils.DESC); } }else { SortUtils.sort(resultList,"fdl",SortUtils.ASC); } return wxsslVoList; } /** * 根据查询条件和类型,查询处五项损失并封装到结果list * @param qw * @param resultList * @param type * @return */ private List getWxsslSortVos(QueryWrapper qw, List resultList, String type) { Map station = windpowerstationService.list() .stream().collect(Collectors.toMap(Windpowerstation::getId,Windpowerstation::getOrdernum)); List list = equipmentdayinfoService.list(qw); list.stream().forEach(i->{ WxsslVo vo = new WxsslVo(); vo.setOrdernum(station.get(i.getWindpowerstationid())); if (type.equals(TYPE_WIND)){ vo.setId(i.getWindpowerstationid()); vo.setName(CacheContext.wpmap.get(i.getWindpowerstationid().trim()).getName()); }else if(type.equals(TYPE_PROJECT)){ vo.setId(i.getProjectid()); vo.setName(CacheContext.projects.stream().filter(p->p.getId().equals(i.getProjectid().trim())).findFirst().get().getName()); }else if(type.equals(TYPE_LINE)){ vo.setId(i.getLineid()); vo.setName(CacheContext.lines.stream().filter(l->l.getId().equals(i.getLineid().trim())).findFirst().get().getName()); }else if(type.equals(TYPE_WINDTURBINE)){ vo.setId(i.getWindturbineid()); vo.setName(CacheContext.wtls.stream().filter(w->w.getId().equals(i.getWindturbineid().trim())).findFirst().get().getName()); } vo.setDate(i.getRecorddate()); vo.setFdl(keepPrecision(i.getGenecapacity()/10000,2)); vo.setLlfdl(keepPrecision(i.getTherogenecapacity()/10000,2)); vo.setGzssdl(keepPrecision(i.getDaynhgzssdl()/10000,2)); vo.setJxssdl(keepPrecision(i.getDaynhwhssdl()/10000,2)); vo.setXdssdl(keepPrecision(i.getDaynhxdssdl()/10000,2)); vo.setXnssdl(keepPrecision(i.getDaynhqfdl()/10000,2)); vo.setSlssdl(keepPrecision(i.getDaynhcfdl()/10000,2)); vo.setFnlyl(vo.getLlfdl()!=0?keepPrecision(vo.getFdl()/vo.getLlfdl()*100,2):0); vo.setGzssl(vo.getLlfdl()!=0?keepPrecision(vo.getGzssdl()/vo.getLlfdl()*100,2):0); vo.setJxssl(vo.getLlfdl()!=0?keepPrecision(vo.getJxssdl()/vo.getLlfdl()*100,2):0); vo.setQfl(vo.getLlfdl()!=0?keepPrecision(vo.getXdssdl()/vo.getLlfdl()*100,2):0); vo.setXnssl(vo.getLlfdl()!=0?keepPrecision(vo.getXnssdl()/vo.getLlfdl()*100,2):0); vo.setSlssl(vo.getLlfdl()!=0?keepPrecision(vo.getSlssdl()/vo.getLlfdl()*100,2):0); resultList.add(vo); }); SortUtils.sort(resultList,"llfdl",SortUtils.DESC); for (int i=0;i findOperecords(String beginDate, String endDate) { List resultList = new ArrayList<>(); Date begin = DateUtils.parseDate(beginDate); Date end = DateUtils.getEndOfDay(DateUtils.parseDate(endDate)); List opeList = operationrecordService.listByBeginAndEnd(begin, end); QueryWrapper wrapper = new QueryWrapper(); wrapper.select("max(id) id,name,max(begin) begin,max(end) end,max(createdate) createdate"); wrapper.le("createdate",end).ge("createdate",begin).groupBy("name"); List dutyList= dutyscheduleService.list(wrapper); for (Dutyschedule duty : dutyList) { Operation ope = new Operation(); ope.setNameOfDuty(duty.getName()); List opeVos= opeList.stream().filter(v -> v.getDutyname().equals(duty.getName())).collect(Collectors.toList()); ope.setStartCount(opeVos.stream().filter(vo -> vo.getValue()==1.0).collect(Collectors.toList()).size()); ope.setStopCount(opeVos.stream().filter(vo -> vo.getValue()==2.0).collect(Collectors.toList()).size()); ope.setResetCount(opeVos.stream().filter(vo -> vo.getValue()==3.0).collect(Collectors.toList()).size()); ope.setMaintainCount(opeVos.stream().filter(vo -> vo.getValue()==4.0).collect(Collectors.toList()).size()); ope.setUnmaintainCount(opeVos.stream().filter(vo -> vo.getValue()==5.0).collect(Collectors.toList()).size()); ope.setGpmaintainCount(opeVos.stream().filter(vo -> vo.getValue()==6.0).collect(Collectors.toList()).size()); ope.setGpfaultCount(opeVos.stream().filter(vo -> vo.getValue()==7.0).collect(Collectors.toList()).size()); ope.setGponsiteinvolvementMaintainCount(opeVos.stream().filter(vo -> vo.getValue()==8.0).collect(Collectors.toList()).size()); ope.setGponsiteinvolvementFaultCount(opeVos.stream().filter(vo -> vo.getValue()==9.0).collect(Collectors.toList()).size()); ope.setGpoffsiteaffectedgridCount(opeVos.stream().filter(vo -> vo.getValue()==100).collect(Collectors.toList()).size()); ope.setGpweatherOutsideCount(opeVos.stream().filter(vo -> vo.getValue()==11.0).collect(Collectors.toList()).size()); ope.setUngpCount(opeVos.stream().filter(vo -> vo.getValue()==12.0).collect(Collectors.toList()).size()); resultList.add(ope); } return resultList; } /** * 值际点击钻取 * @param beginDate * @param endDate * @param dutyname * @param direct * @return */ public List drillOperecords(String beginDate, String endDate, String dutyname, String direct) { Date begin = DateUtils.parseDate(beginDate); Date end = DateUtils.getEndOfDay(DateUtils.parseDate(endDate)); List opeList = operationrecordService.listByBeginAndEnd(begin,end); List resuList = opeList.stream().filter(ope -> ope.getDutyname().equals(dutyname) && ope.getValue() == Double.parseDouble(direct)).collect(Collectors.toList()); return resuList; } /** * 值际五项损失 * @param beginDate * @param endDate * @return */ public List findbenchlist(String beginDate, String endDate) { Date begin = DateUtils.parseDate(beginDate); Date end = DateUtils.parseDate(endDate); List resuList = benchmarkingbetweenService.findByBeginAndEnd(begin,end); return resuList; } /** * 对标管理详情页面 * @param id * @param beginDate * @param endDate * @return */ public List details(String id, String beginDate, String endDate, String target,String sort) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); qw.select("windturbineid,sum(genecapacity) genecapacity,sum(therogenecapacity) therogenecapacity,sum(daynhwhssdl) daynhwhssdl,sum(daynhgzssdl) daynhgzssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl"); qw.ge("recorddate",DateUtils.parseDate(beginDate)).le("recorddate",DateUtils.parseDate(endDate)); if (id.endsWith("FDC")){ qw.eq("windpowerstationid",id); }else if(id.endsWith("GC")){ qw.eq("projectid",id); }else if(id.endsWith("XL")){ qw.eq("lineid",id); } qw.groupBy("windturbineid"); List wxsslVoList = getWxsslSortVos(qw,resultList,TYPE_WINDTURBINE); if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)){ if (sort.equals("1")){ SortUtils.sort(resultList,target,SortUtils.ASC); }else { SortUtils.sort(resultList,target,SortUtils.DESC); } }else { SortUtils.sort(resultList,"fdl",SortUtils.ASC); } return wxsslVoList; } /** * 日单机横向对比列表 * @param wpid * @param wtids * @param date * @return */ public List daydjhxdbtop(String wpid, String wtids, String date) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); Date recorddate = DateUtils.parseDate(date); if (StringUtils.isNotEmpty(wpid) && StringUtils.isNotEmpty(wtids)){ String[] wtidArray = wtids.split(","); List wtidList = Arrays.asList(wtidArray); qw.in("windturbineid",wtidList); }else { qw.eq("windturbineid","MG01_01"); } qw.eq("recorddate",recorddate); List windturbineanalysisdayList = windturbineanalysisdayService.list(qw); windturbineanalysisdayList.stream().forEach(i->{ DjhxdbtopVo vo = new DjhxdbtopVo(); vo.setWtid(i.getWindturbineid()); vo.setFdl(i.getC1()); vo.setYfdl(i.getC4()); vo.setPjgl(i.getC7()); vo.setPjfs(i.getC10()); vo.setYxxs(i.getC13()); vo.setDjxs(i.getC16()); vo.setGzxs(i.getC19()); vo.setWhxs(i.getC22()); vo.setZdxs(i.getC25()); vo.setYxfs(i.getC28()); vo.setSsdl(i.getC31()); vo.setBjcs(i.getC34()); vo.setTjcs(i.getC37()); vo.setBbhcs(i.getC40()); vo.setSbklly(i.getC43()); vo.setPjwd(i.getC46()); vo.setPjsd(i.getC49()); vo.setPjyq(i.getC52()); vo.setNhyd(i.getC55()); vo.setSjbz(i.getC58()); resultList.add(vo); }); List fzyList = getFzy(wtids, date); resultList.stream().forEach(i->{ String wtid = i.getWtid(); if (fzyList!=null && fzyList.size()>0){ Optional first = fzyList.stream().filter(fzy -> fzy.getWindturbineid().equals(wtid)).findFirst(); Windturbinethewindinfo winfo = null; if (first.isPresent()){ winfo = first.get(); } List vos = new ArrayList<>(); for (int j = 0; j < 16; j++) { FzyVo vo = new FzyVo(); switch (j) { case 0: // vo.setName("N("+winfo.getN4()+"/"+winfo.getN()+")"); vo.setName("N"); vo.setValue(winfo.getN4()); break; case 1: // vo.setName("NNE("+winfo.getNne4()+"/"+winfo.getNne()+")"); vo.setName("NNE"); vo.setValue(winfo.getNne4()); break; case 2: // vo.setName("NE("+winfo.getNe4()+"/"+winfo.getNe()+")"); vo.setName("NE"); vo.setValue(winfo.getNe4()); break; case 3: // vo.setName("ENE("+winfo.getEne4()+"/"+winfo.getEne()+")"); vo.setName("ENE"); vo.setValue(winfo.getEne4()); break; case 4: // vo.setName("E("+winfo.getE4()+"/"+winfo.getE()+")"); vo.setName("E"); vo.setValue(winfo.getE4()); break; case 5: // vo.setName("ESE("+winfo.getEse()+"/"+winfo.getEse()+")"); vo.setName("ESE"); vo.setValue(winfo.getEse4()); break; case 6: // vo.setName("SE("+winfo.getSe4()+"/"+winfo.getSe()+")"); vo.setName("SE"); vo.setValue(winfo.getSe4()); break; case 7: // vo.setName("SSE("+winfo.getSse4()+"/"+winfo.getSse()+")"); vo.setName("SSE"); vo.setValue(winfo.getSse4()); break; case 8: // vo.setName("S("+winfo.getS4()+"/"+winfo.getS()+")"); vo.setName("S"); vo.setValue(winfo.getS4()); break; case 9: // vo.setName("SSW("+winfo.getSsw4()+"/"+winfo.getSsw()+")"); vo.setName("SSW"); vo.setValue(winfo.getSsw4()); break; case 10: // vo.setName("SW("+winfo.getSw4()+"/"+winfo.getSw()+")"); vo.setName("SW"); vo.setValue(winfo.getSw4()); break; case 11: // vo.setName("WSW("+winfo.getWsw4()+"/"+winfo.getWsw()+")"); vo.setName("WSW"); vo.setValue(winfo.getWsw4()); break; case 12: // vo.setName("W("+winfo.getW4()+"/"+winfo.getW()+")"); vo.setName("W"); vo.setValue(winfo.getW4()); break; case 13: // vo.setName("WNW("+winfo.getWnw4()+"/"+winfo.getWnw()+")"); vo.setName("WNW"); vo.setValue(winfo.getWnw4()); break; case 14: // vo.setName("NW("+winfo.getNw4()+"/"+winfo.getNw()+")"); vo.setName("NW"); vo.setValue(winfo.getNw4()); break; case 15: // vo.setName("NNW("+winfo.getNnw4()+"/"+winfo.getNnw()+")"); vo.setName("NNW"); vo.setValue(winfo.getNnw4()); break; default: break; } vos.add(vo); } i.setFzyList(vos); i.setJfpl(winfo.getCb()); } }); List list = convert(resultList); return list; } /** * 月单机横向对比列表 * @param wpid * @param wtids * @param date * @return */ public List monthdjhxdbtop(String wpid, String wtids, String date) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); Date recorddate = DateUtils.parseDate(date); if (StringUtils.isNotEmpty(wpid) && StringUtils.isNotEmpty(wtids)){ String[] wtidArray = wtids.split(","); List wtidList = Arrays.asList(wtidArray); qw.in("windturbineid",wtidList); }else { qw.eq("windturbineid","MG01_01"); } qw.eq("recorddate",recorddate); List windturbineanalysisdayList = windturbineanalysisdayService.list(qw); windturbineanalysisdayList.stream().forEach(i->{ DjhxdbtopVo vo = new DjhxdbtopVo(); vo.setWtid(i.getWindturbineid()); vo.setFdl(i.getC2()); vo.setYfdl(i.getC5()); vo.setPjgl(i.getC8()); vo.setPjfs(i.getC11()); vo.setYxxs(i.getC14()); vo.setDjxs(i.getC17()); vo.setGzxs(i.getC20()); vo.setWhxs(i.getC23()); vo.setZdxs(i.getC26()); vo.setYxfs(i.getC29()); vo.setSsdl(i.getC32()); vo.setBjcs(i.getC35()); vo.setTjcs(i.getC38()); vo.setBbhcs(i.getC41()); vo.setSbklly(i.getC44()); vo.setPjwd(i.getC47()); vo.setPjsd(i.getC50()); vo.setPjyq(i.getC53()); vo.setNhyd(i.getC56()); vo.setSjbz(i.getC59()); resultList.add(vo); }); List fzyList = getFzy(wtids, date); resultList.stream().forEach(i->{ String wtid = i.getWtid(); Optional first = fzyList.stream().filter(fzy -> fzy.getWindturbineid().equals(wtid)).findFirst(); Windturbinethewindinfo winfo = null; if (first.isPresent()){ winfo = first.get(); } List vos = new ArrayList<>(); for (int j = 0; j < 16; j++) { FzyVo vo = new FzyVo(); switch (j) { case 0: // vo.setName("N("+winfo.getN4()+"/"+winfo.getN()+")"); vo.setName("N"); vo.setValue(winfo.getN10()); break; case 1: // vo.setName("NNE("+winfo.getNne4()+"/"+winfo.getNne()+")"); vo.setName("NNE"); vo.setValue(winfo.getNne10()); break; case 2: // vo.setName("NE("+winfo.getNe4()+"/"+winfo.getNe()+")"); vo.setName("NE"); vo.setValue(winfo.getNe10()); break; case 3: // vo.setName("ENE("+winfo.getEne4()+"/"+winfo.getEne()+")"); vo.setName("ENE"); vo.setValue(winfo.getEne10()); break; case 4: // vo.setName("E("+winfo.getE4()+"/"+winfo.getE()+")"); vo.setName("E"); vo.setValue(winfo.getE10()); break; case 5: // vo.setName("ESE("+winfo.getEse()+"/"+winfo.getEse()+")"); vo.setName("ESE"); vo.setValue(winfo.getEse10()); break; case 6: // vo.setName("SE("+winfo.getSe4()+"/"+winfo.getSe()+")"); vo.setName("SE"); vo.setValue(winfo.getSe10()); break; case 7: // vo.setName("SSE("+winfo.getSse4()+"/"+winfo.getSse()+")"); vo.setName("SSE"); vo.setValue(winfo.getSse10()); break; case 8: // vo.setName("S("+winfo.getS4()+"/"+winfo.getS()+")"); vo.setName("S"); vo.setValue(winfo.getS10()); break; case 9: // vo.setName("SSW("+winfo.getSsw4()+"/"+winfo.getSsw()+")"); vo.setName("SSW"); vo.setValue(winfo.getSsw10()); break; case 10: // vo.setName("SW("+winfo.getSw4()+"/"+winfo.getSw()+")"); vo.setName("SW"); vo.setValue(winfo.getSw10()); break; case 11: // vo.setName("WSW("+winfo.getWsw4()+"/"+winfo.getWsw()+")"); vo.setName("WSW"); vo.setValue(winfo.getWsw10()); break; case 12: // vo.setName("W("+winfo.getW4()+"/"+winfo.getW()+")"); vo.setName("W"); vo.setValue(winfo.getW10()); break; case 13: // vo.setName("WNW("+winfo.getWnw4()+"/"+winfo.getWnw()+")"); vo.setName("WNW"); vo.setValue(winfo.getWnw10()); break; case 14: // vo.setName("NW("+winfo.getNw4()+"/"+winfo.getNw()+")"); vo.setName("NW"); vo.setValue(winfo.getNw10()); break; case 15: // vo.setName("NNW("+winfo.getNnw4()+"/"+winfo.getNnw()+")"); vo.setName("NNW"); vo.setValue(winfo.getNnw10()); break; default: break; } vos.add(vo); } i.setFzyList(vos); i.setJfpl(winfo.getCb()); }); List list = convert(resultList); return list; } /** * 年单机横向对比列表 * @param wpid * @param wtids * @param date * @return */ public List yeardjhxdbtop(String wpid, String wtids, String date) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); Date recorddate = DateUtils.parseDate(date); if (StringUtils.isNotEmpty(wpid) && StringUtils.isNotEmpty(wtids)){ String[] wtidArray = wtids.split(","); List wtidList = Arrays.asList(wtidArray); qw.in("windturbineid",wtidList); }else { qw.eq("windturbineid","MG01_01"); } qw.eq("recorddate",recorddate); List windturbineanalysisdayList = windturbineanalysisdayService.list(qw); windturbineanalysisdayList.stream().forEach(i->{ DjhxdbtopVo vo = new DjhxdbtopVo(); vo.setWtid(i.getWindturbineid()); vo.setFdl(i.getC3()); vo.setYfdl(i.getC6()); vo.setPjgl(i.getC9()); vo.setPjfs(i.getC12()); vo.setYxxs(i.getC15()); vo.setDjxs(i.getC18()); vo.setGzxs(i.getC21()); vo.setWhxs(i.getC24()); vo.setZdxs(i.getC27()); vo.setYxfs(i.getC30()); vo.setSsdl(i.getC33()); vo.setBjcs(i.getC36()); vo.setTjcs(i.getC39()); vo.setBbhcs(i.getC42()); vo.setSbklly(i.getC45()); vo.setPjwd(i.getC48()); vo.setPjsd(i.getC51()); vo.setPjyq(i.getC54()); vo.setNhyd(i.getC57()); vo.setSjbz(i.getC60()); resultList.add(vo); }); List fzyList = getFzy(wtids, date); resultList.stream().forEach(i->{ String wtid = i.getWtid(); Optional first = fzyList.stream().filter(fzy -> fzy.getWindturbineid().equals(wtid)).findFirst(); Windturbinethewindinfo winfo = null; if (first.isPresent()){ winfo = first.get(); } List vos = new ArrayList<>(); for (int j = 0; j < 16; j++) { FzyVo vo = new FzyVo(); switch (j) { case 0: // vo.setName("N("+winfo.getN4()+"/"+winfo.getN()+")"); vo.setName("N"); vo.setValue(winfo.getN16()); break; case 1: // vo.setName("NNE("+winfo.getNne4()+"/"+winfo.getNne()+")"); vo.setName("NNE"); vo.setValue(winfo.getNne16()); break; case 2: // vo.setName("NE("+winfo.getNe4()+"/"+winfo.getNe()+")"); vo.setName("NE"); vo.setValue(winfo.getNe16()); break; case 3: // vo.setName("ENE("+winfo.getEne4()+"/"+winfo.getEne()+")"); vo.setName("ENE"); vo.setValue(winfo.getEne16()); break; case 4: // vo.setName("E("+winfo.getE4()+"/"+winfo.getE()+")"); vo.setName("E"); vo.setValue(winfo.getE16()); break; case 5: // vo.setName("ESE("+winfo.getEse()+"/"+winfo.getEse()+")"); vo.setName("ESE"); vo.setValue(winfo.getEse16()); break; case 6: // vo.setName("SE("+winfo.getSe4()+"/"+winfo.getSe()+")"); vo.setName("SE"); vo.setValue(winfo.getSe16()); break; case 7: // vo.setName("SSE("+winfo.getSse4()+"/"+winfo.getSse()+")"); vo.setName("SSE"); vo.setValue(winfo.getSse16()); break; case 8: // vo.setName("S("+winfo.getS4()+"/"+winfo.getS()+")"); vo.setName("S"); vo.setValue(winfo.getS16()); break; case 9: // vo.setName("SSW("+winfo.getSsw4()+"/"+winfo.getSsw()+")"); vo.setName("SSW"); vo.setValue(winfo.getSsw16()); break; case 10: // vo.setName("SW("+winfo.getSw4()+"/"+winfo.getSw()+")"); vo.setName("SW"); vo.setValue(winfo.getSw16()); break; case 11: // vo.setName("WSW("+winfo.getWsw4()+"/"+winfo.getWsw()+")"); vo.setName("WSW"); vo.setValue(winfo.getWsw16()); break; case 12: // vo.setName("W("+winfo.getW4()+"/"+winfo.getW()+")"); vo.setName("W"); vo.setValue(winfo.getW16()); break; case 13: // vo.setName("WNW("+winfo.getWnw4()+"/"+winfo.getWnw()+")"); vo.setName("WNW"); vo.setValue(winfo.getWnw16()); break; case 14: // vo.setName("NW("+winfo.getNw4()+"/"+winfo.getNw()+")"); vo.setName("NW"); vo.setValue(winfo.getNw16()); break; case 15: // vo.setName("NNW("+winfo.getNnw4()+"/"+winfo.getNnw()+")"); vo.setName("NNW"); vo.setValue(winfo.getNnw16()); break; default: break; } vos.add(vo); } i.setFzyList(vos); i.setJfpl(winfo.getCb()); }); List list = convert(resultList); return list; } /** * 单机横向对比列表行转列 * @param resultList * @return */ private List convert(List resultList) { List rList = new ArrayList<>(); List wtids = resultList.stream().map(i -> i.getWtid()).collect(Collectors.toList()); DjhxdbInitVo fdj = new DjhxdbInitVo(); fdj.setName("风电机"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getFdl()); } Object blo = new ClassUtil().dynamicClass(fdl, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo yfdl = new DjhxdbInitVo(); yfdl.setName("应发电量"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getYfdl()); } Object blo = new ClassUtil().dynamicClass(yfdl, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo pjgl = new DjhxdbInitVo(); pjgl.setName("平均功率"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjgl()); } Object blo = new ClassUtil().dynamicClass(pjgl, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo pjfs = new DjhxdbInitVo(); pjfs.setName("平均风速"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjfs()); } Object blo = new ClassUtil().dynamicClass(pjfs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo yxxs = new DjhxdbInitVo(); yxxs.setName("运行小时"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getYxxs()); } Object blo = new ClassUtil().dynamicClass(yxxs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo djxs = new DjhxdbInitVo(); djxs.setName("待机小时"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getDjxs()); } Object blo = new ClassUtil().dynamicClass(djxs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo gzxs = new DjhxdbInitVo(); gzxs.setName("故障小时"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getGzxs()); } Object blo = new ClassUtil().dynamicClass(gzxs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo whxs = new DjhxdbInitVo(); whxs.setName("维护小时"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getWhxs()); } Object blo = new ClassUtil().dynamicClass(whxs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo zdxs = new DjhxdbInitVo(); zdxs.setName("中断小时"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getZdxs()); } Object blo = new ClassUtil().dynamicClass(zdxs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo yxfs = new DjhxdbInitVo(); yxfs.setName("有效风时"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getYxfs()); } Object blo = new ClassUtil().dynamicClass(yxfs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo ssdl = new DjhxdbInitVo(); ssdl.setName("损失电量"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getSsdl()); } Object blo = new ClassUtil().dynamicClass(ssdl, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo bjcs = new DjhxdbInitVo(); bjcs.setName("报警次数"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getBjcs()); } Object blo = new ClassUtil().dynamicClass(bjcs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo tjcs = new DjhxdbInitVo(); tjcs.setName("停机次数"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getTjcs()); } Object blo = new ClassUtil().dynamicClass(tjcs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo bbhcs = new DjhxdbInitVo(); bbhcs.setName("不饱和次数"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getBbhcs()); } Object blo = new ClassUtil().dynamicClass(bbhcs, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo sbklly = new DjhxdbInitVo(); sbklly.setName("设备可利用率"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getSbklly()); } Object blo = new ClassUtil().dynamicClass(sbklly, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo pjwd = new DjhxdbInitVo(); pjwd.setName("平均温度"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjwd()); } Object blo = new ClassUtil().dynamicClass(pjwd, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo pjsd = new DjhxdbInitVo(); pjsd.setName("平均湿度"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjsd()); } Object blo = new ClassUtil().dynamicClass(pjsd, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo pjyq = new DjhxdbInitVo(); pjyq.setName("平均压强"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjyq()); } Object blo = new ClassUtil().dynamicClass(pjyq, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo nhyd = new DjhxdbInitVo(); nhyd.setName("拟合优度"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getNhyd()); } Object blo = new ClassUtil().dynamicClass(nhyd, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo sjbz = new DjhxdbInitVo(); sjbz.setName("实际/保证"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getSjbz()); } Object blo = new ClassUtil().dynamicClass(sjbz, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo fzy = new DjhxdbInitVo(); fzy.setName("风资源"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getFzyList()); } Object blo = new ClassUtil().dynamicClass(fzy, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } DjhxdbInitVo jfpl = new DjhxdbInitVo(); jfpl.setName("静风频率"); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (int j=0;ji.getWtid().equals(wtids.get(finalJ))).findFirst().get().getJfpl()); } Object blo = new ClassUtil().dynamicClass(jfpl, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } return rList; } /** * 获取风资源和静风频率 * @param wtids * @param date */ private List getFzy(String wtids, String date) { QueryWrapper qw = new QueryWrapper<>(); Date recorddate = DateUtils.parseDate(date); if (StringUtils.isNotEmpty(wtids)){ String[] wtidArray = wtids.split(","); List wtidList = Arrays.asList(wtidArray); qw.in("windturbineid",wtidList); }else { qw.eq("windturbineid","MG01_01"); } qw.eq("recorddate",recorddate); List fzyList = windturbinethewindinfoService.list(qw); return fzyList; } /** * 日单机横向对比图 * @param wpid * @param wtids * @param date * @return */ public List djhxdbbottom(String wpid, String wtids, String date) { List resultList = new ArrayList<>(); QueryWrapper qw = new QueryWrapper<>(); Date recorddate = DateUtils.parseDate(date); if (StringUtils.isNotEmpty(wpid) && StringUtils.isNotEmpty(wtids)){ String[] wtidArray = wtids.split(","); List wtidList = Arrays.asList(wtidArray); qw.in("windturbineid",wtidList); }else { qw.eq("windturbineid","MG01_01"); } qw.eq("recorddate",recorddate); List windturbinecurvefittingList = windturbinecurvefittingService.list(qw); List wtidList = windturbinecurvefittingList.stream().map(i -> i.getWindturbineid()).distinct().collect(Collectors.toList()); List rList = new ArrayList<>(); for (String wtid : wtidList) { List windturbinecurvefittings = windturbinecurvefittingList.stream().filter(i -> i.getWindturbineid().equals(wtid)).collect(Collectors.toList()); DjhxdbInitVo vo = new DjhxdbInitVo(); vo.setName(wtid); try { LinkedHashMap addMap = new LinkedHashMap(); LinkedHashMap addValMap = new LinkedHashMap(); for (Windturbinecurvefitting curve : windturbinecurvefittings) { addMap.put(String.valueOf(curve.getSpeed()), Class.forName("java.lang.Double")); addValMap.put(String.valueOf(curve.getSpeed()), curve.getActualpower()); } Object blo = new ClassUtil().dynamicClass(vo, addMap, addValMap); rList.add(blo); System.out.println(JSON.toJSONString(blo)); } catch (Exception e) { e.printStackTrace(); } } return rList; } /** * 保存对标管理首页大表 * @param beginDate * @param endDate */ public void saveBenchmark(String beginDate,String endDate){ List wplist = CacheContext.wplist; List days = getDays(beginDate, endDate); for (String day : days) { Date date = DateUtils.parseDate(day); Map selMap = new HashMap<>(); selMap.put("recorddate",date); benchmarkService.removeByMap(selMap); //获取数据 List windpowerinfodays = windpowerinfodayService.listByMap(selMap); List windpowerinfoday3s = windpowerinfoday3Service.listByMap(selMap); List wpmttrandmtbfdays = wpmttrandmtbfdayService.listByMap(selMap); List windpowerspecificinfodays = windpowerspecificinfodayService.listByMap(selMap); List windpowerstationthewindinfos = windpowerstationthewindinfoService.listByMap(selMap); //封装结果list一起存储 List resultList = new ArrayList<>(); //赋值 wplist.stream().forEach(wp -> { Benchmark benchmark = new Benchmark(); benchmark.setId(StringUtils.getUUID()); benchmark.setForeignkeyid(wp.getId()); //场站 benchmark.setRecorddate(date); benchmark.setMark(RandomUtil.getRandomForDoubleBounded(80.0,95.0)); benchmark.setCapacity(wp.getCapacity()); benchmark.setUnits(wp.getQuantity()); double fdl = 0.0; double swdl = 0.0; double gwdl = 0.0; double gzdl = 0.0; double whdl = 0.0; double xddl = 0.0; double xndl = 0.0; double sldl = 0.0; double zhcydl = 0.0; double gzcs = 0.0; double gzsj = 0.0; double rlsj = 0.0; double sbklyl = 0.0; double dxkyxs = 0.0; double yfwcs = 0.0; double sjfwcs = 0.0; double yzhcs = 0.0; double sjzhcs = 0.0; double yxqcs = 0.0; double sjxqcs = 0.0; double speed = 0.0; double jfpl = 0.0; double jfcs = 0.0; List infodayList = windpowerinfodays.stream().filter(i -> i.getForeignkeyid().equals(wp.getId())).collect(Collectors.toList()); if (StringUtils.isNotNull(infodayList) && StringUtils.isNotEmpty(infodayList)){ Windpowerinfoday windpowerinfoday = infodayList.get(0); fdl = windpowerinfoday.getGeneratingcapacity(); swdl = windpowerinfoday.getGridelectricity(); gwdl = windpowerinfoday.getBuyelectricity(); zhcydl = fdl + gwdl - swdl; sbklyl = windpowerinfoday.getDaysbklyl(); dxkyxs = windpowerinfoday.getDaydxkyxs(); speed = windpowerinfoday.getSpeed(); } List infoday3List = windpowerinfoday3s.stream().filter(i -> i.getForeignkeyid().equals(wp.getId())).collect(Collectors.toList()); if (StringUtils.isNotNull(infoday3List) && StringUtils.isNotEmpty(infoday3List)){ Windpowerinfoday3 windpowerinfoday3 = infoday3List.get(0); gzdl = windpowerinfoday3.getDaynhgzssdl()/10000; whdl = windpowerinfoday3.getDaynhwhssdl()/10000; xddl = windpowerinfoday3.getDaynhxdssdl()/10000; xndl = windpowerinfoday3.getDaynhqfdl()/10000; //sldl = windpowerinfoday3.getDaynhcfdl()/10000; } List wpmttrandmtbfdayList = wpmttrandmtbfdays.stream().filter(i -> i.getWpid().equals(wp.getId())).collect(Collectors.toList()); if (StringUtils.isNotNull(wpmttrandmtbfdayList) && StringUtils.isNotEmpty(wpmttrandmtbfdayList)){ Wpmttrandmtbfday wpmttrandmtbfday = wpmttrandmtbfdayList.get(0); gzcs = wpmttrandmtbfday.getStoprtimes(); gzsj = wpmttrandmtbfday.getStophours(); rlsj = wpmttrandmtbfday.getWthours(); } List windpowerspecificinfodayList = windpowerspecificinfodays.stream().filter(i -> i.getWindpowerstationid().equals(wp.getId())).collect(Collectors.toList()); if (StringUtils.isNotNull(windpowerspecificinfodayList) && StringUtils.isNotEmpty(windpowerspecificinfodayList)){ Windpowerspecificinfoday windpowerspecificinfoday = windpowerspecificinfodayList.get(0); yfwcs = windpowerspecificinfoday.getTheoresettimes(); sjfwcs = windpowerspecificinfoday.getResettimes(); yzhcs = windpowerspecificinfoday.getTheoconversiontimes(); sjzhcs = windpowerspecificinfoday.getConversiontimes(); yxqcs = windpowerspecificinfoday.getTheofaultcount(); sjxqcs = windpowerspecificinfoday.getRightcount(); } List windpowerstationthewindinfoList = windpowerstationthewindinfos.stream().filter(i -> i.getWindpowerstationid().equals(wp.getId())).collect(Collectors.toList()); if (StringUtils.isNotNull(windpowerstationthewindinfoList) && StringUtils.isNotEmpty(windpowerstationthewindinfoList)){ Windpowerstationthewindinfo windpowerstationthewindinfo = windpowerstationthewindinfoList.get(0); jfcs = windpowerstationthewindinfo.getCa(); jfpl = windpowerstationthewindinfo.getCb(); } benchmark.setActualpower(fdl); benchmark.setDaynhgzssdl(gzdl); benchmark.setDaynhwhssdl(whdl); benchmark.setDaynhxdssdl(xddl); benchmark.setDaynhqfdl(xndl); benchmark.setDaynhcfdl(sldl); benchmark.setTheoreticalpower(benchmark.getActualpower()+benchmark.getDaynhgzssdl()+benchmark.getDaynhwhssdl()+benchmark.getDaynhxdssdl()+benchmark.getDaynhqfdl()+benchmark.getDaynhcfdl()); benchmark.setWindenergy(benchmark.getTheoreticalpower()!=0?benchmark.getActualpower()/benchmark.getTheoreticalpower()*100:0.0); benchmark.setPowerlossrate(benchmark.getTheoreticalpower()!=0?benchmark.getDaynhxdssdl()/benchmark.getTheoreticalpower()*100:0.0); benchmark.setPerformancelossrate(benchmark.getTheoreticalpower()!=0?benchmark.getDaynhqfdl()/benchmark.getTheoreticalpower()*100:0.0); benchmark.setComprehensiverate(benchmark.getActualpower()!=0?zhcydl/benchmark.getActualpower()*100:0.0); benchmark.setUtilizationhours(benchmark.getActualpower()/benchmark.getCapacity()*10); benchmark.setWindpoweraccuracy(RandomUtil.getRandomForDoubleBounded(91.0,99.0)); benchmark.setAgccurvefollowing(RandomUtil.getRandomForDoubleBounded(91.0,99.0)); benchmark.setMttr(gzcs!=0?gzsj/gzcs:0.0); benchmark.setMtbf(gzcs!=0?rlsj/gzcs:0.0); benchmark.setMttf(benchmark.getMtbf()-benchmark.getMttr()); benchmark.setAvailability(sbklyl); benchmark.setAvailabilityfactor(dxkyxs); benchmark.setFailurelossrate(benchmark.getTheoreticalpower()!=0?benchmark.getDaynhgzssdl()/benchmark.getTheoreticalpower()*100:0.0); benchmark.setMainlossrate(benchmark.getTheoreticalpower()!=0?benchmark.getDaynhwhssdl()/benchmark.getTheoreticalpower()*100:0.0); benchmark.setHiddentimely(RandomUtil.getRandomForDoubleBounded(70.0,99.0)); benchmark.setResettimelyrate(yfwcs!=0?sjfwcs/yfwcs*100:0.0); benchmark.setStatetransitionrate(yzhcs!=0?sjzhcs/yzhcs*100:0.0); benchmark.setEliminationrate(yxqcs!=0?sjxqcs/yxqcs*100:0.0); benchmark.setSpeed(speed); benchmark.setStaticwindfrequency(jfpl); benchmark.setEffectivewindhourrate(0.0); resultList.add(benchmark); }); benchmarkService.saveBatch(resultList); } } /** * 对标首页下面部分 * @param timetype * @param foreigntype * @return */ public List dbmainbottom(String timetype, String foreigntype) throws Exception { if (StringUtils.isEmpty(timetype)){ timetype = "日"; } if (StringUtils.isEmpty(foreigntype)){ foreigntype = "风电"; } QueryWrapper qw = new QueryWrapper<>(); qw.select("foreignkeyid,avg(mark) mark," + "avg(capacity) capacity," + "avg(units) units," + "sum(theoreticalpower) theoreticalpower," + "sum(actualpower) actualpower," + "sum(daynhgzssdl) daynhgzssdl, " + "sum(daynhwhssdl) daynhwhssdl," + "sum(daynhxdssdl) daynhxdssdl," + "sum(daynhqfdl) daynhqfdl," + "sum(daynhcfdl) daynhcfdl, " + "nvl(sum(actualpower),0)/nvl(sum(theoreticalpower),1)*100 windenergy, " + "nvl(sum(daynhxdssdl),0)/nvl(sum(theoreticalpower),1)*100 powerlossrate, " + "nvl(sum(daynhqfdl),0)/nvl(sum(theoreticalpower),1)*100 performancelossrate, " + "nvl(sum(daynhgzssdl),0)/nvl(sum(theoreticalpower),1)*100 failurelossrate, " + "nvl(sum(daynhwhssdl),0)/nvl(sum(theoreticalpower),1)*100 mainlossrate," + "avg(comprehensiverate) comprehensiverate,sum(actualpower)/avg(capacity) utilizationhours," + "avg(windpoweraccuracy) windpoweraccuracy," + "avg(agccurvefollowing) agccurvefollowing," + "avg(mtbf) mtbf,avg(mttr) mttr,avg(mttf) mttf," + "avg(availability) availability,avg(availabilityfactor) availabilityfactor," + "avg(hiddentimely) hiddentimely," + "avg(resettimelyrate) resettimelyrate," + "avg(statetransitionrate) statetransitionrate," + "avg(eliminationrate) eliminationrate," + "avg(speed) speed," + "avg(staticwindfrequency) staticwindfrequency," + "avg(effectivewindhourrate) effectivewindhourrate"); if (foreigntype.equals("风电")){ qw.like("foreignkeyid","_FDC"); }else { qw.like("foreignkeyid","_GDC"); } Date end = DateUtils.getYesterdayStart(); Date begin = end; if (timetype.equals("日")){ begin = end; }else if(timetype.equals("周")){ begin = DateUtils.getThisWeekMonday(end); }else if(timetype.equals("月")){ begin = DateUtils.getFirstAndLastDayOfMonth(end); }else if(timetype.equals("季")){ begin = DateUtils.getSeasonStartDate(end); }else if(timetype.equals("年")){ begin = DateUtils.getYearBegin(end); } qw.ge("recorddate",begin).le("recorddate",end); qw.groupBy("foreignkeyid"); List benchmarkList = benchmarkService.list(qw); return benchmarkList; } public void getSj(String timetype, String foreigntype,List resultList) throws Exception { QueryWrapper qw = new QueryWrapper<>(); qw.select("max(foreignkeyid) foreignkeyid," + "sum(theoreticalpower) theoreticalpower," + "sum(actualpower) actualpower," + "sum(daynhgzssdl) daynhgzssdl," + "sum(daynhwhssdl) daynhwhssdl," + "sum(daynhxdssdl) daynhxdssdl," + "sum(daynhqfdl) daynhqfdl," + "sum(daynhcfdl) daynhcfdl," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( actualpower ) / SUM ( theoreticalpower ) * 100 END AS windenergy," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhxdssdl ) / SUM ( theoreticalpower ) * 100 END AS powerlossrate," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhqfdl ) / SUM ( theoreticalpower ) * 100 END AS performancelossrate," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhgzssdl ) / SUM ( theoreticalpower ) * 100 END AS failurelossrate," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhwhssdl ) / SUM ( theoreticalpower ) * 100 END AS mainlossrate," + "avg(resettimelyrate) resettimelyrate," + "avg(statetransitionrate) statetransitionrate," + "avg(eliminationrate) eliminationrate," + "avg(comprehensiverate) comprehensiverate," + "avg(windpoweraccuracy) windpoweraccuracy," + "avg(agccurvefollowing) agccurvefollowing"); if (foreigntype.equals("风电")){ qw.like("foreignkeyid","_FDC"); }else { qw.like("foreignkeyid","_GDC"); } Date end = DateUtils.getYesterdayStart(); Date begin = end; if (timetype.equals("日")){ begin = end; }else if(timetype.equals("周")){ begin = DateUtils.getThisWeekMonday(end); }else if(timetype.equals("月")){ begin = DateUtils.getFirstAndLastDayOfMonth(end); }else if(timetype.equals("季")){ begin = DateUtils.getSeasonStartDate(end); }else if(timetype.equals("年")){ begin = DateUtils.getYearBegin(end); } qw.ge("recorddate",begin).le("recorddate",end); List sjList = benchmarkService.list(qw); if (StringUtils.isNotNull(sjList)){ sjList.get(0).setForeignkeyid("实际"); resultList.add(sjList.get(0)); } } public void getHb(String timetype, String foreigntype,List resultList) throws Exception { QueryWrapper qw = new QueryWrapper<>(); qw.select("max(foreignkeyid) foreignkeyid," + "sum(theoreticalpower) theoreticalpower," + "sum(actualpower) actualpower," + "sum(daynhgzssdl) daynhgzssdl," + "sum(daynhwhssdl) daynhwhssdl," + "sum(daynhxdssdl) daynhxdssdl," + "sum(daynhqfdl) daynhqfdl," + "sum(daynhcfdl) daynhcfdl," + "isnull(sum(actualpower)/nullif(sum(theoreticalpower),0),0)*100 windenergy," + "isnull(sum(daynhxdssdl)/nullif(sum(theoreticalpower),0),0)*100 powerlossrate," + "isnull(sum(daynhqfdl)/nullif(sum(theoreticalpower),0),0)*100 performancelossrate," + "isnull(sum(daynhgzssdl)/nullif(sum(theoreticalpower),0),0)*100 failurelossrate," + "isnull(sum(daynhwhssdl)/nullif(sum(theoreticalpower),0),0)*100 mainlossrate," + "avg(resettimelyrate) resettimelyrate,avg(statetransitionrate) statetransitionrate," + "avg(eliminationrate) eliminationrate,avg(comprehensiverate) comprehensiverate," + "avg(windpoweraccuracy) windpoweraccuracy,avg(agccurvefollowing) agccurvefollowing"); if (foreigntype.equals("风电")){ qw.like("foreignkeyid","_FDC"); }else { qw.like("foreignkeyid","_GDC"); } Date end = DateUtils.getYesterdayStart(); Date begin = end; if (timetype.equals("日")){ begin = end; }else if(timetype.equals("周")){ begin = DateUtils.getThisWeekMonday(end); }else if(timetype.equals("月")){ begin = DateUtils.getFirstAndLastDayOfMonth(end); }else if(timetype.equals("季")){ begin = DateUtils.getSeasonStartDate(end); }else if(timetype.equals("年")){ begin = DateUtils.getYearBegin(end); } begin = DateUtils.addMonths(begin,-1); end = DateUtils.addMonths(end,-1); qw.ge("recorddate",begin).le("recorddate",end); List hbList = benchmarkService.list(qw); if (StringUtils.isNotNull(hbList) && StringUtils.isNotEmpty(hbList)){ hbList.get(0).setForeignkeyid("环比"); resultList.add(hbList.get(0)); } } public void getTb(String timetype, String foreigntype,List resultList) throws Exception { QueryWrapper qw = new QueryWrapper<>(); qw.select("max(foreignkeyid) foreignkeyid," + "sum(theoreticalpower) theoreticalpower," + "sum(actualpower) actualpower," + "sum(daynhgzssdl) daynhgzssdl," + "sum(daynhwhssdl) daynhwhssdl," + "sum(daynhxdssdl) daynhxdssdl," + "sum(daynhqfdl) daynhqfdl," + "sum(daynhcfdl) daynhcfdl," + "CASE WHEN sum(theoreticalpower) = 0 THEN 0 ELSE sum(actualpower)/sum(theoreticalpower)*100 END AS windenergy," + "CASE WHEN sum(theoreticalpower) = 0 THEN 0 ELSE sum(daynhxdssdl)/sum(theoreticalpower)*100 END AS powerlossrate," + "CASE WHEN sum(theoreticalpower) = 0 THEN 0 ELSE sum(daynhqfdl)/sum(theoreticalpower)*100 END AS performancelossrate," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhgzssdl ) / SUM ( theoreticalpower ) * 100 END AS failurelossrate,"+ "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhwhssdl ) / SUM ( theoreticalpower ) * 100 END AS mainlossrate," + "avg(resettimelyrate) resettimelyrate," + "avg(statetransitionrate) statetransitionrate," + "avg(eliminationrate) eliminationrate," + "avg(comprehensiverate) comprehensiverate," + "avg(windpoweraccuracy) windpoweraccuracy," + "avg(agccurvefollowing) agccurvefollowing"); if (foreigntype.equals("风电")){ qw.like("foreignkeyid","_FDC"); }else { qw.like("foreignkeyid","_GDC"); } Date end = DateUtils.getYesterdayStart(); Date begin = end; if (timetype.equals("日")){ begin = end; }else if(timetype.equals("周")){ begin = DateUtils.getThisWeekMonday(end); }else if(timetype.equals("月")){ begin = DateUtils.getFirstAndLastDayOfMonth(end); }else if(timetype.equals("季")){ begin = DateUtils.getSeasonStartDate(end); }else if(timetype.equals("年")){ begin = DateUtils.getYearBegin(end); } begin = DateUtils.addYears(DateUtils.addMonths(begin,1),-1); end = DateUtils.addYears(DateUtils.addMonths(end,1),-1); qw.ge("recorddate",begin).le("recorddate",end); List tbList = benchmarkService.list(qw); if (StringUtils.isNotNull(tbList) && StringUtils.isNotEmpty(tbList)){ Benchmark benchmark = tbList.get(0); if(benchmark!=null){ benchmark.setForeignkeyid("同比"); resultList.add(benchmark); } } } public void getJz(String timetype, String foreigntype,List resultList) throws Exception { QueryWrapper qw = new QueryWrapper<>(); qw.select("max(foreignkeyid) foreignkeyid," + "sum(theoreticalpower) theoreticalpower," + "sum(actualpower) actualpower," + "sum(daynhgzssdl) daynhgzssdl," + "sum(daynhwhssdl) daynhwhssdl," + "sum(daynhxdssdl) daynhxdssdl," + "sum(daynhqfdl) daynhqfdl," + "sum(daynhcfdl) daynhcfdl," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( actualpower ) / SUM ( theoreticalpower ) * 100 END AS windenergy," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhxdssdl ) / SUM ( theoreticalpower ) * 100 END AS powerlossrate," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhqfdl ) / SUM ( theoreticalpower ) * 100 END AS performancelossrate," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhgzssdl ) / SUM ( theoreticalpower ) * 100 END AS failurelossrate," + "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhwhssdl ) / SUM ( theoreticalpower ) * 100 END AS mainlossrate," + "avg(resettimelyrate) resettimelyrate," + "avg(statetransitionrate) statetransitionrate," + "avg(eliminationrate) eliminationrate," + "avg(comprehensiverate) comprehensiverate," + "avg(windpoweraccuracy) windpoweraccuracy," + "avg(agccurvefollowing) agccurvefollowing"); if (foreigntype.equals("风电")){ qw.like("foreignkeyid","_FDC"); }else { qw.like("foreignkeyid","_GDC"); } Date end = DateUtils.getYesterdayStart(); Date begin = end; if (timetype.equals("日")){ begin = end; }else if(timetype.equals("周")){ begin = DateUtils.getThisWeekMonday(end); }else if(timetype.equals("月")){ begin = DateUtils.getFirstAndLastDayOfMonth(end); }else if(timetype.equals("季")){ begin = DateUtils.getSeasonStartDate(end); }else if(timetype.equals("年")){ begin = DateUtils.getYearBegin(end); } begin = DateUtils.addYears(begin,-5); end = DateUtils.addYears(end,-5); qw.ge("recorddate",begin).le("recorddate",end); List jzList = benchmarkService.list(qw); if (StringUtils.isNotNull(jzList) && StringUtils.isNotEmpty(jzList)){ jzList.get(0).setForeignkeyid("基准"); resultList.add(jzList.get(0)); } } /** * 对标首页上面部分 * @param timetype * @param foreigntype * @return */ public List dbmaintop(String timetype, String foreigntype) throws Exception { List resultList = new ArrayList<>(); getSj(timetype,foreigntype,resultList); getHb(timetype,foreigntype,resultList); getTb(timetype,foreigntype,resultList); getJz(timetype,foreigntype,resultList); return resultList; } }