From 2c07aad6cbbbdb3cd757f76086136d78f16a03f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=98=95?= Date: Wed, 23 Aug 2023 11:14:36 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=AD=A6=E6=8A=A5=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9F=A5=E8=AF=A2=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/impl/TaskStatusName.java | 32 +++++++ .../mapper/SensorTaskMapper.java | 4 - .../pojo/po/AlarmTaskResult.java | 14 ++++ .../service/SensorTaskService.java | 4 +- .../service/impl/SensorTaskServiceImpl.java | 83 +++++++++++++++---- src/main/resources/mappers/SensorTask.xml | 6 -- .../service/SensorTaskServiceTest.java | 17 ++++ 7 files changed, 130 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/zjyr/beidouservice/common/impl/TaskStatusName.java create mode 100644 src/main/java/com/zjyr/beidouservice/pojo/po/AlarmTaskResult.java diff --git a/src/main/java/com/zjyr/beidouservice/common/impl/TaskStatusName.java b/src/main/java/com/zjyr/beidouservice/common/impl/TaskStatusName.java new file mode 100644 index 0000000..f4b0ae6 --- /dev/null +++ b/src/main/java/com/zjyr/beidouservice/common/impl/TaskStatusName.java @@ -0,0 +1,32 @@ +package com.zjyr.beidouservice.common.impl; + +import com.zjyr.beidouservice.common.EnumerationBase; + +public enum TaskStatusName implements EnumerationBase { + TASK_OK(0, "TASK_OK"), + + TASK_ERROR(1, "TASK_ERROR"), + + TASK_TIMEOUT(2, "TASK_TIMEOUT"), + + TASK_UNRESPONSE(3, "TASK_UNRESPONSE"), + ; + + private final Integer code; + private final String desc; + + TaskStatusName(int val, String desc) { + this.code = val; + this.desc = desc; + } + + @Override + public Integer getValue() { + return this.code; + } + + @Override + public String getDescription() { + return this.desc; + } +} diff --git a/src/main/java/com/zjyr/beidouservice/mapper/SensorTaskMapper.java b/src/main/java/com/zjyr/beidouservice/mapper/SensorTaskMapper.java index 8e7146f..2aa502c 100644 --- a/src/main/java/com/zjyr/beidouservice/mapper/SensorTaskMapper.java +++ b/src/main/java/com/zjyr/beidouservice/mapper/SensorTaskMapper.java @@ -12,10 +12,6 @@ public interface SensorTaskMapper { List selectAllByTaskId(@Param("taskId") Integer taskId); - List selectAllResponse(@Param("taskId") Integer taskId); - - List selectAllRsponseSuccessed(@Param("taskId") Integer taskId); - int addNewSensorTaskData(@Param("sensor") SensorTask sensorTask); int addNewSensorTaskDatas(@Param("taskLists") List taskLists); diff --git a/src/main/java/com/zjyr/beidouservice/pojo/po/AlarmTaskResult.java b/src/main/java/com/zjyr/beidouservice/pojo/po/AlarmTaskResult.java new file mode 100644 index 0000000..185cda0 --- /dev/null +++ b/src/main/java/com/zjyr/beidouservice/pojo/po/AlarmTaskResult.java @@ -0,0 +1,14 @@ +package com.zjyr.beidouservice.pojo.po; + +import com.zjyr.beidouservice.common.impl.TaskStatusName; +import com.zjyr.beidouservice.pojo.entry.SensorTask; +import lombok.Builder; +import lombok.Data; + +@Builder +@Data +public class AlarmTaskResult { + private Long sensorId; + private TaskStatusName taskStatus; + private SensorTask taskInfo; +} diff --git a/src/main/java/com/zjyr/beidouservice/service/SensorTaskService.java b/src/main/java/com/zjyr/beidouservice/service/SensorTaskService.java index 6333b2d..47373c9 100644 --- a/src/main/java/com/zjyr/beidouservice/service/SensorTaskService.java +++ b/src/main/java/com/zjyr/beidouservice/service/SensorTaskService.java @@ -2,6 +2,7 @@ package com.zjyr.beidouservice.service; import com.github.pagehelper.PageInfo; import com.zjyr.beidouservice.pojo.entry.SensorTask; +import com.zjyr.beidouservice.pojo.po.AlarmTaskResult; import com.zjyr.beidouservice.pojo.vo.binary.SensorTaskAck; import java.util.List; @@ -13,8 +14,7 @@ public interface SensorTaskService { int getRespSuccessedSensors(int taskId); - List getResponseSuccessedItems(int taskId); - List getResponsedItems(int taskId); + List getSensorTaskResult(int taskId, long timeOut, List sensorId); PageInfo querySensorTaskData(int taskId, int page, int nItems); } diff --git a/src/main/java/com/zjyr/beidouservice/service/impl/SensorTaskServiceImpl.java b/src/main/java/com/zjyr/beidouservice/service/impl/SensorTaskServiceImpl.java index 167c9fa..4b55782 100644 --- a/src/main/java/com/zjyr/beidouservice/service/impl/SensorTaskServiceImpl.java +++ b/src/main/java/com/zjyr/beidouservice/service/impl/SensorTaskServiceImpl.java @@ -2,8 +2,11 @@ package com.zjyr.beidouservice.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.zjyr.beidouservice.common.impl.TaskResultName; +import com.zjyr.beidouservice.common.impl.TaskStatusName; import com.zjyr.beidouservice.mapper.SensorTaskMapper; import com.zjyr.beidouservice.pojo.entry.SensorTask; +import com.zjyr.beidouservice.pojo.po.AlarmTaskResult; import com.zjyr.beidouservice.pojo.vo.binary.SensorTaskAck; import com.zjyr.beidouservice.service.SensorTaskService; import jakarta.annotation.Resource; @@ -24,19 +27,19 @@ public class SensorTaskServiceImpl implements SensorTaskService { @Override public void addSensorTaskResponse(Long controlId, SensorTaskAck sensorTaskAck) { List sensorTasks = new ArrayList<>(); - Date timeStamp = new Date(sensorTaskAck.getAckTimestamp() * 1000L); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date timeStamp = new Date(sensorTaskAck.getAckTimestamp() * 1000L); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (var v : sensorTaskAck.getSensorStatus()) { sensorTasks.add(SensorTask.builder() - .taskId(sensorTaskAck.getTaskId()) - .deviceId(controlId) - .sensorId((long) v.getSensorId()) - .deviceId(0L) - .taskResult(v.getTaskResult()) - .channel(v.getTunnelName()) - .reportTime(sdf.format(timeStamp)) - .build()); + .taskId(sensorTaskAck.getTaskId()) + .deviceId(controlId) + .sensorId((long) v.getSensorId()) + .deviceId(0L) + .taskResult(v.getTaskResult()) + .channel(v.getTunnelName()) + .reportTime(sdf.format(timeStamp)) + .build()); } sensorTaskMapper.addNewSensorTaskDatas(sensorTasks); @@ -53,20 +56,64 @@ public class SensorTaskServiceImpl implements SensorTaskService { } @Override - public List getResponseSuccessedItems(int taskId) { - return null; - } + public List getSensorTaskResult(int taskId, long timeOut, List sensorId) { + List results = new ArrayList<>(sensorId.size()); - @Override - public List getResponsedItems(int taskId) { - return null; + if (sensorId.isEmpty()) { + return results; + + } + + + TaskStatusName respStatus = System.currentTimeMillis() > timeOut ? TaskStatusName.TASK_TIMEOUT : + TaskStatusName.TASK_UNRESPONSE; + + List allTask = sensorTaskMapper.selectAllByTaskId(taskId); + List successedTask = + allTask.stream().filter(k -> k.getTaskResult() == TaskResultName.TASK_RESULT_SUCCESSED).toList(); + List failedTask = + allTask.stream().filter(k -> !successedTask.stream().map(SensorTask::getSensorId).toList().contains(k.getSensorId())).toList(); + List unResponse = + sensorId.stream().filter(k -> !allTask.stream().map(SensorTask::getSensorId).toList().contains(k)).toList(); + + for (var v : unResponse) { + AlarmTaskResult result = AlarmTaskResult.builder() + .sensorId(v) + .taskStatus(respStatus) + .taskInfo(null) + .build(); + + results.add(result); + } + + for (var v : failedTask) { + AlarmTaskResult result = AlarmTaskResult.builder() + .sensorId(v.getSensorId()) + .taskStatus(TaskStatusName.TASK_ERROR) + .taskInfo(v) + .build(); + + results.add(result); + } + + for (var v : successedTask) { + AlarmTaskResult result = AlarmTaskResult.builder() + .sensorId(v.getSensorId()) + .taskStatus(TaskStatusName.TASK_OK) + .taskInfo(v) + .build(); + + results.add(result); + } + + return results; } @Override public PageInfo querySensorTaskData(int taskId, int page, int nItems) { PageHelper.startPage(page, nItems); - List sensorTasks = sensorTaskMapper.selectAllByTaskId(taskId); - PageInfo pgInfo = new PageInfo<>(sensorTasks); + List sensorTasks = sensorTaskMapper.selectAllByTaskId(taskId); + PageInfo pgInfo = new PageInfo<>(sensorTasks); PageHelper.clearPage(); return pgInfo; } diff --git a/src/main/resources/mappers/SensorTask.xml b/src/main/resources/mappers/SensorTask.xml index 385e672..09e31e2 100644 --- a/src/main/resources/mappers/SensorTask.xml +++ b/src/main/resources/mappers/SensorTask.xml @@ -81,10 +81,4 @@ WHERE taskResult = ${@com.zjyr.beidouservice.common.impl.TaskResultName@TASK_RESULT_SUCCESSED.getValue()} AND taskId = #{taskId}; - - - - \ No newline at end of file diff --git a/src/test/java/com/zjyr/beidouservice/service/SensorTaskServiceTest.java b/src/test/java/com/zjyr/beidouservice/service/SensorTaskServiceTest.java index ecf45cd..9acb570 100644 --- a/src/test/java/com/zjyr/beidouservice/service/SensorTaskServiceTest.java +++ b/src/test/java/com/zjyr/beidouservice/service/SensorTaskServiceTest.java @@ -2,6 +2,7 @@ package com.zjyr.beidouservice.service; import com.github.pagehelper.PageInfo; import com.zjyr.beidouservice.pojo.entry.SensorTask; +import com.zjyr.beidouservice.pojo.po.AlarmTaskResult; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; @@ -10,6 +11,9 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.Rollback; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Slf4j @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) @@ -28,4 +32,17 @@ public class SensorTaskServiceTest { log.info("Item ID: {}", c.getId()); } } + + @Test + public void getSensorTaskResult() { + List sensorId = new ArrayList<>(); + for(long i = 0; i < 10; i++) { + sensorId.add(i); + } + List task = sensorTaskService.getSensorTaskResult(0, System.currentTimeMillis(), sensorId); + + for (var c : task) { + log.info("Item: {}, {}", c.getSensorId(), c.getTaskStatus()); + } + } }