123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package com.bizmatics.service.impl;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.bizmatics.common.core.util.StringUtils;
- import com.bizmatics.model.RtAnalogData;
- import com.bizmatics.model.Site;
- import com.bizmatics.model.UserSite;
- 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.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.concurrent.atomic.AtomicReference;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author ya
- * @since 2021-07-07
- */
- @Service
- public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMapper, RtAnalogData> implements RtAnalogDataService {
- @Autowired
- private UserSiteService userSiteService;
- @Autowired
- private SiteService siteService;
- @Override
- public RadCountVO selectCount() {
- Integer userId = SessionLocal.getUserId();
- List<UserSite> userSites = userSiteService.list(Wrappers.lambdaQuery(UserSite.class).eq(UserSite::getUserId, userId));
- AtomicReference<Integer> heavyLoad = new AtomicReference<>(0);
- AtomicReference<Integer> easyLoad = new AtomicReference<>(0);
- AtomicReference<Integer> 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<Map<String, Object>> getOne(Integer siteId) {
- List<Map<String, Object>> list = new ArrayList<>();
- Map<String, Object> radMap = baseMapper.getOneMap(siteId);
- Optional.ofNullable(radMap).ifPresent(rad -> {
- for (String name:rad.keySet()) {
- Map<String,Object> 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<Map<String, Object>> getDataReport(Integer siteId,Date startTime, Date endTime,String queryType) {
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- List<Map<String, Object>> list = new ArrayList<>();
- Map<String, Object> radMap = baseMapper.getDataReportMap(siteId,startTime,endTime);
- Object value = radMap.get("LoadLive");
- // String[] result = queryType.split(",");
- // for (int i = 0; i < result.length; i++) {
- // System.out.println(result[i]);
- // }
- for (String name : radMap.keySet()) {
- Map<String,Object> map = new HashMap<>();
- if (queryType.startsWith("bgbhg_183__Ia")){
- map.put("name",name);
- }
- map.put("value",addUnit(name,radMap.get(name).toString()));
- list.add(map);
- }
- // Map<String,Object> map = new HashMap<>();
- // map.put("LoadLive",value);
- // list.add(map);
- // Map<String, Object> LoopStatusList = baseMapper.getLoopStatusListMap(siteId);
- //// Iterator<String> it = radMap.keySet().iterator();
- // int duration=0;
- return list;
- }
- }
|