package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.whyc.constant.BattStateEnum; import com.whyc.constant.DevStateEnum; import com.whyc.dto.Real.PwrHisRealDcoutInDto; import com.whyc.dto.Real.RealDateDTO; import com.whyc.dto.RealDataStatic.ResRealDataAc; import com.whyc.dto.RealDataStatic.SticRealDataAc; import com.whyc.dto.Response; import com.whyc.mapper.BattRtstateMapper; 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 BattRtstateService { @Autowired(required = false) private BattRtstateMapper mapper; //实时获取电池组信息 public BattRtstate getBattRealInfo(Integer battgroupId) { QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("battgroup_id",battgroupId); wrapper.last("limit 1"); BattRtstate batt=mapper.selectOne(wrapper); return batt; } //获取电池组工作状态类型(下拉) public Response getBattState() { Map map= BattStateEnum.getOpInfo(); return new Response().setII(1,true,map,"获取电池组工作状态类型(下拉)"); } //实时推送电池核容设备心跳数据 public RealDateDTO getBattRealHr(Integer battgroupId) { RealDateDTO hrDto=mapper.getBattRealHr(battgroupId); return hrDto; } //实时数据统计曲线-核容设备 public ResRealDataAc getSticRealDataAc(SticRealDataAc realDataAc) throws NoSuchFieldException, IllegalAccessException { Integer battgroupId=realDataAc.getBattgroupId(); Map> propertyInfo=realDataAc.getPropertyInfo(); QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("battgroup_id",battgroupId); wrapper.last("limit 1"); BattRtstate batt=mapper.selectOne(wrapper); ResRealDataAc data=new ResRealDataAc(); if(batt!=null){ data.setRecordDatetime(batt.getRecDatetime()); 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 = BattRtstate.class.getDeclaredField(propertyName); field.setAccessible(true); // 如果字段是私有的,需要设置为可访问 Float propertyValue = (Float) field.get(batt); propertyMap.put(value,propertyValue); } dataMap.put(key,propertyMap); } data.setPropertyInfo(dataMap); } return data; } }