2021与蓝度共同重构项目,服务端
liuhaonan
2022-11-04 e55c8b0a92eb9715edd90c31dfd4de51a47b588b
changes
已修改25个文件
已添加1个文件
301 ■■■■■ 文件已修改
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 13 ●●●●● 补丁 | 查看 | 原始文档 | 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 10 ●●●●● 补丁 | 查看 | 原始文档 | 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 8 ●●●● 补丁 | 查看 | 原始文档 | 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 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeMissionService.java 23 ●●●● 补丁 | 查看 | 原始文档 | 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 18 ●●●● 补丁 | 查看 | 原始文档 | 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) {
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;
/**
 * æ‘„像头
 */
@@ -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));
    }
    /**
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,7 +61,8 @@
        return save(file);
    }
    public boolean deleteFile(Long fileId) {
    public boolean deleteFile(List<Long> fileIds) {
        fileIds.forEach(fileId -> {
        IpVolumeFile byId = getById(fileId);
        String bucketName;
        if (SecurityUtils.getClientId() == null) {
@@ -85,7 +86,8 @@
         * éŸ³æŸ±æ–‡ä»¶åˆ é™¤ æ—¥å¿—记录结束
         */
        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,20 +321,26 @@
    /**
     * åˆ é™¤ä»»åŠ¡
     *
     * @param taskId
     * @param taskIds
     * @return0:成功 1:任务不处于空闲状态 2:服务器删除失败
     */
    public Integer deleteMission(Integer 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 -1;
                        return;
            }
            removeById(taskId);
            broadcastV2TaskFileService.deleteByTaskId(taskId);
            broadcastV2TaskTerminalService.deleteByTaskId(taskId);
//            broadcastV2TaskTerminalService.removeById(taskId);
                } else {
                    delIds.add(taskId);
        }
        /**
@@ -347,9 +353,16 @@
        /**
         * IP音柱任务删除 æ—¥å¿—记录结束
         */
            });
        } else {
            throw new BusinessException("任务id不能为空");
        }
        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,11 +175,15 @@
    /**
     * åˆ é™¤æ‘„像头
     *
     * @param Id
     * @param
     * @return
     */
    public boolean deleteMonitor(Long Id) {
        Monitor monitor = getById(Id);
    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("找不到摄像头");
        }
@@ -198,7 +202,13 @@
        /**
         * åˆ é™¤æ‘„像头日志记录结束
         */
        return removeById(Id);
                        idList.add(monitor.getId());
                    }
            );
        }
        //全部删除成功
        return removeByIds(idList);
    }
    /**
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;
    }
}