From b7d64a9d83b44037bea3ad7dbdf03deeaf30ea54 Mon Sep 17 00:00:00 2001 From: LiuY <1622779752@qq.com> Date: Fri, 17 Nov 2023 17:00:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=91=84=E5=83=8F=E5=A4=B4=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=81=E6=91=84=E5=83=8F=E5=A4=B4=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/camera/CameraController.java | 109 ++++++ .../route/camera/CameraRouteController.java | 55 +++ .../cm/population/dao/camera/ICameraDao.java | 86 +++++ .../pojo/dtos/camera/CameraDTO.java | 134 +++++++ .../population/pojo/vos/camera/CameraVO.java | 129 +++++++ .../service/camera/ICameraService.java | 83 ++++ .../camera/impl/CameraServiceImpl.java | 120 ++++++ .../mybatis/mapper/camera/camera-mapper.xml | 202 ++++++++++ .../static/assets/images/camera-img.png | Bin 0 -> 5968 bytes src/main/resources/templates/camera/list.html | 358 ++++++++++++++++++ src/main/resources/templates/camera/save.html | 294 ++++++++++++++ .../resources/templates/camera/update.html | 318 ++++++++++++++++ .../templates/camera/view-console.html | 302 +++++++++++++++ 13 files changed, 2190 insertions(+) create mode 100644 src/main/java/com/cm/population/controller/api/camera/CameraController.java create mode 100644 src/main/java/com/cm/population/controller/route/camera/CameraRouteController.java create mode 100644 src/main/java/com/cm/population/dao/camera/ICameraDao.java create mode 100644 src/main/java/com/cm/population/pojo/dtos/camera/CameraDTO.java create mode 100644 src/main/java/com/cm/population/pojo/vos/camera/CameraVO.java create mode 100644 src/main/java/com/cm/population/service/camera/ICameraService.java create mode 100644 src/main/java/com/cm/population/service/camera/impl/CameraServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/camera/camera-mapper.xml create mode 100644 src/main/resources/static/assets/images/camera-img.png create mode 100644 src/main/resources/templates/camera/list.html create mode 100644 src/main/resources/templates/camera/save.html create mode 100644 src/main/resources/templates/camera/update.html create mode 100644 src/main/resources/templates/camera/view-console.html diff --git a/src/main/java/com/cm/population/controller/api/camera/CameraController.java b/src/main/java/com/cm/population/controller/api/camera/CameraController.java new file mode 100644 index 0000000..a221ef5 --- /dev/null +++ b/src/main/java/com/cm/population/controller/api/camera/CameraController.java @@ -0,0 +1,109 @@ +package com.cm.population.controller.api.camera; + +import com.cm.common.annotation.CheckRequestBodyAnnotation; +import com.cm.common.base.AbstractController; +import com.cm.common.constants.ISystemConstant; +import com.cm.common.exception.SearchException; +import com.cm.common.pojo.ListPage; +import com.cm.common.result.ErrorResult; +import com.cm.common.result.SuccessResult; +import com.cm.common.result.SuccessResultList; +import com.cm.population.pojo.dtos.camera.CameraDTO; +import com.cm.population.pojo.vos.camera.CameraVO; +import com.cm.population.service.camera.ICameraService; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 摄像头管理 + * @author : LY + * @date :2023-11-14 17:53 + * @description : + * @modyified By: + */ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "摄像头接口") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/camera") +public class CameraController extends AbstractController { + + @Autowired + private ICameraService cameraService; + + + @ApiOperation(value = "新增摄像头信息", notes = "新增摄像头信息接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("save") + @CheckRequestBodyAnnotation + public SuccessResult save(@RequestBody CameraVO cameraVO) throws Exception { + return cameraService.save(cameraVO); + } + + @ApiOperation(value = "修改摄像头信息", notes = "修改摄像头信息接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cityCameraId", value = "摄像头ID", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update/{cityCameraId}") + @CheckRequestBodyAnnotation + public SuccessResult update(@PathVariable("cityCameraId") String cityCameraId, @RequestBody CameraVO cameraVO) throws Exception { + return cameraService.update(cityCameraId, cameraVO); + } + + + @ApiOperation(value = "摄像头详情(通过ID)", notes = "摄像头详情(通过ID)接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cityCameraId", value = "摄像头ID", paramType = "path") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("get/{cityCameraId}") + public CameraDTO getCensusMsgById(@PathVariable("cityCameraId") String cityCameraId) throws SearchException { + return cameraService.get(cityCameraId); + } + + + @ApiOperation(value = "攝像头信息列表", notes = "攝像头信息列表接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list") + public List list() throws SearchException { + Map params = requestParams(); + return cameraService.list(params); + } + + @ApiOperation(value = "攝像头信息分页列表", notes = "攝像头信息分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage") + public SuccessResultList> listPage(ListPage page) throws SearchException { + Map params = requestParams(); + page.setParams(params); + return cameraService.listPage(page); + } + + + @ApiOperation(value = "删除摄像头", notes = "删除摄像头接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "ID列表,用下划线分隔", paramType = "path", example = "1_2_3") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @DeleteMapping("remove/{ids}") + public SuccessResult remove(@PathVariable("ids") String ids) { + cameraService.remove(null, Arrays.asList(ids.split("\\_"))); + return new SuccessResult(); + } + + + + + +} diff --git a/src/main/java/com/cm/population/controller/route/camera/CameraRouteController.java b/src/main/java/com/cm/population/controller/route/camera/CameraRouteController.java new file mode 100644 index 0000000..99c1042 --- /dev/null +++ b/src/main/java/com/cm/population/controller/route/camera/CameraRouteController.java @@ -0,0 +1,55 @@ +package com.cm.population.controller.route.camera; + +/** + * @author : LY + * @date :2023-11-16 14:36 + * @description : + * @modyified By: + */ + +import com.cm.common.base.AbstractController; +import com.cm.common.constants.ISystemConstant; +import com.cm.population.pojo.dtos.populationinfo.PopulationInfoDTO; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; + +/** + * @ClassName: SecurityController + * @Description: 摄像头路由 + * @Author: CodeFactory + * @Date: 2023-10-25 15:53:09 + * @Version: 3.0 + **/ +@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "摄像头路由") +@RestController +@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/camera") +public class CameraRouteController extends AbstractController { + + + @GetMapping("save") + public ModelAndView save() { + return new ModelAndView("camera/save"); + } + + @GetMapping("update") + public ModelAndView update() { + return new ModelAndView("camera/update"); + } + + @GetMapping("list") + public ModelAndView list() { + return new ModelAndView("camera/list"); + } + + + @GetMapping("view-console") + public ModelAndView viewConsole() { + return new ModelAndView("camera/view-console"); + } + + + +} diff --git a/src/main/java/com/cm/population/dao/camera/ICameraDao.java b/src/main/java/com/cm/population/dao/camera/ICameraDao.java new file mode 100644 index 0000000..931cc33 --- /dev/null +++ b/src/main/java/com/cm/population/dao/camera/ICameraDao.java @@ -0,0 +1,86 @@ +package com.cm.population.dao.camera; + +import com.cm.common.exception.RemoveException; +import com.cm.common.exception.SaveException; +import com.cm.common.exception.SearchException; +import com.cm.common.exception.UpdateException; +import com.cm.population.pojo.dtos.camera.CameraDTO; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: ICameraDao + * @Description: 摄像头管理 + * @Author: WenG + * @Date: 2020-11-16 11:20 + * @Version: 1.0 + **/ + + +@Repository +public interface ICameraDao { + + + /** + * 新增攝像头 + * + * @param params + * @throws SaveException + */ + void save(Map params) throws SaveException; + + /** + * 删除攝像头 + * + * @param params + * @throws RemoveException + */ + void remove(Map params) throws RemoveException; + + /** + * 删除攝像头(物理) + * + * @param params + * @throws RemoveException + */ + void delete(Map params) throws RemoveException; + + /** + * 修改攝像头 + * + * @param params + * @throws UpdateException + */ + void update(Map params) throws UpdateException; + + /** + * 攝像头详情 + * + * @param params + * @return + * @throws SearchException + */ + CameraDTO get(Map params) throws SearchException; + + /** + * 攝像头列表 + * + * @param params + * @return + * @throws SearchException + */ + List list(Map params) throws SearchException; + + /** + * 攝像头统计 + * + * @param params + * @return + * @throws SearchException + */ + Integer count(Map params) throws SearchException; + + +} diff --git a/src/main/java/com/cm/population/pojo/dtos/camera/CameraDTO.java b/src/main/java/com/cm/population/pojo/dtos/camera/CameraDTO.java new file mode 100644 index 0000000..7bff30d --- /dev/null +++ b/src/main/java/com/cm/population/pojo/dtos/camera/CameraDTO.java @@ -0,0 +1,134 @@ +package com.cm.population.pojo.dtos.camera; + +import io.swagger.annotations.ApiModel; + +/** + * 摄像头管理 + * @author : LY + * @date :2023-11-14 18:01 + * @description : + * @modyified By: + */ + +@ApiModel +public class CameraDTO { + + private String cityCameraId; + private String cameraName; + private String cameraStreetId; + private String cameraStreetName; + private String cameraCommunityId; + private String cameraCommunityName; + private String cameraDistrictId; + private String cameraDistrictName; + private String cameraLongitude; + private String cameraLatitude; + private String cameraAddress; + private String cameraRtspLink; + private String remark; + + + public String getCityCameraId() { + return cityCameraId; + } + + public void setCityCameraId(String cityCameraId) { + this.cityCameraId = cityCameraId; + } + + public String getCameraName() { + return cameraName; + } + + public void setCameraName(String cameraName) { + this.cameraName = cameraName; + } + + public String getCameraStreetId() { + return cameraStreetId; + } + + public void setCameraStreetId(String cameraStreetId) { + this.cameraStreetId = cameraStreetId; + } + + public String getCameraStreetName() { + return cameraStreetName; + } + + public void setCameraStreetName(String cameraStreetName) { + this.cameraStreetName = cameraStreetName; + } + + public String getCameraCommunityId() { + return cameraCommunityId; + } + + public void setCameraCommunityId(String cameraCommunityId) { + this.cameraCommunityId = cameraCommunityId; + } + + public String getCameraCommunityName() { + return cameraCommunityName; + } + + public void setCameraCommunityName(String cameraCommunityName) { + this.cameraCommunityName = cameraCommunityName; + } + + public String getCameraDistrictId() { + return cameraDistrictId; + } + + public void setCameraDistrictId(String cameraDistrictId) { + this.cameraDistrictId = cameraDistrictId; + } + + public String getCameraDistrictName() { + return cameraDistrictName; + } + + public void setCameraDistrictName(String cameraDistrictName) { + this.cameraDistrictName = cameraDistrictName; + } + + public String getCameraLongitude() { + return cameraLongitude; + } + + public void setCameraLongitude(String cameraLongitude) { + this.cameraLongitude = cameraLongitude; + } + + public String getCameraLatitude() { + return cameraLatitude; + } + + public void setCameraLatitude(String cameraLatitude) { + this.cameraLatitude = cameraLatitude; + } + + public String getCameraAddress() { + return cameraAddress; + } + + public void setCameraAddress(String cameraAddress) { + this.cameraAddress = cameraAddress; + } + + public String getCameraRtspLink() { + return cameraRtspLink; + } + + public void setCameraRtspLink(String cameraRtspLink) { + this.cameraRtspLink = cameraRtspLink; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/src/main/java/com/cm/population/pojo/vos/camera/CameraVO.java b/src/main/java/com/cm/population/pojo/vos/camera/CameraVO.java new file mode 100644 index 0000000..9863361 --- /dev/null +++ b/src/main/java/com/cm/population/pojo/vos/camera/CameraVO.java @@ -0,0 +1,129 @@ +package com.cm.population.pojo.vos.camera; + +/** + * @author : LY + * @date :2023-11-16 9:22 + * @description : + * @modyified By: + */ +public class CameraVO { + + private String cityCameraId; + private String cameraName; + private String cameraStreetId; + private String cameraStreetName; + private String cameraCommunityId; + private String cameraCommunityName; + private String cameraDistrictId; + private String cameraDistrictName; + private String cameraLongitude; + private String cameraLatitude; + private String cameraAddress; + private String cameraRtspLink; + private String remark; + + + public String getCityCameraId() { + return cityCameraId; + } + + public void setCityCameraId(String cityCameraId) { + this.cityCameraId = cityCameraId; + } + + public String getCameraName() { + return cameraName; + } + + public void setCameraName(String cameraName) { + this.cameraName = cameraName; + } + + public String getCameraStreetId() { + return cameraStreetId; + } + + public void setCameraStreetId(String cameraStreetId) { + this.cameraStreetId = cameraStreetId; + } + + public String getCameraStreetName() { + return cameraStreetName; + } + + public void setCameraStreetName(String cameraStreetName) { + this.cameraStreetName = cameraStreetName; + } + + public String getCameraCommunityId() { + return cameraCommunityId; + } + + public void setCameraCommunityId(String cameraCommunityId) { + this.cameraCommunityId = cameraCommunityId; + } + + public String getCameraCommunityName() { + return cameraCommunityName; + } + + public void setCameraCommunityName(String cameraCommunityName) { + this.cameraCommunityName = cameraCommunityName; + } + + public String getCameraDistrictId() { + return cameraDistrictId; + } + + public void setCameraDistrictId(String cameraDistrictId) { + this.cameraDistrictId = cameraDistrictId; + } + + public String getCameraDistrictName() { + return cameraDistrictName; + } + + public void setCameraDistrictName(String cameraDistrictName) { + this.cameraDistrictName = cameraDistrictName; + } + + public String getCameraLongitude() { + return cameraLongitude; + } + + public void setCameraLongitude(String cameraLongitude) { + this.cameraLongitude = cameraLongitude; + } + + public String getCameraLatitude() { + return cameraLatitude; + } + + public void setCameraLatitude(String cameraLatitude) { + this.cameraLatitude = cameraLatitude; + } + + public String getCameraAddress() { + return cameraAddress; + } + + public void setCameraAddress(String cameraAddress) { + this.cameraAddress = cameraAddress; + } + + public String getCameraRtspLink() { + return cameraRtspLink; + } + + public void setCameraRtspLink(String cameraRtspLink) { + this.cameraRtspLink = cameraRtspLink; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/src/main/java/com/cm/population/service/camera/ICameraService.java b/src/main/java/com/cm/population/service/camera/ICameraService.java new file mode 100644 index 0000000..c5303eb --- /dev/null +++ b/src/main/java/com/cm/population/service/camera/ICameraService.java @@ -0,0 +1,83 @@ +package com.cm.population.service.camera; + + +import com.cm.common.exception.RemoveException; +import com.cm.common.exception.SearchException; +import com.cm.common.pojo.ListPage; +import com.cm.common.result.SuccessResult; +import com.cm.common.result.SuccessResultList; +import com.cm.population.pojo.dtos.camera.CameraDTO; +import com.cm.population.pojo.vos.camera.CameraVO; + +import java.util.List; +import java.util.Map; + +/** + * 摄像头管理 + * @author : LY + * @date :2023-11-16 9:25 + * @description : + * @modyified By: + */ + +public interface ICameraService { + + + /** + * 保存摄像头 + * @param cameraVO + * @throws Exception + */ + SuccessResult save(CameraVO cameraVO) throws Exception; + + + /** + * 修改摄像头 + * @param cityCameraId + * @param cameraVO + */ + SuccessResult update(String cityCameraId, CameraVO cameraVO) throws Exception; + + + /** + * 获取摄像头详情 + * @param cityCameraId + * @return + * @throws SearchException + */ + CameraDTO get(String cityCameraId) throws SearchException; + + + /** + * 获取摄像头列表 + * @param params + * @return + */ + List list(Map params); + + + /** + * 摄像头分页列表 + * @param page + * @return + */ + SuccessResultList> listPage(ListPage page) throws SearchException; + + + + /** + * 删除摄像头 + * + * @param ids id列表 + * @return + */ + void remove(String token, List ids); + + + /** + * 删除摄像头(物理删除) + * + * @param ids id列表 + */ + void delete(List ids) throws RemoveException; +} diff --git a/src/main/java/com/cm/population/service/camera/impl/CameraServiceImpl.java b/src/main/java/com/cm/population/service/camera/impl/CameraServiceImpl.java new file mode 100644 index 0000000..5aa4fa4 --- /dev/null +++ b/src/main/java/com/cm/population/service/camera/impl/CameraServiceImpl.java @@ -0,0 +1,120 @@ +package com.cm.population.service.camera.impl; + +import com.cm.common.base.AbstractService; +import com.cm.common.exception.RemoveException; +import com.cm.common.exception.SearchException; +import com.cm.common.pojo.ListPage; +import com.cm.common.result.SuccessResult; +import com.cm.common.result.SuccessResultList; +import com.cm.common.utils.HashMapUtil; +import com.cm.common.utils.UUIDUtil; +import com.cm.population.dao.camera.ICameraDao; +import com.cm.population.pojo.dtos.camera.CameraDTO; +import com.cm.population.pojo.vos.camera.CameraVO; +import com.cm.population.service.camera.ICameraService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 摄像头管理 + * @author : LY + * @date :2023-11-16 9:25 + * @description : + * @modyified By: + */ + +@Service +public class CameraServiceImpl extends AbstractService implements ICameraService { + + @Autowired + private ICameraDao cameraDao; + + + @Override + public SuccessResult save(CameraVO cameraVO) throws Exception { + this.saveReturnId(null, cameraVO); + return new SuccessResult(); + } + + + + @Override + public SuccessResult update(String cityCameraId, CameraVO cameraVO) throws Exception{ + this.updateInfo(null, cityCameraId, cameraVO); + return new SuccessResult(); + } + + @Override + public CameraDTO get(String cityCameraId) throws SearchException { + Map params = super.getHashMap(1); + params.put("cityCameraId", cityCameraId); + return cameraDao.get(params); + } + + @Override + public List list(Map params) { + return cameraDao.list(params); + } + + @Override + public SuccessResultList> listPage(ListPage page) throws SearchException{ + PageHelper.startPage(page.getPage(), page.getRows()); + List list = cameraDao.list(page.getParams()); + PageInfo pageInfo = new PageInfo<>(list); + return new SuccessResultList<>(list, pageInfo.getPageNum(), pageInfo.getTotal()); + } + + @Override + public void remove(String token, List ids) { + Map params = getHashMap(3); + params.put("cityCameraIds", ids); + if (token != null) { + setUpdateInfo(token, params); + } else { + setUpdateInfo(params); + } + cameraDao.remove(params); + } + + @Override + public void delete(List ids) throws RemoveException { + Map params = getHashMap(3); + params.put("cityCameraIds", ids); + cameraDao.delete(params); + } + + + + + public String saveReturnId(String token, CameraVO cameraVO) throws Exception{ + String cityCameraId = UUIDUtil.getUUID(); + Map params = HashMapUtil.beanToMap(cameraVO); + params.put("cityCameraId", cityCameraId); + if (token != null) { + setSaveInfo(token, params); + } else { + setSaveInfo(params); + } + cameraDao.save(params); + return cityCameraId; + } + + + public void updateInfo(String token, String cityCameraId, CameraVO cameraVO) throws Exception{ + Map params = HashMapUtil.beanToMap(cameraVO); + params.put("cityCameraId", cityCameraId); + if (token != null) { + setUpdateInfo(token, params); + } else { + setUpdateInfo(params); + } + cameraDao.update(params); + } +} diff --git a/src/main/resources/mybatis/mapper/camera/camera-mapper.xml b/src/main/resources/mybatis/mapper/camera/camera-mapper.xml new file mode 100644 index 0000000..6c2eadb --- /dev/null +++ b/src/main/resources/mybatis/mapper/camera/camera-mapper.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO city_camera ( + city_camera_id, + camera_name, + camera_street_id, + camera_street_name, + camera_community_id, + camera_community_name, + camera_district_id, + camera_district_name, + camera_longitude, + camera_latitude, + camera_address, + camera_rtsp_link, + remark, + creator, + gmt_create, + modifier, + gmt_modified, + is_delete + ) values ( + #{cityCameraId}, + #{cameraName}, + #{cameraStreetId}, + #{cameraStreetName}, + #{cameraCommunityId}, + #{cameraCommunityName}, + #{cameraDistrictId}, + #{cameraDistrictName}, + #{cameraLongitude}, + #{cameraLatitude}, + #{cameraAddress}, + #{cameraRtspLink}, + #{remark}, + #{creator}, + #{gmtCreate}, + #{modifier}, + #{gmtModified}, + #{isDelete} + ) + + + + + UPDATE + city_camera + SET + gmt_modified = #{gmtModified}, + modifier = #{modifier}, + is_delete = 1 + WHERE + city_camera_id IN + + #{cityCameraIds[${index}]} + + + + + + DELETE FROM + city_camera + WHERE + city_camera_id = #{cityCameraId} + + + + + UPDATE + city_camera + SET + + camera_name = #{cameraName}, + + + camera_street_id = #{cameraStreetId}, + + + camera_street_name = #{cameraStreetName}, + + + camera_community_id = #{cameraCommunityId}, + + + camera_community_name = #{cameraCommunityName}, + + + camera_district_id = #{cameraDistrictId}, + + + camera_district_name = #{cameraDistrictName}, + + + camera_longitude = #{cameraLongitude}, + + + camera_latitude = #{cameraLatitude}, + + + camera_address = #{cameraAddress}, + + + camera_rtsp_link = #{cameraRtspLink}, + + remark = #{remark}, + gmt_modified = #{gmtModified}, + modifier = #{modifier} + WHERE + city_camera_id = #{cityCameraId} + + + + + + + + + + + + diff --git a/src/main/resources/static/assets/images/camera-img.png b/src/main/resources/static/assets/images/camera-img.png new file mode 100644 index 0000000000000000000000000000000000000000..812f685bb879136208d0b896d86bd5758ed87b75 GIT binary patch literal 5968 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/camera/list.html b/src/main/resources/templates/camera/list.html new file mode 100644 index 0000000..ecb2de9 --- /dev/null +++ b/src/main/resources/templates/camera/list.html @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+ + +
+
+
+
+
+ + + + + + + + + + + + diff --git a/src/main/resources/templates/camera/save.html b/src/main/resources/templates/camera/save.html new file mode 100644 index 0000000..e691131 --- /dev/null +++ b/src/main/resources/templates/camera/save.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ + + +
+
+ +
+
+
+
+
+ + +
+ +
+ +
+
+ + + +
+
+ +
+
+
+
+
+
+ + + + + + + + + + diff --git a/src/main/resources/templates/camera/update.html b/src/main/resources/templates/camera/update.html new file mode 100644 index 0000000..de96a96 --- /dev/null +++ b/src/main/resources/templates/camera/update.html @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ + + +
+
+ +
+
+
+
+
+ + +
+ +
+ +
+
+ + + +
+
+ +
+
+
+
+
+
+ + + + + + + + + + diff --git a/src/main/resources/templates/camera/view-console.html b/src/main/resources/templates/camera/view-console.html new file mode 100644 index 0000000..211f7df --- /dev/null +++ b/src/main/resources/templates/camera/view-console.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ 摄像头一 +
+
+ +
+
+
+
+
+
+ 摄像头一 +
+
+ +
+
+
+
+
+
+
+
+ 摄像头一 +
+
+ +
+
+
+
+
+
+ 摄像头一 +
+
+ +
+
+
+
+
+
+ + +
+ + + + + + + + + + + + +