diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java index 947aadc..ebeb15e 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java @@ -24,4 +24,5 @@ System.out.println("CRON ----> schedule job1 is running ... + " + name + " ----> " + dateFormat.format(new Date())); } + } \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java index 947aadc..ebeb15e 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java @@ -24,4 +24,5 @@ System.out.println("CRON ----> schedule job1 is running ... + " + name + " ----> " + dateFormat.format(new Date())); } + } \ No newline at end of file diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java index d277675..65907d4 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java @@ -29,7 +29,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, int amount, Map params) { - Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, amount); addJob(jobName, cls, calendar.getTime(), params); @@ -37,7 +36,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, Date date) { - addJob(jobName, cls, date, null); } @@ -46,7 +44,6 @@ try { Scheduler sched = gSchedulerFactory.getScheduler(); - JobDetail job; if(params != null){ job = JobBuilder.newJob(cls) @@ -58,8 +55,6 @@ .withIdentity(jobName, JOB_GROUP_NAME) .build(); } - - Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME) .startAt(date) .withSchedule(SimpleScheduleBuilder.simpleSchedule()).build(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java index 947aadc..ebeb15e 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java @@ -24,4 +24,5 @@ System.out.println("CRON ----> schedule job1 is running ... + " + name + " ----> " + dateFormat.format(new Date())); } + } \ No newline at end of file diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java index d277675..65907d4 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java @@ -29,7 +29,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, int amount, Map params) { - Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, amount); addJob(jobName, cls, calendar.getTime(), params); @@ -37,7 +36,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, Date date) { - addJob(jobName, cls, date, null); } @@ -46,7 +44,6 @@ try { Scheduler sched = gSchedulerFactory.getScheduler(); - JobDetail job; if(params != null){ job = JobBuilder.newJob(cls) @@ -58,8 +55,6 @@ .withIdentity(jobName, JOB_GROUP_NAME) .build(); } - - Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME) .startAt(date) .withSchedule(SimpleScheduleBuilder.simpleSchedule()).build(); diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java new file mode 100644 index 0000000..e1d13d1 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("sys_user_push") +public class UserPush extends Model { + private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @TableField("client_id") + private String clientId; + @TableField("user_id") + private Long userId; + @TableField("create_time") + private Date createTime; + @TableField("update_time") + private Date updateTime; + @TableField("tag") + private String tag; + @TableField("type") + private String type; +} \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java index 947aadc..ebeb15e 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java @@ -24,4 +24,5 @@ System.out.println("CRON ----> schedule job1 is running ... + " + name + " ----> " + dateFormat.format(new Date())); } + } \ No newline at end of file diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java index d277675..65907d4 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java @@ -29,7 +29,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, int amount, Map params) { - Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, amount); addJob(jobName, cls, calendar.getTime(), params); @@ -37,7 +36,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, Date date) { - addJob(jobName, cls, date, null); } @@ -46,7 +44,6 @@ try { Scheduler sched = gSchedulerFactory.getScheduler(); - JobDetail job; if(params != null){ job = JobBuilder.newJob(cls) @@ -58,8 +55,6 @@ .withIdentity(jobName, JOB_GROUP_NAME) .build(); } - - Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME) .startAt(date) .withSchedule(SimpleScheduleBuilder.simpleSchedule()).build(); diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java new file mode 100644 index 0000000..e1d13d1 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("sys_user_push") +public class UserPush extends Model { + private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @TableField("client_id") + private String clientId; + @TableField("user_id") + private Long userId; + @TableField("create_time") + private Date createTime; + @TableField("update_time") + private Date updateTime; + @TableField("tag") + private String tag; + @TableField("type") + private String type; +} \ No newline at end of file diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java index 1df9c50..f13f195 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -34,8 +34,4 @@ BusWellInfo selectOne(QueryWrapper busWellInfoEntityWrapper); - Long getDeptIdsByDevcode(String devcode); - - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java index 947aadc..ebeb15e 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java @@ -24,4 +24,5 @@ System.out.println("CRON ----> schedule job1 is running ... + " + name + " ----> " + dateFormat.format(new Date())); } + } \ No newline at end of file diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java index d277675..65907d4 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java @@ -29,7 +29,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, int amount, Map params) { - Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, amount); addJob(jobName, cls, calendar.getTime(), params); @@ -37,7 +36,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, Date date) { - addJob(jobName, cls, date, null); } @@ -46,7 +44,6 @@ try { Scheduler sched = gSchedulerFactory.getScheduler(); - JobDetail job; if(params != null){ job = JobBuilder.newJob(cls) @@ -58,8 +55,6 @@ .withIdentity(jobName, JOB_GROUP_NAME) .build(); } - - Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME) .startAt(date) .withSchedule(SimpleScheduleBuilder.simpleSchedule()).build(); diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java new file mode 100644 index 0000000..e1d13d1 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("sys_user_push") +public class UserPush extends Model { + private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @TableField("client_id") + private String clientId; + @TableField("user_id") + private Long userId; + @TableField("create_time") + private Date createTime; + @TableField("update_time") + private Date updateTime; + @TableField("tag") + private String tag; + @TableField("type") + private String type; +} \ No newline at end of file diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java index 1df9c50..f13f195 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -34,8 +34,4 @@ BusWellInfo selectOne(QueryWrapper busWellInfoEntityWrapper); - Long getDeptIdsByDevcode(String devcode); - - - } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index f455fa2..3746665 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -43,8 +43,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - Long getDeptIdsByDevcode(@Param("devcode")String devcode); - void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); void updateCoordinates(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("LNG_BAIDU") List deptIds); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java index 4de19b1..75dfa8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmJobController.java @@ -413,9 +413,7 @@ @RequestMapping(value = "/getJob") @ResponseBody public Object getJob(Long id) { - AuthUser currentUser = iCommonPermissionService.getAuthService().getLoginUser(); - if (alarmJobService.getJob(id, currentUser.getId())) { return ResponseData.success(); } else { @@ -525,26 +523,4 @@ retList.forEach(this::alarmJobWrapper); return ResponseData.success(retList); } - - - /*** - * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 - * @param id - * @return - */ - @RequestMapping(value = "/updateSinkJob") - @ResponseBody - public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, - @RequestParam(value = "msg", required = true) String msg, - @RequestParam(value = "wellCode", required = true) String wellCode) { - Map retMap = new HashMap<>(); - try { - alarmJobService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8"), wellCode); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return retMap; - } - - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java index 9d72902..c41f9de 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/job/HandleAlarmJob.java @@ -31,7 +31,7 @@ private AbstractPermissionContext iCommonUserService; private IQuartzManager iQuartzManager; private WebSocket webSocket; - private List userClientViewList; + private List userClientList; public void setJobId(Integer jobId) { this.jobId = jobId; @@ -69,16 +69,8 @@ alarmJob.setJobFlagDelay("1"); // 延时标签 alarmJob.setJobFlag1("1"); iAlarmJobService.updateById(alarmJob); // 更新记录 - // APP推送 推给井盖所属权属单位 - List clientIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - } - - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "工单提醒", "您有一条工单超时未接收"); + if (userClientList.size() > 0) { + IPushResult pushResult = PushList.pushToUser(userClientList, "工单提醒", "您有一条工单超时未接收"); if ("ok".equals(pushResult.getResponse().get("result").toString())) { logger.info("超时未接收工单推送成功:" + id.toString()); } else { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java index 8b3f54a..fac1b98 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmJobService.java @@ -67,8 +67,6 @@ Integer countByUser(String alarmType, String jobStatus, Long userId, String beginTime, String endTime); - void updateSinkJob(String id, String msg, String wellCode); - List selectUserByWellCode(String wellCode); String selectClientIdByUser(Long userId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java index ba72039..f5fab2e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmJobServiceImpl.java @@ -1,41 +1,25 @@ package com.casic.missiles.modular.alarm.service.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.EhcacheConstant; import com.casic.missiles.modular.alarm.job.DelayJob; -import com.casic.missiles.modular.alarm.job.HandleAlarmJob; import com.casic.missiles.modular.alarm.model.JobListParam; import com.casic.missiles.modular.alarm.service.IAlarmJobService; import com.casic.missiles.modular.system.dao.AlarmJobMapper; -import com.casic.missiles.modular.system.dao.AlarmRecordsMapper; -import com.casic.missiles.modular.system.dto.SelectDto; import com.casic.missiles.modular.system.dto.UserClientView; import com.casic.missiles.modular.system.model.AlarmJob; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; -import com.casic.missiles.modular.system.util.PushList; import com.casic.missiles.modular.system.util.WebSocket; import com.casic.missiles.quartz.service.IQuartzManager; -import com.gexin.rp.sdk.base.IPushResult; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -50,8 +34,6 @@ @Slf4j public class AlarmJobServiceImpl extends ServiceImpl implements IAlarmJobService { - private static final Logger logger = LoggerFactory.getLogger(AlarmJobServiceImpl.class); - @Value("${smartcity.leaderRoleName}") private String sLeader; @Value("${smartcity.memberRoleName}") @@ -62,22 +44,11 @@ private String useOverTime; @Resource - private AlarmRecordsMapper alarmRecordsMapper; - // @Resource -// private ICommonPermissionService permissionService; - @Resource private AbstractPermissionContext iCommonUserService; @Resource - private WebSocket webSocket; - - @Resource private IQuartzManager quartzManager; - @Resource - private IBusWellInfoSupportService busWellInfoService; - - @Autowired - private DataScopeBuilder dataScopeBuilder; + private WebSocket webSocket; @Override public List> jobList(Page> page, String keywords, String beginTime, String endTime, String jobStatus, String alarmType, String alarmContent, DataScope dataScope, Long userId) { @@ -166,7 +137,6 @@ @Override public boolean getJob(Long id, long personId) { - Calendar now = Calendar.getInstance(); Date getTime = now.getTime(); if (isWeekend(now)) { @@ -193,7 +163,6 @@ map.put("webSocket", webSocket); quartzManager.addJob(jobName, DelayJob.class, shouldHandleTime, map); } - return this.baseMapper.getJob(id, personId, getTime, shouldHandleTime); } @@ -255,14 +224,6 @@ } - public List selectRoles() { - return this.baseMapper.selectRoles(); - } - - public List selectUseIds(List roleIds) { - return this.baseMapper.selectUseIds(roleIds); - } - @Override public boolean checkPcRole(Set roleTips) { List roleList = new ArrayList<>(roleTips); @@ -302,158 +263,6 @@ @Override - public void updateSinkJob(String id, String msg, String wellCode) { - List userClientViewList = new ArrayList<>(); - List selectDtoList = selectRoles(); - QueryWrapper busWellInfoEntityWrapper = new QueryWrapper<>(); - busWellInfoEntityWrapper.eq("WELL_CODE", wellCode); - BusWellInfo busWellInfo = busWellInfoService.selectOne(busWellInfoEntityWrapper); - if (busWellInfo != null && ObjectUtil.isEmpty(busWellInfo.getDeptid())) { - List roleids = new ArrayList<>(); - for (SelectDto selectDto : selectDtoList) { - if (StrUtil.isNotEmpty(selectDto.getName()) - && Arrays.asList(selectDto.getName().split(",")).contains(busWellInfo.getDeptid())) { - roleids.add(selectDto.getId()); - } - } - if (roleids.size() > 0) { - List useIds = selectUseIds(roleids); - for (Long useId : useIds) { - UserClientView userClientView = new UserClientView(); - userClientView.setClientid(useId.toString()); - userClientView.setId(useId.toString()); - userClientViewList.add(userClientView); - } - } - } - - if (!(StrUtil.isEmpty(id))) { - AlarmJob alarmJob = this.baseMapper.selectById(Long.valueOf(id)); - if (alarmJob != null) { - sendJob(id, alarmJob, userClientViewList);//推送工单至app和pc端 - if (StrUtil.isNotBlank(msg)) { - sendAlarm(msg, userClientViewList, alarmJob);//推送告警至app和pc端 - } - } - } - } - - - public void sendAlarm(String msg, List userClientViewList, AlarmJob alarmJob) { - List clientIds = new ArrayList<>(); - List userIds = new ArrayList<>(); - for (UserClientView userClientView : userClientViewList) { - if (StrUtil.isNotEmpty(userClientView.getClientid())) { - clientIds.add(userClientView.getClientid()); - } - if (StrUtil.isNotEmpty(userClientView.getId())) { - userIds.add(userClientView.getId()); - } - } - if (clientIds.size() > 0) { - IPushResult pushResult = PushList.pushToUser(clientIds, "告警提醒", msg); - if ("ok".equals(pushResult.getResponse().get("result").toString())) { - logger.info("告警消息app端推送成功:" + msg); - } else { - logger.info("告警消息app端推送失败:" + msg); - } - } else { - logger.info("告警消息app端找不到责任人,未推送:" + msg); - } - // PC推送,推给信息办 -// List userList = permissionService.getRoleUsersByTips("1178242562491285506", null, false); - - Long deptId = busWellInfoService.getDeptIdsByDevcode(alarmJob.getDevcode()); - List userList =dataScopeBuilder.DataScopeProvider(deptId); - for (User user : userList) { - userIds.add(user.getId().toString()); - } - if (userIds.size() > 0) { - Map map = new HashMap(); - map.put("message", msg); - map.put("type", "alarm"); - webSocket.sendListMessage(userIds, JSON.toJSONString(map)); - } else { - logger.info("告警消息找不到责任人,pc端未推送:" + msg); - } - - } - - public void sendJob(String id, AlarmJob alarmJob, List userClientViewList) { - - Calendar now = Calendar.getInstance(); - if (isWeekend(now)) { - now.add(Calendar.WEEK_OF_YEAR, 1); - now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - } else { - try { - if (isTimeRange()) { - now.add(Calendar.HOUR_OF_DAY, 2); - } else { - now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - if (!compareNoon()) { - now.add(Calendar.DAY_OF_MONTH, +1); - - } - } - } catch (ParseException e) { - e.printStackTrace(); - } - - } - Date shouldHandleTime = now.getTime(); - if (Boolean.getBoolean(useOverTime)) { - System.out.println(shouldHandleTime); - String jobName = "getJobDelay" + id; - Map map = new HashMap<>(); - map.put("jobId", id); - map.put("iAlarmJobService", this); - map.put("iCommonUserService", iCommonUserService); - map.put("iQuartzManager", quartzManager); - map.put("webSocket", webSocket); - map.put("userClientViewList", userClientViewList); - quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); - alarmJob.setShouldGetTime(shouldHandleTime); - } - this.baseMapper.updateById(alarmJob); - } - - private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 - SimpleDateFormat df = new SimpleDateFormat("HH:mm"); - Date now = df.parse(df.format(new Date())); - Date begin = df.parse("8:00"); - Date end = df.parse("20:00"); - Calendar nowTime = Calendar.getInstance(); - nowTime.setTime(now); - Calendar beginTime = Calendar.getInstance(); - beginTime.setTime(begin); - Calendar endTime = Calendar.getInstance(); - endTime.setTime(end); - if (nowTime.before(endTime) && nowTime.after(beginTime)) { - return true; - } else { - return false; - } - } - - public boolean compareNoon() { - Date date = new Date(); - SimpleDateFormat df = new SimpleDateFormat("HH"); - String str = df.format(date); - int a = Integer.parseInt(str); - if (a >= 0 && a <= 12) { - return true; - } else { - return false; - } - } - - @Override public String selectClientIdByUser(Long userId) { return this.baseMapper.selectClientIdByUser(userId); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java deleted file mode 100644 index 00e8150..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/DataScopeBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.casic.missiles.modular.alarm.service.impl; - -import com.casic.missiles.modular.system.dao.DataScopeMapper; -import com.casic.missiles.modular.system.model.User; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class DataScopeBuilder { - - private final DataScopeMapper dataScopeMapper; - - public DataScopeBuilder(DataScopeMapper dataScopeMapper) { - this.dataScopeMapper = dataScopeMapper; - } - - /** - * 1、所有数据,得到的用户ID - * 2、所属查上级及上级所有部门,得到一个list - * 3、所属本部门 得到list - * 4、本部门自定义的一批部门信息 得到一个list - * - * @retur - */ - public List DataScopeProvider(Long deptId) { - List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); - Map>> userDataScopeListMap = userIdDataScopeList.stream() - .collect(Collectors.groupingBy(a -> a.get("scopeType"))); - List userIdList = new ArrayList<>(); - userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); - userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); - List> deptUserList = new ArrayList<>(); - deptUserList.addAll(userDataScopeListMap.get("2")); - deptUserList.addAll(userDataScopeListMap.get("3")); - userIdList.addAll(getParentDeptList(deptUserList, deptId)); - List userList = getUserList(userIdList); - return userList; - } - - /** - * 1、所有数据的用户要发送 - * 2、 - * - * @return - */ - public List getAllUser(List> allUserList) { - List userIdList = new ArrayList<>(); - allUserList.forEach( - userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) - ); - return userIdList; - } - - /** - * 1 所有数据的用户要发送 - * - * @return - */ - public List getParentDeptList(List> allUserList, Long deptId) { - List userIdList = new ArrayList<>(); - String tempDeptIds = ""; - List> deptList = dataScopeMapper.getDeptList(); - Map deptMap = deptList.stream().collect( - Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) - ); - while (deptId != -1) { - tempDeptIds += "-" + deptId; - deptId = deptMap.get(deptId); - } - final String deptIds = tempDeptIds; - allUserList.forEach( - userDataScope -> { - if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - public List customDeptList(List> userList, Long deptId) { - List userIdList = new ArrayList<>(); - userList.forEach( - userDataScope -> { - if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { - userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); - } - } - ); - return userIdList; - } - - private List getUserList(List userIdList) { - List allUserList = dataScopeMapper.getUserList(); - Map usersMap = allUserList.stream().collect( - Collectors.toMap(e -> e.getId(), Function.identity()) - ); - List scopeUserList = new ArrayList<>(); - userIdList.forEach( - userId->{ - if(usersMap.containsKey(userId)){ - scopeUserList.add(usersMap.get(userId)); - } - } - ); - return scopeUserList; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java new file mode 100644 index 0000000..c95a6f7 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/controller/MessagePusherController.java @@ -0,0 +1,52 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.service.MessagePusherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class MessagePusherController { + + + private final MessagePusherService messagePusherService; + @Resource + private AbstractPermissionContext permissionService; + + + public MessagePusherController(MessagePusherService messagePusherService) { + this.messagePusherService = messagePusherService; + } + + /*** + * 更新sink生成工单的接单时间,及建立超期未接工单的处理任务 + * @param id + * @return + */ + @RequestMapping(value = "/job/updateSinkJob") + @ResponseBody + public Map updateSinkJob(@RequestParam(value = "id", required = true) String id, + @RequestParam(value = "msg", required = true) String msg) { + Map retMap = new HashMap<>(); + try { + messagePusherService.updateSinkJob(id, URLDecoder.decode(msg, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return retMap; + } + + + @PostMapping("/app/registerGeTui") + public ResponseData geTuiRegister(@RequestParam String clientid) { + messagePusherService.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); + return ResponseData.success(); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java index 8a57cae..1bf49c2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/AlarmJobMapper.java @@ -83,7 +83,4 @@ List selectUserByWellCode(@Param("wellCode") String wellCode); - List selectUseIds(@Param("roleIds") List roleIds); - - List selectRoles(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java index 1d1d0a2..6d8768e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/DataScopeMapper.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.dao; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -12,10 +13,8 @@ List> getDeptList(); - List getUserList(); + List getUserList(); List> getUserIdDataScope(); - List getUserList(@Param("userIds") String userIds); - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java new file mode 100644 index 0000000..51b0450 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/MessagePusherMapper.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.UserPush; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface MessagePusherMapper extends BaseMapper { + + List getUserPush(); + + List getUserIdList(@Param("ownerDeptId") Long ownerDeptId); + + Map getDeptIdsByDevcode(@Param("devcode") String devcode); + + UserPush getPushByUserId(@Param("userId") Long userId, + @Param("type") String type); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml index 99aeeb9..4aeee12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmJobMapper.xml @@ -1142,17 +1142,5 @@ FROM sys_user_client WHERE USERID = #{userId} - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java index 947aadc..ebeb15e 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java @@ -24,4 +24,5 @@ System.out.println("CRON ----> schedule job1 is running ... + " + name + " ----> " + dateFormat.format(new Date())); } + } \ No newline at end of file diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java index d277675..65907d4 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java @@ -29,7 +29,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, int amount, Map params) { - Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, amount); addJob(jobName, cls, calendar.getTime(), params); @@ -37,7 +36,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, Date date) { - addJob(jobName, cls, date, null); } @@ -46,7 +44,6 @@ try { Scheduler sched = gSchedulerFactory.getScheduler(); - JobDetail job; if(params != null){ job = JobBuilder.newJob(cls) @@ -58,8 +55,6 @@ .withIdentity(jobName, JOB_GROUP_NAME) .build(); } - - Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME) .startAt(date) .withSchedule(SimpleScheduleBuilder.simpleSchedule()).build(); diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java new file mode 100644 index 0000000..e1d13d1 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("sys_user_push") +public class UserPush extends Model { + private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @TableField("client_id") + private String clientId; + @TableField("user_id") + private Long userId; + @TableField("create_time") + private Date createTime; + @TableField("update_time") + private Date updateTime; + @TableField("tag") + private String tag; + @TableField("type") + private String type; +} \ No newline at end of file diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java index 1df9c50..f13f195 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -34,8 +34,4 @@ BusWellInfo selectOne(QueryWrapper busWellInfoEntityWrapper); - Long getDeptIdsByDevcode(String devcode); - - - } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index f455fa2..3746665 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -43,8 +43,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - Long getDeptIdsByDevcode(@Param("devcode")String devcode); - void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); void updateCoordinates(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("LNG_BAIDU") List deptIds); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 6b3c088..049b594 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -183,15 +183,6 @@ - - - - - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml index d4a1c98..eb007e8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataScopeMapper.xml @@ -2,13 +2,6 @@ - - + SELECT bwi.deptid,bwi.responsible_dept AS "ownerDeptId" + FROM bus_device bd + JOIN bus_device_well bdw ON bdw.device_id=bd.id + JOIN bus_well_info bwi ON bwi.id=bdw.well_id + WHERE bd.devcode=#{devcode} + + + + + + + + + + \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java new file mode 100644 index 0000000..9f0be8b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/MessagePusherService.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.service; + +public interface MessagePusherService { + + void updateSinkJob(String id, String msg); + + void registerGeTui(Long id, String clientid); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java new file mode 100644 index 0000000..1535365 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/MessagePusherImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.alarm.job.HandleAlarmJob; +import com.casic.missiles.modular.system.dao.AlarmJobMapper; +import com.casic.missiles.modular.system.dao.MessagePusherMapper; +import com.casic.missiles.modular.system.dto.UserClientView; +import com.casic.missiles.modular.system.model.AlarmJob; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.modular.system.model.UserPush; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.MessagePusherService; +import com.casic.missiles.modular.system.util.PushList; +import com.casic.missiles.modular.system.util.WebSocket; +import com.casic.missiles.quartz.service.IQuartzManager; +import com.gexin.rp.sdk.base.IPushResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessagePusherImpl extends ServiceImpl implements MessagePusherService { + + @Resource + private WebSocket webSocket; + @Autowired + private DataScopeBuilder dataScopeBuilder; + @Resource + private AlarmJobMapper alarmJobMapper; + @Resource + private IQuartzManager quartzManager; + @Resource + private AbstractPermissionContext iCommonUserService; + + @Value("${smartcity.useOverTime}") + private String useOverTime; + + @Override + public void updateSinkJob(String id, String msg) { + if (!(StrUtil.isEmpty(id))) { + AlarmJob alarmJob = alarmJobMapper.selectById(Long.valueOf(id)); + Map deptMap = this.baseMapper.getDeptIdsByDevcode(alarmJob.getDevcode()); + if (!ObjectUtil.isEmpty(alarmJob) && !ObjectUtil.isEmpty(deptMap)) { + List userClientList = responDeptProvider(deptMap.get("ownerDeptId")); + sendJob(id, alarmJob, userClientList);//推送工单至app和pc端 + if (StrUtil.isNotBlank(msg)) { + sendAlarm(msg, deptMap.get("deptid"), userClientList);//推送告警至app和pc端 + } + } + } + } + + @Override + public void registerGeTui(Long userId, String clientid) { + UserPush userPush = new UserPush(); + userPush.setType("GT"); + userPush.setUserId(userId); + userPush.setClientId(clientid); + UserPush old = this.baseMapper.getPushByUserId(userId, userPush.getType()); + userPush.setUpdateTime(new Date()); + if (!ObjectUtil.isEmpty(old)) { + userPush.setId(old.getId()); + this.baseMapper.updateById(userPush); + } else { + userPush.setCreateTime(new Date()); + this.baseMapper.insert(userPush); + } + } + + private void sendAlarm(String msg, Long deptId, List clientIdlist) { + List userIds = new ArrayList<>(); + if (clientIdlist.size() > 0) { + IPushResult pushResult = PushList.pushToUser(clientIdlist, "告警提醒", msg); + if ("ok".equals(pushResult.getResponse().get("result").toString())) { + log.info("告警消息app端推送成功:" + msg); + } else { + log.info("告警消息app端推送失败:" + msg); + } + } else { + log.info("告警消息app端找不到责任人,未推送:" + msg); + } + // PC推送 + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + + } + + private void sendJob(String id, AlarmJob alarmJob, List userClientList) { + Calendar now = Calendar.getInstance(); + if (isWeekend(now)) { + now.add(Calendar.WEEK_OF_YEAR, 1); + now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + } else { + try { + if (isTimeRange()) { + now.add(Calendar.HOUR_OF_DAY, 2); + } else { + now.set(Calendar.HOUR_OF_DAY, 10);//默认8点上班 + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + if (!compareNoon()) { + now.add(Calendar.DAY_OF_MONTH, +1); + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + } + Date shouldHandleTime = now.getTime(); + if (Boolean.getBoolean(useOverTime)) { + System.out.println(shouldHandleTime); + String jobName = "getJobDelay" + id; + Map map = new HashMap<>(); + map.put("jobId", id); + map.put("iAlarmJobService", this); + map.put("iCommonUserService", iCommonUserService); + map.put("iQuartzManager", quartzManager); + map.put("webSocket", webSocket); + map.put("clientIds", userClientList); + quartzManager.addJob(jobName, HandleAlarmJob.class, shouldHandleTime, map); + alarmJob.setShouldGetTime(shouldHandleTime); + } + alarmJobMapper.updateById(alarmJob); + } + + private boolean isWeekend(Calendar cal) { + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + return true; + } else { + return false; + } + } + + private boolean isTimeRange() throws ParseException {//接单时间默认朝八晚八 + SimpleDateFormat df = new SimpleDateFormat("HH:mm"); + Date now = df.parse(df.format(new Date())); + Date begin = df.parse("8:00"); + Date end = df.parse("20:00"); + Calendar nowTime = Calendar.getInstance(); + nowTime.setTime(now); + Calendar beginTime = Calendar.getInstance(); + beginTime.setTime(begin); + Calendar endTime = Calendar.getInstance(); + endTime.setTime(end); + if (nowTime.before(endTime) && nowTime.after(beginTime)) { + return true; + } else { + return false; + } + } + + public boolean compareNoon() { + Date date = new Date(); + SimpleDateFormat df = new SimpleDateFormat("HH"); + String str = df.format(date); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 12) { + return true; + } else { + return false; + } + } + + public List responDeptProvider(Long ownerDeptId) { + List userIdList = this.baseMapper.getUserIdList(ownerDeptId); + List clientList = this.clientProvider(userIdList); + return clientList; + } + + + public List clientProvider(List userIdList) { + List allPushList = this.baseMapper.getUserPush(); + Map pushMap = allPushList.stream().collect( + Collectors.toMap(UserPush::getUserId, UserPush::getClientId) + ); + List clientLists = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (pushMap.containsKey(Long.valueOf(String.valueOf(userId)))) { + clientLists.add(pushMap.get(Long.valueOf(String.valueOf(userId)))); + } + } + ); + return clientLists; + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java index c54d46d..209b900 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/service/impl/StatisticServiceImpl.java @@ -231,7 +231,7 @@ Collectors.toMap(e -> Long.valueOf(String.valueOf(e.get("id"))), e -> Long.valueOf(String.valueOf(e.get("pid")))) ); - String deviceTypes = deptTypeMap.get(deptId); + String deviceTypes = deptTypeMap.get(String.valueOf(deptId)); while (deptId != -1 && deviceTypes == null) { deptId = deptMap.get(deptId); deviceTypes = deptTypeMap.get(String.valueOf(deptId)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java index 83521c7..cedcccc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/system/util/PushList.java @@ -73,6 +73,7 @@ // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); + IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java index d9b07c3..2707258 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -34,10 +34,6 @@ private static Logger logger = LoggerFactory.getLogger(TemplateController.class); @Autowired private DeviceServerProperties gunsProperties; - @Autowired - private IDeviceService service; - @Resource - private AbstractPermissionContext permissionService; /** * 文件模板下载 (待优化) */ @@ -98,10 +94,4 @@ } return ResponseData.error("暂无APK版本"); } - - @PostMapping("/app/registerGeTui") - public ResponseData geTuiRegister(@RequestParam String clientid) { - service.registerGeTui(permissionService.getAuthService().getLoginUser().getId(), clientid); - return ResponseData.success(); - } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 3c05e4c..53f9528 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -81,6 +81,4 @@ */ List selectDevicesByConfig(DataScope dataScope, String deviceType, String configStatus); - void registerGeTui(Long id, String clientid); - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 32defe0..b2c33d6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -373,11 +373,6 @@ return this.baseMapper.selectDevicesByConfig(dataScope, deviceType, configStatus); } - @Override - public void registerGeTui(Long id, String clientid) { - SqlRunner.db().delete("DELETE FROM SYS_USER_CLIENT WHERE USERID = {0}", id); - SqlRunner.db().insert("INSERT INTO SYS_USER_CLIENT (ID, USERID, CLIENTID,LOGTIME) VALUES ({0}, {1},{2},SYSDATE())", IdWorker.getId(), id, clientid); - } /** * 关联集中器 diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java index 947aadc..ebeb15e 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/job/MyJob.java @@ -24,4 +24,5 @@ System.out.println("CRON ----> schedule job1 is running ... + " + name + " ----> " + dateFormat.format(new Date())); } + } \ No newline at end of file diff --git a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java index d277675..65907d4 100644 --- a/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java +++ b/casic-quartz/src/main/java/com/casic/missiles/quartz/service/impl/QuartzManagerImpl.java @@ -29,7 +29,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, int amount, Map params) { - Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, amount); addJob(jobName, cls, calendar.getTime(), params); @@ -37,7 +36,6 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public void addJob(String jobName, Class cls, Date date) { - addJob(jobName, cls, date, null); } @@ -46,7 +44,6 @@ try { Scheduler sched = gSchedulerFactory.getScheduler(); - JobDetail job; if(params != null){ job = JobBuilder.newJob(cls) @@ -58,8 +55,6 @@ .withIdentity(jobName, JOB_GROUP_NAME) .build(); } - - Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME) .startAt(date) .withSchedule(SimpleScheduleBuilder.simpleSchedule()).build(); diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java new file mode 100644 index 0000000..e1d13d1 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/UserPush.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("sys_user_push") +public class UserPush extends Model { + private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @TableField("client_id") + private String clientId; + @TableField("user_id") + private Long userId; + @TableField("create_time") + private Date createTime; + @TableField("update_time") + private Date updateTime; + @TableField("tag") + private String tag; + @TableField("type") + private String type; +} \ No newline at end of file diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java index 1df9c50..f13f195 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -34,8 +34,4 @@ BusWellInfo selectOne(QueryWrapper busWellInfoEntityWrapper); - Long getDeptIdsByDevcode(String devcode); - - - } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index f455fa2..3746665 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -43,8 +43,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - Long getDeptIdsByDevcode(@Param("devcode")String devcode); - void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); void updateCoordinates(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("LNG_BAIDU") List deptIds); diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 6b3c088..049b594 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -183,15 +183,6 @@ - - -