From 71cdab317c7f2e4ec75bc706d151aa9e2417e8ce Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 23 Apr 2025 14:00:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BD=AC=E6=8D=A2=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E8=A7=84=E7=BA=A6=E7=9A=84=E6=8B=8D=E7=85=A7=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=A1=A8=E5=88=B0=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/ScheduleDetailsDto.java | 11 +++- .../entity/CameraSchedule.java | 14 +++++ .../model/CameraScheduleModel.java | 11 ++++ .../impl/CameraScheduleServiceImpl.java | 59 ++++++++++++++++++- .../service/CameraScheduleService.java | 6 +- 5 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 xymanager_common/src/main/java/com/shxy/xymanager_common/model/CameraScheduleModel.java diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/ScheduleDetailsDto.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/ScheduleDetailsDto.java index 4d9272c..11503e0 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/ScheduleDetailsDto.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/ScheduleDetailsDto.java @@ -3,8 +3,6 @@ package com.shxy.xymanager_common.dto; import lombok.Data; import java.io.Serializable; -import java.sql.Time; -import java.util.Date; @Data public class ScheduleDetailsDto implements Serializable { @@ -20,4 +18,13 @@ public class ScheduleDetailsDto implements Serializable { private static final long serialVersionUID = 1L; + public void initMinute(int min) { + hour = min / 60; + minute = min - hour * 60; + } + + public int calMinute() { + return hour * 60 + minute; + } + } \ No newline at end of file diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/CameraSchedule.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/CameraSchedule.java index c8e6d59..49f7355 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/CameraSchedule.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/CameraSchedule.java @@ -1,5 +1,9 @@ package com.shxy.xymanager_common.entity; +import com.shxy.xymanager_common.dto.ScheduleDetailsDto; + +import java.util.List; + public class CameraSchedule { /** * @@ -165,4 +169,14 @@ public class CameraSchedule { public void setData(String data) { this.data = data; } + + private List list; + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } } \ No newline at end of file diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/CameraScheduleModel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/CameraScheduleModel.java new file mode 100644 index 0000000..a6c2492 --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/CameraScheduleModel.java @@ -0,0 +1,11 @@ +package com.shxy.xymanager_common.model; + +import com.shxy.xymanager_common.dto.ScheduleDetailsDto; +import lombok.Data; + +import java.util.List; + +@Data +public class CameraScheduleModel { + List groupData; +} diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CameraScheduleServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CameraScheduleServiceImpl.java index 38509d3..300a7eb 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CameraScheduleServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/CameraScheduleServiceImpl.java @@ -1,16 +1,21 @@ package com.shxy.xymanager_service.impl; +import com.shxy.xymanager_common.dto.ScheduleDetailsDto; import com.shxy.xymanager_common.entity.CameraSchedule; import com.shxy.xymanager_common.entity.CameraScheduleExample; +import com.shxy.xymanager_common.model.CameraScheduleModel; +import com.shxy.xymanager_common.util.JSONUtil; import com.shxy.xymanager_dao.dao.CameraScheduleMapper; import com.shxy.xymanager_service.service.CameraScheduleService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @@ -23,7 +28,7 @@ public class CameraScheduleServiceImpl implements CameraScheduleService { CameraScheduleMapper mapper; @Override - public CameraSchedule getOne(Integer termId, Integer channel) { + public CameraSchedule getOne(Integer termId, Integer channel) throws Exception { CameraSchedule result = null; CameraScheduleExample example = new CameraScheduleExample(); CameraScheduleExample.Criteria criteria = example.createCriteria(); @@ -32,18 +37,68 @@ public class CameraScheduleServiceImpl implements CameraScheduleService { List list = mapper.selectByExampleWithBLOBs(example); if (!CollectionUtils.isEmpty(list)) { result = list.get(0); + this.processData(result); } return result; } @Override - public List list(Integer termId) { + public List list(Integer termId) throws Exception { CameraScheduleExample example = new CameraScheduleExample(); CameraScheduleExample.Criteria criteria = example.createCriteria(); if (termId != null) { criteria.andTermIdEqualTo(termId); } List list = mapper.selectByExampleWithBLOBs(example); + for (CameraSchedule item : list) { + this.processData(item); + } + return list; + } + + @Override + public List list(List termIdList) throws Exception { + CameraScheduleExample example = new CameraScheduleExample(); + CameraScheduleExample.Criteria criteria = example.createCriteria(); + if (termIdList != null) { + criteria.andTermIdIn(termIdList); + } + List list = mapper.selectByExampleWithBLOBs(example); + for (CameraSchedule item : list) { + this.processData(item); + } return list; } + + private void processData(CameraSchedule item) throws Exception { + if (StringUtils.isNotBlank(item.getData())) { + CameraScheduleModel model = JSONUtil.json2Object(item.getData(), CameraScheduleModel.class); + List list = model.getGroupData(); + if (item.getProtocol() == 65290 || item.getProtocol() == 65298) { + list = this.changeSchedule(list); + } + item.setList(list); + } + } + + private List changeSchedule(List list) { + if (list.size() != 3) { + return list; + } + ScheduleDetailsDto first = list.get(0); + ScheduleDetailsDto second = list.get(1); + ScheduleDetailsDto third = list.get(2); + int interval = first.getHour() * 60 + first.getMinute(); + int start = second.getHour() * 60 + second.getMinute(); + int end = third.getHour() * 60 + third.getMinute(); + + List result = new ArrayList<>(); + while (start < end) { + ScheduleDetailsDto item = new ScheduleDetailsDto(); + item.initMinute(start); + result.add(item); + start = start + interval; + } + return result; + } } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CameraScheduleService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CameraScheduleService.java index 0f11f66..c7658c3 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CameraScheduleService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/CameraScheduleService.java @@ -6,8 +6,10 @@ import java.util.List; public interface CameraScheduleService { - CameraSchedule getOne(Integer termId, Integer channel); + CameraSchedule getOne(Integer termId, Integer channel) throws Exception; - List list(Integer termId); + List list(Integer termId) throws Exception; + + List list(List termIdList) throws Exception; }