package com.sandu.ximon.admin.service; import cn.hutool.core.collection.CollectionUtil; 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.vo.TerminalVO; import com.sandu.ximon.dao.bo.BroadcastTerminalV2EntityBo; import com.sandu.ximon.dao.domain.BroadcastTerminalV2Entity; import com.sandu.ximon.dao.domain.Pole; 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; import java.util.stream.Collectors; @Service public class IpVolumeService extends BaseServiceImpl { @Autowired private IPBroadcastMapper broadcastTerminalV2EntityMapper; /** * 同步终端 */ public void synchTerminal() { List server = broadcastTerminalV2EntityMapper.listAll(); List 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 getBroadcastTerminalList(BaseConditionVO baseConditionVO, BroadcastTerminalV2Param broadcastTerminalV2Param) { if (broadcastTerminalV2Param == null) { broadcastTerminalV2Param = new BroadcastTerminalV2Param(); } //在线状态全部的话需要分页 if (baseConditionVO != null && 2 == broadcastTerminalV2Param.getWorkState()) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); } List broadcastTerminalV2EntityBos; List 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 list = TerminalAPIUtils.getTerminalList(); for (BroadcastTerminalV2EntityBo bean : broadcastTerminalV2EntityBos) { for (TerminalVO terminalVO : list) { if (bean.getId().equals(terminalVO.getId())) { bean.setStatus(terminalVO.getStatus()); bean.setIp(terminalVO.getIp()); bean.setVolumn(terminalVO.getVolumn()); bean.setDefaultVolumn(terminalVO.getDefaultVolumn()); bean.setPower(terminalVO.getPower()); bean.setDefaultPower(terminalVO.getDefaultPower()); bean.setLast(terminalVO.getLast()); bean.setTaskType(terminalVO.getTaskType()); bean.setTaskID(terminalVO.getTaskID()); if (0 == broadcastTerminalV2Param.getWorkState() && 0 == terminalVO.getStatus()) { broadcastTerminalV2EntityBos_final.add(bean); } else if (1 == broadcastTerminalV2Param.getWorkState() && 1 == terminalVO.getStatus()) { broadcastTerminalV2EntityBos_final.add(bean); } break; } } } if (2 == broadcastTerminalV2Param.getWorkState()) { return broadcastTerminalV2EntityBos; } else { return broadcastTerminalV2EntityBos_final; } } /** * 修改设备绑定状态 * * @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()); } TerminalVO 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("终端不存在"); } 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; } }