suntianwu 3 vuotta sitten
vanhempi
commit
a369e05aaa

+ 3 - 3
src/main/java/com/iden/bms/controller/PersonController.java

@@ -88,11 +88,11 @@ public class PersonController {
             String url = personService.uploadImage(file);
             String url = personService.uploadImage(file);
             return  Result.success("上传成功!",url);
             return  Result.success("上传成功!",url);
         } catch (BDException e) {
         } catch (BDException e) {
-            log.error("logo图片上传出现异常",e);
+            log.error("图像上传出现异常",e);
             return Result.error(e.getMessage());
             return Result.error(e.getMessage());
         } catch (Exception e) {
         } catch (Exception e) {
-            log.error("机构管理: logo图片上传出现异常",e);
-            return Result.error("logo图片上传失败!");
+            log.error("人员管理: 图像上传出现异常",e);
+            return Result.error("图像上传失败!");
         }
         }
     }
     }
 
 

+ 93 - 0
src/main/java/com/iden/bms/controller/TraceController.java

@@ -0,0 +1,93 @@
+package com.iden.bms.controller;
+
+
+
+import com.iden.bms.service.TraceService;
+import com.iden.common.annotation.Permission;
+import com.iden.common.exception.BDException;
+
+import com.iden.common.util.Result;
+import com.iden.common.util.WebPageUtils;
+import com.iden.common.vo.TraceVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "TraceController", tags = { "轨迹管理" })
+@Slf4j
+@RequestMapping("/bms/trace")
+@Permission
+public class TraceController {
+
+    @Autowired
+    private TraceService traceService;
+
+    @ApiOperation(value = "图像上传")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "放在请求头中的令牌",
+                    dataType = "String", paramType = "header",
+                    required = true)
+    })
+    @CrossOrigin
+    @PostMapping(value = "/uploadImage", headers="content-type=multipart/form-data",produces = "application/json;charset=UTF-8")
+    public Result<String> uploadImage( @ApiParam(value="图像",required=true) MultipartFile file,
+                                       @RequestHeader(name = "token") String token) {
+        try {
+            String imageCode = traceService.uploadImage(file);
+            return  Result.success("上传成功!",imageCode);
+        } catch (BDException e) {
+            log.error("图像上传出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("轨迹管理: 图像上传出现异常",e);
+            return Result.error("图像上传失败!");
+        }
+    }
+
+
+    @GetMapping("/listTrace")
+    @ApiOperation(value = "目标轨迹列表,地图打点划线 ")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "imageCodes", value = "图像编码,多个用逗号分割"),
+            @ApiImplicitParam(paramType = "query", name = "beginTime", value = "开始时间(yyyy-MM-dd HH:mm:ss)"),
+            @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间(yyyy-MM-dd HH:mm:ss)")
+
+    })
+    public Result<List<TraceVO>> listTrace(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                           @RequestParam(value = "imageCodes", required = true) String imageCodes,
+                                           @RequestParam(value = "beginTime", required = false) String beginTime,
+                                           @RequestParam(value = "endTime", required = false) String endTime){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            List<TraceVO> datas = this.traceService.listTrace(imageCodes,beginTime,endTime,loginUser);
+            return Result.success(datas);
+        }catch (Exception e) {
+            log.error("轨迹管理: 目标轨迹列表查询出现异常",e);
+            return Result.error( "获取列表失败");
+        }
+    }
+
+
+
+
+//    @GetMapping("/cameraPlay/{id}")
+//    @ApiOperation(value = "摄像机播放")
+//    public Result<TraceVO> cameraPlay(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("id") Long id){
+//        TraceVO orderInfo = this.traceService.getTraceById(id);
+//        return  Result.success("查询成功!",orderInfo);
+//    }
+
+
+}

+ 2 - 0
src/main/java/com/iden/bms/face/FaceIdenService.java

@@ -102,6 +102,8 @@ public class FaceIdenService {
                                 }
                                 }
                                 logger.info("FaceIdenService.exe ...5");
                                 logger.info("FaceIdenService.exe ...5");
                                 idenImageStore.setPhotographPlace(photographPlace);
                                 idenImageStore.setPhotographPlace(photographPlace);
+                                idenImageStore.setLongitude(idenCamera.getLongitude());
+                                idenImageStore.setLatitude(idenCamera.getLatitude());
                                 String imgFileName = imgFile.getName();
                                 String imgFileName = imgFile.getName();
                                 String photographTime = imgFileName.substring(0, imgFileName.indexOf("_"));
                                 String photographTime = imgFileName.substring(0, imgFileName.indexOf("_"));
                                 idenImageStore.setPhotographTime(DateUtils.strToDate(photographTime,"yyyyMMddHHmmss"));
                                 idenImageStore.setPhotographTime(DateUtils.strToDate(photographTime,"yyyyMMddHHmmss"));

+ 103 - 0
src/main/java/com/iden/bms/service/TraceService.java

@@ -0,0 +1,103 @@
+package com.iden.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.common.entity.IdenCrowd;
+import com.iden.common.entity.IdenPerson;
+import com.iden.common.entity.IdenPersonCrowdRef;
+import com.iden.common.enums.PersonTypeEnum;
+import com.iden.common.enums.PopulationTypeEnum;
+import com.iden.common.exception.BDException;
+import com.iden.common.service.IdenCrowdService;
+import com.iden.common.service.IdenPersonCrowdRefService;
+import com.iden.common.service.IdenPersonService;
+import com.iden.common.util.DateUtils;
+import com.iden.common.util.ImgUtil;
+import com.iden.common.util.MyBeanUtils;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.PersonVO;
+import com.iden.common.vo.TraceVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class TraceService {
+
+    @Resource
+    private IdenPersonService idenPersonService;
+
+    @Resource
+    private IdenPersonCrowdRefService idenPersonCrowdRefService;
+    @Resource
+    private IdenCrowdService idenCrowdService;
+
+    @Value("${iden.root:#{null}}")
+    private String idenRoot;
+    @Value("${file.url:#{null}}")
+    private String fileUrl;
+
+    /**
+     * 上传图像
+     * @param file
+     * @return  访问URL
+     */
+    public String uploadImage(MultipartFile file) throws BDException {
+        String logo = null;
+        try {
+            if (file != null) {
+                //获取文件名
+                String fileName = file.getOriginalFilename();
+                if (org.springframework.util.StringUtils.isEmpty(fileName) || file.getSize() == 0) {
+                    throw new BDException("图像文件不能为空!");
+                }
+                //验证文件名是否合格
+                if (!ImgUtil.isImg(fileName)) {
+                    throw new BDException("图像文件必须是图片格式!");
+                }
+                String saveFileName = DateUtils.getCurrYyyyMMddHHmmssDate() + "_" + UUID.randomUUID().toString()  + fileName.substring(fileName.lastIndexOf("."), fileName.length());
+                String picFullFileName = idenRoot + "data/final/image/person/" + saveFileName;
+                FileOutputStream fos = new FileOutputStream(picFullFileName);
+                fos.write(file.getBytes());
+                logo = fileUrl + "person/" + saveFileName;
+            } else {
+                throw new BDException("上传失败");
+            }
+        } catch (Exception e) {
+            throw new BDException("上传失败",e);
+        }
+
+        return logo;
+    }
+
+    /**
+     * 查询轨迹列表
+     * 图像识别,使用特征码查询图像库,得到图库表中对应的数据列表,同时缓存到表里
+     * @return
+             */
+    public List<TraceVO> listTrace(String imageCodes, String beginTime, String endTime, UserLogindConvertVO loginUser) {
+
+
+        return null;
+    }
+
+}

+ 9 - 0
src/main/java/com/iden/common/entity/IdenImageStore.java

@@ -67,6 +67,15 @@ public class IdenImageStore implements Serializable {
     private String photographPlace;
     private String photographPlace;
 
 
 
 
+    @ApiModelProperty("经度")
+    @TableField("LONGITUDE")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    @TableField("LATITUDE")
+    private Double latitude;
+
     @ApiModelProperty("性别:M:男 W:女")
     @ApiModelProperty("性别:M:男 W:女")
     @TableField("GENDER")
     @TableField("GENDER")
     private String gender;
     private String gender;

+ 85 - 0
src/main/java/com/iden/common/entity/IdenTrace.java

@@ -0,0 +1,85 @@
+package com.iden.common.entity;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 轨迹表(IdenTrace)实体类
+ *
+ * @author makejava
+ * @since 2021-12-24 14:55:25
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("iden_trace")
+@ApiModel(value = "轨迹表", description = "")
+public class IdenTrace implements Serializable {
+    private static final long serialVersionUID = 776029183432133610L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("图像编码")
+    @TableField("IMAGE_CODE")
+    private String imageCode;
+
+
+    @ApiModelProperty("摄像头ID")
+    @TableField("CAMERA_ID")
+    private Long cameraId;
+
+
+    @ApiModelProperty("小区ID")
+    @TableField("COMMUNITY_ID")
+    private Long communityId;
+
+
+    @ApiModelProperty("抓拍时间")
+    @TableField("PHOTOGRAPH_TIME")
+    private Date photographTime;
+
+
+    @ApiModelProperty("抓拍地点")
+    @TableField("PHOTOGRAPH_PLACE")
+    private String photographPlace;
+
+
+    @ApiModelProperty("经度")
+    @TableField("LONGITUDE")
+    private Double longitude;
+
+
+    @ApiModelProperty("维度")
+    @TableField("LATITUDE")
+    private Double latitude;
+
+
+    @ApiModelProperty("createTime")
+    @TableField("CREATE_TIME")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    @TableField("MODIFY_TIME")
+    private Date modifyTime;
+
+
+}

+ 15 - 0
src/main/java/com/iden/common/mapper/IdenTraceMapper.java

@@ -0,0 +1,15 @@
+package com.iden.common.mapper;
+
+import com.iden.common.entity.IdenTrace;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 轨迹表(IdenTrace)表数据库访问层
+ *
+ * @author makejava
+ * @since 2021-12-24 14:55:27
+ */
+public interface IdenTraceMapper extends BaseMapper<IdenTrace> {
+
+}

+ 14 - 0
src/main/java/com/iden/common/service/IdenTraceService.java

@@ -0,0 +1,14 @@
+package com.iden.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iden.common.entity.IdenTrace;
+
+/**
+ * 轨迹表(IdenTrace)表服务接口
+ *
+ * @author makejava
+ * @since 2021-12-24 14:55:28
+ */
+public interface IdenTraceService extends IService<IdenTrace> {
+
+}

+ 18 - 0
src/main/java/com/iden/common/service/impl/IdenTraceServiceImpl.java

@@ -0,0 +1,18 @@
+package com.iden.common.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iden.common.mapper.IdenTraceMapper;
+import com.iden.common.entity.IdenTrace;
+import com.iden.common.service.IdenTraceService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 轨迹表(IdenTrace)表服务实现类
+ *
+ * @author makejava
+ * @since 2021-12-24 14:55:31
+ */
+@Service
+public class IdenTraceServiceImpl extends ServiceImpl<IdenTraceMapper, IdenTrace> implements IdenTraceService {
+
+}

+ 7 - 0
src/main/java/com/iden/common/vo/ImageStoreVO.java

@@ -49,6 +49,13 @@ public class ImageStoreVO implements Serializable {
     private String photographPlace;
     private String photographPlace;
 
 
 
 
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
     @ApiModelProperty("性别:M:男 W:女")
     @ApiModelProperty("性别:M:男 W:女")
     private String gender;
     private String gender;
 
 

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

@@ -0,0 +1,58 @@
+package com.iden.common.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * @author makejava
+ * @since 2021-12-22 17:23:46
+ */
+
+@Data
+@ApiModel(value = "轨迹", description = "")
+public class TraceVO implements Serializable {
+    private static final long serialVersionUID = -44732106174401548L;
+
+    private Long id;
+
+    @ApiModelProperty("图像编码")
+    private String imageCode;
+
+    @ApiModelProperty("摄像头ID")
+    private Long cameraId;
+
+
+    @ApiModelProperty("小区ID")
+    private Long communityId;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("抓拍时间")
+    private Date photographTime;
+
+
+    @ApiModelProperty("抓拍地点")
+    private String photographPlace;
+
+
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
+
+    @ApiModelProperty("createTime")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    private Date modifyTime;
+}

+ 6 - 0
src/main/resources/mybatis/IdenTraceMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iden.common.mapper.IdenTraceMapper">
+
+
+</mapper>