From 9e56ed8515dfe8873d06ca053a8ec253b615d0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E6=89=BF?= Date: Fri, 27 Sep 2024 15:18:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E4=B8=BB=E5=8A=A8?= =?UTF-8?q?=E6=8B=8D=E7=85=A7=E5=AE=9A=E6=97=B6=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/TerminalChannelMapperDao.java | 2 - .../mappers/TerminalChannelMapperDao.xml | 7 --- .../timeTask/TermChannelTask.java | 52 ++++++++++++------- .../impl/TermSetServiceImpl.java | 19 ++++--- .../impl/TerminalPhotoServiceImpl.java | 26 ---------- .../service/TerminalPhotoService.java | 7 +-- 6 files changed, 46 insertions(+), 67 deletions(-) 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 c8a9d0e..b889518 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,7 +44,5 @@ 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 f5064db..6d3da65 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalChannelMapperDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalChannelMapperDao.xml @@ -320,11 +320,4 @@ - - \ 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 index 5289dc2..91010a6 100644 --- 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 @@ -1,10 +1,14 @@ package com.shxy.xymanager_framework.timeTask; import com.shxy.xymanager_common.bean.ServiceBody; +import com.shxy.xymanager_common.entity.TerminalChannelMapper; +import com.shxy.xymanager_common.entity.TerminalChannelMapperExample; import com.shxy.xymanager_common.entity.Terminals; import com.shxy.xymanager_common.model.TermChannelModel; +import com.shxy.xymanager_dao.dao.TerminalChannelMapperDao; import com.shxy.xymanager_framework.socket.WebSocketServer; import com.shxy.xymanager_service.impl.TermSetServiceImpl; +import com.shxy.xymanager_service.service.NewCacheService; import com.shxy.xymanager_service.service.TerminalPhotoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +18,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.Iterator; +import java.util.List; import java.util.Map; @Component @@ -21,40 +26,49 @@ import java.util.Map; public class TermChannelTask { @Autowired - TerminalPhotoService terminalPhotoService; + TerminalChannelMapperDao terminalChannelMapperDao; + + @Autowired + NewCacheService newCacheService; @Resource WebSocketServer webSocketServer; //超时时间 分钟 5 - Integer overtime = 1; + Integer overtime = 5; //创建记录主动拍照参数 // public static Map termChannelModelMap = new HashMap<>(); - @Scheduled(fixedDelay = 10000) + @Scheduled(fixedDelay = 30000) public void queryTermChannelTime() { - Map termChannelModelMap = TermSetServiceImpl.termChannelModelMap; - //获取当前系统时间 - Long time = System.currentTimeMillis(); - if ( !termChannelModelMap.isEmpty() ) { - Iterator iterator = termChannelModelMap.keySet().iterator(); + if (!TermSetServiceImpl.termChannelModelMap.isEmpty()) { + Iterator iterator = TermSetServiceImpl.termChannelModelMap.keySet().iterator(); - while ( iterator.hasNext() ) { + while (iterator.hasNext()) { String key = iterator.next(); - TermChannelModel model = termChannelModelMap.get(key); + TermChannelModel model = TermSetServiceImpl.termChannelModelMap.get(key); //开始拍照的时间 + 5分钟 - Long currentTime = model.getCurrentTime() + ( overtime * 60 * 1000); - if ( time >= currentTime ) { + Long currentTime = model.getCurrentTime() + (overtime * 60 * 1000); + if (System.currentTimeMillis() >= currentTime) { iterator.remove(); } else { - //调用查询最新照片 - Terminals terminals = terminalPhotoService.getTakePicPhotoStatus(model).getData(); - if ( terminals.checkInclude() ) { - String str = "装置:" + terminals.getCmdid() + " 在通道" + model.getChannelId() + "拍的最新图片已上传"; - webSocketServer.sendNotice("photo",str); -// System.out.println(str); - iterator.remove(); + TerminalChannelMapperExample terminalChannelMapperExample = new TerminalChannelMapperExample(); + TerminalChannelMapperExample.Criteria criteria = terminalChannelMapperExample.createCriteria(); + criteria.andTermIdEqualTo(model.getTermId()); + criteria.andChannelIdEqualTo(model.getChannelId().byteValue()); + //根据当前的装置id和通道id查询最新的图片时间 + List terminalChannelMappers = terminalChannelMapperDao.selectByExample(terminalChannelMapperExample); + if (terminalChannelMappers.size() > 0) { + Long photoTime = terminalChannelMappers.get(0).getPhotoTime().longValue(); + if (photoTime > model.getPhotoTime()) { + Map terminalMap = newCacheService.getTerminalMap(); + Terminals terminals = terminalMap.get(model.getTermId()); + String str = "装置:" + terminals.getCmdid() + " 在通道" + model.getChannelId() + "拍的最新图片已上传"; + webSocketServer.sendNotice("photo", 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 ca66f4f..4de9ef0 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 @@ -8,10 +8,7 @@ import com.alibaba.fastjson.JSONObject; import com.shxy.xymanager_common.bean.ServiceBody; 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.entity.*; import com.shxy.xymanager_common.enums.CommonStatus; import com.shxy.xymanager_common.exception.Asserts; import com.shxy.xymanager_common.model.*; @@ -129,11 +126,19 @@ public class TermSetServiceImpl implements TermSetService { Integer channelId = vo.getChannelId(); //获取当前系统时间 Long currentTime = System.currentTimeMillis(); + + TerminalChannelMapperExample terminalChannelMapperExample = new TerminalChannelMapperExample(); + TerminalChannelMapperExample.Criteria criteria = terminalChannelMapperExample.createCriteria(); + criteria.andTermIdEqualTo(termId); + criteria.andChannelIdEqualTo(channelId.byteValue()); + //根据当前的装置id和通道id查询当前最新的图片时间 - TerminalChannelMapper terminalChannelMapper = terminalChannelMapperDao.selectByTermIdAndChannelId(termId, channelId); - Long photoTime = terminalChannelMapper.getPhotoTime().longValue(); + List terminalChannelMappers = terminalChannelMapperDao.selectByExample(terminalChannelMapperExample); + if ( terminalChannelMappers.size() > 0 ) { + Long photoTime = terminalChannelMappers.get(0).getPhotoTime().longValue(); + termChannelModelMap.put(termId + "_" + channelId, new TermChannelModel(termId, channelId, photoTime, currentTime)); + } - termChannelModelMap.put(termId + "_" + channelId, new TermChannelModel(termId, channelId, photoTime, currentTime)); Map terminalMap = newCacheService.getTerminalMap(); Terminals terminals = terminalMap.get(termId); 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 f4b2dda..e048e26 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 @@ -1031,30 +1031,4 @@ public class TerminalPhotoServiceImpl implements TerminalPhotoService { return result; } - - @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 76e4ded..d407d0a 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 @@ -117,10 +117,5 @@ public interface TerminalPhotoService { ServiceBody takeAlarm(TerminalPhotoTestVo vo); - /** - * 获取最新图片 - * @param model - * @return - */ - ServiceBody getTakePicPhotoStatus(TermChannelModel model); + }