Pārlūkot izejas kodu

获取设备列表增加逻辑,正在执法的设备不出现在列表中(代码处理)

Memory_LG 6 mēneši atpakaļ
vecāks
revīzija
ad4a3e8c31

+ 1 - 1
src/main/java/com/sooka/sponest/lawenforcement/device/service/impl/DeviceServiceImpl.java

@@ -43,7 +43,7 @@ public class DeviceServiceImpl implements IDeviceService {
 
         ScheduledFuture<?> future = scheduledTasks.get(deviceCode);
         //设备开机时,如果没有开启定时任务,并且没有正在执行工单任务时,开启定时任务
-        if(future == null || future.isCancelled() || openedDevice.contains(deviceCode)){
+        if((future == null || future.isCancelled()) && !openedDevice.contains(deviceCode)){
             // 创建一个新的定时任务
             Runnable task = () -> {
                 log.debug("设备开启超过六十分钟: {}" , deviceCode);

+ 44 - 18
src/main/java/com/sooka/sponest/lawenforcement/record/controller/LawenforcementRecordController.java

@@ -3,6 +3,7 @@ package com.sooka.sponest.lawenforcement.record.controller;
 import com.alibaba.fastjson.JSONArray;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.SpringUtils;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -18,11 +19,17 @@ import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementBindDevic
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementFillFormBO;
 import com.sooka.sponest.lawenforcement.record.service.ILawenforcementRecordService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 任务数据Controller
@@ -40,13 +47,14 @@ public class LawenforcementRecordController extends BaseController {
 
     /**
      * 远端调用:对接省平台数据
+     *
      * @param records JSONArray类型
      * @return AjaxResult
      */
     @PostMapping("/insertEnforceLawInfoByList")
-    public AjaxResult insertEnforceLawInfoByList(@RequestBody JSONArray records){
+    public AjaxResult insertEnforceLawInfoByList(@RequestBody JSONArray records) {
         //判断数据是否为空
-        if(records.isEmpty()){
+        if (records.isEmpty()) {
             return AjaxResult.error("数据为空");
         }
         return toAjax(lawenforcementRecordService.insertEnforceLawInfoByList(records));
@@ -64,7 +72,7 @@ public class LawenforcementRecordController extends BaseController {
     }
 
     @GetMapping("/getRecordList")
-    public AjaxResult getRecordList(LawenforcementRecord record){
+    public AjaxResult getRecordList(LawenforcementRecord record) {
         startPage();
         return AjaxResult.success(lawenforcementRecordService.getRecordList(record));
     }
@@ -73,7 +81,7 @@ public class LawenforcementRecordController extends BaseController {
      * 获取任务数据详细信息
      */
     @GetMapping("/getDetails/{id}")
-    public AjaxResult getDetailsById(@PathVariable("id") String id){
+    public AjaxResult getDetailsById(@PathVariable("id") String id) {
         return AjaxResult.success(lawenforcementRecordService.getDeatilsById(id));
     }
 
@@ -108,46 +116,64 @@ public class LawenforcementRecordController extends BaseController {
 
     /**
      * 获取设备列表
+     *
      * @return R
      */
     @GetMapping("/getDeivceList")
-    public R getDeivceList(VisuForestCloudCameraBO visuForestCloudCameraBO){
-        if(visuForestCloudCameraBO.getDeptId() == null){
+    public R getDeivceList(VisuForestCloudCameraBO visuForestCloudCameraBO) {
+        // 获取监控中心的执法设备列表
+        if (visuForestCloudCameraBO.getDeptId() == null) {
             visuForestCloudCameraBO.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
         }
-        return SpringUtils.getBean(RemoteEnforcementDeviceService.class).selectByCameraId(visuForestCloudCameraBO);
+        R<List<Map<String, Object>>> listR = SpringUtils.getBean(RemoteEnforcementDeviceService.class).selectByCameraId(visuForestCloudCameraBO);
+        // 获取当前正在执行任务的设备列表
+        List<Map<String, Object>> startCodes = lawenforcementRecordService.getStartRecordDeviceCode();
+        // 如果正在执法的设备列表为空,则直接返回监控中心的设备列表
+        if (CollectionUtils.isEmpty(startCodes)) {
+            return listR;
+        }
+        // 使用 Stream API 过滤掉正在执法的设备
+        List<Map<String, Object>> result = listR.getData().stream()
+                .filter(device -> !startCodes.stream()
+                        .map(codeMap -> MapUtils.getString(codeMap, "deviceId"))
+                        .collect(Collectors.toSet())
+                        .contains(MapUtils.getString(device, "cameraCode")))
+                .collect(Collectors.toList());
+        return R.ok(result);
     }
 
     /**
      * 绑定设备
      */
     @PostMapping("/bindDevice")
-    public AjaxResult addRecordLog(@RequestBody LawenforcementBindDeviceBO bindDeviceBO){
+    public AjaxResult addRecordLog(@RequestBody LawenforcementBindDeviceBO bindDeviceBO) {
         return toAjax(lawenforcementRecordService.addRecordLog(bindDeviceBO));
     }
 
     @PostMapping("/closeRecord")
-    public AjaxResult closeRecord(@RequestBody LawenforcementBindDeviceBO bindDeviceBO){
+    public AjaxResult closeRecord(@RequestBody LawenforcementBindDeviceBO bindDeviceBO) {
         return toAjax(lawenforcementRecordService.updateRecordLogEndTime(bindDeviceBO));
     }
 
     /**
      * 派发工单
+     *
      * @param record
      * @return
      */
     @PostMapping("/distributeRecord")
-    public AjaxResult distributeRecord(@RequestBody LawenforcementRecord record){
+    public AjaxResult distributeRecord(@RequestBody LawenforcementRecord record) {
         return toAjax(lawenforcementRecordService.distributeRecord(record));
     }
 
     /**
      * 工单填报
+     *
      * @param bo
      * @return
      */
     @PostMapping("/recordFillForm")
-    public AjaxResult recordFillForm(@RequestBody LawenforcementFillFormBO bo){
+    public AjaxResult recordFillForm(@RequestBody LawenforcementFillFormBO bo) {
         return toAjax(lawenforcementRecordService.recordFillForm(bo));
     }
 
@@ -174,19 +200,19 @@ public class LawenforcementRecordController extends BaseController {
     }
 
     /*
-    * 查询工单填报信息
-    *
-    * @author 韩福成
-    * @date 2024/11/5 上午8:31
-    */
+     * 查询工单填报信息
+     *
+     * @author 韩福成
+     * @date 2024/11/5 上午8:31
+     */
     @RequiresPermissions("lawenforcement:record:revoke")
     @GetMapping("/getFillForm")
-    public AjaxResult getFillForm(LawenforcementFillFormBO fillFormBO){
+    public AjaxResult getFillForm(LawenforcementFillFormBO fillFormBO) {
         return AjaxResult.success(lawenforcementRecordService.getFillForm(fillFormBO));
     }
 
     @PostMapping("/setRecrodState")
-    public AjaxResult setRecordState(@RequestBody LawenforcementBindDeviceBO bindDeviceBO){
+    public AjaxResult setRecordState(@RequestBody LawenforcementBindDeviceBO bindDeviceBO) {
         return toAjax(lawenforcementRecordService.setRecordState(bindDeviceBO));
     }
 }

+ 2 - 2
src/main/java/com/sooka/sponest/lawenforcement/record/mapper/LawenforcementRecordMapper.java

@@ -1,6 +1,5 @@
 package com.sooka.sponest.lawenforcement.record.mapper;
 
-import com.sooka.sponest.lawenforcement.device.domain.DeviceBO;
 import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
 import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecordLog;
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementBindDeviceBO;
@@ -11,7 +10,6 @@ import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementStandardD
 import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementSubitemDetailVO;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -161,4 +159,6 @@ public interface LawenforcementRecordMapper {
     void stopRecord(LawenforcementBindDeviceBO bindDeviceBO);
 
     void removeRecordInfoByIds(List<String> ids);
+
+    List<Map<String, Object>> getStartRecordDeviceCode();
 }

+ 2 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/service/ILawenforcementRecordService.java

@@ -122,4 +122,6 @@ public interface ILawenforcementRecordService {
     List<Map<String, Object>> getJsonDataMessageByPage(int pageNum, int pageSize);
 
     int setRecordState(LawenforcementBindDeviceBO bindDeviceBO);
+
+    List<Map<String, Object>> getStartRecordDeviceCode();
 }

+ 5 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/service/impl/LawenforcementRecordServiceImpl.java

@@ -494,4 +494,9 @@ public class LawenforcementRecordServiceImpl extends BaseServiceImpl implements
         //设置工单状态为存在隐患整改
         return recordMapper.setRecordState(bindDeviceBO);
     }
+
+    @Override
+    public List<Map<String, Object>> getStartRecordDeviceCode() {
+        return recordMapper.getStartRecordDeviceCode();
+    }
 }

+ 5 - 0
src/main/resources/mapper/lawenforcement/LawenforcementRecordMapper.xml

@@ -807,4 +807,9 @@
         </foreach>
     </delete>
 
+    <select id="getStartRecordDeviceCode" resultType="map">
+        select device_id as deviceId from lawenforcement_record_log
+        where ent_time is null and record_state = '0'
+    </select>
+
 </mapper>