package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.dto.AlarmDaoFactory;
|
import com.whyc.dto.InterfaceParam;
|
import com.whyc.dto.Response;
|
import com.whyc.dto.result.AlarmRes;
|
import com.whyc.mapper.*;
|
import com.whyc.pojo.*;
|
import com.whyc.util.RSAUtil;
|
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.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Random;
|
|
@Slf4j
|
@Service
|
public class InterfaceService {
|
@Resource
|
private BattInfMapper battInfMapper;
|
@Resource
|
private PowerInfMapper powerInfMapper;
|
@Resource
|
private BattalarmDataMapper battalarmDataMapper;
|
@Resource
|
private PwrdevAlarmMapper pwrdevAlarmMapper;
|
@Resource
|
private DevalarmDataMapper devalarmDataMapper;
|
@Resource
|
private PwrdevAcdcdataMapper pwrdevAcdcdataMapper;
|
@Resource
|
private Fbs9100StateMapper fbs9100StateMapper;
|
@Resource
|
private BattRtdataMapper battRtdataMapper;
|
@Resource
|
private BattRtstateMapper battRtstateMapper;
|
|
@Autowired(required = false)
|
private InterfaceMapper interfaceMapper;
|
|
public Response getBattinf(int pageNum, int pageSize, String interfaceNumber) {
|
//先验证
|
int flag = decryptInterface(interfaceNumber);
|
if (flag == 1) {
|
//分页信息
|
PageHelper.startPage(pageNum, pageSize);
|
List list = battInfMapper.selectList(null);
|
PageInfo pageInfo = new PageInfo(list);
|
return new Response().set(1, pageInfo);
|
} else {
|
return new Response().set(1, "越权访问");
|
}
|
}
|
|
public Response getPowerInf(int pageNum, int pageSize, String interfaceNumber) {
|
//先验证
|
int flag = decryptInterface(interfaceNumber);
|
if (flag == 1) {
|
//分页信息
|
PageHelper.startPage(pageNum, pageSize);
|
List list = powerInfMapper.selectList(null);
|
PageInfo pageInfo = new PageInfo(list);
|
return new Response().set(1, pageInfo);
|
} else {
|
return new Response().set(1, "越权访问");
|
}
|
}
|
|
//电池告警实时查询-websocket使用
|
@Transactional
|
public Response getBattAlarm(List battgroupIds, String interfaceNumber) {
|
//先验证
|
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(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()));
|
adata.setAlmLevelName(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()));
|
}
|
}
|
// PageInfo<AlarmRes> pinfo=new PageInfo<AlarmRes>(list);
|
return new Response().set(1, list);
|
} else {
|
return new Response().set(1, "越权访问");
|
}
|
}
|
|
//电源实时告警查询--第三方接口-websocket
|
@Transactional
|
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, "越权访问");
|
}
|
}
|
|
|
//设备告警实时查询-webSocket
|
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, "越权访问");
|
}
|
|
}
|
|
public Response getRealTime(InterfaceParam param) {
|
//先验证
|
int flag = decryptInterface(param.getInterfaceNumber());
|
if (flag == 1) {
|
List<PwrdevAcdcdata> powerRts = pwrdevAcdcdataMapper.getPowerRealtime(param.getPowerDeviceIds());
|
List<Fbs9100State> fbs9100States = fbs9100StateMapper.getRealtime(param.getDeviceIds());
|
List<BattRtdata> battRtDatas = battRtdataMapper.getRealtime(param.getStationIds());
|
List<BattRtstate> 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(null);
|
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) {
|
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(null, 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) {
|
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
Random random = new Random();
|
StringBuffer sb = new StringBuffer();
|
for (int i = 0; i < length; i++) {
|
int number = random.nextInt(62);
|
sb.append(str.charAt(number));
|
}
|
return sb.toString();
|
}
|
|
|
}
|