feat:主动拍照增加定时任务推送通知

dev
郭承 9 months ago
parent 5bc859e5f4
commit fb7ed2cf50

@ -0,0 +1,28 @@
package com.shxy.xymanager_common.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
@Data
@AllArgsConstructor
@ApiModel(value = "记录拍照装置通道信息", description = "记录拍照装置通道信息描述")
public class TermChannelModel implements Serializable {
@ApiModelProperty(value = "装置id", example = "123456")
private Integer termId;
@ApiModelProperty(value = "通道id", example = "123456")
private Integer channelId;
@ApiModelProperty(value = "拍照时间", example = "123456")
private Long photoTime;
@ApiModelProperty(value = "当前时间", example = "123456")
private Long currentTime;
}

@ -2,6 +2,7 @@ package com.shxy.xymanager_common.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
@ -15,6 +16,9 @@ public class TermCtrlVo {
@ApiModelProperty(value = "装置编号", example = "123455") @ApiModelProperty(value = "装置编号", example = "123455")
private Integer termId; private Integer termId;
@ApiModelProperty(value = "通道编号", example = "123456")
private Integer channelId;
@NotNull(message = "不能传入空值") @NotNull(message = "不能传入空值")
@ApiModelProperty(value = "控制对象数组", required = true) @ApiModelProperty(value = "控制对象数组", required = true)
private List<CtrlBean> list; private List<CtrlBean> list;

@ -44,4 +44,7 @@ public interface TerminalChannelMapperDao {
int updateByPrimaryKey(TerminalChannelMapper record); int updateByPrimaryKey(TerminalChannelMapper record);
TerminalChannelMapper selectByTermIdAndChannelId(@Param("termId") Integer termId, @Param("channelId") Integer channelId);
} }

@ -319,4 +319,12 @@
</foreach> </foreach>
</if> </if>
</select> </select>
<select id="selectByTermIdAndChannelId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from terminal_channel_mapper
where term_id = #{termId} and channel_id = #{channelId}
</select>
</mapper> </mapper>

@ -0,0 +1,67 @@
package com.shxy.xymanager_framework.timeTask;
import com.shxy.xymanager_common.bean.ServiceBody;
import com.shxy.xymanager_common.entity.Terminals;
import com.shxy.xymanager_common.model.TermChannelModel;
import com.shxy.xymanager_framework.socket.WebSocketServer;
import com.shxy.xymanager_service.impl.TermSetServiceImpl;
import com.shxy.xymanager_service.service.TerminalPhotoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.Map;
@Component
@Slf4j
public class TermChannelTask {
@Autowired
TerminalPhotoService terminalPhotoService;
@Resource
WebSocketServer webSocketServer;
//超时时间 分钟 5
Integer overtime = 1;
//创建记录主动拍照参数
// public static Map<String , TermChannelModel> termChannelModelMap = new HashMap<>();
@Scheduled(fixedDelay = 10000)
public void queryTermChannelTime() {
Map<String , TermChannelModel> termChannelModelMap = TermSetServiceImpl.termChannelModelMap;
//获取当前系统时间
Long time = System.currentTimeMillis();
if ( !termChannelModelMap.isEmpty() ) {
Iterator<String> iterator = termChannelModelMap.keySet().iterator();
while ( iterator.hasNext() ) {
String key = iterator.next();
TermChannelModel model = termChannelModelMap.get(key);
//开始拍照的时间 + 5分钟
Long currentTime = model.getCurrentTime() + ( overtime * 60 * 1000);
if ( time >= currentTime ) {
iterator.remove();
} else {
//调用查询最新照片
Terminals terminals = terminalPhotoService.getTakePicPhotoStatus(model).getData();
if ( terminals.checkInclude() ) {
String str = "装置:" + terminals.getCmdid() + " 在通道" + model.getChannelId() + "拍的最新图片已上传";
webSocketServer.sendNotice(str);
// System.out.println(str);
iterator.remove();
}
}
}
}
}
}

@ -10,19 +10,18 @@ import com.shxy.xymanager_common.constant.Constants;
import com.shxy.xymanager_common.dto.PhotoTimeResultDto; import com.shxy.xymanager_common.dto.PhotoTimeResultDto;
import com.shxy.xymanager_common.entity.RequestResults; import com.shxy.xymanager_common.entity.RequestResults;
import com.shxy.xymanager_common.entity.Resolution; import com.shxy.xymanager_common.entity.Resolution;
import com.shxy.xymanager_common.entity.TerminalChannelMapper;
import com.shxy.xymanager_common.entity.Terminals; import com.shxy.xymanager_common.entity.Terminals;
import com.shxy.xymanager_common.enums.CommonStatus; import com.shxy.xymanager_common.enums.CommonStatus;
import com.shxy.xymanager_common.exception.Asserts; import com.shxy.xymanager_common.exception.Asserts;
import com.shxy.xymanager_common.model.CmaRequestBackModel; import com.shxy.xymanager_common.model.*;
import com.shxy.xymanager_common.model.CmaRequestModel;
import com.shxy.xymanager_common.model.ResolutionModel;
import com.shxy.xymanager_common.model.TerminalScheduleRuleTimeListModel;
import com.shxy.xymanager_common.util.CmaUtil; import com.shxy.xymanager_common.util.CmaUtil;
import com.shxy.xymanager_common.util.MyDateUtils; import com.shxy.xymanager_common.util.MyDateUtils;
import com.shxy.xymanager_common.util.StringUtils; import com.shxy.xymanager_common.util.StringUtils;
import com.shxy.xymanager_common.util.xinyin.ProcessExecUtils; import com.shxy.xymanager_common.util.xinyin.ProcessExecUtils;
import com.shxy.xymanager_common.vo.*; import com.shxy.xymanager_common.vo.*;
import com.shxy.xymanager_dao.dao.RequestResultsDao; import com.shxy.xymanager_dao.dao.RequestResultsDao;
import com.shxy.xymanager_dao.dao.TerminalChannelMapperDao;
import com.shxy.xymanager_dao.dao.TerminalResolutionDao; import com.shxy.xymanager_dao.dao.TerminalResolutionDao;
import com.shxy.xymanager_service.service.CacheService; import com.shxy.xymanager_service.service.CacheService;
import com.shxy.xymanager_service.service.NewCacheService; import com.shxy.xymanager_service.service.NewCacheService;
@ -34,6 +33,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -58,6 +58,12 @@ public class TermSetServiceImpl implements TermSetService {
@Autowired @Autowired
private RequestResultsDao requestResultsDao; private RequestResultsDao requestResultsDao;
@Autowired
TerminalChannelMapperDao terminalChannelMapperDao;
//记录主动拍照参数
public static Map<String , TermChannelModel> termChannelModelMap = new HashMap<>();
@Override @Override
public ServiceBody<String> alarmMark(VoiceCtrlVo vo) { public ServiceBody<String> alarmMark(VoiceCtrlVo vo) {
String cmd = CmaUtil.alarmMark(vo.getCmdId(), vo.getCtrl()); String cmd = CmaUtil.alarmMark(vo.getCmdId(), vo.getCtrl());
@ -113,9 +119,22 @@ public class TermSetServiceImpl implements TermSetService {
*/ */
@Override @Override
public ServiceBody<CmaRequestModel> setTermCamera(TermCtrlVo vo) { public ServiceBody<CmaRequestModel> setTermCamera(TermCtrlVo vo) {
//返回对象
CmaRequestModel model = new CmaRequestModel(); CmaRequestModel model = new CmaRequestModel();
//装置信息
List<TermCtrlVo.CtrlBean> list = vo.getList(); List<TermCtrlVo.CtrlBean> list = vo.getList();
//装置id
Integer termId = vo.getTermId(); Integer termId = vo.getTermId();
//通道id
Integer channelId = vo.getChannelId();
//获取当前系统时间
Long currentTime = System.currentTimeMillis();
//根据当前的装置id和通道id查询当前最新的图片时间
TerminalChannelMapper terminalChannelMapper = terminalChannelMapperDao.selectByTermIdAndChannelId(termId, channelId);
Long photoTime = terminalChannelMapper.getPhotoTime().longValue();
termChannelModelMap.put(termId + "_" + channelId, new TermChannelModel(termId, channelId, photoTime, currentTime));
Map<Integer, Terminals> terminalMap = newCacheService.getTerminalMap(); Map<Integer, Terminals> terminalMap = newCacheService.getTerminalMap();
Terminals terminals = terminalMap.get(termId); Terminals terminals = terminalMap.get(termId);
String cmdid = null; String cmdid = null;
@ -129,6 +148,7 @@ public class TermSetServiceImpl implements TermSetService {
DateTime now = DateTime.now(); DateTime now = DateTime.now();
model.setDate(now); model.setDate(now);
return Asserts.success(model); return Asserts.success(model);
} }
@Override @Override

@ -1032,4 +1032,29 @@ public class TerminalPhotoServiceImpl implements TerminalPhotoService {
} }
@Override
public ServiceBody<Terminals> getTakePicPhotoStatus(TermChannelModel model) {
Boolean hasNew = false;
Integer termId = model.getTermId();
Integer channelId = model.getChannelId();
Long photoTime = model.getPhotoTime();
if ( null == photoTime ) {
Asserts.fail("查询时间不能缺少");
}
TerminalChannelMapper mapper = terminalChannelMapperDao.selectByTermIdAndChannelId(termId, channelId);
Map<Integer, Terminals> terminalMap = newCacheService.getTerminalMap();
Terminals terminals = terminalMap.get(termId);
if ( null != mapper ) {
if (mapper.getPhotoTime().longValue() > photoTime) {
hasNew = true;
}
}
terminals.setChecked(hasNew);
return Asserts.success(terminals);
}
} }

@ -1,6 +1,7 @@
package com.shxy.xymanager_service.service; package com.shxy.xymanager_service.service;
import com.shxy.xymanager_common.bean.ServiceBody; import com.shxy.xymanager_common.bean.ServiceBody;
import com.shxy.xymanager_common.entity.Terminals;
import com.shxy.xymanager_common.model.*; import com.shxy.xymanager_common.model.*;
import com.shxy.xymanager_common.vo.*; import com.shxy.xymanager_common.vo.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -8,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.Map;
/** /**
* *
@ -114,4 +116,11 @@ public interface TerminalPhotoService {
ServiceBody<TerminalPhotoListModel> getTestTerminalPhotoList(String requestIp); ServiceBody<TerminalPhotoListModel> getTestTerminalPhotoList(String requestIp);
ServiceBody<String> takeAlarm(TerminalPhotoTestVo vo); ServiceBody<String> takeAlarm(TerminalPhotoTestVo vo);
/**
*
* @param model
* @return
*/
ServiceBody<Terminals> getTakePicPhotoStatus(TermChannelModel model);
} }

Loading…
Cancel
Save