suntianwu hace 3 años
padre
commit
fa7fe633cc

+ 7 - 6
src/main/java/com/iden/bms/controller/TraceController.java

@@ -22,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Author: lilt
@@ -74,13 +75,13 @@ public class TraceController {
             @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间(yyyy-MM-dd HH:mm:ss)")
 
     })
-    public Result<List<TraceVO>> listUploadImagesTrace(HttpServletRequest request, @RequestHeader(value = "token") String token,
+    public Result<Map<String,List<TraceVO>>> listUploadImagesTrace(HttpServletRequest request, @RequestHeader(value = "token") String token,
                                                        @RequestParam(value = "imageNames", required = true) String imageNames,
                                                        @RequestParam(value = "beginTime", required = false) String beginTime,
                                                        @RequestParam(value = "endTime", required = false) String endTime){
         try {
             UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
-            List<TraceVO> datas = this.traceService.listUploadImagesTrace(imageNames,beginTime,endTime,loginUser);
+            Map<String,List<TraceVO>> datas = this.traceService.listUploadImagesTrace(imageNames,beginTime,endTime,loginUser);
             return Result.success(datas);
         }catch (Exception e) {
             log.error("轨迹管理: 使用上传图像获取目标轨迹列表出现异常",e);
@@ -124,14 +125,14 @@ public class TraceController {
     )
     public void exportToExcel( HttpServletRequest request,@RequestHeader(name = "token", required = true) String token,
                               HttpServletResponse response,
-                              @RequestBody List<TraceVO> traceVOS) {
+                              @RequestBody Map<String,List<TraceVO>> traceVOSMap) {
         try {
             UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
-            this.traceService.exportToExcel(traceVOS,loginUser ,response);
+            this.traceService.exportToExcel(traceVOSMap,loginUser ,response);
         } catch (BDException e) {
-            log.error("导出小区列表出现异常",e);
+            log.error("轨迹下载出现异常",e);
         } catch (Exception e) {
-            log.error("小区管理: 导出小区列表出现异常",e);
+            log.error("轨迹管理: 轨迹下载出现异常",e);
         }
     }
 }

+ 41 - 26
src/main/java/com/iden/bms/service/TraceService.java

@@ -37,10 +37,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 /**
  *
@@ -103,8 +100,9 @@ public class TraceService {
      * 图像识别,使用特征码查询图像库,得到图库表中对应的数据列表
      * @return
      */
-    public List<TraceVO> listUploadImagesTrace(String imageNames, String beginTime, String endTime, UserLoginedConvertVO loginUser) {
-        List<TraceVO> result = new ArrayList<>();
+    public Map<String,List<TraceVO>> listUploadImagesTrace(String imageNames, String beginTime, String endTime, UserLoginedConvertVO loginUser) {
+        Map<String,List<TraceVO>> result = new HashMap<>();
+
         Date dateBegin = null;
         if(StringUtils.isNotEmpty(beginTime)){
             dateBegin  = DateUtils.strToDate(beginTime,"yyyy-MM-dd HH:mm:ss");
@@ -151,32 +149,41 @@ public class TraceService {
         }
 
         FaceMonitor faceMonitorFaceImag = FaceIdenTool.initFaceMonitorWithDataset(idenRoot,dataset);
-        for(FaceModel faceModel : faceModels) {
+        for(int i = 0; i < faceModels.length; i++) {
+            FaceModel faceModel = faceModels[i];
+            List<TraceVO> traceVOList = new ArrayList<>();
             FaceRetrieveResultVO faceRetrieveResultVO = FaceIdenTool.getHitResult(faceMonitorFaceImag,faceModel,true);
            if (faceRetrieveResultVO != null) {
                long hitIndex = faceRetrieveResultVO.getIndex();
                IdenFaceImage idenFaceImage = idenFaceImageService.getById(hitIndex);
                if(idenFaceImage != null){
-                   TraceVO vo = new TraceVO();
-                   BeanUtil.copyProperties(idenFaceImage,vo);
-                   if(vo.getCameraId() != null){
-                       IdenCamera idenCamera = this.idenCameraService.getById(vo.getCameraId());
-                       if(idenCamera != null) {
-                           vo.setDistrict(idenCamera.getDistrict());
-                           vo.setSubdistrict(idenCamera.getSubdistrict());
-
-                           Long communityId = idenCamera.getCommunityId();
-                           if(communityId != null ){
-                               IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
-                               if(idenCommunity != null) {
-                                   vo.setCommunityName(idenCommunity.getName());
-                               }
-                           }
-                       }
-                   }
-                   result.add(vo);
+
+                  for(IdenFaceImage idenFaceImage1 : idenFaceImageList){
+                      if(idenFaceImage.getUid().equals(idenFaceImage1.getUid())) {
+                          TraceVO vo = new TraceVO();
+                          BeanUtil.copyProperties(idenFaceImage1,vo);
+                          if(vo.getCameraId() != null){
+                              IdenCamera idenCamera = this.idenCameraService.getById(vo.getCameraId());
+                              if(idenCamera != null) {
+                                  vo.setDistrict(idenCamera.getDistrict());
+                                  vo.setSubdistrict(idenCamera.getSubdistrict());
+
+                                  Long communityId = idenCamera.getCommunityId();
+                                  if(communityId != null ){
+                                      IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
+                                      if(idenCommunity != null) {
+                                          vo.setCommunityName(idenCommunity.getName());
+                                      }
+                                  }
+                              }
+                          }
+                          traceVOList.add(vo);
+                      }
+                  }
+
                }
            }
+            result.put(imageNameArr[i],traceVOList);
         }
         return result;
     }
@@ -210,7 +217,15 @@ public class TraceService {
         return  vos;
     }
 
-    public void exportToExcel(List<TraceVO> records, UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
+    public void exportToExcel(Map<String,List<TraceVO>> map, UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
+
+        if(map == null || map.size() == 0){
+            return;
+        }
+        List<TraceVO> records = new ArrayList<>();
+        map.keySet().forEach(item->{
+            records.addAll(map.get(item));
+        });
 
         InputStream excelTemplateIs = null;
         try {

+ 1 - 0
src/main/java/com/iden/common/vo/TraceVO.java

@@ -69,4 +69,5 @@ public class TraceVO implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     @ApiModelProperty("modifyTime")
     private Date modifyTime;
+
 }

+ 2 - 19
src/test/java/com/face/videoCmd.java

@@ -14,27 +14,10 @@ public class videoCmd {
             // 执行tail -f命令
             Process process = Runtime.getRuntime().exec( ffmpegPath + " -ss 0:05 -i e:/20211223123223_76639ced-6400-11ec-b8f9-fa163e4e1e9f.mp4 -t 10 -c:v copy -c:a copy e:/555.mp4 ");
             InputStream inputStream = process.getInputStream();
-            this.reader = new BufferedReader(new InputStreamReader(inputStream));
-            String line;
-            try {
-                while((line = reader.readLine()) != null) {
-                    System.out.println(line);
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-            } finally {
-                if(reader != null){
-                    try {
-                        reader.close();
-                    } catch (Exception e){
-                        e.printStackTrace();
-                    }
 
-                }
-            }
 //            // 一定要启动新的线程,防止InputStream阻塞处理WebSocket的线程
-//            TailLogThread thread = new TailLogThread(inputStream);
-//            thread.start();
+            TailLogThread thread = new TailLogThread(inputStream);
+            thread.start();
 
         } catch (IOException e) {
             e.printStackTrace();