2021与蓝度共同重构项目,服务端
liuhaonan
2022-11-04 e55c8b0a92eb9715edd90c31dfd4de51a47b588b
changes
已修改25个文件
已添加1个文件
423 ■■■■■ 文件已修改
dao/src/main/resources/mapper/LightMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeFileController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeMissionController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LEDProgramController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LEDProgramFileController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LedSFileController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MQTTTestController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MonitorController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleGroupController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/XiXunController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/util/SupplementUtils.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeFileService.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeMissionService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LEDProgramFileService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LEDProgramService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LedSFileService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/Base64Util.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/LightMapper.xml
@@ -75,7 +75,7 @@
                )
            </if>
            <if test="deviceCode != null and deviceCode!= ''">
                AND t2.device_code = #{deviceCode}
                AND t1.device_code = #{deviceCode}
            </if>
        </where>
    </select>
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeFileController.java
@@ -43,16 +43,16 @@
        return ResponseUtil.success(ipVolumeFileService.addFile(fileParam));
    }
    @PostMapping("/delete/{fileId}")
    public ResponseVO<Object> deleteFile(@PathVariable Long fileId) {
    @PostMapping("/delete")
    public ResponseVO<Object> deleteFile(@RequestBody List<Long> fileIds) {
        if (!permissionConfig.check(MenuEnum.IP_BROADCAST_FILE_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        List<BroadcastV2TaskFile> list = v2TaskFileService.list(Wrappers.lambdaQuery(BroadcastV2TaskFile.class).eq(BroadcastV2TaskFile::getFileId, fileId));
        List<BroadcastV2TaskFile> list = v2TaskFileService.list(Wrappers.lambdaQuery(BroadcastV2TaskFile.class).in(BroadcastV2TaskFile::getFileId, fileIds));
        if (list.size() != 0) {
            throw new BusinessException("此文件正在被其他任务占用");
        }
        return ResponseUtil.success(ipVolumeFileService.deleteFile(fileId));
        return ResponseUtil.success(ipVolumeFileService.deleteFile(fileIds));
    }
    @GetMapping("/list")
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeMissionController.java
@@ -1,19 +1,16 @@
package com.sandu.ximon.admin.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.param.IpVolumeMissionParam;
import com.sandu.ximon.admin.security.PermissionConfig;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.service.IpVolumeMissionService;
import com.sandu.ximon.dao.domain.IpVolumeMission;
import com.sandu.ximon.dao.enums.MenuEnum;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * @Author liuhaonan
@@ -77,13 +74,13 @@
    }
    @PostMapping("/delete/{taskId}")
    public ResponseVO<Object> deleteMission(@PathVariable Integer taskId) {
    @PostMapping("/delete")
    public ResponseVO<Object> deleteMission(@RequestBody List<Integer> taskIds) {
        if (!permissionConfig.check(MenuEnum.IP_BROADCAST_TASK_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        //  0:成功   1:任务不处于空闲状态 2:服务器删除失败
        Integer result = ipVolumeMissionService.deleteMission(taskId);
        Integer result = ipVolumeMissionService.deleteMission(taskIds);
        if (result == 0) {
            return ResponseUtil.success("删除成功");
        } else if (result == 1) {
@@ -106,7 +103,7 @@
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.successPage(ipVolumeMissionService.missionList(baseConditionVO, keyword,order,seq));
        return ResponseUtil.successPage(ipVolumeMissionService.missionList(baseConditionVO, keyword, order, seq));
    }
    //获取任务详情
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LEDProgramController.java
@@ -11,6 +11,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * LED节目处理
 */
@@ -46,12 +48,12 @@
    }
    @PostMapping("/delete/{pid}")
    public ResponseVO<Object> deleteLEDProgram(@PathVariable Long pid) {
    @PostMapping("/delete")
    public ResponseVO<Object> deleteLEDProgram(@RequestBody List<Long> pids) {
        if (!permissionConfig.check(MenuEnum.LED_N_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(ledProgramService.deleteProgram(pid));
        return ResponseUtil.success(ledProgramService.deleteProgram(pids));
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LEDProgramFileController.java
@@ -14,6 +14,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * @Author liuhaonan
 * @Date 2021/12/21 11:35
@@ -36,12 +38,12 @@
        return ResponseUtil.success(ledProgramFileService.addProgramFile(param));
    }
    @PostMapping("/delete/{fileId}")
    public ResponseVO<Object> deleteLEDProgram(@PathVariable Long fileId) {
    @PostMapping("/delete")
    public ResponseVO<Object> deleteLEDProgram(@RequestBody List<Long> fileIds) {
        if (!permissionConfig.check(MenuEnum.LED_FILE_N_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(ledProgramFileService.deleteFile(fileId));
        return ResponseUtil.success(ledProgramFileService.deleteFile(fileIds));
    }
    @GetMapping("/list")
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LedSFileController.java
@@ -46,12 +46,12 @@
//        return ResponseUtil.success(aliOssFileService.uploadFile(file));
    }
    @PostMapping("/delete/{fileId}")
    public ResponseVO<Object> deleteLEDProgram(@PathVariable Long fileId) {
    @PostMapping("/delete")
    public ResponseVO<Object> deleteLEDProgram(@RequestBody List<Long> fileIds) {
        if (!permissionConfig.check(MenuEnum.LED_FILE_S_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(ledProgramFileService.deleteFile(fileId));
        return ResponseUtil.success(ledProgramFileService.deleteFile(fileIds));
    }
    @GetMapping("/list")
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MQTTTestController.java
@@ -4,14 +4,9 @@
import com.github.pagehelper.util.StringUtil;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.security.annotation.AnonymousAccess;
import com.sandu.common.util.ResponseUtil;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.manager.iot.frame.A1Frame;
import com.sandu.ximon.admin.manager.iot.frame.A5Frame;
import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder;
import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.A1TernaryCodeReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.MainBoardDataTransparentReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonRequest;
@@ -21,19 +16,20 @@
import com.sandu.ximon.admin.param.MQTTTestPrarm;
import com.sandu.ximon.admin.security.PermissionConfig;
import com.sandu.ximon.admin.service.PoleService;
import com.sandu.ximon.admin.utils.Base64Util;
import com.sandu.ximon.dao.domain.Pole;
import com.sandu.ximon.dao.enums.MenuEnum;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.LinkedHashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.LinkedHashMap;
import java.util.Map;
/**
 * MQTT测试
@@ -75,7 +71,10 @@
        InvokeParam param = new InvokeParam();
        param.setOperate("1001");
        param.setFrame(mqttTestPrarm.getFrameStr());
        //字符串mqttTestPrarm.getFrameStr()转base64
        String frame = Base64Util.toBase64Frame(mqttTestPrarm.getFrameStr());;
        System.out.println("frame: "+frame);
        param.setFrame(frame);
        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(pole.getDeviceCode(), param);
        if (commonFrame == null || !commonFrame.isValidate()) {
            throw new BusinessException("响应数据校验失败,请重新请求数据!");
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MonitorController.java
@@ -14,6 +14,8 @@
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * æ‘„像头
 */
@@ -43,9 +45,9 @@
        //返回查询的摄像头信息列表
        CommonPage commonPage;
        if (monitorParam == null) {
            commonPage = monitorService.listMonitorByKeyword(baseConditionVO,order,seq, new MonitorParam());
            commonPage = monitorService.listMonitorByKeyword(baseConditionVO, order, seq, new MonitorParam());
        } else {
            commonPage = monitorService.listMonitorByKeyword(baseConditionVO,order,seq, monitorParam);
            commonPage = monitorService.listMonitorByKeyword(baseConditionVO, order, seq, monitorParam);
        }
        return ResponseUtil.success(commonPage);
@@ -55,15 +57,15 @@
    /**
     * åˆ é™¤æ•°æ®åº“中萤石云摄像头
     *
     * @param id
     * @param
     * @return
     */
    @PostMapping("/delete/{id}")
    public ResponseVO<Object> deleteMonitor(@PathVariable Long id) {
    @PostMapping("/delete")
    public ResponseVO<Object> deleteMonitor(@RequestBody List<Long> ids) {
        if (!permissionConfig.check(MenuEnum.MONITOR_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        boolean result = monitorService.deleteMonitor(id);
        boolean result = monitorService.deleteMonitor(ids);
        if (result) {
            return ResponseUtil.success(null);
        } else {
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -62,12 +62,12 @@
        return ResponseUtil.success(poleService.updatePole(poleId, param));
    }
    @PostMapping("/delete/{poleId}")
    public ResponseVO<Object> deletePole(@PathVariable Long poleId) {
    @PostMapping("/delete")
    public ResponseVO<Object> deletePole(@RequestBody List<Long> poleIds) {
        if (!permissionConfig.check(MenuEnum.POLE_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.deletePole(poleId));
        return ResponseUtil.success(poleService.deletePole(poleIds));
    }
    @PostMapping("/listDetail")
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleGroupController.java
@@ -13,6 +13,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * åˆ†ç»„列表功能
 *
@@ -42,12 +44,12 @@
        return ResponseUtil.success(poleGroupService.updateGroup(groupId, param));
    }
    @PostMapping("/delete/{groupId}")
    public ResponseVO<Object> delGroup(@PathVariable Long groupId) {
    @PostMapping("/delete")
    public ResponseVO<Object> delGroup(@RequestBody List<Long> groupIds) {
        if (!permissionConfig.check(MenuEnum.GROUP_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleGroupService.deleteGroup(groupId));
        return ResponseUtil.success(poleGroupService.deleteGroup(groupIds));
    }
    @GetMapping("/list")
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/XiXunController.java
@@ -96,15 +96,15 @@
    /**
     * åˆ é™¤èŠ‚ç›®
     *
     * @param pid
     * @param
     * @return
     */
    @PostMapping("/deleteProgram/{pid}")
    public ResponseVO<Object> deleteProgram(@PathVariable Long pid) {
    @PostMapping("/deleteProgram")
    public ResponseVO<Object> deleteProgram(@RequestBody List<Long> pids) {
        if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(xiXunPlayerService.deleteProgram(pid));
        return ResponseUtil.success(xiXunPlayerService.deleteProgram(pids));
    }
    /**
@@ -468,12 +468,12 @@
     * @return
     */
    @PostMapping("/deletePushSchedule")
    public ResponseVO<Object> deletePushSchedule( @RequestBody Long[] lightemitIds) {
    public ResponseVO<Object> deletePushSchedule(@RequestBody Long[] lightemitIds) {
        if (!permissionConfig.check(MenuEnum.XIXUN_PLAN_PUSH_SCHEDULE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(scheduleService.deleteSchedulePush( lightemitIds));
        return ResponseUtil.success(scheduleService.deleteSchedulePush(lightemitIds));
    }
    /**
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java
@@ -1,8 +1,6 @@
package com.sandu.ximon.admin.manager.iot.amqp.processor;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightErrorCodeReportInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightHeartbeatReportInnerFrame;
@@ -12,7 +10,6 @@
import com.sandu.ximon.admin.service.LightReportDataService;
import com.sandu.ximon.admin.service.LightReportErrorService;
import com.sandu.ximon.admin.service.LightService;
import com.sandu.ximon.dao.domain.LightReportError;
import lombok.extern.slf4j.Slf4j;
/**
@@ -42,6 +39,9 @@
            log.info("心跳相应");
            A5LightHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5LightHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
            if ("363832544e5008ff1741ffff".equals(deviceName)) {
                System.out.println("心跳包: " + JSON.toJSONString(heartbeatReportInnerFrame));
            }
            if (heartbeatReportInnerFrame.isValidate()) {
                SpringContextHolder.getBean(LightReportDataService.class).saveReportData(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage());
                //心跳包上报不保存硬件设备信息
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/util/SupplementUtils.java
@@ -68,6 +68,18 @@
        return d;
    }
    public static final String bytesToHexString(byte[] bArray) {
        StringBuffer sb = new StringBuffer(bArray.length);
        String sTemp;
        for (int i = 0; i < bArray.length; i++) {
            sTemp = Integer.toHexString(0xFF & bArray[i]);
            if (sTemp.length() < 2)
                sb.append(0);
            sb.append(sTemp.toLowerCase());
        }
        return sb.toString();
    }
    /**
     * å­—符串转换为16进制字符串
     *
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeFileService.java
@@ -61,31 +61,33 @@
        return save(file);
    }
    public boolean deleteFile(Long fileId) {
        IpVolumeFile byId = getById(fileId);
        String bucketName;
        if (SecurityUtils.getClientId() == null) {
            bucketName = MinIoConstant.ADMIN_BROADCAST_FILE.getBucketName();
        } else {
            bucketName = MinIoConstant.BROADCAST_FILE.getBucketName() + SecurityUtils.getUserId();
        }
        if (byId == null) {
            throw new BusinessException("找不到对应文件");
        }
        boolean b = minIoUtil.deleteFile(bucketName, byId.getFileName());
    public boolean deleteFile(List<Long> fileIds) {
        fileIds.forEach(fileId -> {
            IpVolumeFile byId = getById(fileId);
            String bucketName;
            if (SecurityUtils.getClientId() == null) {
                bucketName = MinIoConstant.ADMIN_BROADCAST_FILE.getBucketName();
            } else {
                bucketName = MinIoConstant.BROADCAST_FILE.getBucketName() + SecurityUtils.getUserId();
            }
            if (byId == null) {
                throw new BusinessException("找不到对应文件");
            }
            boolean b = minIoUtil.deleteFile(bucketName, byId.getFileName());
//        if (!b) {
//            throw new BusinessException("服务器删除失败");
//        }
        /**
         * éŸ³æŸ±æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录开始
         */
        String content = "删除文件id:" + fileId + "音柱文件名称:" + byId.getFileName() + ",文件大小:" + byId.getOriginSize() + ",文件路径:" + byId.getFileUrl();
        StoreOperationRecordsUtils.storeOperationData(null, null, "音柱文件删除", content);
        /**
         * éŸ³æŸ±æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录结束
         */
            /**
             * éŸ³æŸ±æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录开始
             */
            String content = "删除文件id:" + fileId + "音柱文件名称:" + byId.getFileName() + ",文件大小:" + byId.getOriginSize() + ",文件路径:" + byId.getFileUrl();
            StoreOperationRecordsUtils.storeOperationData(null, null, "音柱文件删除", content);
            /**
             * éŸ³æŸ±æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录结束
             */
        return removeById(fileId);
        });
        return removeByIds(fileIds);
    }
    public List<IpVolumeFile> ipVolumeFileList(BaseConditionVO baseConditionVO, String keyword, Integer order, Integer seq) {
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeMissionService.java
@@ -321,35 +321,48 @@
    /**
     * åˆ é™¤ä»»åŠ¡
     *
     * @param taskId
     * @param taskIds
     * @return0:成功 1:任务不处于空闲状态 2:服务器删除失败
     */
    public Integer deleteMission(Integer taskId) {
        Integer del = TaskAPIUtils.delTask(taskId);
        if (del == 0) {
            IpVolumeMission byId = getById(taskId);
            if (byId == null) {
                return -1;
            }
            removeById(taskId);
            broadcastV2TaskFileService.deleteByTaskId(taskId);
            broadcastV2TaskTerminalService.deleteByTaskId(taskId);
    public Integer deleteMission(List<Integer> taskIds) {
        //删除失败的集合
        List<Integer> delIds = new ArrayList<Integer>();
        if (!taskIds.isEmpty()) {
            taskIds.forEach(taskId -> {
                Integer del = TaskAPIUtils.delTask(taskId);
                if (del == 0) {
                    IpVolumeMission byId = getById(taskId);
                    if (byId == null) {
                        return;
                    }
                    removeById(taskId);
                    broadcastV2TaskFileService.deleteByTaskId(taskId);
                    broadcastV2TaskTerminalService.deleteByTaskId(taskId);
//            broadcastV2TaskTerminalService.removeById(taskId);
                } else {
                    delIds.add(taskId);
                }
                /**
                 * IP音柱任务删除 æ—¥å¿—记录开始
                 */
                String content = "{删除的任务ID:" + taskId
                        + ",任务删除结果:" + del
                        + " }";
                StoreOperationRecordsUtils.storeOperationData(null, null, "IP音柱任务删除", content);
                /**
                 * IP音柱任务删除 æ—¥å¿—记录结束
                 */
            });
        } else {
            throw new BusinessException("任务id不能为空");
        }
        /**
         * IP音柱任务删除 æ—¥å¿—记录开始
         */
        String content = "{删除的任务ID:" + taskId
                + ",任务删除结果:" + del
                + " }";
        StoreOperationRecordsUtils.storeOperationData(null, null, "IP音柱任务删除", content);
        /**
         * IP音柱任务删除 æ—¥å¿—记录结束
         */
        return del;
        if (delIds.isEmpty()) {
            return 0;
        } else {
            throw new BusinessException("部分删除失败,失败的集合为:" + delIds);
        }
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LEDProgramFileService.java
@@ -14,6 +14,8 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@AllArgsConstructor
public class LEDProgramFileService extends BaseServiceImpl<LEDProgramFileMapper, LEDProgramFile> {
@@ -43,20 +45,20 @@
        return save(file);
    }
    public boolean deleteFile(Long id) {
        LEDProgramFile byId = getById(id);
        if (byId == null) {
    public boolean deleteFile(List<Long> fileIds) {
        List<LEDProgramFile> ledProgramFiles = listByIds(fileIds);
        if (ledProgramFiles.isEmpty()) {
            throw new BusinessException("未找到该节目");
        }
        /**
         * è¯ºç“¦æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录开始
         */
        String content = "文件id:" + id + "文件内容:" + JSON.toJSONString(byId);
        String content = "文件id:" + fileIds + "文件内容:" + JSON.toJSONString(ledProgramFiles);
        StoreOperationRecordsUtils.storeOperationData(null, null, "诺瓦文件删除", content);
        /**
         * è¯ºç“¦æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录结束
         */
        return removeById(id);
        return removeByIds(fileIds);
    }
    public LambdaQueryWrapper<LEDProgramFile> listFile() {
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LEDProgramService.java
@@ -62,13 +62,13 @@
    }
    public boolean deleteProgram(Long id) {
        LEDProgram byId = getById(id);
        if (byId == null) {
    public boolean deleteProgram(List<Long> pids) {
        List<LEDProgram> ledPrograms = listByIds(pids);
        if (ledPrograms.isEmpty()) {
            throw new BusinessException("未找到该节目");
        }
        return removeById(id);
        return removeByIds(pids);
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LedSFileService.java
@@ -64,21 +64,24 @@
        return save(sFile);
    }
    public boolean deleteFile(Long id) {
        LedSFile byId = getById(id);
        if (byId == null) {
    public boolean deleteFile(List<Long> fileIds) {
        if (fileIds.isEmpty()) {
            throw new BusinessException("文件id不能为空");
        }
        List<LedSFile> ledSFiles = listByIds(fileIds);
        if (ledSFiles.isEmpty()) {
            throw new BusinessException("未找到该节目");
        }
        /**
         * ç†™æ±›æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录开始
         */
        String content = "文件内容id:" + id + "文件内容:" + JSON.toJSONString(byId);
        String content = "文件内容id:" + fileIds + "文件内容:" + JSON.toJSONString(ledSFiles);
        StoreOperationRecordsUtils.storeOperationData(null, null, "熙汛文件删除", content);
        /**
         * ç†™æ±›æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录结束
         */
        return removeById(id);
        return removeByIds(fileIds);
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
@@ -18,6 +18,7 @@
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.RedisUtils;
import com.sandu.ximon.dao.bo.LightReportDataBo;
import com.sandu.ximon.dao.domain.Light;
import com.sandu.ximon.dao.domain.LightReportData;
import com.sandu.ximon.dao.domain.Pole;
import com.sandu.ximon.dao.domain.PoleBinding;
@@ -241,6 +242,12 @@
        if (macCode.isEmpty()) {
            throw new BusinessException("mac不能为空");
        }
        Light light = SpringContextHolder.getBean(LightService.class)
                .getOne(Wrappers.lambdaQuery(Light.class).eq(Light::getDeviceCode, macCode));
        if (light == null) {
            throw new BusinessException("系统中不存在该单灯");
        }
        PageHelper.startPage(conditionVO.getPageNo(), conditionVO.getPageSize());
        List<LightReportData> list = list(Wrappers.lambdaQuery(LightReportData.class).eq(LightReportData::getDeviceCode, macCode));
        list.forEach(
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -175,30 +175,40 @@
    /**
     * åˆ é™¤æ‘„像头
     *
     * @param Id
     * @param
     * @return
     */
    public boolean deleteMonitor(Long Id) {
        Monitor monitor = getById(Id);
        if (monitor == null) {
            throw new BusinessException("找不到摄像头");
    public boolean deleteMonitor(List<Long> ids) {
        List<Long> idList = new ArrayList<Long>();
        List<Monitor> monitors = listByIds(ids);
        if (!monitors.isEmpty()) {
            monitors.forEach(
                    monitor -> {
                        if (monitor == null) {
                            throw new BusinessException("找不到摄像头");
                        }
                        PoleBinding one = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, monitor.getDeviceSerial()));
                        if (one != null) {
                            //删除摄像头设备前需要先解绑
                            poleBindingService.unBindPole(null, monitor.getDeviceSerial());
                        }
                        /**
                         * åˆ é™¤æ‘„像头日志记录开始
                         */
                        String content = "{摄像头Code:" + monitor.getDeviceSerial() + ", æ‘„像头名称:" + monitor.getDeviceName() + " }";
                        List<String> listCode = new ArrayList<>();
                        listCode.add(monitor.getDeviceSerial());
                        StoreOperationRecordsUtils.storeOperationData(listCode, null, "删除摄像头", content);
                        /**
                         * åˆ é™¤æ‘„像头日志记录结束
                         */
                        idList.add(monitor.getId());
                    }
            );
        }
        PoleBinding one = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, monitor.getDeviceSerial()));
        if (one != null) {
            //删除摄像头设备前需要先解绑
            poleBindingService.unBindPole(null, monitor.getDeviceSerial());
        }
        /**
         * åˆ é™¤æ‘„像头日志记录开始
         */
        String content = "{摄像头Code:" + monitor.getDeviceSerial() + ", æ‘„像头名称:" + monitor.getDeviceName() + " }";
        List<String> listCode = new ArrayList<>();
        listCode.add(monitor.getDeviceSerial());
        StoreOperationRecordsUtils.storeOperationData(listCode, null, "删除摄像头", content);
        /**
         * åˆ é™¤æ‘„像头日志记录结束
         */
        return removeById(Id);
        //全部删除成功
        return removeByIds(idList);
    }
    /**
@@ -216,7 +226,7 @@
        YSY_AccessTokenDto accessTokenDto = JSON.parseObject(s, YSY_AccessTokenDto.class);
        //二次获取
        if(accessTokenDto == null){
        if (accessTokenDto == null) {
            log.error("获取摄像头token失败,格式有误!");
            s = HttpUtil.post(YSY_URL + ACCESSTOKEN_URL, paramMap);
            accessTokenDto = JSON.parseObject(s, YSY_AccessTokenDto.class);
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
@@ -12,6 +12,7 @@
import com.sandu.ximon.dao.mapper.PoleBindingMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -32,6 +33,7 @@
     * @param param
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public boolean bindPole(Long poleId, PoleBindingParam param) {
        Integer deviceType = param.getDeviceType();
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupService.java
@@ -47,16 +47,16 @@
        return updateById(update);
    }
    public boolean deleteGroup(Long groupId) {
        PoleGroup poleGroup = getById(groupId);
        if (poleGroup == null) {
    public boolean deleteGroup(List<Long> groupIds) {
        List<PoleGroup> poleGroups = listByIds(groupIds);
        if (poleGroups.isEmpty()) {
            throw new BusinessException("未找到该分组");
        }
        /**
         * åˆªé™¤
         */
        poleGroupRelationService.remove(Wrappers.lambdaQuery(PoleGroupRelation.class).eq(PoleGroupRelation::getPoleGroupId, groupId));
        return removeById(groupId);
        poleGroupRelationService.remove(Wrappers.lambdaQuery(PoleGroupRelation.class).in(PoleGroupRelation::getPoleGroupId, groupIds));
        return removeByIds(groupIds);
    }
    public List<PoleGroup> groupList(BaseConditionVO baseConditionVO, String keyword, Integer order, Integer seq) {
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java
@@ -26,6 +26,7 @@
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.io.File;
@@ -266,6 +267,7 @@
    }
    @Transactional(rollbackFor = Exception.class)
    public void savePoleLightemit(PoleLightemitEntity poleLightemit) {
        boolean save = this.save(poleLightemit);
        // ç»‘定灯杆
@@ -273,9 +275,13 @@
        if (save && poleLightemit.getStreetlightId() != null) {
            PoleBindingParam poleBindingParam = new PoleBindingParam();
            poleBindingParam.setDeviceCode(poleLightemit.getLightemitControlCode());
            poleBindingParam.setDeviceType(1);
            poleBindingParam.setDeviceType(10);
            poleBindingParam.setDeviceName(poleLightemit.getLightemitName());
            poleBindingService.bindPole(poleLightemit.getStreetlightId(), poleBindingParam);
            if (SpringContextHolder.getBean(PoleService.class).getById(poleLightemit.getStreetlightId()) == null) {
                throw new BusinessException("灯杆不存在");
            }
            boolean b = poleBindingService.bindPole(poleLightemit.getStreetlightId(), poleBindingParam);
        }
        /**
@@ -335,7 +341,7 @@
    public boolean deletePoleLightemit(List<Long> ledIds) {
        List<PoleLightemitEntity> poleLightemitEntities = listByIds(ledIds);
        if (poleLightemitEntities != null && poleLightemitEntities.size() != 0) {
        if (poleLightemitEntities != null && poleLightemitEntities.size() == 0) {
            throw new BusinessException("设备不存在");
        }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -129,26 +129,26 @@
    /**
     * åˆ é™¤ç¯æ†
     */
    public boolean deletePole(Long poleId) {
        Pole pole = getById(poleId);
        if (pole == null) {
    public boolean deletePole(List<Long> poleIds) {
        List<Pole> poles = listByIds(poleIds);
        if (poles.isEmpty()) {
            throw new BusinessException("未找到该灯杆");
        }
        // åˆ é™¤ç¯æ†ç»‘定关系
        poleBindingService.remove(Wrappers.<PoleBinding>lambdaQuery().eq(PoleBinding::getPoleId, poleId));
        poleBindingService.remove(Wrappers.<PoleBinding>lambdaQuery().in(PoleBinding::getPoleId, poleIds));
        SpringContextHolder.getBean(LightTaskPoleRelationService.class)
                .remove(Wrappers.lambdaQuery(LightTaskPoleRelation.class).eq(LightTaskPoleRelation::getPoleId, poleId));
                .remove(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, poleIds));
        /**
         * åˆ é™¤ç¯æ†æ—¥å¿—记录开始
         */
        String content = "{灯杆Code:" + pole.getDeviceCode() + ", ç¯æ†åç§°ï¼š" + pole.getPoleName() + " }";
        String content = "{灯杆id:" + poles + " }";
        StoreOperationRecordsUtils.storeOperationData(null, null, "删除灯杆", content);
        /**
         * åˆ é™¤ç¯æ†æ—¥å¿—记录结束
         */
        return removeById(poleId);
        return removeByIds(poleIds);
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
@@ -175,22 +175,21 @@
        return updateResult;
    }
    public boolean deleteProgram(Long pid) {
        PoleXixunPlayerEntity byId = getById(pid);
        if (byId == null) {
    public boolean deleteProgram(List<Long> pids) {
        List<PoleXixunPlayerEntity> poleXixunPlayerEntities = listByIds(pids);
        if (poleXixunPlayerEntities.isEmpty()) {
            throw new BusinessException("未找到该节目");
        }
        /**
         * ç†™æ±›èŠ‚ç›®åˆ é™¤æ—¥å¿—è®°å½•å¼€å§‹
         */
        String content = "{删除的节目id:" + byId.getProgramId()
                + ", åˆ é™¤çš„节目名称:" + byId.getProgramName()
        String content = "{删除的节目id:" + pids
                + " }";
        StoreOperationRecordsUtils.storeOperationData(null, null, "熙汛节目删除", content);
        /**
         * ç†™æ±›èŠ‚ç›®åˆ é™¤æ—¥å¿—è®°å½•ç»“æŸ
         */
        return removeById(pid);
        return removeByIds(pids);
    }
    public Object getByPid(Long pid) {
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/Base64Util.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.sandu.ximon.admin.utils;
import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils;
import org.apache.commons.codec.binary.Base64;
public class Base64Util {
    /**
     * å°†äºŒè¿›åˆ¶æ•°æ®ç¼–码为BASE64字符串
     * @param binaryData
     * @return
     */
    public static String encode(byte[] binaryData) {
        try {
            return new String(Base64.encodeBase64(binaryData));
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * å°†BASE64字符串恢复为二进制数据
     * @param base64String
     * @return
     */
    public static byte[] decode(String base64String) {
        try {
            return Base64.decodeBase64(base64String.getBytes());
        } catch (Exception e) {
            return null;
        }
    }
//    public static void main(String[] args) {
//        byte[] bytes = "/qUBAAv+AQAD//8yjUBF9xgeI0U=".getBytes();
//        byte[] bytes1 = Base64.decodeBase64(bytes);
//        System.out.println(SupplementUtils.bytesToHexString(bytes1));
//    }
    public static String toBase64Frame (String hexStr) {
//        BigInteger bigInteger = new BigInteger(hexStr, 16);   //  æ­¤æ–¹å¼ä¼šäº§ç”Ÿå¤´éƒ¨å¤šå‡ºç©ºçš„一字节
//        byte[] bytes = bigInteger.toByteArray();
//        System.out.println("origin:"+hexStr);
        byte[] bytes = SupplementUtils.hexStringToBytes(hexStr);
        String base64 = encode(bytes);
        return base64;
    }
}