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

修改通知去重复

parent 13ae8fc7
......@@ -25,4 +25,8 @@ public class RedisKey {
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_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;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.FinishMethodEnum;
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.feign.device.IDeviceMessageFeign;
import com.mortals.xhx.module.basic.model.BasicSetEntity;
......@@ -19,6 +22,7 @@ import com.mortals.xhx.module.room.model.RoomDeviceQuery;
import com.mortals.xhx.module.room.model.RoomEntity;
import com.sun.org.apache.xerces.internal.dom.PSVIAttrNSImpl;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
......@@ -41,10 +45,10 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService {
@Autowired
private BasicSetService basicSetService;
@Autowired
private IDeviceMessageFeign messageFeign;
@Autowired
private ICacheService cacheService;
@Override
public void excuteTask(ITask task) throws AppException {
......@@ -72,13 +76,16 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService {
for (MettingRecordEntity recordEntity : recordEntities) {
long between = DateUtil.between(new Date(), recordEntity.getMeetTimeStart(), DateUnit.MINUTE);
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.setDeviceCodeList(Arrays.asList(recordEntity.getDeviceCode()));
uploadDeviceReq.setAction("preMeetStart");
uploadDeviceReq.setContent(JSON.toJSONString(recordEntity));
messageFeign.downMsg(uploadDeviceReq);
}
}
}
......@@ -87,13 +94,18 @@ public class MeetSwitchTaskImpl implements ITaskExcuteService {
mettingRecordQuery.setMeetStatus(MeetStatusEnum.进行中.getValue());
List<MettingRecordEntity> pendRecordEntities = mettingRecordService.find(mettingRecordQuery);
for (MettingRecordEntity pendRecordEntity : pendRecordEntities) {
long between = DateUtil.between( pendRecordEntity.getMeetTimeStart(),new Date(), DateUnit.MINUTE);
if (between <= basicSetEntity.getPostMeetStart()) {
long between = DateUtil.between(pendRecordEntity.getMeetTimeStart(), new Date(), DateUnit.MINUTE);
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.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode()));
uploadDeviceReq.setAction("postMeet");
messageFeign.downMsg(uploadDeviceReq);
}
}
}
......
package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.FinishMethodEnum;
import com.mortals.xhx.common.code.MeetStatusEnum;
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.feign.device.IDeviceMessageFeign;
import com.mortals.xhx.module.basic.model.BasicSetEntity;
......@@ -38,6 +41,8 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
@Autowired
private BasicSetService basicSetService;
@Autowired
private ICacheService cacheService;
@Override
......@@ -82,11 +87,16 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
mettingRecordService.update(pendRecordEntity);
//判断基础是否设置关闭切换通知,有则推送
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.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode()));
uploadDeviceReq.setAction("postMeet");
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