| | |
| | | package com.sandu.ximon.admin.service; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | 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.dto.TerminalDto; |
| | | import com.sandu.ximon.admin.param.BroadcastTerminalV2Param; |
| | | import com.sandu.ximon.admin.redis.DeviceRedisKey; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.utils.RedisUtils; |
| | | import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; |
| | | import com.sandu.ximon.admin.utils.TerminalAPIUtils; |
| | | import com.sandu.ximon.admin.vo.TerminalVO; |
| | | import com.sandu.ximon.admin.vo.EquipmentInfomation; |
| | | import com.sandu.ximon.admin.vo.RedisDeviceStatus; |
| | | 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; |
| | |
| | | |
| | | @Service |
| | | public class IpVolumeService extends BaseServiceImpl<IPBroadcastMapper, BroadcastTerminalV2Entity> { |
| | | // private final BroadcastV2TaskTerminalMapper broadcastV2TaskTerminalDao; |
| | | // @Autowired |
| | | // private SysUserRoleService sysUserRoleService; |
| | | // @Autowired |
| | | // private SysUserCompanyService sysUserCompanyService; |
| | | // @Autowired |
| | | // private BroadcastV2TaskTerminalMapper broadcastV2TaskTerminalMapper; |
| | | |
| | | @Autowired |
| | | private IPBroadcastMapper broadcastTerminalV2EntityMapper; |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | |
| | | /** |
| | | * 同步终端 |
| | | */ |
| | | public void synchTerminal() { |
| | | List<BroadcastTerminalV2Entity> server = broadcastTerminalV2EntityMapper.listAll(""); |
| | | List<TerminalVO> list = TerminalAPIUtils.getTerminalList(); |
| | | List<BroadcastTerminalV2Entity> server = broadcastTerminalV2EntityMapper.listAll(); |
| | | |
| | | List<TerminalDto> list = TerminalAPIUtils.getTerminalList(); |
| | | System.out.println(list); |
| | | list.stream().forEach(item -> { |
| | | // 音柱服务器终端ID |
| | |
| | | b.setStreetlightId(0L); |
| | | b.setExist(1); |
| | | save(b); |
| | | // broadcastTerminalV2EntityMapper.insert(b); |
| | | } |
| | | }); |
| | | /** |
| | | * IP音柱同步 日志记录开始 |
| | | */ |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "IP音柱同步", "IP音柱同步设备"); |
| | | /** |
| | | * IP音柱同步 日志记录结束 |
| | | */ |
| | | } |
| | | |
| | | public List<BroadcastTerminalV2EntityBo> getBroadcastTerminalList(BaseConditionVO baseConditionVO, BroadcastTerminalV2Param broadcastTerminalV2Param) { |
| | | /** |
| | | * IP音柱列表 |
| | | * |
| | | * @param baseConditionVO |
| | | * @param order |
| | | * @param seq |
| | | * @param broadcastTerminalV2Param |
| | | * @return |
| | | */ |
| | | 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 (2 == broadcastTerminalV2Param.getWorkState()) { |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | if (baseConditionVO != null && 2 == broadcastTerminalV2Param.getWorkState()) { |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), orderBy); |
| | | } |
| | | |
| | | List<BroadcastTerminalV2EntityBo> broadcastTerminalV2EntityBos; |
| | |
| | | } |
| | | } else { |
| | | if (SecurityUtils.getClientId() == null) { |
| | | broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword() |
| | | , null, broadcastTerminalV2Param.getBindingState()); |
| | | broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword(), null, broadcastTerminalV2Param.getBindingState()); |
| | | } else { |
| | | broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword() |
| | | , SecurityUtils.getUserId(), broadcastTerminalV2Param.getBindingState()); |
| | | broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(broadcastTerminalV2Param.getKeyword(), SecurityUtils.getUserId(), broadcastTerminalV2Param.getBindingState()); |
| | | } |
| | | } |
| | | |
| | | List<TerminalVO> list = TerminalAPIUtils.getTerminalList(); |
| | | List<TerminalDto> 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()); |
| | | 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 == terminalVO.getStatus()) { |
| | | if (0 == broadcastTerminalV2Param.getWorkState() && 0 == terminalDto.getStatus()) { |
| | | broadcastTerminalV2EntityBos_final.add(bean); |
| | | } else if (1 == broadcastTerminalV2Param.getWorkState() && 1 == terminalVO.getStatus()) { |
| | | } else if (1 == broadcastTerminalV2Param.getWorkState() && 1 == terminalDto.getStatus()) { |
| | | broadcastTerminalV2EntityBos_final.add(bean); |
| | | } |
| | | break; |
| | |
| | | } else { |
| | | return broadcastTerminalV2EntityBos_final; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * IP音柱列表(用于首页数据统计) |
| | | * |
| | | * @return |
| | | */ |
| | | public List<BroadcastTerminalV2EntityBo> getBroadcastTerminalListOnHome() { |
| | | List<BroadcastTerminalV2EntityBo> broadcastTerminalV2EntityBos; |
| | | |
| | | if (SecurityUtils.getClientId() == null) { |
| | | broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(null, null, 2); |
| | | } else { |
| | | broadcastTerminalV2EntityBos = broadcastTerminalV2EntityMapper.getBroadcastTerminalList(null, SecurityUtils.getUserId(), 2); |
| | | } |
| | | |
| | | return broadcastTerminalV2EntityBos; |
| | | } |
| | | |
| | | 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.getVolume()); |
| | | 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 params |
| | | * @return 0:成功 1:名称不能为空 |
| | | *//* |
| | | public Integer updateTerminal(BroadcastParams params, Long userId) { |
| | | |
| | | // 校验名称合法性 |
| | | if(null == params.getTerminalName() || "".equals(params.getTerminalName())){ |
| | | return 1; |
| | | } |
| | | if(null == params.getDefaultVolumn() || params.getDefaultVolumn() < 0) { |
| | | params.setDefaultVolumn(0); |
| | | } |
| | | |
| | | BroadcastTerminalV2Entity b = new BroadcastTerminalV2Entity(); |
| | | b.setId(params.getTerminalId()); |
| | | b.setTerminalName(params.getTerminalName()); |
| | | b.setStreetlightId(params.getStreetlightId()); |
| | | b.setExist(1); |
| | | // API调用修改终端音量 |
| | | TerminalAPIUtils.changeVol(params.getTerminalId(),params.getDefaultVolumn(),userId); |
| | | |
| | | broadcastTerminalV2Dao.update(b); |
| | | return 0; |
| | | } |
| | | |
| | | */ |
| | | |
| | | /** |
| | | * 音量修改 |
| | | * |
| | | * @param params |
| | | * @return |
| | | */ |
| | | public boolean changeVol(BroadcastTerminalV2Param params) { |
| | | return TerminalAPIUtils.changeVol(params.getId(), params.getDefaultVolumn()); |
| | | 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 TerminalVO getIpTerminalDetail(Integer id) { |
| | | return TerminalAPIUtils.getTerminalInfo(id); |
| | | 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; |
| | | } |
| | | |
| | | |
| | |
| | | * @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); |
| | | return updateById(byId); |
| | | boolean flag = updateById(byId); |
| | | /** |
| | | * IP音柱修改设备名称日志记录开始 |
| | | */ |
| | | String content = "{设备Id:" + id + ",修改后名称:" + name + "}"; |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "IP音柱修改设备名", content); |
| | | /** |
| | | * IP音柱改设备名称日志记录结束 |
| | | */ |
| | | return flag; |
| | | } |
| | | |
| | | |
| | | public static Object getInfo() { |
| | | return TerminalAPIUtils.getTerminalInfo(25); |
| | | } |
| | | |
| | | /** |
| | | * 向Redis中存入设备状态 |
| | | */ |
| | | public void setCacheData() { |
| | | //服务器所有音柱信息 |
| | | List<TerminalDto> list = TerminalAPIUtils.getTerminalList(); |
| | | list.forEach( |
| | | device -> { |
| | | RedisDeviceStatus deviceStatus = new RedisDeviceStatus(); |
| | | deviceStatus.setDeviceId(device.getId().toString()); |
| | | if (device != null) { |
| | | //空闲 1、 工作中 2 或者 4、 断线 0, 报 错 8 |
| | | switch (device.getStatus()) { |
| | | case 1: |
| | | case 2: |
| | | case 4: |
| | | deviceStatus.setStatus(0); |
| | | break; |
| | | case 0: |
| | | deviceStatus.setStatus(1); |
| | | break; |
| | | case 8: |
| | | deviceStatus.setStatus(0); |
| | | break; |
| | | default: |
| | | deviceStatus.setStatus(1); |
| | | |
| | | } |
| | | } |
| | | redisUtils.set(DeviceRedisKey.IP_BROADCAST + device.getId(), JSON.toJSONString(deviceStatus)); |
| | | // redisUtils.delete(DeviceRedisKey.IP_BROADCAST + device.getId()); |
| | | } |
| | | ); |
| | | |
| | | } |
| | | } |