Commit 3702f229 authored by 赵啸非's avatar 赵啸非

添加通知

parent 3d1bdbd3
......@@ -76,3 +76,12 @@ ALTER TABLE mortals_xhx_workman ADD COLUMN `filePath` varchar(256) COMMENT
2023-09-21
-- ----------------------------
ALTER TABLE mortals_xhx_workman ADD COLUMN `order` int(4) DEFAULT '1' COMMENT '排序,值越大越靠前'
-- ----------------------------
2023-12-27
-- ----------------------------
ALTER TABLE mortals_xhx_basic_set ADD COLUMN `preMeetStart` tinyint(4) DEFAULT '0' COMMENT '会议开始前几分钟切换'
ALTER TABLE mortals_xhx_basic_set ADD COLUMN `postMeetStart` tinyint(4) DEFAULT '0' COMMENT '会议开始后几分钟切换'
ALTER TABLE mortals_xhx_basic_set ADD COLUMN `meetEnd` tinyint(4) DEFAULT '0' COMMENT '会议结束切换(0.否,1.是)'
......@@ -65,6 +65,12 @@
v-model="form.showMeetDesc"
placeholder="请输入显示会议室门牌信息自定义内容"
/>
<Field :span="20" label="会议开始前几分钟切换" prop="preMeetStart" v-model="form.preMeetStart" placeholder="请选择会议开始前几分钟切换"/>
<Field :span="20" label="会议开始后几分钟切换" prop="postMeetStart" v-model="form.postMeetStart" placeholder="请选择会议开始后几分钟切换"/>
<Field :span="20" label="会议结束切换" prop="meetEnd" v-model="form.meetEnd" type="checkbox" :enumData="dict.meetEnd" placeholder="请选择会议结束切换"/>
<Field
:span="20"
label="备注"
......@@ -104,7 +110,7 @@
@selection-change="handleBasicStatusSelectionChange"
ref="basicStatus"
height="520"
>
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50" />
......@@ -270,6 +276,9 @@ export default {
showMeet: 0,
showMeetDesc: "",
remark: "",
preMeetStart : 0,
postMeetStart : 0,
meetEnd : 0,
};
this.resetForm("form");
},
......
package com.mortals.xhx.daemon.task;
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.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.pdu.UploadDeviceReq;
import com.mortals.xhx.feign.device.IDeviceMessageFeign;
import com.mortals.xhx.module.basic.model.BasicSetEntity;
import com.mortals.xhx.module.basic.service.BasicSetService;
import com.mortals.xhx.module.metting.model.MettingRecordEntity;
import com.mortals.xhx.module.metting.model.MettingRecordQuery;
import com.mortals.xhx.module.metting.service.MettingRecordService;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* 会议室切换状态
*/
@Slf4j
@Service("MeetSwitchTaskTask")
public class MeetSwitchTaskImpl implements ITaskExcuteService {
@Autowired
private MettingRecordService mettingRecordService;
@Autowired
private BasicSetService basicSetService;
@Autowired
private IDeviceMessageFeign messageFeign;
@Override
public void excuteTask(ITask task) throws AppException {
log.debug("会议室切换状态");
BasicSetEntity basicSetEntity = basicSetService.selectOne(new BasicSetEntity());
if (!ObjectUtils.isEmpty(basicSetEntity)) {
log.info("基础未配置");
return;
}
swicthMeet(basicSetEntity);
log.debug("会议室切换状态完成");
}
private void swicthMeet(BasicSetEntity basicSetEntity) {
if (!ObjectUtils.isEmpty(basicSetEntity.getPreMeetStart()) && basicSetEntity.getPreMeetStart() > 0) {
//会议开始前几分钟 通知设备进行数据更新
MettingRecordQuery mettingRecordQuery = new MettingRecordQuery();
//mettingRecordQuery.setFinishMethod(FinishMethodEnum.自动结束.getValue());
mettingRecordQuery.setMeetStatus(MeetStatusEnum.等待中.getValue());
List<MettingRecordEntity> recordEntities = mettingRecordService.find(mettingRecordQuery);
for (MettingRecordEntity recordEntity : recordEntities) {
long between = DateUtil.between(new Date(), recordEntity.getMeetTimeStart(), DateUnit.MINUTE);
if (between <= basicSetEntity.getPreMeetStart()) {
//通知设备进行数据更新 todo
UploadDeviceReq uploadDeviceReq = new UploadDeviceReq();
uploadDeviceReq.setDeviceCodeList(Arrays.asList(recordEntity.getDeviceCode()));
uploadDeviceReq.setAction("preMeetStart");
uploadDeviceReq.setContent(JSON.toJSONString(recordEntity));
messageFeign.downMsg(uploadDeviceReq);
}
}
if (!ObjectUtils.isEmpty(basicSetEntity.getPostMeetStart()) && basicSetEntity.getPostMeetStart() > 0) {
mettingRecordQuery = new MettingRecordQuery();
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()) {
UploadDeviceReq uploadDeviceReq = new UploadDeviceReq();
uploadDeviceReq.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode()));
uploadDeviceReq.setAction("postMeet");
messageFeign.downMsg(uploadDeviceReq);
}
}
}
}
}
@Override
public void stopTask(ITask task) throws AppException {
}
public static void main(String[] args) {
long between = DateUtil.between(new Date(), DateUtil.offsetMinute(new Date(), 5), DateUnit.MINUTE);
System.out.println(between);
}
}
......@@ -6,13 +6,20 @@ 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.pdu.UploadDeviceReq;
import com.mortals.xhx.feign.device.IDeviceMessageFeign;
import com.mortals.xhx.module.basic.model.BasicSetEntity;
import com.mortals.xhx.module.basic.service.BasicSetService;
import com.mortals.xhx.module.metting.model.MettingRecordEntity;
import com.mortals.xhx.module.metting.model.MettingRecordQuery;
import com.mortals.xhx.module.metting.service.MettingRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
......@@ -26,6 +33,12 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
@Autowired
private MettingRecordService mettingRecordService;
@Autowired
private IDeviceMessageFeign messageFeign;
@Autowired
private BasicSetService basicSetService;
@Override
public void excuteTask(ITask task) throws AppException {
......@@ -37,6 +50,7 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
private void syncMeetStatus() {
BasicSetEntity basicSetEntity = basicSetService.selectOne(new BasicSetEntity());
MettingRecordQuery mettingRecordQuery = new MettingRecordQuery();
//mettingRecordQuery.setFinishMethod(FinishMethodEnum.自动结束.getValue());
mettingRecordQuery.setMeetStatus(MeetStatusEnum.等待中.getValue());
......@@ -44,23 +58,13 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
for (MettingRecordEntity recordEntity : recordEntities) {
if(new Date().getTime()>recordEntity.getMeetTimeStart().getTime()){
if (new Date().getTime() > recordEntity.getMeetTimeStart().getTime()) {
//更新状态
recordEntity.setMeetStatus(MeetStatusEnum.进行中.getValue());
recordEntity.setUpdateTime(new Date());
recordEntity.setUpdateUserId(1L);
mettingRecordService.update(recordEntity);
}
/*
//判断当前时间是否已经在区间范围内,如果在 更新状态
boolean in = DateUtil.isIn(new Date(), recordEntity.getMeetTimeStart(), recordEntity.getMeetTimeEnd());
if (in) {
//更新状态
recordEntity.setMeetStatus(MeetStatusEnum.进行中.getValue());
recordEntity.setUpdateTime(new Date());
recordEntity.setUpdateUserId(1L);
mettingRecordService.update(recordEntity);
}*/
}
mettingRecordQuery = new MettingRecordQuery();
......@@ -76,6 +80,14 @@ public class SyncMeetStatusTaskImpl implements ITaskExcuteService {
pendRecordEntity.setUpdateTime(new Date());
pendRecordEntity.setUpdateUserId(1L);
mettingRecordService.update(pendRecordEntity);
//判断基础是否设置关闭切换通知,有则推送
if (!ObjectUtils.isEmpty(basicSetEntity.getMeetEnd()) && basicSetEntity.getMeetEnd() == YesNoEnum.YES.getValue()) {
UploadDeviceReq uploadDeviceReq = new UploadDeviceReq();
uploadDeviceReq.setDeviceCodeList(Arrays.asList(pendRecordEntity.getDeviceCode()));
uploadDeviceReq.setAction("postMeet");
messageFeign.downMsg(uploadDeviceReq);
}
}
}
......
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.basic.model;
import java.util.List;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
......@@ -9,61 +12,73 @@ import com.mortals.xhx.module.basic.model.vo.BasicSetVo;
import com.mortals.xhx.module.basic.model.BasicStatusEntity;
import lombok.Data;
/**
* 基础设置实体对象
*
* @author zxfei
* @date 2023-05-23
*/
* 基础设置实体对象
*
* @author zxfei
* @date 2023-12-27
*/
@Data
public class BasicSetEntity extends BasicSetVo {
private static final long serialVersionUID = 1L;
/**
* 是否显示照片(0.否,1.是)
*/
* 是否显示照片(0.否,1.是)
*/
private Integer showPhoto;
/**
* 是否显示姓名 (0.否,1.是)
*/
* 是否显示姓名 (0.否,1.是)
*/
private Integer showName;
/**
* 是否显示职位(0.否,1.是)
*/
* 是否显示职位(0.否,1.是)
*/
private Integer showPost;
/**
* 是否显示在岗状态(0.否,1.是)
*/
* 是否显示在岗状态(0.否,1.是)
*/
private Integer showWork;
/**
* 是否显示电话(0.否,1.是)
*/
* 是否显示电话(0.否,1.是)
*/
private Integer showPhone;
/**
* 显示电子门牌信息(0.显示时间,1.自定义内容)
*/
* 显示电子门牌信息(0.显示时间,1.自定义内容)
*/
private Integer showElect;
/**
* 显示电子门牌信息自定义内容
*/
* 显示电子门牌信息自定义内容
*/
private String showElectDesc;
/**
* 显示会议室门牌信息(0.显示时间,1.自定义内容)
*/
* 显示会议室门牌信息(0.显示时间,1.自定义内容)
*/
private Integer showMeet;
/**
* 显示会议室门牌信息自定义内容
*/
* 显示会议室门牌信息自定义内容
*/
private String showMeetDesc;
/**
* 备注
*/
* 备注
*/
private String remark;
/**
* 状态设置信息
*/
* 会议开始前几分钟切换
*/
private Integer preMeetStart;
/**
* 会议开始后几分钟切换
*/
private Integer postMeetStart;
/**
* 会议结束切换(0.否,1.是)
*/
private Integer meetEnd;
/**
* 状态设置信息
*/
private List<BasicStatusEntity> basicStatusList=new ArrayList<>();;
public List<BasicStatusEntity> getBasicStatusList(){
return basicStatusList;
return basicStatusList;
}
public void setBasicStatusList(List<BasicStatusEntity> basicStatusList){
......@@ -71,7 +86,7 @@ public class BasicSetEntity extends BasicSetVo {
}
@Override
public int hashCode() {
return this.getId().hashCode();
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
......@@ -79,32 +94,25 @@ public class BasicSetEntity extends BasicSetVo {
if (obj instanceof BasicSetEntity) {
BasicSetEntity tmp = (BasicSetEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
return true;
}
}
return false;
}
public void initAttrValue(){
this.showPhoto = 0;
this.showName = 0;
this.showPost = 0;
this.showWork = 0;
this.showPhone = 0;
this.showElect = 0;
this.showElectDesc = "";
this.showMeet = 0;
this.showMeetDesc = "";
this.remark = "";
this.showPhoto = 0;
this.showName = 0;
this.showPost = 0;
this.showWork = 0;
this.showPhone = 0;
this.showElect = 0;
this.showElectDesc = "";
this.showMeet = 0;
this.showMeetDesc = "";
this.remark = "";
this.preMeetStart = 0;
this.postMeetStart = 0;
this.meetEnd = 0;
}
}
\ No newline at end of file
package com.mortals.xhx.module.basic.web;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.basic.model.BasicSetQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
......@@ -11,49 +13,59 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.basic.model.BasicSetEntity;
import com.mortals.xhx.module.basic.service.BasicSetService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 基础设置
*
* @author zxfei
* @date 2023-05-23
*/
* 基础设置
*
* @author zxfei
* @date 2023-05-23
*/
@RestController
@RequestMapping("basic/set")
public class BasicSetController extends BaseCRUDJsonBodyMappingController<BasicSetService,BasicSetEntity,Long> {
public class BasicSetController extends BaseCRUDJsonBodyMappingController<BasicSetService, BasicSetEntity, Long> {
@Autowired
private ParamService paramService;
public BasicSetController(){
super.setModuleDesc( "基础设置");
public BasicSetController() {
super.setModuleDesc("基础设置");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "showPhoto", paramService.getParamBySecondOrganize("BasicSet","showPhoto"));
this.addDict(model, "showName", paramService.getParamBySecondOrganize("BasicSet","showName"));
this.addDict(model, "showPost", paramService.getParamBySecondOrganize("BasicSet","showPost"));
this.addDict(model, "showWork", paramService.getParamBySecondOrganize("BasicSet","showWork"));
this.addDict(model, "showPhone", paramService.getParamBySecondOrganize("BasicSet","showPhone"));
this.addDict(model, "showElect", paramService.getParamBySecondOrganize("BasicSet","showElect"));
this.addDict(model, "showMeet", paramService.getParamBySecondOrganize("BasicSet","showMeet"));
this.addDict(model, "showPhoto", paramService.getParamBySecondOrganize("BasicSet", "showPhoto"));
this.addDict(model, "showName", paramService.getParamBySecondOrganize("BasicSet", "showName"));
this.addDict(model, "showPost", paramService.getParamBySecondOrganize("BasicSet", "showPost"));
this.addDict(model, "showWork", paramService.getParamBySecondOrganize("BasicSet", "showWork"));
this.addDict(model, "showPhone", paramService.getParamBySecondOrganize("BasicSet", "showPhone"));
this.addDict(model, "showElect", paramService.getParamBySecondOrganize("BasicSet", "showElect"));
this.addDict(model, "showMeet", paramService.getParamBySecondOrganize("BasicSet", "showMeet"));
this.addDict(model, "meetEnd", YesNoEnum.getEnumMap());
super.init(model, context);
}
......@@ -68,7 +80,7 @@ public class BasicSetController extends BaseCRUDJsonBodyMappingController<BasicS
protected void saveBefore(BasicSetEntity entity, Map<String, Object> model, Context context) throws AppException {
BasicSetEntity basicSetEntity = this.service.selectOne(new BasicSetQuery(), context);
if(!ObjectUtils.isEmpty(basicSetEntity)){
if (!ObjectUtils.isEmpty(basicSetEntity)) {
entity.setId(basicSetEntity.getId());
}
super.saveBefore(entity, model, context);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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