Commit cc5de5f6 authored by 赵啸非's avatar 赵啸非

修改通知去重复

parent 13ae8fc7
...@@ -25,4 +25,8 @@ public class RedisKey { ...@@ -25,4 +25,8 @@ public class RedisKey {
public static final String KEY_TOKEN_API_CACHE = "token:api:"; public static final String KEY_TOKEN_API_CACHE = "token:api:";
public static final String KEY_USER_MENU_CACHE = "user:menu"; public static final String KEY_USER_MENU_CACHE = "user:menu";
public static final String KEY_METTING_START_CACHE = "metting:start";
public static final String KEY_METTING_END_CACHE = "metting:end";
} }
...@@ -4,10 +4,13 @@ import cn.hutool.core.date.DateUnit; ...@@ -4,10 +4,13 @@ import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITask; import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService; import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.FinishMethodEnum; import com.mortals.xhx.common.code.FinishMethodEnum;
import com.mortals.xhx.common.code.MeetStatusEnum; import com.mortals.xhx.common.code.MeetStatusEnum;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.keys.RedisCacheKeys;
import com.mortals.xhx.common.pdu.UploadDeviceReq; import com.mortals.xhx.common.pdu.UploadDeviceReq;
import com.mortals.xhx.feign.device.IDeviceMessageFeign; import com.mortals.xhx.feign.device.IDeviceMessageFeign;
import com.mortals.xhx.module.basic.model.BasicSetEntity; import com.mortals.xhx.module.basic.model.BasicSetEntity;
...@@ -19,6 +22,7 @@ import com.mortals.xhx.module.room.model.RoomDeviceQuery; ...@@ -19,6 +22,7 @@ import com.mortals.xhx.module.room.model.RoomDeviceQuery;
import com.mortals.xhx.module.room.model.RoomEntity; import com.mortals.xhx.module.room.model.RoomEntity;
import com.sun.org.apache.xerces.internal.dom.PSVIAttrNSImpl; import com.sun.org.apache.xerces.internal.dom.PSVIAttrNSImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -41,10 +45,10 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService { ...@@ -41,10 +45,10 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
private BasicSetService basicSetService; private BasicSetService basicSetService;
@Autowired @Autowired
private IDeviceMessageFeign messageFeign; private IDeviceMessageFeign messageFeign;
@Autowired
private ICacheService cacheService;
@Override @Override
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
...@@ -72,13 +76,16 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService { ...@@ -72,13 +76,16 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService {
for (MettingRecordEntity recordEntity : recordEntities) { for (MettingRecordEntity recordEntity : recordEntities) {
long between = DateUtil.between(new Date(), recordEntity.getMeetTimeStart(), DateUnit.MINUTE); long between = DateUtil.between(new Date(), recordEntity.getMeetTimeStart(), DateUnit.MINUTE);
if (between <= basicSetEntity.getPreMeetStart()) { if (between <= basicSetEntity.getPreMeetStart()) {
//通知设备进行数据更新 todo //通知设备进行数据更新
boolean setnx = cacheService.setnx(RedisKey.KEY_METTING_START_CACHE, recordEntity.getId(), between * 60);
if (setnx) {
UploadDeviceReq uploadDeviceReq = new UploadDeviceReq(); UploadDeviceReq uploadDeviceReq = new UploadDeviceReq();
uploadDeviceReq.setDeviceCodeList(Arrays.asList(recordEntity.getDeviceCode())); uploadDeviceReq.setDeviceCodeList(Arrays.asList(recordEntity.getDeviceCode()));
uploadDeviceReq.setAction("preMeetStart"); uploadDeviceReq.setAction("preMeetStart");
uploadDeviceReq.setContent(JSON.toJSONString(recordEntity)); uploadDeviceReq.setContent(JSON.toJSONString(recordEntity));
messageFeign.downMsg(uploadDeviceReq); messageFeign.downMsg(uploadDeviceReq);
} }
}
} }
...@@ -87,13 +94,18 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService { ...@@ -87,13 +94,18 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService {
mettingRecordQuery.setMeetStatus(MeetStatusEnum.进行中.getValue()); mettingRecordQuery.setMeetStatus(MeetStatusEnum.进行中.getValue());
List<MettingRecordEntity> pendRecordEntities = mettingRecordService.find(mettingRecordQuery); List<MettingRecordEntity> pendRecordEntities = mettingRecordService.find(mettingRecordQuery);
for (MettingRecordEntity pendRecordEntity : pendRecordEntities) { for (MettingRecordEntity pendRecordEntity : pendRecordEntities) {
long between = DateUtil.between( pendRecordEntity.getMeetTimeStart(),new Date(), DateUnit.MINUTE); long between = DateUtil.between(pendRecordEntity.getMeetTimeStart(), new Date(), DateUnit.MINUTE);
if (between <= basicSetEntity.getPostMeetStart()) { if (between >= basicSetEntity.getPostMeetStart()) {
//结束通知 通过redis 去重复
long sub = DateUtil.between(pendRecordEntity.getMeetTimeStart(), pendRecordEntity.getMeetTimeEnd(), DateUnit.SECOND, true);
boolean setnx = cacheService.setnx(RedisKey.KEY_METTING_END_CACHE, pendRecordEntity.getId(), sub);
if (setnx) {
UploadDeviceReq uploadDeviceReq = new UploadDeviceReq(); UploadDeviceReq uploadDeviceReq = new UploadDeviceReq();
uploadDeviceReq.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode())); uploadDeviceReq.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode()));
uploadDeviceReq.setAction("postMeet"); uploadDeviceReq.setAction("postMeet");
messageFeign.downMsg(uploadDeviceReq); messageFeign.downMsg(uploadDeviceReq);
} }
}
} }
......
package com.mortals.xhx.daemon.task; package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITask; import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService; import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.FinishMethodEnum; import com.mortals.xhx.common.code.FinishMethodEnum;
import com.mortals.xhx.common.code.MeetStatusEnum; import com.mortals.xhx.common.code.MeetStatusEnum;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.pdu.UploadDeviceReq; import com.mortals.xhx.common.pdu.UploadDeviceReq;
import com.mortals.xhx.feign.device.IDeviceMessageFeign; import com.mortals.xhx.feign.device.IDeviceMessageFeign;
import com.mortals.xhx.module.basic.model.BasicSetEntity; import com.mortals.xhx.module.basic.model.BasicSetEntity;
...@@ -38,6 +41,8 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService { ...@@ -38,6 +41,8 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
private BasicSetService basicSetService; private BasicSetService basicSetService;
@Autowired
private ICacheService cacheService;
@Override @Override
...@@ -82,11 +87,16 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService { ...@@ -82,11 +87,16 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
mettingRecordService.update(pendRecordEntity); mettingRecordService.update(pendRecordEntity);
//判断基础是否设置关闭切换通知,有则推送 //判断基础是否设置关闭切换通知,有则推送
if (!ObjectUtils.isEmpty(basicSetEntity.getMeetEnd()) && basicSetEntity.getMeetEnd() == YesNoEnum.YES.getValue()) { if (!ObjectUtils.isEmpty(basicSetEntity.getMeetEnd()) && basicSetEntity.getMeetEnd() == YesNoEnum.YES.getValue()) {
//结束通知 通过redis 去重复
long sub = DateUtil.between(pendRecordEntity.getMeetTimeStart(), pendRecordEntity.getMeetTimeEnd(), DateUnit.SECOND, true);
boolean setnx = cacheService.setnx(RedisKey.KEY_METTING_END_CACHE, pendRecordEntity.getId(), sub);
if (setnx) {
UploadDeviceReq uploadDeviceReq = new UploadDeviceReq(); UploadDeviceReq uploadDeviceReq = new UploadDeviceReq();
uploadDeviceReq.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode())); uploadDeviceReq.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode()));
uploadDeviceReq.setAction("postMeet"); uploadDeviceReq.setAction("postMeet");
messageFeign.downMsg(uploadDeviceReq); messageFeign.downMsg(uploadDeviceReq);
} }
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment