package com.sandu.ximon.admin.service;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.pagehelper.PageHelper;
|
import com.sandu.common.execption.BusinessException;
|
import com.sandu.common.object.BaseConditionVO;
|
import com.sandu.common.service.impl.BaseServiceImpl;
|
import com.sandu.common.util.SpringContextHolder;
|
import com.sandu.ximon.admin.param.BroadcastTerminalV2Param;
|
import com.sandu.ximon.admin.security.SecurityUtils;
|
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
|
import com.sandu.ximon.admin.utils.TerminalAPIUtils;
|
import com.sandu.ximon.admin.vo.EquipmentInfomation;
|
import com.sandu.ximon.admin.dto.TerminalDto;
|
import com.sandu.ximon.dao.bo.BroadcastTerminalV2EntityBo;
|
import com.sandu.ximon.dao.domain.BroadcastTerminalV2Entity;
|
import com.sandu.ximon.dao.enums.AdministratorEnums;
|
import com.sandu.ximon.dao.enums.OrderByEnums;
|
import com.sandu.ximon.dao.enums.PoleBindingEnums;
|
import com.sandu.ximon.dao.mapper.IPBroadcastMapper;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Service
|
public class IpVolumeService extends BaseServiceImpl<IPBroadcastMapper, BroadcastTerminalV2Entity> {
|
|
@Autowired
|
private IPBroadcastMapper broadcastTerminalV2EntityMapper;
|
|
/**
|
* 同步终端
|
*/
|
public void synchTerminal() {
|
List<BroadcastTerminalV2Entity> server = broadcastTerminalV2EntityMapper.listAll();
|
|
List<TerminalDto> list = TerminalAPIUtils.getTerminalList();
|
System.out.println(list);
|
list.stream().forEach(item -> {
|
// 音柱服务器终端ID
|
Integer id = item.getId();
|
boolean add = true;
|
// 遍历数据库终端
|
for (BroadcastTerminalV2Entity b : server) {
|
Integer id1 = b.getId();
|
if (id.equals(id1)) {
|
add = false;
|
break;
|
}
|
}
|
if (add) {
|
BroadcastTerminalV2Entity b = new BroadcastTerminalV2Entity();
|
b.setId(id);
|
b.setTerminalName(item.getName());
|
b.setStreetlightId(0L);
|
b.setExist(1);
|
save(b);
|
}
|
});
|
/**
|
* IP音柱同步 日志记录开始
|
*/
|
StoreOperationRecordsUtils.storeOperationData(null, null, "IP音柱同步", "IP音柱同步设备");
|
/**
|
* IP音柱同步 日志记录结束
|
*/
|
}
|
|
public List<BroadcastTerminalV2EntityBo> getBroadcastTerminalList(BaseConditionVO baseConditionVO, Integer order, Integer seq, BroadcastTerminalV2Param broadcastTerminalV2Param) {
|
if (broadcastTerminalV2Param == null) {
|
broadcastTerminalV2Param = new BroadcastTerminalV2Param();
|
}
|
|
//排序字段
|
String orderByResult = OrderByEnums.IP_VOLUME_ID.getCode();
|
//正序、倒叙
|
String orderBySeq = OrderByEnums.ASC.getCode();
|
if (order != null) {
|
switch (order) {
|
case 1:
|
orderByResult = OrderByEnums.IP_VOLUME_ID.getCode();
|
break;
|
case 2:
|
orderByResult = OrderByEnums.IP_VOLUME_NAME.getCode();
|
case 3:
|
orderByResult = OrderByEnums.IP_VOLUME_POLE_NAME.getCode();
|
default:
|
}
|
}
|
if (seq != null) {
|
switch (seq) {
|
case 1:
|
orderBySeq = " ASC";
|
break;
|
case 2:
|
orderBySeq = " DESC";
|
break;
|
default:
|
break;
|
}
|
}
|
//排序方式
|
String orderBy = orderByResult + " " + orderBySeq;
|
|
//在线状态全部的话需要分页
|
if (baseConditionVO != null && 2 == broadcastTerminalV2Param.getWorkState()) {
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), orderBy);
|
}
|
|
List<BroadcastTerminalV2EntityBo> broadcastTerminalV2EntityBos;
|
List<BroadcastTerminalV2EntityBo> broadcastTerminalV2EntityBos_final = new ArrayList<>();
|
//绑定状态:已绑定/未绑定/全部
|
if (broadcastTerminalV2Param.getBindingState() == null || 2 == broadcastTerminalV2Param.getBindingState()) {
|
//全部
|
int bindingState = 2;
|
if (SecurityUtils.getClientId() == null) {
|
broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword(), null, bindingState);
|
} else {
|
broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword(), SecurityUtils.getUserId(), bindingState);
|
}
|
} else {
|
if (SecurityUtils.getClientId() == null) {
|
broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword(), null, broadcastTerminalV2Param.getBindingState());
|
} else {
|
broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword(), SecurityUtils.getUserId(), broadcastTerminalV2Param.getBindingState());
|
}
|
}
|
|
List<TerminalDto> list = TerminalAPIUtils.getTerminalList();
|
for (BroadcastTerminalV2EntityBo bean : broadcastTerminalV2EntityBos) {
|
for (TerminalDto terminalDto : list) {
|
if (bean.getId().equals(terminalDto.getId())) {
|
bean.setStatus(terminalDto.getStatus());
|
bean.setIp(terminalDto.getIp());
|
bean.setVolumn(terminalDto.getVolumn());
|
bean.setDefaultVolumn(terminalDto.getDefaultVolumn());
|
bean.setPower(terminalDto.getPower());
|
bean.setDefaultPower(terminalDto.getDefaultPower());
|
bean.setLast(terminalDto.getLast());
|
bean.setTaskType(terminalDto.getTaskType());
|
bean.setTaskID(terminalDto.getTaskID());
|
|
if (0 == broadcastTerminalV2Param.getWorkState() && 0 == terminalDto.getStatus()) {
|
broadcastTerminalV2EntityBos_final.add(bean);
|
} else if (1 == broadcastTerminalV2Param.getWorkState() && 1 == terminalDto.getStatus()) {
|
broadcastTerminalV2EntityBos_final.add(bean);
|
}
|
break;
|
}
|
}
|
}
|
if (2 == broadcastTerminalV2Param.getWorkState()) {
|
return broadcastTerminalV2EntityBos;
|
} else {
|
return broadcastTerminalV2EntityBos_final;
|
}
|
}
|
|
|
public List<BroadcastTerminalV2EntityBo> newIpTerminalList(String keyword) {
|
|
List<BroadcastTerminalV2EntityBo> broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getListTerminalOnBind(SecurityUtils.getClientId(), keyword);
|
|
|
List<TerminalDto> list = TerminalAPIUtils.getTerminalList();
|
for (BroadcastTerminalV2EntityBo bean : broadcastTerminalV2EntityBos) {
|
for (TerminalDto terminalDto : list) {
|
if (bean.getId().equals(terminalDto.getId())) {
|
bean.setStatus(terminalDto.getStatus());
|
bean.setIp(terminalDto.getIp());
|
bean.setVolumn(terminalDto.getVolumn());
|
bean.setDefaultVolumn(terminalDto.getDefaultVolumn());
|
bean.setPower(terminalDto.getPower());
|
bean.setDefaultPower(terminalDto.getDefaultPower());
|
bean.setLast(terminalDto.getLast());
|
bean.setTaskType(terminalDto.getTaskType());
|
bean.setTaskID(terminalDto.getTaskID());
|
break;
|
}
|
}
|
}
|
|
return broadcastTerminalV2EntityBos;
|
}
|
|
/**
|
* 修改设备绑定状态
|
*
|
* @param flag true为绑定 false 为解绑
|
*/
|
public void updateBingdingState(boolean flag, int deviceCode) {
|
if (flag) {//绑定
|
BroadcastTerminalV2Entity broadcastTerminalV2Entity = getOne(Wrappers.lambdaQuery(BroadcastTerminalV2Entity.class).eq(BroadcastTerminalV2Entity::getId, deviceCode));
|
if (broadcastTerminalV2Entity == null) {
|
return;
|
}
|
broadcastTerminalV2Entity.setBindStates(1);
|
updateById(broadcastTerminalV2Entity);
|
} else {//解绑
|
BroadcastTerminalV2Entity broadcastTerminalV2Entity = getOne(Wrappers.lambdaQuery(BroadcastTerminalV2Entity.class).eq(BroadcastTerminalV2Entity::getId, deviceCode));
|
if (broadcastTerminalV2Entity == null) {
|
return;
|
}
|
broadcastTerminalV2Entity.setBindStates(0);
|
updateById(broadcastTerminalV2Entity);
|
}
|
}
|
|
/**
|
* 音量修改
|
*
|
* @param params
|
* @return
|
*/
|
public boolean changeVol(BroadcastTerminalV2Param params) {
|
if (params.getId() == null || params.getDefaultVolumn() == null || params.getDefaultVolumn() < 0) {
|
throw new BusinessException("设备ID或修改的音量值不正确");
|
}
|
|
boolean flag = TerminalAPIUtils.changeVol(params.getId(), params.getDefaultVolumn());
|
/**
|
* IP音柱音量修改 日志记录开始
|
*/
|
// String content = "{设备Id:" + params.getId() + ",修改后音量:" + params.getDefaultVolumn() + "}";
|
// StoreOperationRecordsUtils.storeOperationData(null, null, "IP音柱音量修改", content);
|
/**
|
* IP音柱音量修改 日志记录结束
|
*/
|
return flag;
|
}
|
|
/**
|
* 终端详情
|
*/
|
public EquipmentInfomation getIpTerminalDetail(String id) {
|
EquipmentInfomation equipmentInfo = new EquipmentInfomation();
|
equipmentInfo.setEquipmentType("IP音柱");
|
if (id == null || id.trim().length() == 0) {
|
return equipmentInfo;
|
}
|
BroadcastTerminalV2Entity one = getOne(Wrappers.lambdaQuery(BroadcastTerminalV2Entity.class).eq(BroadcastTerminalV2Entity::getId, id));
|
if (one != null) {
|
equipmentInfo.setEquipmentMac(id);
|
equipmentInfo.setEquipmentName(one.getTerminalName());
|
}
|
TerminalDto terminalInfo = TerminalAPIUtils.getTerminalInfo(Integer.valueOf(id));
|
if (terminalInfo != null) {
|
//空闲 1、 工作中 2 或者 4、 断线 0, 报 错 8
|
switch (terminalInfo.getStatus()) {
|
case 1:
|
equipmentInfo.setEquipmentState("空闲");
|
break;
|
case 2:
|
case 4:
|
equipmentInfo.setEquipmentState("工作中");
|
break;
|
case 0:
|
equipmentInfo.setEquipmentState("断线");
|
break;
|
case 8:
|
equipmentInfo.setEquipmentState("报错");
|
break;
|
default:
|
equipmentInfo.setEquipmentState("未知");
|
|
}
|
} else {
|
equipmentInfo.setEquipmentState("未知");
|
}
|
return equipmentInfo;
|
}
|
|
|
/**
|
* 根据终端id获取终端信息
|
*
|
* @param name
|
* @param id
|
* @return
|
*/
|
public boolean updateBroadcastTerminalName(String name, Integer id) {
|
if (name == null || name.trim().length() == 0) {
|
throw new BusinessException("设备名不能为空");
|
}
|
BroadcastTerminalV2Entity byId = getById(id);
|
if (byId == null) {
|
throw new BusinessException("终端不存在");
|
}
|
if (AdministratorEnums.NORMAL.getCode().equals(SecurityUtils.getAdministratorIdentity())) {
|
boolean belong = SpringContextHolder.getBean(PoleBindingService.class).isBelong(String.valueOf(byId.getId()), PoleBindingEnums.IPVOLUME);
|
if (!belong) {
|
throw new BusinessException("该设备不属于您,不能修改设备信息");
|
}
|
}
|
byId.setTerminalName(name);
|
boolean flag = updateById(byId);
|
/**
|
* IP音柱修改设备名称日志记录开始
|
*/
|
String content = "{设备Id:" + id + ",修改后名称:" + name + "}";
|
StoreOperationRecordsUtils.storeOperationData(null, null, "IP音柱修改设备名", content);
|
/**
|
* IP音柱改设备名称日志记录结束
|
*/
|
return flag;
|
}
|
}
|