2021与蓝度共同重构项目,服务端
liuhaonan
2022-10-25 dda268997ca8f8a364f7c19b45d7a43a50a98efe
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LedScheduleService.java
@@ -3,17 +3,27 @@
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.ximon.admin.config.RealtimeServerBean;
import com.sandu.ximon.admin.param.LEDScheduleParam_xixun;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.JsonUtil;
import com.sandu.ximon.admin.utils.LightemitUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.admin.utils.request.Schedules;
import com.sandu.ximon.admin.utils.request.Task;
import com.sandu.ximon.admin.utils.request.TaskSchedules;
import com.sandu.ximon.admin.utils.request.requestbody.GetSchedules;
import com.sandu.ximon.admin.utils.request.requestbody.Task;
import com.sandu.ximon.admin.vo.LedScheduleVO;
import com.sandu.ximon.admin.vo.XiXunResultVO;
import com.sandu.ximon.dao.domain.LedScheduleEntity;
import com.sandu.ximon.dao.domain.PoleLightemitEntity;
import com.sandu.ximon.dao.enums.OrderByEnums;
import com.sandu.ximon.dao.mapper.LedScheduleEntityMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@@ -38,32 +48,32 @@
    public boolean insert(LEDScheduleParam_xixun ledEntity) {
        LedScheduleEntity ledScheduleEntity = new LedScheduleEntity();
        BeanUtil.copyProperties(ledEntity,ledScheduleEntity);
        BeanUtil.copyProperties(ledEntity, ledScheduleEntity);
        ledScheduleEntity.setUserId(SecurityUtils.getClientId());
        Schedules schedules = new Schedules();
        Task task = new Task();
        TaskSchedules taskSchedules = new TaskSchedules();
        if(ledEntity.getStartTime() =="" || ledEntity.getEndTime() == "" || ledEntity.getStartTime() == null || ledEntity.getEndTime() ==null ){
        if (ledEntity.getStartTime() == "" || ledEntity.getEndTime() == "" || ledEntity.getStartTime() == null || ledEntity.getEndTime() == null) {
            schedules.setTimeType("All");
        }else {
        } else {
            schedules.setTimeType("Range");
            schedules.setStartTime(ledEntity.getStartTime());
            schedules.setEndTime(ledEntity.getEndTime());
        }
        if(ledEntity.getStartDate() =="" || ledEntity.getEndDate() == "" || ledEntity.getStartDate() == null || ledEntity.getEndDate() ==null ){
        if (ledEntity.getStartDate() == "" || ledEntity.getEndDate() == "" || ledEntity.getStartDate() == null || ledEntity.getEndDate() == null) {
            schedules.setDateType("All");
        }else {
        } else {
            schedules.setDateType("Range");
            schedules.setStartDate(ledEntity.getStartDate());
            schedules.setEndDate(ledEntity.getEndDate());
        }
        if(ledEntity.getWeek().length != 0){
        if (ledEntity.getWeek().length != 0) {
            schedules.setFilterType("Week");
            schedules.setWeekFilter(ledEntity.getWeek());
        }else {
        } else {
            schedules.setFilterType("None");
        }
        List list =new ArrayList();
        List list = new ArrayList();
        list.add(schedules);
        task.setSchedules(list);
        task.setCreateDate(ledEntity.getCreateDate());
@@ -79,55 +89,268 @@
        String json = JSON.toJSONString(taskSchedules, SerializerFeature.WriteMapNullValue);
//         String json = new Gson().toJson(taskSchedules);
        ledScheduleEntity.setSchedule(json);
       return this.save(ledScheduleEntity);
        if (SecurityUtils.getClientId() != null) {
            ledScheduleEntity.setUserId(SecurityUtils.getUserId());
            if (clientService.findClientId()) {
                ledScheduleEntity.setClientId(clientService.getClientId());
            }
        }
        /**
         * 熙汛定时更改 日志记录开始
         */
        String content = "{熙汛定时id:" + ledScheduleEntity.getId() + ",熙汛定时名称:" + ledScheduleEntity.getName() + "熙汛定时内容:" + JSON.toJSONString(ledScheduleEntity.getSchedule()) + " }";
        StoreOperationRecordsUtils.storeOperationData(null, null, "熙汛定时任务更改", content);
        /**
         * 熙汛定时更改 日志记录结束
         */
        return this.save(ledScheduleEntity);
    }
    /**
     * 定时推送
     *
     * @param scheduleId
     * @param lightemitIds
     * @return
     */
    public void ledschedulepush(Integer scheduleId, Long[] lightemitIds) {
    public Map<String, List<XiXunResultVO>> ledschedulepush(Integer scheduleId, Long[] lightemitIds) {
        LedScheduleEntity ledScheduleEntity = baseMapper.selectById(scheduleId);
//        SendCommand sendCommand = new SendCommand();
//        sendCommand.setTask(ledScheduleEntity.getSchedule());
//        String json = new Gson().toJson(sendCommand);
//        LedScheduleEntity ledScheduleEntity = baseMapper.selectById(scheduleId);
        LedScheduleEntity ledScheduleEntity = getById(scheduleId);
        if (ledScheduleEntity == null) {
            throw new BusinessException("该定时任务不存在");
        }
        Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(Arrays.asList(lightemitIds));
        Map<String, List<XiXunResultVO>> result=new HashMap<>();
        List<XiXunResultVO> success =new ArrayList<>();
        List<XiXunResultVO> fail =new ArrayList<>();
        if(poleLightemitEntities != null){
            for (PoleLightemitEntity entity: poleLightemitEntities) {
                lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), ledScheduleEntity.getSchedule());
        if (poleLightemitEntities != null) {
            for (PoleLightemitEntity entity : poleLightemitEntities) {
                String post = lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), ledScheduleEntity.getSchedule());
                XiXunResultVO vo=new XiXunResultVO();
                vo.setLightemitId(entity.getLightemitId());
                vo.setLightemitName(entity.getLightemitName());
                if(post.contains("{\"_type\":\"success\",\"_id\":")){
                    success.add(vo);
                }else {
                    fail.add(vo);
                }
            }
        }
        /**
         * 熙汛定时推送 日志记录开始
         */
        String message = "";
        List<String> listCode = new ArrayList<>();
        for (PoleLightemitEntity entity : poleLightemitEntities) {
            listCode.add(entity.getLightemitControlCode());
            message += "[屏幕Code:" + entity.getLightemitControlCode() + "屏幕名称:" + entity.getLightemitName() + "],";
        }
        String content = "{熙汛定时id:" + ledScheduleEntity.getId() + ",熙汛定时名称:" + ledScheduleEntity.getName() + "熙汛屏幕信息:" + message + " }";
        StoreOperationRecordsUtils.storeOperationData(listCode, null, "推送熙汛定时任务", content);
        /**
         * 熙汛定时任务推送 日志记录结束
         */
        result.put("success",success);
        result.put("fail",fail);
        return result;
    }
    public boolean updateSchedule(LEDScheduleParam_xixun paramXixun){
        if(paramXixun.getId()==null){
    /**
     * 清空定时
     *
     * @param
     * @param lightemitIds
     */
    public Map<String, List<XiXunResultVO>> deleteSchedulePush( Long[] lightemitIds) {
        Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(Arrays.asList(lightemitIds));
        Map<String, List<XiXunResultVO>> result=new HashMap<>();
        List<XiXunResultVO> success =new ArrayList<>();
        List<XiXunResultVO> fail =new ArrayList<>();
        if (poleLightemitEntities != null) {
            for (PoleLightemitEntity entity : poleLightemitEntities) {
//                lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), ledScheduleEntity.getSchedule());
                String post = lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), "{\"type\": \"timedScreening\",\"task\":{}}");
                XiXunResultVO vo=new XiXunResultVO();
                vo.setLightemitId(entity.getLightemitId());
                vo.setLightemitName(entity.getLightemitName());
                if(post.contains("{\"_type\":\"success\",\"_id\":")){
                   success.add(vo);
                }else {
                    fail.add(vo);
                }
                System.out.println(post+"---------");
            }
        }
        /**
         * 清空熙汛定时任务 日志记录开始
         */
        String message = "";
        List<String> listCode = new ArrayList<>();
        for (PoleLightemitEntity entity : poleLightemitEntities) {
            listCode.add(entity.getLightemitControlCode());
            message += "[屏幕Code:" + entity.getLightemitControlCode() + "屏幕名称:" + entity.getLightemitName() + "],";
        }
        String content = "{熙汛屏幕信息:" + message + " }";
        StoreOperationRecordsUtils.storeOperationData(listCode, null, "清空熙汛定时任务", content);
        /**
         * 清空熙汛定时任务 日志记录结束
         */
        result.put("success",success);
        result.put("fail",fail);
        return result;
    }
    public boolean updateSchedule(LEDScheduleParam_xixun paramXixun) {
        if (paramXixun.getId() == null) {
            throw new BusinessException("参数错误");
        }
        LedScheduleEntity byId = getById(paramXixun.getId());
        if(byId==null){
        if (byId == null) {
            throw new BusinessException("未找到该定时数据");
        }
        boolean result=false;
       if( removeById(paramXixun.getId())){
           result =  insert(paramXixun);
       }
       return result;
        boolean result = false;
        if (removeById(paramXixun.getId())) {
            result = insert(paramXixun);
        }
        return result;
    }
    public LedScheduleEntity getSchedule(Integer id){
        if(id==null){
    public LedScheduleEntity getSchedule(Integer id) {
        if (id == null) {
            throw new BusinessException("参数错误");
        }
        LedScheduleEntity byId = getById(id);
        if(byId==null){
        if (byId == null) {
            throw new BusinessException("未找到该定时数据");
        }
       //List<Map> schedule = JSON.parseArray(byId.getSchedule(), List.class);
        //List<Map> schedule = JSON.parseArray(byId.getSchedule(), List.class);
        return byId;
    }
    /**
     * 播放计划列表(熙讯)
     *
     * @param baseConditionVO
     * @param keyword
     * @return
     */
    public List listSchedule(BaseConditionVO baseConditionVO,Integer order,Integer seq, String keyword) {
        LambdaQueryWrapper<LedScheduleEntity> eq = Wrappers.lambdaQuery(LedScheduleEntity.class);
        //用户类型判断
        if (SecurityUtils.getClientId() != null) {
            eq = eq.eq(LedScheduleEntity::getUserId, SecurityUtils.getUserId()).or(w -> {
                w.eq(LedScheduleEntity::getClientId, SecurityUtils.getUserId());
            });
        }
        //模糊查询关键字判断
        if (keyword != null && !keyword.isEmpty()) {
            eq = eq.like(LedScheduleEntity::getName, keyword);
        }
        //排序字段
        String orderByResult = "id";
        //正序、倒叙
        String orderBySeq = OrderByEnums.ASC.getCode();
        if (order != null) {
            switch (order) {
                case 1:
                    orderByResult = OrderByEnums.LED_S_PLAY_PLAN_CREATE_TIME.getCode();
                    break;
                default:
            }
        }
        if (seq != null) {
            switch (seq) {
                case 1:
                    orderBySeq = " ASC";
                    break;
                case 2:
                    orderBySeq = " DESC";
                    break;
                default:
                    break;
            }
        }
        //排序方式
        String orderBy = orderByResult + " " + orderBySeq;
        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(),orderBy);
        return list(eq);
    }
    /**
     * 定时查询
     */
    public LedScheduleVO getledschedules(Long id) {
        PoleLightemitEntity poleLightemitEntity = poleLightemitService.getById(id);
        String result1 = lightemitUtils.getTimeSchedule(poleLightemitEntity.getLightemitControlCode());
        if (result1.indexOf("not open") != -1) {
            LedScheduleVO notOpen = new LedScheduleVO();
            notOpen.setLedName(poleLightemitEntity.getLightemitName());
            notOpen.setScheduleName("设备未开启");
            return notOpen;
        }
        boolean flag = result1.contains("exist");
        if (flag != true) {
            String result = lightemitUtils.getTimeSchedule(poleLightemitEntity.getLightemitControlCode());
//            if(result !=null){
            GetSchedules getSchedules = new GetSchedules();
            try {
                getSchedules = JsonUtil.convertJsonStringToObject(result, GetSchedules.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            LedScheduleVO ledScheduleVO = new LedScheduleVO();
            ledScheduleVO.setLedName(poleLightemitEntity.getLightemitName());
            if (getSchedules.getTask().getName() != null) {
                ledScheduleVO.setScheduleName(getSchedules.getTask().getName());
                List<Schedules> list = new ArrayList();
                list = getSchedules.getTask().getSchedules();
                for (Schedules schedules : list) {
                    ledScheduleVO.setStartTime(schedules.getStartTime());
                    ledScheduleVO.setEndTime(schedules.getEndTime());
                    ledScheduleVO.setStartDate(schedules.getStartDate());
                    ledScheduleVO.setEndDate(schedules.getEndDate());
                    ledScheduleVO.setWeek(schedules.getWeekFilter());
                }
                ;
            } else {
                ledScheduleVO.setScheduleName("无定时");
            }
            return ledScheduleVO;
        } else {
            LedScheduleVO ledScheduleVO = new LedScheduleVO();
            ledScheduleVO.setLedName(poleLightemitEntity.getLightemitName());
            ledScheduleVO.setScheduleName("设备未开启");
            return ledScheduleVO;
        }
    }
}