RtAnalogDataServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package com.bizmatics.service.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  3. import com.bizmatics.common.core.util.StringUtils;
  4. import com.bizmatics.model.RtAnalogData;
  5. import com.bizmatics.model.Site;
  6. import com.bizmatics.model.UserSite;
  7. import com.bizmatics.persistence.mapper.RtAnalogDataMapper;
  8. import com.bizmatics.service.RtAnalogDataService;
  9. import com.bizmatics.common.mvc.base.AbstractCrudService;
  10. import com.bizmatics.service.SiteService;
  11. import com.bizmatics.service.UserSiteService;
  12. import com.bizmatics.service.util.Arith;
  13. import com.bizmatics.service.util.SessionLocal;
  14. import com.bizmatics.service.vo.RadCountVO;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.math.BigDecimal;
  18. import java.text.SimpleDateFormat;
  19. import java.util.*;
  20. import java.util.concurrent.atomic.AtomicReference;
  21. /**
  22. * <p>
  23. * 服务实现类
  24. * </p>
  25. *
  26. * @author ya
  27. * @since 2021-07-07
  28. */
  29. @Service
  30. public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMapper, RtAnalogData> implements RtAnalogDataService {
  31. @Autowired
  32. private UserSiteService userSiteService;
  33. @Autowired
  34. private SiteService siteService;
  35. @Override
  36. public RadCountVO selectCount() {
  37. Integer userId = SessionLocal.getUserId();
  38. List<UserSite> userSites = userSiteService.list(Wrappers.lambdaQuery(UserSite.class).eq(UserSite::getUserId, userId));
  39. AtomicReference<Integer> heavyLoad = new AtomicReference<>(0);
  40. AtomicReference<Integer> easyLoad = new AtomicReference<>(0);
  41. AtomicReference<Integer> norMalLoad = new AtomicReference<>(0);
  42. userSites.forEach(userSite -> {
  43. Site site = siteService.getOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, userSite.getId()));
  44. Double aDouble = baseMapper.selectTotalLoad(userId, site.getId());
  45. String installedCapacity = site.getInstalledCapacity();
  46. double installedCapacityDouble = 0.00;
  47. if (StringUtils.isNotBlank(installedCapacity)){
  48. installedCapacityDouble = Double.parseDouble(installedCapacity);
  49. if (installedCapacityDouble > 0){
  50. Arith.div(aDouble,installedCapacityDouble);
  51. }
  52. }
  53. if (installedCapacityDouble < 0.4){
  54. easyLoad.getAndSet(easyLoad.get() + 1);
  55. }else if (installedCapacityDouble >= 0.4 && installedCapacityDouble <= 0.8){
  56. norMalLoad.getAndSet(norMalLoad.get() + 1);
  57. }else {
  58. heavyLoad.getAndSet(heavyLoad.get() + 1);
  59. }
  60. });
  61. int count = userSites.size();
  62. RadCountVO radCountVO = new RadCountVO();
  63. radCountVO.setHeavyLoad(Arith.div(heavyLoad.get(),count));
  64. radCountVO.setEasyLoad(Arith.div(easyLoad.get(),count));
  65. radCountVO.setNorMalLoad(Arith.div(norMalLoad.get(),count));
  66. return radCountVO;
  67. }
  68. @Override
  69. public List<Map<String, Object>> getOne(Integer siteId) {
  70. List<Map<String, Object>> list = new ArrayList<>();
  71. Map<String, Object> radMap = baseMapper.getOneMap(siteId);
  72. Optional.ofNullable(radMap).ifPresent(rad -> {
  73. for (String name:rad.keySet()) {
  74. Map<String,Object> map = new HashMap<>();
  75. map.put("name",name);
  76. map.put("value",rad.get(name));
  77. list.add(map);
  78. }
  79. });
  80. return list;
  81. }
  82. @Override
  83. public Double getEpLoad(Integer siteId) {
  84. return baseMapper.selectTotalLoad(SessionLocal.getUserId(), siteId);
  85. }
  86. /**
  87. * 添加数据单位
  88. * @return
  89. */
  90. public String addUnit(String name,String value){
  91. if (name.endsWith("电压")){
  92. return value+"V";
  93. }else if (name.endsWith("电流")){
  94. return value+"A";
  95. }else if (name.endsWith("温度")){
  96. return value+"C";
  97. }else if (name.endsWith("频率")){
  98. return value+"Hz";
  99. }else if (name.endsWith("有功功率") || name.endsWith("需量")){
  100. return value+"KW";
  101. }else if (name.endsWith("无功功率")){
  102. return value+"KVar";
  103. }else if (name.endsWith("不平衡度") || name.endsWith("电压畸变率")){
  104. return value+"%";
  105. }else if (name.endsWith("次数")){
  106. return value+"次";
  107. }else if (name.endsWith("电度") || name.endsWith("有功")){
  108. return value+"KWh";
  109. }
  110. return value;
  111. }
  112. @Override
  113. public List<Map<String, Object>> getDataReport(Integer siteId,Date startTime, Date endTime,String queryType) {
  114. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  115. List<Map<String, Object>> list = new ArrayList<>();
  116. Map<String, Object> radMap = baseMapper.getDataReportMap(siteId,startTime,endTime);
  117. Object value = radMap.get("LoadLive");
  118. // String[] result = queryType.split(",");
  119. // for (int i = 0; i < result.length; i++) {
  120. // System.out.println(result[i]);
  121. // }
  122. for (String name : radMap.keySet()) {
  123. Map<String,Object> map = new HashMap<>();
  124. if (queryType.startsWith("bgbhg_183__Ia")){
  125. map.put("name",name);
  126. }
  127. map.put("value",addUnit(name,radMap.get(name).toString()));
  128. list.add(map);
  129. }
  130. // Map<String,Object> map = new HashMap<>();
  131. // map.put("LoadLive",value);
  132. // list.add(map);
  133. // Map<String, Object> LoopStatusList = baseMapper.getLoopStatusListMap(siteId);
  134. //// Iterator<String> it = radMap.keySet().iterator();
  135. // int duration=0;
  136. return list;
  137. }
  138. }