2021与蓝度共同重构项目,服务端
Van333
2022-12-29 727a69f859060093e685582fa10e5de82dcc138a
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeService.java
@@ -1,18 +1,25 @@
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.EquipmentInfomation;
import com.sandu.ximon.admin.vo.TerminalVO;
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;
@@ -23,29 +30,19 @@
@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;
        //为空是超管
        if (SecurityUtils.getClientId() == null) {
            server = broadcastTerminalV2EntityMapper.listAll(null);
        } else {
            server = broadcastTerminalV2EntityMapper.listAll(SecurityUtils.getUserId());
        }
        List<BroadcastTerminalV2Entity> server = broadcastTerminalV2EntityMapper.listAll();
        List<TerminalVO> list = TerminalAPIUtils.getTerminalList();
        List<TerminalDto> list = TerminalAPIUtils.getTerminalList();
        System.out.println(list);
        list.stream().forEach(item -> {
            //  音柱服务器终端ID
@@ -66,19 +63,65 @@
                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 (baseConditionVO != null && 2 == broadcastTerminalV2Param.getWorkState()) {
            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), orderBy);
        }
        List<BroadcastTerminalV2EntityBo> broadcastTerminalV2EntityBos;
@@ -100,23 +143,23 @@
            }
        }
        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;
@@ -128,6 +171,49 @@
        } 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;
    }
    /**
@@ -154,42 +240,26 @@
    }
    /**
     * 修改终端
     * @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;
    }
    /**
@@ -201,8 +271,12 @@
        if (id == null || id.trim().length() == 0) {
            return equipmentInfo;
        }
        equipmentInfo.setEquipmentMac(id);
        TerminalVO terminalInfo = TerminalAPIUtils.getTerminalInfo(Integer.valueOf(id));
        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()) {
@@ -238,15 +312,70 @@
     * @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 RuntimeException("该设备不属于您,不能修改设备信息");
        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());
                }
        );
    }
}