whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
src/main/java/com/whyc/service/InterfaceService.java
@@ -1,19 +1,33 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.AlarmDaoFactory;
import com.whyc.dto.BattCapFactory;
import com.whyc.dto.InterfaceParam;
import com.whyc.dto.Response;
import com.whyc.dto.result.AlarmRes;
import com.whyc.mapper.*;
import com.whyc.pojo.BattalarmData;
import com.whyc.pojo.PwrdevAlarm;
import com.whyc.pojo.*;
import com.whyc.util.ActionUtil;
import com.whyc.util.MessageUtils;
import com.whyc.util.RSAUtil;
import com.whyc.util.SubTablePageInfoUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import javax.servlet.ServletContext;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.text.ParseException;
import java.util.*;
@Slf4j
@Service
@@ -28,63 +42,667 @@
    private PwrdevAlarmMapper pwrdevAlarmMapper;
    @Resource
    private DevalarmDataMapper devalarmDataMapper;
    @Resource
    private BattalarmDataHistoryMapper battalarmDataHistoryMapper;
    @Resource
    private PwrdevAlarmHistoryMapper pwrdevAlarmHistoryMapper;
    @Resource
    private DevalarmDataHistoryMapper devalarmDataHistoryMapper;
    @Resource
    private PwrdevAcdcdataMapper pwrdevAcdcdataMapper;
    @Resource
    private Fbs9100StateMapper fbs9100StateMapper;
    @Resource
    private BattRtdataMapper battRtdataMapper;
    @Resource
    private BattRtstateMapper battRtstateMapper;
    public Response getBattinf(int pageNum,int pageSize){
        //分页信息
        PageHelper.startPage(pageNum,pageSize);
        List list = battInfMapper.getBattInf();
        PageInfo pageInfo=new PageInfo(list);
        return new Response().set(1,pageInfo);
    @Autowired(required = false)
    private InterfaceMapper interfaceMapper;
    @Autowired(required = false)
    private BattMapInformationMapper mapMapper;
    @Autowired
    private Fbs9100SetparamService fbs9100SetparamService;
    @Autowired(required = false)
    private Fbs9100SetparamMapper fbs9100SetparamMapper;
    @Autowired
    private SubTablePageInfoUtils subTablePageInfoUtils;
    @Autowired
    private BattRealdataService battRealdataService;
    @Autowired
    private BattInfService battInfService;
    @Autowired
    private BattEnduranceService battEnduranceService;
    public Response getBattinf(int pageNum, int pageSize, String interfaceNumber) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            //分页信息
            PageHelper.startPage(pageNum, pageSize);
            List list = battInfMapper.selectList((Wrapper<Battinf>) ActionUtil.objeNull);
            PageInfo pageInfo = new PageInfo(list);
            return new Response().set(1, pageInfo);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    public Response getPowerInf(int pageNum,int pageSize){
        //分页信息
        PageHelper.startPage(pageNum,pageSize);
        List list = powerInfMapper.selectList(null);
        PageInfo pageInfo=new PageInfo(list);
        return new Response().set(1,pageInfo);
    public Response getPowerInf(int pageNum, int pageSize, String interfaceNumber) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            //分页信息
            PageHelper.startPage(pageNum, pageSize);
            List list = powerInfMapper.selectList((Wrapper<PowerInf>) ActionUtil.objeNull);
            PageInfo pageInfo = new PageInfo(list);
            return new Response().set(1, pageInfo);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    //电池告警实时查询-websocket使用
    @Transactional
    public Response getBattAlarm(int pageNum,int pageSize) {
        //分页信息
        PageHelper.startPage(pageNum,pageSize);
        List<AlarmRes> list=battalarmDataMapper.getBattAlarm();
        for (AlarmRes a:list) {
            List<BattalarmData> l=a.getAdatas();
            for (BattalarmData adata:l) {
                adata.setAlmSignalIdName(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()));
                adata.setAlmLevelName(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()));
    public Response getBattAlarm(List battgroupIds, String interfaceNumber, String lang) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
//        //分页信息
//        PageHelper.startPage(pageNum,pageSize);
            List<AlarmRes> list = battalarmDataMapper.getBattAlarm(battgroupIds);
            for (AlarmRes a : list) {
                List<BattalarmData> l = a.getAdatas();
                for (BattalarmData adata : l) {
                    adata.setAlmSignalIdName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()), lang));
                    adata.setAlmLevelName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()), lang));
                }
            }
//        PageInfo<AlarmRes> pinfo=new PageInfo<AlarmRes>(list);
            return new Response().set(1, list);
        } else {
            return new Response().set(1, "越权访问");
        }
        PageInfo<AlarmRes> pinfo=new PageInfo<AlarmRes>(list);
        return new Response().set(1,pinfo);
    }
    //电源实时告警查询--第三方接口-websocket
    @Transactional
    public Response getPwrdevAlarm(int pageNum,int pageSize){
        //分页信息
        PageHelper.startPage(pageNum,pageSize);
        List<PwrdevAlarm> list=pwrdevAlarmMapper.getPwrdevAlarm();
        for (PwrdevAlarm p:list) {
            p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
            if(p.getAlmIndex()!=0){
                p.setAlarmName(p.getAlarmName().replace("N","第"+p.getAlmIndex()+"路"));
    public Response getPwrdevAlarm(List powerDeviceIds, String interfaceNumber) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            //        //分页信息
            //        PageHelper.startPage(pageNum,pageSize);
            List<PwrdevAlarm> list = pwrdevAlarmMapper.getPwrdevAlarm(powerDeviceIds);
            for (PwrdevAlarm p : list) {
                p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
                if (p.getAlmIndex() != 0) {
                    p.setAlarmName(p.getAlarmName().replace("N", p.getAlmIndex() + ""));
                }
            }
            //        PageInfo pageInfo=new PageInfo(list);
            return new Response().set(1, list);
        } else {
            return new Response().set(1, "越权访问");
        }
        PageInfo pageInfo=new PageInfo(list);
        return new Response().set(1,pageInfo);
    }
    //设备告警实时查询-webSocket
    public Response getDevAlarm(int pageNum,int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List list=devalarmDataMapper.getDevAlarm();
        PageInfo pageInfo=new PageInfo(list);
        return  new Response().set(1,pageInfo);
    public Response getDevAlarm(List deviceIds, String interfaceNumber) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
//        PageHelper.startPage(pageNum,pageSize);
            List list = devalarmDataMapper.getDevAlarm(deviceIds);
//        PageInfo pageInfo=new PageInfo(list);
            return new Response().set(1, list);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    //电池告警历史查询
    @Transactional
    public Response getBattAlarmHistory(List battgroupIds, String interfaceNumber, int pageNum, int pageSize) {
        String lang = ActionUtil.getLang();
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            PageHelper.startPage(pageNum,pageSize);
            List<AlarmRes> list = battalarmDataHistoryMapper.getBattAlarmHistory(battgroupIds);
            for (AlarmRes a : list) {
                List<BattalarmData> l = a.getAdatas();
                for (BattalarmData adata : l) {
                    adata.setAlmSignalIdName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()), lang));
                    adata.setAlmLevelName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()), lang));
                }
            }
            PageInfo<AlarmRes> pageInfo = new PageInfo<AlarmRes>(list);
            return new Response().set(1, pageInfo);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    //电池告警历史查询
    @Transactional
    public Response getBattAlarmHistory2(InterfaceParam param, String interfaceNumber, int pageNum, int pageSize) throws ParseException {
        String lang = ActionUtil.getLang();
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            PageInfo<Object> pageInfo = subTablePageInfoUtils.getPageInfo(pageNum, pageSize, param.getStartTime(), param.getEndTime(),
                    "db_alarm", "tb_battalarm_data_history", param);
            List<Object> list = pageInfo.getList();
            for (Object obj : list) {
                AlarmRes a = (AlarmRes) obj;
                List<BattalarmData> l = a.getAdatas();
                for (BattalarmData adata : l) {
                    adata.setAlmSignalIdName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()), lang));
                    adata.setAlmLevelName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()), lang));
                }
            }
            return new Response().set(1, pageInfo);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    //电源告警历史查询
    @Transactional
    public Response getPwrdevAlarmHistory(List powerDeviceIds, String interfaceNumber, int pageNum, int pageSize) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            PageHelper.startPage(pageNum,pageSize);
            List<PwrdevAlarmHistory> list = pwrdevAlarmHistoryMapper.getPwrdevAlarmHistory(powerDeviceIds);
            for (PwrdevAlarmHistory p : list) {
                p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
                if (p.getAlmIndex() != 0) {
                    p.setAlarmName(p.getAlarmName().replace("N",  p.getAlmIndex() + ""));
                }
            }
            PageInfo pageInfo = new PageInfo(list);
            return new Response().set(1, pageInfo);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    //设备告警历史查询
    public Response getDevAlarmHistory(List deviceIds, String interfaceNumber, int pageNum, int pageSize) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            PageHelper.startPage(pageNum,pageSize);
            List list = devalarmDataHistoryMapper.getDevAlarmHistory(deviceIds);
            PageInfo pageInfo = new PageInfo(list);
            return new Response().set(1, pageInfo);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    public Response getDevAlarmHistory2(InterfaceParam param, String interfaceNumber, int pageNum, int pageSize) throws ParseException {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            PageInfo<Object> pageInfo = subTablePageInfoUtils.getPageInfo(pageNum, pageSize, param.getStartTime(), param.getEndTime(),
                    "db_alarm", "tb_devalarm_data_history", param);
            return new Response().set(1, pageInfo);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    public Response getRealTime(InterfaceParam param) {
        //先验证
        int flag = decryptInterface(param.getInterfaceNumber());
        if (flag == 1) {
            //判断param.getPowerDeviceIds()是否为空,不为空则查询
            List<PwrdevAcdcdata> powerRts = new ArrayList<>();
            if (param.getPowerDeviceIds() != null && param.getPowerDeviceIds().size() > 0) {
                powerRts = pwrdevAcdcdataMapper.getPowerRealtime(param.getPowerDeviceIds());
            }
            List<Fbs9100State> fbs9100States = new ArrayList<>();
            if (param.getDeviceIds() != null && param.getDeviceIds().size() > 0) {
                fbs9100States = fbs9100StateMapper.getRealtime(param.getDeviceIds());
            }
            List<BattRtdata> battRtDatas = new ArrayList<>();
            if (param.getStationIds() != null && param.getStationIds().size() > 0) {
                battRtDatas = battRtdataMapper.getRealtime(param.getStationIds());
            }
            List<BattRtstate> battRtstates = new ArrayList<>();
            if (param.getBattgroupIds() != null && param.getBattgroupIds().size() > 0) {
                battRtstates = battRtstateMapper.getRealtime(param.getBattgroupIds());
            }
            Map<String, Object> map = new HashMap<>();
            map.put("powerRts", powerRts);
            map.put("fbs9100States", fbs9100States);
            map.put("battRtDatas", battRtDatas);
            map.put("battRtstates", battRtstates);
            return new Response().set(1, map);
        } else {
            return new Response().set(1, "越权访问");
        }
    }
    //获取所有第三方码的信息
    public Response getInterface(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Interface> list = interfaceMapper.selectList((Wrapper<Interface>) ActionUtil.objeNull);
        if (list != null && list.size() > 0) {
            for (Interface iface : list) {
                String random = iface.getInterfaceNumber();
                iface.setInterfaceNumber(RSAUtil.decrypt(random, RSAUtil.getPrivateKey()));
            }
        }
        PageInfo pageInfo = new PageInfo(list);
        return new Response().setII(1, list.size() > 0, pageInfo, "返回所有第三方码");
    }
    //生成第三方验证码
    public Response createInterface(String interfaceName) throws NoSuchAlgorithmException {
        String random = getRandomString(25);
        //rsa加密
        String encryptRandom = RSAUtil.encrypt(random, RSAUtil.getPublicKey());
        //将生成的random存入数据库
        Interface iface = new Interface();
        iface.setInterfaceName(interfaceName);
        iface.setInterfaceNumber(encryptRandom);
        iface.setEnable(1);
        interfaceMapper.insert(iface);
        return new Response().set(1, true, random);
    }
    //编辑第三方验证码是否可用
    public Response updateInterface(int num, int enable) {
        UpdateWrapper wrapper = new UpdateWrapper();
        wrapper.set("enable", enable);
        wrapper.eq("num", num);
        interfaceMapper.update((Interface) ActionUtil.objeNull, wrapper);
        return new Response().set(1, true, "编辑是否可用");
    }
    //验证第三方验证码是否成功
    public int decryptInterface(String encryptRandom) {
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("enable", 1);
        List<Interface> list = interfaceMapper.selectList(wrapper);
        int flag = 0;
        if (list != null && list.size() > 0) {
            for (Interface iface : list) {
                String random = RSAUtil.decrypt(iface.getInterfaceNumber(), RSAUtil.getPrivateKey());
                if (encryptRandom.equals(random)) {
                    flag = 1;
                    break;
                }
            }
        }
        return flag;
    }
    //length用户要求产生字符串的长度
    public static String getRandomString(int length) throws NoSuchAlgorithmException {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        //Random random = new Random();
        SecureRandom  random = SecureRandom.getInstance("SHA1PRNG");
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }
    public Response getAlarmDiffMap(String interfaceNumber, String lang) {
        //先验证
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            Map<String, Object> alarmDiffMap = new HashMap<>();
            //获取初始化时的告警列表/变动更新后的告警列表
            ServletContext application = ActionUtil.getApplication();
            Map<String, Object> alarmMap = (Map<String, Object>) application.getAttribute("alarmMap");
            //获取当前的告警列表
            Map<String, Object> alarmMapNow = getAlarmMap(lang);
            List<BattalarmData> battAlarmList = (List<BattalarmData>) alarmMap.get("battAlarmList");
            List<DevalarmData> devAlarmList = (List<DevalarmData>) alarmMap.get("devAlarmList");
            List<PwrdevAlarm> powerAlarmList = (List<PwrdevAlarm>) alarmMap.get("powerAlarmList");
            List<BattalarmData> battAlarmListNow = (List<BattalarmData>) alarmMapNow.get("battAlarmList");
            List<DevalarmData> devAlarmListNow = (List<DevalarmData>) alarmMapNow.get("devAlarmList");
            List<PwrdevAlarm> powerAlarmListNow = (List<PwrdevAlarm>) alarmMapNow.get("powerAlarmList");
            List<BattalarmData> battAlarmListAdded = new LinkedList<>();
            List<BattalarmData> battAlarmListRemoved = new LinkedList<>();
            List<DevalarmData> devAlarmListAdded = new LinkedList<>();
            List<DevalarmData> devAlarmListRemoved = new LinkedList<>();
            List<PwrdevAlarm> powerAlarmListAdded = new LinkedList<>();
            List<PwrdevAlarm> powerAlarmListRemoved = new LinkedList<>();
            //电池组告警增加
            for (BattalarmData now : battAlarmListNow) {
                long num = now.getNum();
                boolean exist = false;
                for (BattalarmData old : battAlarmList) {
                    if (old.getNum() == num) {
                        exist = true;
                        break;
                    }
                }
                if (!exist) {
                    battAlarmListAdded.add(now);
                }
            }
            //电池组告警减少
            for (BattalarmData old : battAlarmList) {
                long num = old.getNum();
                boolean exist = false;
                for (BattalarmData now : battAlarmListNow) {
                    if (now.getNum() == num) {
                        exist = true;
                        break;
                    }
                }
                if (!exist) {
                    battAlarmListRemoved.add(old);
                }
            }
            //设备告警增加
            for (DevalarmData now : devAlarmListNow) {
                long num = now.getNum();
                boolean exist = false;
                for (DevalarmData old : devAlarmList) {
                    if (old.getNum() == num) {
                        exist = true;
                        break;
                    }
                }
                if (!exist) {
                    devAlarmListAdded.add(now);
                }
            }
            //设备告警减少
            for (DevalarmData old : devAlarmList) {
                long num = old.getNum();
                boolean exist = false;
                for (DevalarmData now : devAlarmListNow) {
                    if (now.getNum() == num) {
                        exist = true;
                        break;
                    }
                }
                if (!exist) {
                    devAlarmListRemoved.add(old);
                }
            }
            //电源告警增加
            for (PwrdevAlarm now : powerAlarmListNow) {
                long num = now.getNum();
                boolean exist = false;
                for (PwrdevAlarm old : powerAlarmList) {
                    if (old.getNum() == num) {
                        exist = true;
                        break;
                    }
                }
                if (!exist) {
                    powerAlarmListAdded.add(now);
                }
            }
            //电源告警减少
            for (PwrdevAlarm old : powerAlarmList) {
                long num = old.getNum();
                boolean exist = false;
                for (PwrdevAlarm now : powerAlarmListNow) {
                    if (now.getNum() == num) {
                        exist = true;
                        break;
                    }
                }
                if (!exist) {
                    powerAlarmListRemoved.add(old);
                }
            }
            alarmDiffMap.put("battAlarmListAdded", battAlarmListAdded);
            alarmDiffMap.put("battAlarmListRemoved", battAlarmListRemoved);
            alarmDiffMap.put("devAlarmListAdded", devAlarmListAdded);
            alarmDiffMap.put("devAlarmListRemoved", devAlarmListRemoved);
            alarmDiffMap.put("powerAlarmListAdded", powerAlarmListAdded);
            alarmDiffMap.put("powerAlarmListRemoved", powerAlarmListRemoved);
            if (battAlarmListAdded.size() != 0 || battAlarmListRemoved.size() != 0
                    || devAlarmListAdded.size() != 0 || devAlarmListRemoved.size() != 0
                    || powerAlarmListAdded.size() != 0 || powerAlarmListRemoved.size() != 0
            ) {
                //有任何变动,更新旧的告警列表
                application.setAttribute("alarmMap", alarmMapNow);
            }
            return new Response().set(1,alarmDiffMap);
        }else{
            return new Response().set(1, "越权访问");
        }
    }
    public Map<String, Object> getAlarmMap(String lang) {
        List<BattalarmData> battAlarmList = battalarmDataMapper.getBattAlarm2();
        for (BattalarmData adata : battAlarmList) {
            adata.setAlmSignalIdName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()), lang));
            adata.setAlmLevelName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()), lang));
        }
        List devAlarmList = devalarmDataMapper.getDevAlarm2();
        List<PwrdevAlarm> powerAlarmList = pwrdevAlarmMapper.getPwrdevAlarm2();
        for (PwrdevAlarm p : powerAlarmList) {
            p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
            if (p.getAlmIndex() != 0) {
                p.setAlarmName(p.getAlarmName().replace("N", p.getAlmIndex() + ""));
            }
        }
        Map<String,Object> map = new HashMap<>();
        map.put("battAlarmList",battAlarmList);
        map.put("devAlarmList",devAlarmList);
        map.put("powerAlarmList",powerAlarmList);
        return map;
    }
    public Response getRealTimeAlarm(InterfaceParam param) {
        String lang = ActionUtil.getLang();
        int flag = decryptInterface(param.getInterfaceNumber());
        if (flag == 1) {
            Map<String,List> map = new HashMap<>();
            map.put("battAlarmList",null);
            map.put("devAlarmList",null);
            map.put("powerAlarmList",null);
            List battgroupIds = param.getBattgroupIds();
            List deviceIds = param.getDeviceIds();
            List powerDeviceIds = param.getPowerDeviceIds();
            //电池告警实时
            if(battgroupIds!=null && battgroupIds.size()!=0) {
                List<AlarmRes> battAlarmList = battalarmDataMapper.getBattAlarm(battgroupIds);
                for (AlarmRes a : battAlarmList) {
                    List<BattalarmData> l = a.getAdatas();
                    for (BattalarmData adata : l) {
                        adata.setAlmSignalIdName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()), lang));
                        adata.setAlmLevelName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()), lang));
                    }
                }
                map.put("battAlarmList",battAlarmList);
            }
            //设备告警实时
            if(deviceIds!=null && deviceIds.size()!=0) {
                List devAlarmList = devalarmDataMapper.getDevAlarm(deviceIds);
                map.put("devAlarmList",devAlarmList);
            }
            //电源告警实时
            if(powerDeviceIds!=null && powerDeviceIds.size()!=0) {
                List<PwrdevAlarm> powerAlarmList = pwrdevAlarmMapper.getPwrdevAlarm(powerDeviceIds);
                for (PwrdevAlarm p : powerAlarmList) {
                    p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType()));
                    if (p.getAlmIndex() != 0) {
                        p.setAlarmName(p.getAlarmName().replace("N", p.getAlmIndex() + ""));
                    }
                }
                map.put("powerAlarmList",powerAlarmList);
            }
            return new Response().set(1,map);
        }else{
            return new Response().set(1, "越权访问");
        }
    }
    public Response getBattStationInfoByStationId(String stationId, String interfaceNumber) {
        int flag = decryptInterface(interfaceNumber);
        //int flag = 1;
        if (flag == 1) {
            QueryWrapper<Battinf> query = Wrappers.query();
            query.eq("StationId", stationId).last(" limit 1");
            Battinf battinf = battInfMapper.selectOne(query);
            QueryWrapper<BattMapInformation> mapQuery = Wrappers.query();
            mapQuery.select("longitude", "latitude").eq("stationId", stationId).last(" limit 1");
            BattMapInformation mapInfo = mapMapper.selectOne(mapQuery);
            if (mapInfo != null) {
                battinf.setLongitude(mapInfo.getLongitude());
                battinf.setLatitude(mapInfo.getLatitude());
            } else {
                battinf.setLongitude(0d);
                battinf.setLatitude(0d);
            }
            return new Response().set(1, battinf);
        }else{
            return new Response().set(1, "越权访问");
        }
    }
    public Response sendCmdGet(int opCmd, Integer testCmd, int devId, int battGroupNum, String interfaceNumber) {
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            boolean bl = fbs9100SetparamService.sendCmdToFBS9100Dev2(opCmd, testCmd != null ? testCmd : 0, devId, battGroupNum);
            Fbs9100Setparam setparam = fbs9100SetparamMapper.serchbyDev_id(devId,battGroupNum-1);
            return new Response().setII(1, setparam, bl, bl == true ? "查询成功!" : "设置9100参数失败,请检查网络!");
        }else{
            return new Response().set(1, "越权访问");
        }
    }
    public Response sendCmdSet(Fbs9100Setparam param, String interfaceNumber) {
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            Long devId = param.getDevId();
            if (devId.toString().startsWith("61850")) {
                return fbs9100SetparamService.update61850Param(param);
            } else {
                return fbs9100SetparamService.update(param);
            }
        }else{
            return new Response().set(1, "越权访问");
        }
    }
    public Response getBattHistoryDataList(BattRealdata data, String interfaceNumber) throws ParseException, InterruptedException {
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
            Response response = battRealdataService.serchByCondition2(data);
            return new Response().set(1,response);
        }else{
            return new Response().set(1, "越权访问");
        }
    }
    /**
     * 1.电池基本信息:电池品牌、电池型号、投入使用时间、标称容量、电池组id
     * 2.运行数据:实际容量、电池组数、负载电流、续航时长
     */
    public Response getBattGroupDataList(String stationId, String interfaceNumber) {
        int flag = decryptInterface(interfaceNumber);
        if (flag == 1) {
           Map<String, Object> resultMap = new HashMap<>();
           //根据站点查询电池组列表及基础信息
            List<Battinf> battGroupList = battInfService.getBattListByStatoinId(stationId);
            resultMap.put("basicInfo",battGroupList);
            //根据站点查询运行数据
            List<BattEndurance> enduranceInfoList = battEnduranceService.getEnduranceInfoByStationId(stationId);
            if(battGroupList.size() != 0 && enduranceInfoList.size() != 0) { //存在电池组且存在电池组的续航信息记录
                //这里只考虑一个站点只有1台设备.
                BattEndurance battEndurance = enduranceInfoList.get(0);
                //运行数据
                List<BattEndurance> runDataList = new ArrayList<>();
                battGroupList.forEach(battinf -> {
                    Integer groupIndex = battinf.getGroupIndexInFBSDevice();
                    Float loadCurrFromDis = battinf.getLoadCurrFromDis();
                    Float capStd = battinf.getMonCapStd();
                    BattEndurance temp = new BattEndurance();
                    switch (groupIndex) {
                        case 0:
                            temp.setRealCap(battEndurance.getRealCapGroup1());
                            temp.setNum(0);
                            temp.setLoadCurr(String.valueOf(loadCurrFromDis));
                            temp.setEnduranceTheoryTimelong(BattCapFactory.getTheoryTime(loadCurrFromDis, battEndurance.getRealCapGroup1(), capStd));
                            break;
                        case 1:
                            temp.setRealCap(battEndurance.getRealCapGroup2());
                            temp.setNum(1);
                            temp.setLoadCurr(String.valueOf(loadCurrFromDis));
                            temp.setEnduranceTheoryTimelong(BattCapFactory.getTheoryTime(loadCurrFromDis, battEndurance.getRealCapGroup2(), capStd));
                            break;
                        case 2:
                            temp.setRealCap(battEndurance.getRealCapGroup3());
                            temp.setNum(2);
                            temp.setLoadCurr(String.valueOf(loadCurrFromDis));
                            temp.setEnduranceTheoryTimelong(BattCapFactory.getTheoryTime(loadCurrFromDis, battEndurance.getRealCapGroup3(), capStd));
                            break;
                        case 3:
                            temp.setRealCap(battEndurance.getRealCapGroup4());
                            temp.setNum(3);
                            temp.setLoadCurr(String.valueOf(loadCurrFromDis));
                            temp.setEnduranceTheoryTimelong(BattCapFactory.getTheoryTime(loadCurrFromDis, battEndurance.getRealCapGroup4(), capStd));
                            break;
                    }
                    runDataList.add(temp);
                });
                resultMap.put("runData", runDataList);
            }else{
                resultMap.put("runData",null);
            }
            return new Response().set(1,resultMap);
        }else{
            return new Response().set(1, "越权访问");
        }
    }
}