package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.whyc.dto.Real.PwrHisRealAcInDto; import com.whyc.dto.Real.PwrHisRealDcoutInDto; import com.whyc.dto.RealDataStatic.ResRealDataAc; import com.whyc.dto.RealDataStatic.SticRealDataAc; import com.whyc.mapper.PwrdevAcdcdataMapper; import com.whyc.pojo.db_data_history.PwrdevHistorydataId; import com.whyc.pojo.db_ram_db.BattRtstate; import com.whyc.pojo.db_ram_db.PwrdevAcdcdata; import com.whyc.util.ActionUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.lang.reflect.Field; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class PwrdevAcdcdataService { @Autowired(required = false) private PwrdevAcdcdataMapper mapper; //实时获取电源信息 public PwrdevAcdcdata getPwrRealInfo(Integer powerId) { QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("power_id",powerId); wrapper.last("limit 1"); PwrdevAcdcdata pwr=mapper.selectOne(wrapper); return pwr; } //电源心跳数据获取交流输入实时数据 public PwrHisRealAcInDto getPwrRealAcIn(Integer powerId) { PwrHisRealAcInDto acinDto=mapper.getPwrRealAcIn(powerId); return acinDto; } //电源心跳数据获取电源直流输出数据实时数据 public PwrHisRealDcoutInDto getPwrRealDcOut(Integer powerId) { PwrHisRealDcoutInDto dcoutDto=mapper.getPwrRealDcOut(powerId); return dcoutDto; } //实时数据统计曲线-交流单元 public ResRealDataAc getSticRealDataAc(SticRealDataAc realDataAc) throws NoSuchFieldException, IllegalAccessException { Integer powerId=realDataAc.getPowerId(); Map> propertyInfo=realDataAc.getPropertyInfo(); QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("power_id",powerId); wrapper.last("limit 1"); PwrdevAcdcdata pwr=mapper.selectOne(wrapper); ResRealDataAc data=new ResRealDataAc(); if(pwr!=null){ data.setRecordDatetime(pwr.getRecordDatetime()); Map>dataMap=new HashMap<>(); for (Map.Entry> entry : propertyInfo.entrySet()) { String key = entry.getKey(); List valueList = entry.getValue(); Map propertyMap=new HashMap<>(); for (String value : valueList) { String propertyName = ActionUtil.toCamelCase(value); Field field = PwrdevAcdcdata.class.getDeclaredField(propertyName); field.setAccessible(true); // 如果字段是私有的,需要设置为可访问 Float propertyValue = (Float) field.get(pwr); propertyMap.put(value,propertyValue); } dataMap.put(key,propertyMap); } data.setPropertyInfo(dataMap); } return data; } }