|
@@ -0,0 +1,237 @@
|
|
|
+package org.jeecg.modules.homePageData.service.impl;
|
|
|
+
|
|
|
+import org.jeecg.common.util.oConvertUtils;
|
|
|
+import org.jeecg.modules.deviceLesm.entity.DeviceInformation;
|
|
|
+import org.jeecg.modules.deviceLesm.entity.DeviceRegion;
|
|
|
+import org.jeecg.modules.deviceLesm.service.IDeviceInformationService;
|
|
|
+import org.jeecg.modules.deviceLesm.service.IDeviceRegionService;
|
|
|
+import org.jeecg.modules.homePageData.service.IHomePageDataService;
|
|
|
+import org.jeecg.modules.systemConfig.peaksAndValleysTimeConfig.entity.PeaksAndValleysTimeConfig;
|
|
|
+import org.jeecg.modules.systemConfig.peaksAndValleysTimeConfig.service.IPeaksAndValleysTimeConfigService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
+
|
|
|
+
|
|
|
+@Service
|
|
|
+public class HomePageDataServiceImpl implements IHomePageDataService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IDeviceRegionService deviceRegionService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IPeaksAndValleysTimeConfigService peaksAndValleysTimeConfigService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IDeviceInformationService deviceInformationService;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, String>> regionPfvElectricity() {
|
|
|
+ List<DeviceRegion> list = deviceRegionService.list();
|
|
|
+ List<Map<String, String>> res = new ArrayList<>();
|
|
|
+ if(oConvertUtils.listIsNotEmpty(list)){
|
|
|
+ list.forEach(deviceRegion -> {
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ Double electricity = Math.random()*100+200;
|
|
|
+ map.put("name",deviceRegion.getRegionTitle());
|
|
|
+ map.put("peaks", String.format("%.2f",electricity));
|
|
|
+ map.put("flat", String.format("%.2f",electricity*(Math.random()*0.2+0.7)));
|
|
|
+ map.put("valleys", String.format("%.2f",electricity*(Math.random()*0.2+0.5)));
|
|
|
+ res.add(map);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> deviceOnline() {
|
|
|
+ List<DeviceRegion> list = deviceRegionService.list();
|
|
|
+ Map<String, Object> res = new HashMap<>();
|
|
|
+ List<Map<String, Object>> devices = new ArrayList<>();
|
|
|
+ AtomicReference<Integer> online = new AtomicReference<>(0);
|
|
|
+ AtomicReference<Integer> offline = new AtomicReference<>(0);
|
|
|
+ if(oConvertUtils.listIsNotEmpty(list)){
|
|
|
+ list.forEach(deviceRegion -> {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ int total = (int)(Math.random()*50)+50;
|
|
|
+ map.put("online", total-(int)(Math.random()*10));
|
|
|
+ map.put("offline", total-(int)map.get("online"));
|
|
|
+ map.put("name",deviceRegion.getRegionTitle());
|
|
|
+ online.updateAndGet(v -> v + (int)map.get("online"));
|
|
|
+ offline.updateAndGet(v -> v + (int)map.get("offline"));
|
|
|
+ devices.add(map);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ res.put("res",devices);
|
|
|
+ res.put("deviceTotal",online.get()+offline.get());
|
|
|
+ res.put("online",online.get()*100/(online.get()+offline.get())+"%");
|
|
|
+ res.put("offline",offline.get()*100/(online.get()+offline.get())+"%");
|
|
|
+ res.put("onlineSum",online.get());
|
|
|
+ res.put("offlineSum",offline.get());
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Long> fpvTime() {
|
|
|
+ Date current = null;
|
|
|
+ List<PeaksAndValleysTimeConfig> list = peaksAndValleysTimeConfigService.list();
|
|
|
+ Long peaks = 0l;
|
|
|
+ Long flat = 0l;
|
|
|
+ Long valleys = 0l;
|
|
|
+ try {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
|
|
|
+ String date = format.format(new Date());
|
|
|
+ current = format.parse(date);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ for (PeaksAndValleysTimeConfig config : list) {
|
|
|
+ if(config.getStartTime().after(current)){
|
|
|
+ if(config.getType().equals("0")){
|
|
|
+ peaks += config.getEndTime().getTime()-config.getStartTime().getTime();
|
|
|
+ }else if(config.getType().equals("1")){
|
|
|
+ flat += config.getEndTime().getTime()-config.getStartTime().getTime();
|
|
|
+ }else{
|
|
|
+ valleys += config.getEndTime().getTime()-config.getStartTime().getTime();
|
|
|
+ }
|
|
|
+ }else if(config.getStartTime().before(current)&&config.getEndTime().after(current)){
|
|
|
+ if(config.getType().equals("0")){
|
|
|
+ peaks += config.getEndTime().getTime()-current.getTime();
|
|
|
+ }else if(config.getType().equals("1")){
|
|
|
+ flat += config.getEndTime().getTime()-current.getTime();
|
|
|
+ }else{
|
|
|
+ valleys += config.getEndTime().getTime()-current.getTime();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Map<String, Long> res = new HashMap<>();
|
|
|
+ res.put("peaks",peaks/60000);
|
|
|
+ res.put("flat",flat/60000);
|
|
|
+ res.put("valleys",valleys/60000);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, String>> regionElectricityPercentage() {
|
|
|
+ List<DeviceRegion> list = deviceRegionService.list();
|
|
|
+ int per = 0;
|
|
|
+ Map<String,Integer> map = new HashMap<>();
|
|
|
+ while (per<100){
|
|
|
+ int index = (int)(Math.random()*list.size());
|
|
|
+ if(oConvertUtils.isNotEmpty(map.get(list.get(index).getRegionTitle()))){
|
|
|
+ map.put(list.get(index).getRegionTitle(),map.get(list.get(index).getRegionTitle())+2);
|
|
|
+ }else{
|
|
|
+ map.put(list.get(index).getRegionTitle(),2);
|
|
|
+ }
|
|
|
+ per += 2;
|
|
|
+ }
|
|
|
+ List<Map<String, String>> res = new ArrayList<>();
|
|
|
+ list.forEach(deviceRegion -> {
|
|
|
+ Map<String,String> mapo = new HashMap<>();
|
|
|
+ mapo.put("name",deviceRegion.getRegionTitle());
|
|
|
+ mapo.put("value",map.get(deviceRegion.getRegionTitle())+"%");
|
|
|
+ res.add(mapo);
|
|
|
+ });
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, List> fpvTimeElectricity() {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.set(Calendar.SECOND, 0);
|
|
|
+ calendar.set(Calendar.MINUTE, 0);
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ calendar.set(Calendar.MILLISECOND, 0);
|
|
|
+ Map<String, List> res = new HashMap<>();
|
|
|
+ List<Map<String,String>> peaks = new ArrayList<>();
|
|
|
+ List<Map<String,String>> flat = new ArrayList<>();
|
|
|
+ List<Map<String,String>> valleys = new ArrayList<>();
|
|
|
+ for (int i = 0; i < 24; i++) {
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY, i);
|
|
|
+ Double electricity = Math.random()*100+200;
|
|
|
+ peaks.add(getMap(calendar.getTime(),String.format("%.2f",electricity)));
|
|
|
+ flat.add(getMap(calendar.getTime(),String.format("%.2f",electricity*(Math.random()*0.2+0.7))));
|
|
|
+ valleys.add(getMap(calendar.getTime(),String.format("%.2f",electricity*(Math.random()*0.2+0.5))));
|
|
|
+ }
|
|
|
+ res.put("peaks",peaks);
|
|
|
+ res.put("flat",flat);
|
|
|
+ res.put("valleys",valleys);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, String>> realAlarm() {
|
|
|
+ List<DeviceInformation> deviceInformations = deviceInformationService.list();
|
|
|
+ List<Map<String, String>> res = new ArrayList<>();
|
|
|
+ if(oConvertUtils.listIsNotEmpty(deviceInformations)){
|
|
|
+ String[] alarms = new String[]{"耗电异常","停止运行","运行异常"};
|
|
|
+ String[] levels = new String[]{"高度","轻度","中度"};
|
|
|
+ long time = new Date().getTime();
|
|
|
+ for (int i = 0; i < 10; i++) {
|
|
|
+ time -= Math.random()*60*30+30*60;
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("HH:mm");
|
|
|
+ map.put("time",format.format(new Date(time)));
|
|
|
+ map.put("name",deviceInformations.get((int)(Math.random()*deviceInformations.size())).getDeviceTitle());
|
|
|
+ map.put("alarmInfo",alarms[(int)(Math.random()*3)]);
|
|
|
+ map.put("level",levels[(int)(Math.random()*3)]);
|
|
|
+ res.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, String>> regionElectricityStats() {
|
|
|
+ List<DeviceRegion> list = deviceRegionService.list();
|
|
|
+ List<Map<String, String>> res = new ArrayList<>();
|
|
|
+ if(oConvertUtils.listIsNotEmpty(list)){
|
|
|
+ list.forEach(deviceRegion -> {
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ map.put("name",deviceRegion.getRegionTitle());
|
|
|
+ map.put("value",String.format("%.2f",Math.random()*150+100));
|
|
|
+ res.add(map);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, String> fpvElectricityStats() {
|
|
|
+ Map<String,String> res = new HashMap<>();
|
|
|
+ res.put("peaks",String.format("%.2f",Math.random()*35+15));
|
|
|
+ res.put("flat",String.format("%.2f",Math.random()*35+15));
|
|
|
+ res.put("valleys",String.format("%.2f",Math.random()*35+15));
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Integer> deviceThresholdStats() {
|
|
|
+ int count = (int)deviceRegionService.count();
|
|
|
+ Map<String,Integer> res = new HashMap<>();
|
|
|
+ res.put("exceed",(int)(Math.random()*count));
|
|
|
+ res.put("noexceed",count-res.get("exceed"));
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<String> latestMsg() {
|
|
|
+ String[] alarms = new String[]{"设备故障","用电统计报表待审批","设备状态待检查"};
|
|
|
+ List<String> res = Arrays.asList(alarms);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private Map<String,String> getMap(Date date,String value){
|
|
|
+ Map<String,String> res = new HashMap<>();
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
|
|
|
+ res.put("time",simpleDateFormat.format(date));
|
|
|
+ res.put("value",value);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+}
|