package com.bizmatics.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.bizmatics.common.core.util.DateUtils; import com.bizmatics.common.core.util.StringUtils; import com.bizmatics.model.*; import com.bizmatics.persistence.mapper.RtAnalogDataMapper; import com.bizmatics.service.RtAnalogDataService; import com.bizmatics.common.mvc.base.AbstractCrudService; import com.bizmatics.service.SiteService; import com.bizmatics.service.UserSiteService; import com.bizmatics.service.util.Arith; import com.bizmatics.service.util.SessionLocal; import com.bizmatics.service.vo.RadCountVO; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.configurationprocessor.json.JSONArray; import org.springframework.stereotype.Service; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; /** *

* 服务实现类 *

* * @author ya * @since 2021-07-07 */ @Service public class RtAnalogDataServiceImpl extends AbstractCrudService implements RtAnalogDataService { @Autowired private UserSiteService userSiteService; @Autowired private SiteService siteService; @Override public RadCountVO selectCount() { Integer userId = SessionLocal.getUserId(); List userSites = userSiteService.list(Wrappers.lambdaQuery(UserSite.class).eq(UserSite::getUserId, userId)); AtomicReference heavyLoad = new AtomicReference<>(0); AtomicReference easyLoad = new AtomicReference<>(0); AtomicReference norMalLoad = new AtomicReference<>(0); userSites.forEach(userSite -> { Site site = siteService.getOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, userSite.getId())); Double aDouble = baseMapper.selectTotalLoad(userId, site.getId()); String installedCapacity = site.getInstalledCapacity(); double installedCapacityDouble = 0.00; if (StringUtils.isNotBlank(installedCapacity)){ installedCapacityDouble = Double.parseDouble(installedCapacity); if (installedCapacityDouble > 0){ Arith.div(aDouble,installedCapacityDouble); } } if (installedCapacityDouble < 0.4){ easyLoad.getAndSet(easyLoad.get() + 1); }else if (installedCapacityDouble >= 0.4 && installedCapacityDouble <= 0.8){ norMalLoad.getAndSet(norMalLoad.get() + 1); }else { heavyLoad.getAndSet(heavyLoad.get() + 1); } }); int count = userSites.size(); RadCountVO radCountVO = new RadCountVO(); radCountVO.setHeavyLoad(Arith.div(heavyLoad.get(),count)); radCountVO.setEasyLoad(Arith.div(easyLoad.get(),count)); radCountVO.setNorMalLoad(Arith.div(norMalLoad.get(),count)); return radCountVO; } @Override public List> getOne(Integer siteId) { List> list = new ArrayList<>(); Map radMap = baseMapper.getOneMap(siteId); Optional.ofNullable(radMap).ifPresent(rad -> { for (String name:rad.keySet()) { Map map = new HashMap<>(); map.put("name",name); map.put("value",rad.get(name)); list.add(map); } }); return list; } @Override public Double getEpLoad(Integer siteId) { return baseMapper.selectTotalLoad(SessionLocal.getUserId(), siteId); } /** * 添加数据单位 * @return */ public String addUnit(String name,String value){ if (name.endsWith("电压")){ return value+"V"; }else if (name.endsWith("电流")){ return value+"A"; }else if (name.endsWith("温度")){ return value+"C"; }else if (name.endsWith("频率")){ return value+"Hz"; }else if (name.endsWith("有功功率") || name.endsWith("需量")){ return value+"KW"; }else if (name.endsWith("无功功率")){ return value+"KVar"; }else if (name.endsWith("不平衡度") || name.endsWith("电压畸变率")){ return value+"%"; }else if (name.endsWith("次数")){ return value+"次"; }else if (name.endsWith("电度") || name.endsWith("有功")){ return value+"KWh"; } return value; } @Override public List> getDataReport(Integer siteId,Date startTime, Date endTime,String queryType) { List> list = new ArrayList<>(); List rtAnalogDataList = null; long diff = endTime.getTime() - startTime.getTime(); long days = diff / (1000 * 60 * 60); if (days<=24){ rtAnalogDataList = baseMapper.getDataReportMap(siteId, startTime, endTime); }else if (days<360&&days>24){ List device_list = baseMapper.getDeviceListMap(siteId); rtAnalogDataList = baseMapper.getDataReportMMap(device_list,startTime, endTime); }else if (days>=360){ List device_list = baseMapper.getDeviceListMap(siteId); rtAnalogDataList = baseMapper.getDataReportDMap(device_list,startTime, endTime); } String[] result = queryType.split(","); if (rtAnalogDataList.size()>0){ rtAnalogDataList.forEach(rtAnalogData -> { Map map = new HashMap<>(); if (ArrayUtils.contains(result,"I")){ map.put("Ia",rtAnalogData.getIa()); map.put("Ib",rtAnalogData.getIb()); map.put("Ic",rtAnalogData.getIc()); if (ArrayUtils.contains(result,"P")){ map.put("P",rtAnalogData.getP()); map.put("Q",rtAnalogData.getQ()); map.put("Pa",rtAnalogData.getPa()); map.put("Pb",rtAnalogData.getPb()); map.put("Pc",rtAnalogData.getPc()); map.put("Qa",rtAnalogData.getQa()); map.put("Qb",rtAnalogData.getQb()); map.put("Qc",rtAnalogData.getQc()); map.put("Demand",rtAnalogData.getDemand()); if (ArrayUtils.contains(result,"KWh")){ map.put("Epn",rtAnalogData.getEpn()); map.put("Epp",rtAnalogData.getEpp()); map.put("Eqn",rtAnalogData.getEqn()); map.put("Eqp",rtAnalogData.getEqp()); if (ArrayUtils.contains(result,"V")){ map.put("Ua",rtAnalogData.getUa()); map.put("Ub",rtAnalogData.getUb()); map.put("Uc",rtAnalogData.getUc()); map.put("Uab",rtAnalogData.getUab()); map.put("Ubc",rtAnalogData.getUbc()); map.put("Uca",rtAnalogData.getUca()); map.put("Ul",rtAnalogData.getUl()); if (ArrayUtils.contains(result,"C")){ map.put("T1",rtAnalogData.getT1()); map.put("T2",rtAnalogData.getT2()); map.put("T3",rtAnalogData.getT3()); map.put("T4",rtAnalogData.getT4()); map.put("DeviceTemp",rtAnalogData.getDeviceTemp()); if (ArrayUtils.contains(result,"HZ")){ map.put("F",rtAnalogData.getF()); if (ArrayUtils.contains(result,"PS")){ map.put("COSa",rtAnalogData.getCOSa()); map.put("COSb",rtAnalogData.getCOSb()); map.put("COSc",rtAnalogData.getCOSc()); map.put("COS",rtAnalogData.getCos()); if (ArrayUtils.contains(result,"RMS")){ map.put("IHa",rtAnalogData.getIHa()); map.put("IHb",rtAnalogData.getIHb()); map.put("IHc",rtAnalogData.getIHc()); if (ArrayUtils.contains(result,"DDB")){ map.put("SignalIntensity",rtAnalogData.getSignalIntensity()); if (ArrayUtils.contains(result,"VT")){ map.put("Upt",rtAnalogData.getUpt()); map.put("Udt",rtAnalogData.getUdt()); map.put("Ust",rtAnalogData.getUst()); } } } } } } } } } } if (days<=24){ map.put("dataTime",DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm")); }else if (days<360&&days>24){ map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm")); }else if (days>=360){ map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(),DateUtils.PARSE_PATTERNS[8])); } list.add(map); }); } return list; } @Override public List> getHistoricalCurve(Integer siteId,Date startTime, Date endTime,String queryType) { List> list = new ArrayList<>(); List> listdataTime = new ArrayList<>(); List> list1 = new ArrayList<>(); List> list2 = new ArrayList<>(); List> list3 = new ArrayList<>(); List> list4 = new ArrayList<>(); List> list5 = new ArrayList<>(); List> list6 = new ArrayList<>(); List> list7 = new ArrayList<>(); List> list8 = new ArrayList<>(); List> list9 = new ArrayList<>(); List rtAnalogDataList = null; long diff = endTime.getTime() - startTime.getTime(); long days = diff / (1000 * 60 * 60); if (days<=24){ rtAnalogDataList = baseMapper.getDataReportMap(siteId, startTime, endTime); }else if (days<360&&days>24){ List device_list = baseMapper.getDeviceListMap(siteId); rtAnalogDataList = baseMapper.getDataReportMMap(device_list,startTime, endTime); }else if (days>=360){ List device_list = baseMapper.getDeviceListMap(siteId); rtAnalogDataList = baseMapper.getDataReportDMap(device_list,startTime, endTime); } String[] result = queryType.split(","); if (rtAnalogDataList.size()>0){ Map mapIe1 = new HashMap<>(); Map mapIe2 = new HashMap<>(); Map mapIe3 = new HashMap<>(); Map mapIe4 = new HashMap<>(); Map mapIe5 = new HashMap<>(); Map mapIe6 = new HashMap<>(); Map mapIe7 = new HashMap<>(); Map mapIe8 = new HashMap<>(); Map mapIe9 = new HashMap<>(); for (int i = 0; i < rtAnalogDataList.size(); i++) { Map map = new HashMap<>(); Map map1 = new HashMap<>(); Map map2 = new HashMap<>(); Map map3 = new HashMap<>(); Map map4 = new HashMap<>(); Map map5 = new HashMap<>(); Map map6 = new HashMap<>(); Map map7 = new HashMap<>(); Map map8 = new HashMap<>(); Map map9 = new HashMap<>(); HtAnalogData rtAnalogData = (HtAnalogData)rtAnalogDataList.get(i); if (days<=24){ map.put("dataTime",DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm")); }else if (days<360&&days>24){ map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm")); }else if (days>=360){ map.put("dataTime",DateUtils.format(rtAnalogData.getDataTime(),DateUtils.PARSE_PATTERNS[8])); } if (ArrayUtils.contains(result,"I")){ map1.put("Ia",rtAnalogData.getIa()); map2.put("Ib",rtAnalogData.getIb()); map3.put("Ic",rtAnalogData.getIc()); }else if (ArrayUtils.contains(result,"P")){ map1.put("P",rtAnalogData.getP()); map2.put("Q",rtAnalogData.getQ()); map3.put("Pa",rtAnalogData.getPa()); map4.put("Pb",rtAnalogData.getPb()); map5.put("Pc",rtAnalogData.getPc()); map6.put("Qa",rtAnalogData.getQa()); map7.put("Qb",rtAnalogData.getQb()); map8.put("Qc",rtAnalogData.getQc()); map9.put("Demand",rtAnalogData.getDemand()); }else if (ArrayUtils.contains(result,"KWh")){ map1.put("Epn",rtAnalogData.getEpn()); map2.put("Epp",rtAnalogData.getEpp()); map3.put("Eqn",rtAnalogData.getEqn()); map4.put("Eqp",rtAnalogData.getEqp()); }else if (ArrayUtils.contains(result,"V")){ map1.put("Ua",rtAnalogData.getUa()); map2.put("Ub",rtAnalogData.getUb()); map3.put("Uc",rtAnalogData.getUc()); map4.put("Uab",rtAnalogData.getUab()); map5.put("Ubc",rtAnalogData.getUbc()); map6.put("Uca",rtAnalogData.getUca()); map7.put("Ul",rtAnalogData.getUl()); }else if (ArrayUtils.contains(result,"C")){ map1.put("T1",rtAnalogData.getT1()); map2.put("T2",rtAnalogData.getT2()); map3.put("T3",rtAnalogData.getT3()); map4.put("T4",rtAnalogData.getT4()); map5.put("DeviceTemp",rtAnalogData.getDeviceTemp()); }else if (ArrayUtils.contains(result,"HZ")){ map1.put("F",rtAnalogData.getF()); }else if (ArrayUtils.contains(result,"PS")){ map1.put("COSa",rtAnalogData.getCOSa()); map2.put("COSb",rtAnalogData.getCOSb()); map3.put("COSc",rtAnalogData.getCOSc()); map4.put("COS",rtAnalogData.getCos()); }else if (ArrayUtils.contains(result,"RMS")){ map1.put("IHa",rtAnalogData.getIHa()); map2.put("IHb",rtAnalogData.getIHb()); map3.put("IHc",rtAnalogData.getIHc()); }else if (ArrayUtils.contains(result,"DDB")){ map1.put("SignalIntensity",rtAnalogData.getSignalIntensity()); }else if (ArrayUtils.contains(result,"VT")){ map1.put("Upt",rtAnalogData.getUpt()); map2.put("Udt",rtAnalogData.getUdt()); map3.put("Ust",rtAnalogData.getUst()); } listdataTime.add(map); list1.add(map1); list2.add(map2); list3.add(map3); list4.add(map4); list5.add(map5); list6.add(map6); list7.add(map7); list8.add(map8); list9.add(map9); } Object arre1[][]=new Object[listdataTime.size()][2]; Object arre2[][]=new Object[listdataTime.size()][2]; Object arre3[][]=new Object[listdataTime.size()][2]; Object arre4[][]=new Object[listdataTime.size()][2]; Object arre5[][]=new Object[listdataTime.size()][2]; Object arre6[][]=new Object[listdataTime.size()][2]; Object arre7[][]=new Object[listdataTime.size()][2]; Object arre8[][]=new Object[listdataTime.size()][2]; Object arre9[][]=new Object[listdataTime.size()][2]; if (ArrayUtils.contains(result,"I")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("Ia"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("Ib"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("Ic"); } mapIe1.put("name","A相电流"); mapIe1.put("arr",arre1); mapIe2.put("name","B相电流"); mapIe2.put("arr",arre2); mapIe3.put("name","C相电流"); mapIe3.put("arr",arre3); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); }else if (ArrayUtils.contains(result,"P")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("P"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("Q"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("Pa"); arre4[i][1]=listdataTime.get(i).get("dataTime"); arre4[i][0]=list4.get(i).get("Pb"); arre5[i][1]=listdataTime.get(i).get("dataTime"); arre5[i][0]=list5.get(i).get("Pc"); arre6[i][1]=listdataTime.get(i).get("dataTime"); arre6[i][0]=list6.get(i).get("Qa"); arre7[i][1]=listdataTime.get(i).get("dataTime"); arre7[i][0]=list7.get(i).get("Qb"); arre8[i][1]=listdataTime.get(i).get("dataTime"); arre8[i][0]=list8.get(i).get("Qc"); arre9[i][1]=listdataTime.get(i).get("dataTime"); arre9[i][0]=list9.get(i).get("Demand"); } mapIe1.put("name","总有功功率"); mapIe1.put("arr",arre1); mapIe2.put("name","总无功功率"); mapIe2.put("arr",arre2); mapIe3.put("name","A相有功功率"); mapIe3.put("arr",arre3); mapIe4.put("name","B相有功功率"); mapIe4.put("arr",arre4); mapIe5.put("name","C相有功功率"); mapIe5.put("arr",arre5); mapIe6.put("name","A相无功功率"); mapIe6.put("arr",arre6); mapIe7.put("name","B相无功功率"); mapIe7.put("arr",arre7); mapIe8.put("name","C相无功功率"); mapIe8.put("arr",arre8); mapIe9.put("name","实时需量"); mapIe9.put("arr",arre9); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); list.add(mapIe4); list.add(mapIe5); list.add(mapIe6); list.add(mapIe7); list.add(mapIe8); list.add(mapIe9); }else if (ArrayUtils.contains(result,"KWh")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("Epn"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("Epp"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("Eqn"); arre4[i][1]=listdataTime.get(i).get("dataTime"); arre4[i][0]=list4.get(i).get("Eqp"); } mapIe1.put("name","负有功电度"); mapIe1.put("arr",arre1); mapIe2.put("name","正有功电度"); mapIe2.put("arr",arre2); mapIe3.put("name","负无功电度"); mapIe3.put("arr",arre3); mapIe4.put("name","正无功电度"); mapIe4.put("arr",arre4); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); list.add(mapIe4); }else if (ArrayUtils.contains(result,"V")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("Ua"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("Ub"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("Uc"); arre4[i][1]=listdataTime.get(i).get("dataTime"); arre4[i][0]=list4.get(i).get("Uab"); arre5[i][1]=listdataTime.get(i).get("dataTime"); arre5[i][0]=list5.get(i).get("Ubc"); arre6[i][1]=listdataTime.get(i).get("dataTime"); arre6[i][0]=list6.get(i).get("Uca"); arre7[i][1]=listdataTime.get(i).get("dataTime"); arre7[i][0]=list7.get(i).get("Ul"); } mapIe1.put("name","A相电压"); mapIe1.put("arr",arre1); mapIe2.put("name","B相电压"); mapIe2.put("arr",arre2); mapIe3.put("name","C相电压"); mapIe3.put("arr",arre3); mapIe4.put("name","AB线电压"); mapIe4.put("arr",arre4); mapIe5.put("name","BC线电压"); mapIe5.put("arr",arre5); mapIe6.put("name","CA线电压"); mapIe6.put("arr",arre6); mapIe7.put("name","回路电压"); mapIe7.put("arr",arre7); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); list.add(mapIe4); list.add(mapIe5); list.add(mapIe6); list.add(mapIe7); }else if (ArrayUtils.contains(result,"C")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("T1"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("T2"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("T3"); arre4[i][1]=listdataTime.get(i).get("dataTime"); arre4[i][0]=list4.get(i).get("T4"); arre5[i][1]=listdataTime.get(i).get("dataTime"); arre5[i][0]=list5.get(i).get("DeviceTemp"); } mapIe1.put("name","外接温度1"); mapIe1.put("arr",arre1); mapIe2.put("name","外接温度1"); mapIe2.put("arr",arre2); mapIe3.put("name","外接温度1"); mapIe3.put("arr",arre3); mapIe4.put("name","外接温度1"); mapIe4.put("arr",arre4); mapIe5.put("name","环境温度"); mapIe5.put("arr",arre5); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); list.add(mapIe4); list.add(mapIe5); }else if (ArrayUtils.contains(result,"HZ")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("F"); } mapIe1.put("name","频率"); mapIe1.put("arr",arre1); list.add(mapIe1); }else if (ArrayUtils.contains(result,"PS")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("COSa"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("COSb"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("COSc"); arre4[i][1]=listdataTime.get(i).get("dataTime"); arre4[i][0]=list4.get(i).get("COS"); } mapIe1.put("name","A相功率因数"); mapIe1.put("arr",arre1); mapIe2.put("name","B相功率因数"); mapIe2.put("arr",arre2); mapIe3.put("name","C相功率因数"); mapIe3.put("arr",arre3); mapIe4.put("name","功率因数"); mapIe4.put("arr",arre4); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); list.add(mapIe4); }else if (ArrayUtils.contains(result,"RMS")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("IHa"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("IHb"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("IHc"); } mapIe1.put("name","Ia总谐波电流"); mapIe1.put("arr",arre1); mapIe2.put("name","Ib总谐波电流"); mapIe2.put("arr",arre2); mapIe3.put("name","Ic总谐波电流"); mapIe3.put("arr",arre3); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); }else if (ArrayUtils.contains(result,"DDB")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("SignalIntensity"); } mapIe1.put("name","设备信号强度"); mapIe1.put("arr",arre1); list.add(mapIe1); }else if (ArrayUtils.contains(result,"VT")){ for (int i = 0; i < listdataTime.size(); i++) { arre1[i][1]=listdataTime.get(i).get("dataTime"); arre1[i][0]=list1.get(i).get("Upt"); arre2[i][1]=listdataTime.get(i).get("dataTime"); arre2[i][0]=list2.get(i).get("Udt"); arre3[i][1]=listdataTime.get(i).get("dataTime"); arre3[i][0]=list3.get(i).get("Ust"); } mapIe1.put("name","电压暂升次数"); mapIe1.put("arr",arre1); mapIe2.put("name","电压暂降次数"); mapIe2.put("arr",arre2); mapIe3.put("name","电压中断次数"); mapIe3.put("arr",arre3); list.add(mapIe1); list.add(mapIe2); list.add(mapIe3); } } return list; } }