From fb7ed2cf500b844f3d27f4320d469a56763327eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E6=89=BF?= Date: Fri, 27 Sep 2024 14:06:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=B8=BB=E5=8A=A8=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/TermChannelModel.java | 28 ++++++++ .../shxy/xymanager_common/vo/TermCtrlVo.java | 4 ++ .../dao/TerminalChannelMapperDao.java | 3 + .../mappers/TerminalChannelMapperDao.xml | 8 +++ .../timeTask/TermChannelTask.java | 67 +++++++++++++++++++ .../impl/TermSetServiceImpl.java | 28 ++++++-- .../impl/TerminalPhotoServiceImpl.java | 25 +++++++ .../service/TerminalPhotoService.java | 9 +++ 8 files changed, 168 insertions(+), 4 deletions(-) create mode 100644 xymanager_common/src/main/java/com/shxy/xymanager_common/model/TermChannelModel.java create mode 100644 xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/TermChannelTask.java diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TermChannelModel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TermChannelModel.java new file mode 100644 index 0000000..f0f0a8c --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TermChannelModel.java @@ -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; + +} diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TermCtrlVo.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TermCtrlVo.java index 766e752..fd77e62 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TermCtrlVo.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TermCtrlVo.java @@ -2,6 +2,7 @@ package com.shxy.xymanager_common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -15,6 +16,9 @@ public class TermCtrlVo { @ApiModelProperty(value = "装置编号", example = "123455") private Integer termId; + @ApiModelProperty(value = "通道编号", example = "123456") + private Integer channelId; + @NotNull(message = "不能传入空值") @ApiModelProperty(value = "控制对象数组", required = true) private List list; diff --git a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalChannelMapperDao.java b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalChannelMapperDao.java index 5b82e53..c8a9d0e 100644 --- a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalChannelMapperDao.java +++ b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalChannelMapperDao.java @@ -44,4 +44,7 @@ public interface TerminalChannelMapperDao { int updateByPrimaryKey(TerminalChannelMapper record); + TerminalChannelMapper selectByTermIdAndChannelId(@Param("termId") Integer termId, @Param("channelId") Integer channelId); + + } \ No newline at end of file diff --git a/xymanager_dao/src/main/resources/mappers/TerminalChannelMapperDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalChannelMapperDao.xml index 6f4dea0..f5064db 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalChannelMapperDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalChannelMapperDao.xml @@ -319,4 +319,12 @@ + + + \ No newline at end of file diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/TermChannelTask.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/TermChannelTask.java new file mode 100644 index 0000000..db4e8d7 --- /dev/null +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/TermChannelTask.java @@ -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 termChannelModelMap = new HashMap<>(); + + @Scheduled(fixedDelay = 10000) + public void queryTermChannelTime() { + Map termChannelModelMap = TermSetServiceImpl.termChannelModelMap; + //获取当前系统时间 + Long time = System.currentTimeMillis(); + if ( !termChannelModelMap.isEmpty() ) { + Iterator 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(); + } + } + + + } + + } + } + +} diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java index daf0d04..ca66f4f 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java @@ -10,19 +10,18 @@ import com.shxy.xymanager_common.constant.Constants; import com.shxy.xymanager_common.dto.PhotoTimeResultDto; import com.shxy.xymanager_common.entity.RequestResults; 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.enums.CommonStatus; import com.shxy.xymanager_common.exception.Asserts; -import com.shxy.xymanager_common.model.CmaRequestBackModel; -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.model.*; import com.shxy.xymanager_common.util.CmaUtil; import com.shxy.xymanager_common.util.MyDateUtils; import com.shxy.xymanager_common.util.StringUtils; import com.shxy.xymanager_common.util.xinyin.ProcessExecUtils; import com.shxy.xymanager_common.vo.*; 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_service.service.CacheService; import com.shxy.xymanager_service.service.NewCacheService; @@ -34,6 +33,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.validation.constraints.NotEmpty; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -58,6 +58,12 @@ public class TermSetServiceImpl implements TermSetService { @Autowired private RequestResultsDao requestResultsDao; + @Autowired + TerminalChannelMapperDao terminalChannelMapperDao; + + //记录主动拍照参数 + public static Map termChannelModelMap = new HashMap<>(); + @Override public ServiceBody alarmMark(VoiceCtrlVo vo) { String cmd = CmaUtil.alarmMark(vo.getCmdId(), vo.getCtrl()); @@ -113,9 +119,22 @@ public class TermSetServiceImpl implements TermSetService { */ @Override public ServiceBody setTermCamera(TermCtrlVo vo) { + //返回对象 CmaRequestModel model = new CmaRequestModel(); + //装置信息 List list = vo.getList(); + //装置id 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 terminalMap = newCacheService.getTerminalMap(); Terminals terminals = terminalMap.get(termId); String cmdid = null; @@ -129,6 +148,7 @@ public class TermSetServiceImpl implements TermSetService { DateTime now = DateTime.now(); model.setDate(now); return Asserts.success(model); + } @Override diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java index 950c8e8..f4b2dda 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java @@ -1032,4 +1032,29 @@ public class TerminalPhotoServiceImpl implements TerminalPhotoService { } + @Override + public ServiceBody 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 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); + } + } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalPhotoService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalPhotoService.java index de54a4f..76e4ded 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalPhotoService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalPhotoService.java @@ -1,6 +1,7 @@ package com.shxy.xymanager_service.service; 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.vo.*; import org.springframework.web.multipart.MultipartFile; @@ -8,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.math.BigInteger; import java.util.Date; +import java.util.Map; /** * 装置图片接口 @@ -114,4 +116,11 @@ public interface TerminalPhotoService { ServiceBody getTestTerminalPhotoList(String requestIp); ServiceBody takeAlarm(TerminalPhotoTestVo vo); + + /** + * 获取最新图片 + * @param model + * @return + */ + ServiceBody getTakePicPhotoStatus(TermChannelModel model); }