Parcourir la source

1.提交项目相关接口

lovetiya il y a 4 ans
Parent
commit
a22e3bb2a5

+ 12 - 0
src/main/java/com/ebei/screen/common/response/ResponseBean.java

@@ -31,4 +31,16 @@ public class ResponseBean<T> {
      */
     private T data;
 
+    public static ResponseBean success() {
+        return new ResponseBean(200, "成功", null);
+    }
+
+    public static <E> ResponseBean<E> success(E data) {
+        return new ResponseBean<>(200, "成功", data);
+    }
+
+
+    public static ResponseBean fail(String reason) {
+        return new ResponseBean(500, reason, null);
+    }
 }

+ 60 - 0
src/main/java/com/ebei/screen/common/util/CommonUtil.java

@@ -0,0 +1,60 @@
+package com.ebei.screen.common.util;
+
+import cn.hutool.core.util.IdUtil;
+
+import java.lang.reflect.Array;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * @version v1.0
+ * @ProjectName: screen
+ * @ClassName: CommonUtil
+ * @Description:
+ * @Author: ch
+ * @Date: 2021-01-19 16:01
+ */
+public class CommonUtil {
+
+    private static Long workId = 1L;
+    private static Long centerId = 1L;
+
+    /**
+     * 判断空值
+     *
+     * @param obj
+     * @return
+     */
+    public static boolean isEmpty(Object obj) {
+        if (null == obj) {
+            return true;
+        }
+        if (obj instanceof String) {
+            String s = (String) obj;
+            return s.trim().length() == 0 || "null".equals(s) || "NULL".equals(s) || "undefined".equals(s);
+        }
+        if (obj.getClass().isArray()) {
+            return Array.getLength(obj) == 0;
+        }
+        if (obj instanceof Collection) {
+            @SuppressWarnings("rawtypes")
+            Collection c = (Collection) obj;
+            return c.isEmpty();
+        }
+        if (obj instanceof Map) {
+            @SuppressWarnings("rawtypes")
+            Map m = (Map) obj;
+            return m.isEmpty();
+        }
+        return false;
+    }
+
+    public static boolean isNotEmpty(Object obj) {
+        return !isEmpty(obj);
+    }
+
+    public static Long getSnowId() {
+        return IdUtil.getSnowflake(workId,centerId).nextId();
+    }
+
+}

+ 50 - 0
src/main/java/com/ebei/screen/controller/video/VideoMonitorController.java

@@ -1,8 +1,58 @@
 package com.ebei.screen.controller.video;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.ebei.screen.common.response.ResponseBean;
+import com.ebei.screen.modules.po.Project;
+import com.ebei.screen.service.ProjectService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
 /**
  * @author Liu.x
  * @description 视频监控大屏
  */
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/video")
+@AllArgsConstructor
+@Api(value = "视频监控", tags = "视频监控api")
 public class VideoMonitorController {
+
+    @Autowired
+    private ProjectService projectService;
+
+    @ApiOperation("保存项目")
+    @PostMapping("/saveProject")
+    public ResponseBean saveProject(@RequestBody Project project) {
+        projectService.saveProject(project);
+        return ResponseBean.success();
+    }
+
+    @ApiOperation("修改项目")
+    @PostMapping("/updateProject")
+    public ResponseBean updateProject(@RequestBody Project project) {
+        if(BeanUtil.isEmpty(project.getId())) {
+            return ResponseBean.fail("id不能为空");
+        }
+        return projectService.updateProject(project);
+    }
+
+    @ApiOperation("分页查询项目")
+    @PostMapping("/queryProject/{page}/{pageSize}")
+    public ResponseBean queryProjectPage(@PathVariable("page") @NotNull(message = "URL参数:当前页的页码不能为空") Integer page,
+                                      @PathVariable("pageSize") @NotNull(message = "URL参数:当前页的页数不能为空") Integer pageSize,
+                                      @RequestParam(value = "name",required = false) String name) {
+
+        return projectService.queryProjectPage(page-1,pageSize,name);
+    }
+
 }

+ 39 - 0
src/main/java/com/ebei/screen/modules/po/BaseEntity.java

@@ -0,0 +1,39 @@
+package com.ebei.screen.modules.po;
+
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
+
+import java.time.LocalDateTime;
+
+/**
+ * @version v1.0
+ * @ProjectName: screen
+ * @ClassName: BaseEntity
+ * @Description:
+ * @Author: ch
+ * @Date: 2021-01-19 13:52
+ */
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+public class BaseEntity {
+
+    @Id
+    private Long id;
+
+    private LocalDateTime createTime;
+
+    private Long createUser;
+
+    private LocalDateTime updateTime;
+
+    private Long updateUser;
+
+    private Integer isDelete;
+
+}

+ 35 - 0
src/main/java/com/ebei/screen/modules/po/CameraDevice.java

@@ -0,0 +1,35 @@
+package com.ebei.screen.modules.po;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * @version v1.0
+ * @ProjectName: screen
+ * @ClassName: MachineRoom
+ * @Description:
+ * @Author: ch
+ * @Date: 2021-01-19 13:57
+ */
+@Data
+@Document
+@NoArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ApiModel(value = "CameraDevice", description = "监控设备")
+@AllArgsConstructor
+public class CameraDevice extends BaseEntity{
+
+    @ApiModelProperty("设备名")
+    private String deviceName;
+    @ApiModelProperty("设备序列号(萤石设备唯一标识)")
+    private String deviceSerial;
+    @ApiModelProperty("设备类型")
+    private String deviceType;
+    @ApiModelProperty("设备状态(1在线0离线)")
+    private Integer status;
+}

+ 34 - 0
src/main/java/com/ebei/screen/modules/po/MachineRoom.java

@@ -0,0 +1,34 @@
+package com.ebei.screen.modules.po;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.List;
+
+/**
+ * @version v1.0
+ * @ProjectName: screen
+ * @ClassName: MachineRoom
+ * @Description:
+ * @Author: ch
+ * @Date: 2021-01-19 13:57
+ */
+@Data
+@Document
+@NoArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ApiModel(value = "MachineRoom", description = "机房")
+@AllArgsConstructor
+public class MachineRoom extends BaseEntity{
+
+    @ApiModelProperty("机房名")
+    private String name;
+    @ApiModelProperty("关联的监控设备")
+    List<CameraDevice> cameraDeviceList;
+
+}

+ 33 - 0
src/main/java/com/ebei/screen/modules/po/Project.java

@@ -0,0 +1,33 @@
+package com.ebei.screen.modules.po;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * @version v1.0
+ * @ProjectName: screen
+ * @ClassName: Project
+ * @Description:
+ * @Author: ch
+ * @Date: 2021-01-19 13:50
+ */
+@Data
+@Document(collection = "project")
+@NoArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ApiModel(value = "Project", description = "项目")
+@AllArgsConstructor
+public class Project extends BaseEntity{
+
+    @NotEmpty(message = "项目名不能为空")
+    @ApiModelProperty(value = "项目名")
+    private String name;
+
+}

+ 46 - 0
src/main/java/com/ebei/screen/service/ProjectService.java

@@ -0,0 +1,46 @@
+package com.ebei.screen.service;
+
+import com.ebei.screen.common.response.ResponseBean;
+import com.ebei.screen.modules.po.Project;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @version v1.0
+ * @ProjectName: screen
+ * @ClassName: ProjectService
+ * @Description: 项目接口
+ * @Author: ch
+ * @Date: 2021-01-19 14:29
+ */
+public interface ProjectService {
+
+    /*
+     * 批量保存项目
+     */
+    public void saveProjectBatch(List<Project> list);
+
+    /**
+     * 保存项目
+     * @param project
+     */
+    public void saveProject(Project project);
+
+    /**
+     * 修改项目
+     * @param project
+     * @return
+     */
+    ResponseBean updateProject(Project project);
+
+    /**
+     * 分页、条件查询项目
+     * @param page
+     * @param pageSize
+     * @param name
+     * @return
+     */
+    ResponseBean queryProjectPage(Integer page, Integer pageSize, String name);
+
+}

+ 84 - 0
src/main/java/com/ebei/screen/service/impl/ProjectServiceImpl.java

@@ -0,0 +1,84 @@
+package com.ebei.screen.service.impl;
+
+import com.ebei.screen.common.response.ResponseBean;
+import com.ebei.screen.common.util.CommonUtil;
+import com.ebei.screen.modules.po.Project;
+import com.ebei.screen.service.ProjectService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.data.repository.support.PageableExecutionUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @version v1.0
+ * @ProjectName: screen
+ * @ClassName: ProjectServiceImpl
+ * @Description:
+ * @Author: ch
+ * @Date: 2021-01-19 14:35
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class ProjectServiceImpl implements ProjectService {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Override
+    public void saveProjectBatch(List<Project> list) {
+        mongoTemplate.insertAll(list);
+    }
+
+    @Override
+    public void saveProject(Project project) {
+        LocalDateTime now = LocalDateTime.now();
+        project.setId(CommonUtil.getSnowId());
+        project.setCreateTime(now);
+        project.setIsDelete(0);
+        mongoTemplate.insert(project);
+    }
+
+    @Override
+    public ResponseBean updateProject(Project project) {
+        LocalDateTime now = LocalDateTime.now();
+        Query query = new Query();
+        query.addCriteria(Criteria.where("_id").is(project.getId()));
+        Update update = new Update();
+        update.set("name", project.getName());
+        update.set("updateTime", now);
+        mongoTemplate.updateFirst(query, update, Project.class);
+        return ResponseBean.success();
+    }
+
+    @Override
+    public ResponseBean queryProjectPage(Integer page, Integer pageSize, String name) {
+        Query query = new Query();
+        if(CommonUtil.isNotEmpty(name)) {
+            Criteria criteria = new Criteria();
+            Pattern pattern=Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
+            criteria.where("name").regex(pattern);
+            query.addCriteria(criteria);
+        }
+        //计算总数
+        long total = mongoTemplate.count(query, Project.class);
+        //分页查询
+        Pageable pageable = PageRequest.of(page, pageSize);
+        query.with(pageable);
+        query.with(Sort.by(Sort.Direction.DESC, "createTime"));
+        List<Project> result = mongoTemplate.find(query, Project.class);
+        Page<Project> pageResult = new PageImpl<>(result, pageable, total);
+        return ResponseBean.success(pageResult);
+    }
+
+}