From a9be2e0bfbd8e716207fc467e2699d9caec76a7c Mon Sep 17 00:00:00 2001 From: wl <173@qq.com> Date: 星期三, 07 十二月 2022 17:44:38 +0800 Subject: [PATCH] feat: 实时视频Api fix: 事件Api 视频点位api 视频巡查api --- ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java | 22 +- ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java | 1 ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java | 21 -- ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java | 18 + ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java | 26 ++ ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml | 78 ++++++- ycl-platform/src/main/java/com/ycl/util/VideoUtil.java | 99 +++++++++++ ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java | 96 +--------- ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java | 21 -- ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java | 42 ++-- ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java | 31 +++ ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java | 12 + ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java | 20 ++ 13 files changed, 309 insertions(+), 178 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java b/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java index 1393455..05d97ea 100644 --- a/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java +++ b/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java @@ -1,16 +1,18 @@ package com.ycl.controller.cockpit.aiIot; import com.ycl.api.CommonResult; +import com.ycl.service.video.impl.IVideoPointService; import com.ycl.util.CheckApiUtil; +import com.ycl.util.VideoUtil; import com.ycl.vo.cockpit.CockpitVO; import com.ycl.vo.cockpit.aiIot.AIIotVO; +import com.ycl.vo.cockpit.aiIot.VideoVO; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -18,6 +20,7 @@ import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author Lyq @@ -31,6 +34,11 @@ @Resource private CheckApiUtil checkApiUtil; + + @Autowired + private IVideoPointService iVideoPointService; + @Autowired + private VideoUtil videoUtil; @ApiOperation(value = "鐩戞祴鏁版嵁") @GetMapping("/detection") @@ -47,23 +55,19 @@ @ApiOperation(value = "瀹炴椂瑙嗛鐩戞帶") @GetMapping("/video") - public CommonResult<List<AIIotVO.VideoVO>> video(@Validated CockpitVO params) { - checkApiUtil.cockpit(params); - List<AIIotVO.VideoVO> videoVOS = new ArrayList<>(); - AIIotVO.VideoVO a = null; - for (int i = 0; i < 4; i++) { - a = new AIIotVO.VideoVO(); - a.setLongitude("32.11"); - a.setLatitude("106.111"); - a.setName("璁惧涓�"); - a.setResourceId("012"); - a.setBrand("澶у崕"); - a.setModel("鐞冩満"); - a.setIp("10.23.14.2"); - a.setUrl("http://10.23.14.2:12001"); - videoVOS.add(a); - } - return CommonResult.success(videoVOS); + public CommonResult video(@Validated CockpitVO params) { + //checkApiUtil.cockpit(params); + return CommonResult.success(iVideoPointService.list().stream().map(item -> { + VideoVO videoVO = new VideoVO(); + videoVO.setName(item.getName()); + videoVO.setBrand(item.getEquipmentBrand()); + videoVO.setModel(item.getEquipmentModel()); + videoVO.setIp(item.getEquipmentIp()); + videoVO.setLatitude(item.getLatitude().toString()); + videoVO.setLongitude(item.getLongitude().toString()); + videoVO.setUrl(videoUtil.getVideo(item.getPlatResourceId(), "HLS", 0)); + return videoVO; + }).collect(Collectors.toList())); } @ApiOperation(value = "AI绠楁硶鏁堣兘") diff --git a/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java b/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java index dd28236..4d17945 100644 --- a/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java +++ b/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java @@ -1,11 +1,13 @@ package com.ycl.controller.cockpit.enforcementEvents; import com.ycl.api.CommonResult; +import com.ycl.service.caseHandler.IBaseCaseService; import com.ycl.util.CheckApiUtil; import com.ycl.vo.cockpit.CockpitVO; import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -30,6 +32,9 @@ public class EnforcementEventsController { @Resource private CheckApiUtil checkApiUtil; + + @Autowired + IBaseCaseService iBaseCaseService; @ApiOperation(value = "鎵ф硶浜嬩欢缁熻") @GetMapping("/statistics") @@ -137,18 +142,11 @@ public CommonResult<EnforcementEventsVO.InfoVO> info(@Validated CockpitVO params) { checkApiUtil.cockpit(params); EnforcementEventsVO.InfoVO infoVO = new EnforcementEventsVO.InfoVO(); - EnforcementEventsVO.EventVO eventVO = new EnforcementEventsVO.EventVO(); - infoVO.setToday(5); - infoVO.setWeek(10); - infoVO.setDispatch(20); - infoVO.setIdentification(20); - eventVO.setDescription("浜嬩欢鎻忚堪"); - eventVO.setAddress("浜嬪彂鍦板潃"); - eventVO.setAlarmTime("2022-10-15 16:12:13"); - eventVO.setPoint("1鍙风偣浣�"); - eventVO.setPicture("http://12.2.23.4/xx.png"); - eventVO.setSource("AI璇嗗埆"); - infoVO.setEvent(eventVO); + infoVO.setToday(iBaseCaseService.dayCount()); + infoVO.setWeek(iBaseCaseService.weekCount()); + infoVO.setDispatch(iBaseCaseService.dispatchCount()); + infoVO.setIdentification(iBaseCaseService.alCount()); + infoVO.setEvent(iBaseCaseService.selectEventList(params.getBeginTime(),params.getEndTime())); return CommonResult.success(infoVO); } diff --git a/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java index a583190..dadc1fb 100644 --- a/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java +++ b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java @@ -1,29 +1,17 @@ package com.ycl.controller.platformApi; import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.fasterxml.jackson.databind.ObjectMapper; import com.ycl.api.CommonResult; -import com.ycl.dto.v1.Req.FirstReq; -import com.ycl.dto.v1.Req.SecondReq; -import com.ycl.dto.v1.Res.FirstRes; import com.ycl.dto.video.AlarmParam; import com.ycl.enums.common.ResultCode; import com.ycl.service.video.IVideoAlarmReportService; -import com.ycl.utils.MD5Util; +import com.ycl.util.VideoUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.*; -import org.springframework.http.client.ClientHttpResponse; -import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import org.springframework.web.client.DefaultResponseErrorHandler; -import org.springframework.web.client.RestTemplate; - -import java.net.URI; /** * @author admin @@ -33,19 +21,11 @@ @RequestMapping("/API") public class AlarmController { - @Value("${videoPoint.url}") - private String url; - - @Value("${videoPoint.userName}") - private String userName; - - @Value("${videoPoint.passWord}") - private String passWord; - - @Value("${videoPoint.ip}") - private String ip; private IVideoAlarmReportService videoAlarmReportService; + + @Autowired + private VideoUtil videoUtil; @Autowired public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) { @@ -59,77 +39,19 @@ return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage()); } - @GetMapping("/Video/{code}/{subType}") + @GetMapping("/video") @ApiOperation(value = "璁惧鑾峰彇鐩戞帶鍦板潃") @SneakyThrows - public CommonResult getMonitorAddress(@PathVariable String code, @PathVariable Integer subType, + public CommonResult getMonitorAddress(@RequestParam String code, + @RequestParam(required = false) Integer subType, @RequestParam(required = false) String scheme) { - String clientType = "winpc"; - String reqUrl = "/videoService/accounts/authorize"; - String deviceUrl = "/videoService/devicesManager/devices"; if (subType == null) { subType = 1; } - if (!StringUtils.isNotBlank(scheme)) { + if (StringUtils.isBlank(scheme)) { scheme = "RTSP"; } - String monitorUrl = "/videoService/realmonitor/uri?subType=" + subType + "&scheme=" + scheme + "&channelId="; - - RestTemplate restTemplate = new RestTemplate(); - restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { - @Override - public boolean hasError(HttpStatus status) { - return super.hasError(status); - } - - @Override - public void handleError(URI url, HttpMethod method, ClientHttpResponse response) { - - } - }); - SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory(); - simpleClientHttpRequestFactory.setOutputStreaming(false); - restTemplate.setRequestFactory(simpleClientHttpRequestFactory); - - //璇锋眰澶� - HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.setContentType(MediaType.APPLICATION_JSON); - - //绗竴娆℃潈闄愯姹備綋 - FirstReq firstReq = new FirstReq(); - firstReq.setIpAddress(ip); - firstReq.setUserName(userName); - firstReq.setClientType(clientType); - ObjectMapper objectMapper = new ObjectMapper(); - - HttpEntity<String> firstEntity = new HttpEntity<>(objectMapper.writeValueAsString(firstReq), httpHeaders); - ResponseEntity<String> responseEntity = restTemplate.postForEntity(url + reqUrl, firstEntity, String.class); - - FirstRes firstRes = objectMapper.readValue(responseEntity.getBody(), FirstRes.class); - - String signature = MD5Util.md5Encrypt(passWord); - signature = MD5Util.md5Encrypt(userName + signature); - signature = MD5Util.md5Encrypt(signature); - signature = MD5Util.md5Encrypt(userName + ":" + firstRes.getRealm() + ":" + signature); - signature = MD5Util.md5Encrypt(signature + ":" + firstRes.getRandomKey()); - - SecondReq secondReq = new SecondReq(); - secondReq.setIpAddress(ip); - secondReq.setEncryptType(firstRes.getEncryptType()); - secondReq.setSignature(signature); - secondReq.setRandomKey(firstRes.getRandomKey()); - secondReq.setClientType(clientType); - secondReq.setUserName(userName); - - HttpEntity<String> secondEntity = new HttpEntity<>(objectMapper.writeValueAsString(secondReq), httpHeaders); - ResponseEntity<String> secondResEntity = restTemplate.postForEntity(url + reqUrl, secondEntity, String.class); - HttpHeaders deviceHeaders = new HttpHeaders(); - deviceHeaders.add("X-Subject-Token", objectMapper.readTree(secondResEntity.getBody()).get("token").textValue()); - HttpEntity<Object> deviceEntity = new HttpEntity<>(deviceHeaders); - ResponseEntity<String> exchange = restTemplate.exchange(url + deviceUrl + "/" + code, HttpMethod.GET, deviceEntity, String.class); - String channelId = objectMapper.readTree(objectMapper.readTree(objectMapper.readTree(exchange.getBody()).get("encoderUnit").toString()).get("channels").get(0).toString()).get("channelId").textValue(); - ResponseEntity<String> monitorReq = restTemplate.exchange(url + monitorUrl + channelId, HttpMethod.GET, deviceEntity, String.class); - return CommonResult.successApi(objectMapper.readTree(monitorReq.getBody()).get("url")); + return CommonResult.successApi(videoUtil.getVideo(code, scheme, subType)); } } \ No newline at end of file diff --git a/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java index b632ddc..55d88db 100644 --- a/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java +++ b/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java @@ -10,6 +10,8 @@ import com.ycl.vo.casePool.CasePoolIllegalBuildingVO; import com.ycl.vo.casePool.CasePoolViolationVO; import com.ycl.vo.casePool.QueryForViolationVO; +import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO; +import com.ycl.vo.cockpit.enforcementEvents.EventVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -37,4 +39,14 @@ List<QueryForViolationVO> selectViolationPage(QueryForViolationParam queryForViolationParam); Page<BaseCaseVO> selectVideoInspection(Page<Object> objectPage); + + Integer dayCount(); + + Integer weekCount(); + + Integer dispatchCount(); + + List<EventVO> selectEventList(String beginTime, String endTime); + + Integer alCount(); } diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java index eabbc0d..027167c 100644 --- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java +++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java @@ -9,6 +9,7 @@ import com.ycl.entity.caseHandler.BaseCaseDetail; import com.ycl.vo.casePool.BaseCaseVO; import com.ycl.vo.casePool.QueryForViolationVO; +import com.ycl.vo.cockpit.enforcementEvents.EventVO; import java.util.ArrayList; import java.util.List; @@ -37,9 +38,10 @@ Page listIllegalBuilding(Page page, Integer state, Integer resource); - Boolean saveViolationCase(ViolationParam violationParam,Long id); + Boolean saveViolationCase(ViolationParam violationParam, Long id); Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Long id); + /** * 鍚屾妗堜欢杩涘害 * @@ -54,7 +56,7 @@ ArrayList<String> listCaseImages(Integer id, Integer type); - void endCase(Long caseId, String result,String opinion); + void endCase(Long caseId, String result, String opinion); Page<BaseCase> selectPage(Page<BaseCase> setSize, String number, Integer streetId, Integer categories, String startTime, String endTime, String site); @@ -64,7 +66,17 @@ Page<BaseCaseVO> selectVideoInspection(Integer current); - Map<String,Object> selectCount(); + Map<String, Object> selectCount(); Boolean updateCase(ViolationParam violationParam); + + Integer dayCount(); + + Integer weekCount(); + + Integer dispatchCount(); + + Integer alCount(); + + List<EventVO> selectEventList(String beginTime, String endTime); } diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java index d52648f..24cce4a 100644 --- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java @@ -31,6 +31,8 @@ import com.ycl.service.caseHandler.IViolationsService; import com.ycl.service.video.IVideoAlarmReportService; import com.ycl.vo.casePool.*; +import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO; +import com.ycl.vo.cockpit.enforcementEvents.EventVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -414,7 +416,11 @@ public Map<String, Object> selectCount() { HashMap<String, Object> map = new HashMap<>(); Long review = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 1)); + Long register = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().in(BaseCase::getState, 2,6)); + Long study = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 3)); map.put("review", review); + map.put("register",register); + map.put("study",study); return map; } @@ -442,4 +448,29 @@ } return violationsMapper.insert(violations) == 1 ? true : false; } + + @Override + public Integer dayCount() { + return baseCaseMapper.dayCount(); + } + + @Override + public Integer weekCount() { + return baseCaseMapper.weekCount(); + } + + @Override + public Integer dispatchCount() { + return baseCaseMapper.dispatchCount(); + } + + @Override + public Integer alCount() { + return baseCaseMapper.alCount(); + } + + @Override + public List<EventVO> selectEventList(String beginTime, String endTime) { + return baseCaseMapper.selectEventList(beginTime,endTime); + } } \ No newline at end of file diff --git a/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java b/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java new file mode 100644 index 0000000..00fdbb1 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java @@ -0,0 +1,99 @@ +package com.ycl.util; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.ycl.api.CommonResult; +import com.ycl.dto.v1.Req.FirstReq; +import com.ycl.dto.v1.Req.SecondReq; +import com.ycl.dto.v1.Res.FirstRes; +import com.ycl.utils.MD5Util; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.client.DefaultResponseErrorHandler; +import org.springframework.web.client.RestTemplate; + +import java.net.URI; + +@Component +public class VideoUtil { + + @Value("${videoPoint.url}") + private String url; + + @Value("${videoPoint.userName}") + private String userName; + + @Value("${videoPoint.passWord}") + private String passWord; + + @Value("${videoPoint.ip}") + private String ip; + + @SneakyThrows + public String getVideo(String code, String scheme,Integer subType) { + String clientType = "winpc"; + String reqUrl = "/videoService/accounts/authorize"; + String deviceUrl = "/videoService/devicesManager/devices"; + String monitorUrl = "/videoService/realmonitor/uri?subType=" + subType + "&scheme=" + scheme + "&channelId="; + + RestTemplate restTemplate = new RestTemplate(); + restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { + @Override + public boolean hasError(HttpStatus status) { + return super.hasError(status); + } + + @Override + public void handleError(URI url, HttpMethod method, ClientHttpResponse response) { + + } + }); + SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory(); + simpleClientHttpRequestFactory.setOutputStreaming(false); + restTemplate.setRequestFactory(simpleClientHttpRequestFactory); + + //璇锋眰澶� + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + + //绗竴娆℃潈闄愯姹備綋 + FirstReq firstReq = new FirstReq(); + firstReq.setIpAddress(ip); + firstReq.setUserName(userName); + firstReq.setClientType(clientType); + ObjectMapper objectMapper = new ObjectMapper(); + + HttpEntity<String> firstEntity = new HttpEntity<>(objectMapper.writeValueAsString(firstReq), httpHeaders); + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url + reqUrl, firstEntity, String.class); + + FirstRes firstRes = objectMapper.readValue(responseEntity.getBody(), FirstRes.class); + + String signature = MD5Util.md5Encrypt(passWord); + signature = MD5Util.md5Encrypt(userName + signature); + signature = MD5Util.md5Encrypt(signature); + signature = MD5Util.md5Encrypt(userName + ":" + firstRes.getRealm() + ":" + signature); + signature = MD5Util.md5Encrypt(signature + ":" + firstRes.getRandomKey()); + + SecondReq secondReq = new SecondReq(); + secondReq.setIpAddress(ip); + secondReq.setEncryptType(firstRes.getEncryptType()); + secondReq.setSignature(signature); + secondReq.setRandomKey(firstRes.getRandomKey()); + secondReq.setClientType(clientType); + secondReq.setUserName(userName); + + HttpEntity<String> secondEntity = new HttpEntity<>(objectMapper.writeValueAsString(secondReq), httpHeaders); + ResponseEntity<String> secondResEntity = restTemplate.postForEntity(url + reqUrl, secondEntity, String.class); + HttpHeaders deviceHeaders = new HttpHeaders(); + deviceHeaders.add("X-Subject-Token", objectMapper.readTree(secondResEntity.getBody()).get("token").textValue()); + HttpEntity<Object> deviceEntity = new HttpEntity<>(deviceHeaders); + ResponseEntity<String> exchange = restTemplate.exchange(url + deviceUrl + "/" + code, HttpMethod.GET, deviceEntity, String.class); + String channelId = objectMapper.readTree(objectMapper.readTree(objectMapper.readTree(exchange.getBody()).get("encoderUnit").toString()).get("channels").get(0).toString()).get("channelId").textValue(); + ResponseEntity<String> monitorReq = restTemplate.exchange(url + monitorUrl + channelId, HttpMethod.GET, deviceEntity, String.class); + return objectMapper.readTree(monitorReq.getBody()).get("url").textValue(); + } +} diff --git a/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java b/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java index fac6560..bab317b 100644 --- a/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java +++ b/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java @@ -7,6 +7,7 @@ @Data public class BaseCaseVO { + private Integer baseId; private String code; private String name; private String urlAddress; diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java index c4fb549..38ff11f 100644 --- a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java +++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java @@ -30,26 +30,7 @@ private Integer slagCar; } - @ApiModel(description = "瀹炴椂鐩戞帶") - @Data - public static class VideoVO { - @ApiModelProperty(value = "鐐逛綅缁忓害") - private String longitude; - @ApiModelProperty(value = "鐐逛綅绾害") - private String latitude; - @ApiModelProperty(value = "鐐逛綅鍚嶇О") - private String name; - @ApiModelProperty(value = "璁惧鍞竴缂栫爜") - private String resourceId; - @ApiModelProperty(value = "璁惧鍝佺墝") - private String brand; - @ApiModelProperty(value = "璁惧鍨嬪彿") - private String model; - @ApiModelProperty(value = "璁惧IP鍦板潃") - private String ip; - @ApiModelProperty(value = "URL鍦板潃") - private String url; - } + @ApiModel(description = "AI绠楁硶鏁堣兘") @Data diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java new file mode 100644 index 0000000..f6b15e7 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java @@ -0,0 +1,26 @@ +package com.ycl.vo.cockpit.aiIot; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "瀹炴椂鐩戞帶") +public class VideoVO { + @ApiModelProperty(value = "鐐逛綅缁忓害") + private String longitude; + @ApiModelProperty(value = "鐐逛綅绾害") + private String latitude; + @ApiModelProperty(value = "鐐逛綅鍚嶇О") + private String name; + @ApiModelProperty(value = "璁惧鍞竴缂栫爜") + private String resourceId; + @ApiModelProperty(value = "璁惧鍝佺墝") + private String brand; + @ApiModelProperty(value = "璁惧鍨嬪彿") + private String model; + @ApiModelProperty(value = "璁惧IP鍦板潃") + private String ip; + @ApiModelProperty(value = "URL鍦板潃") + private String url; +} diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java index 314d9b4..12198c3 100644 --- a/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java +++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java @@ -83,25 +83,6 @@ @ApiModelProperty(value = "AI璇嗗埆鐨勪簨浠舵�绘暟") private Integer identification; @ApiModelProperty(value = "鍏蜂綋浜嬩欢鐨勬暟鎹俊鎭�") - private EnforcementEventsVO.EventVO event; + private List<EventVO> event; } - - @Data - @ApiModel(description = "鍏蜂綋浜嬩欢鐨勬暟鎹俊鎭�") - public static class EventVO { - @ApiModelProperty(value = "浜嬩欢鎻忚堪") - private String description; - @ApiModelProperty(value = "浜嬪彂鍦扮偣") - private String address; - @ApiModelProperty(value = "鍙戠敓鏃堕棿") - private String alarmTime; - @ApiModelProperty(value = "鍏宠仈鎽勫儚鐐逛綅") - private String point; - @ApiModelProperty(value = "鐩戞帶鐢婚潰") - private String picture; - @ApiModelProperty(value = "鏉ユ簮") - private String source; - } - - } diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java new file mode 100644 index 0000000..e474676 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java @@ -0,0 +1,20 @@ +package com.ycl.vo.cockpit.enforcementEvents; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class EventVO { + @ApiModelProperty(value = "浜嬩欢鎻忚堪") + private String description; + @ApiModelProperty(value = "浜嬪彂鍦扮偣") + private String address; + @ApiModelProperty(value = "鍙戠敓鏃堕棿") + private String alarmTime; + @ApiModelProperty(value = "鍏宠仈鎽勫儚鐐逛綅") + private String point; + @ApiModelProperty(value = "鐩戞帶鐢婚潰") + private String picture; + @ApiModelProperty(value = "鏉ユ簮") + private String source; +} diff --git a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml index 66c00ae..bfe9750 100644 --- a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml +++ b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml @@ -229,26 +229,70 @@ </select> <select id="selectVideoInspection" resultType="com.ycl.vo.casePool.BaseCaseVO"> + SELECT t1.id as baseId, + t1.`code`, + t3.`name`, + t3.url_address, + t3.longitude, + t3.latitude, + t4.pic_data, + t5.`name` as grade, + t6.`name` as street, + t7.`name` as community, + t1.alarm_time as alarmTime + FROM ums_base_case t1 + LEFT JOIN ums_violations t2 ON t1.id = t2.id + LEFT JOIN ums_video_point t3 on t2.video_point_id = t3.id + LEFT JOIN ums_video_alarm_report t4 on t4.id = t2.video_alarm_report_id + LEFT JOIN ums_data_dictionary t5 on t5.id = t2.grade_id + LEFT JOIN ums_sccg_region t6 on t6.id = t1.street_id + LEFT JOIN ums_sccg_region t7 on t7.id = t1.community_id + WHERE t1.state = 1 + group by t1.id + </select> + + <select id="dayCount" resultType="java.lang.Integer"> + select count(1) + from ums_base_case + where to_days(create_time) = TO_DAYS(now()); + </select> + <select id="weekCount" resultType="java.lang.Integer"> + select count(1) + from ums_base_case + WHERE YEARWEEK(date_format(create_time, '%Y-%m-%d')) = YEARWEEK(now());; + </select> + <select id="dispatchCount" resultType="java.lang.Integer"> + select count(1) + FROM + ums_base_case t1 + LEFT JOIN ums_dispose_record t2 ON t1.id = t2.base_case_id + WHERE + t2.workflow_config_step_id =1 + </select> + <select id="alCount" resultType="java.lang.Integer"> + select count(1) + FROM + ums_base_case WHERE event_source=1; + </select> + <select id="selectEventList" resultType="com.ycl.vo.cockpit.enforcementEvents.EventVO"> SELECT - t1.`code`, - t3.`name`, - t3.url_address, - t3.longitude, - t3.latitude, - t4.pic_data, - t5.`name` as grade, - t6.`name` as street, - t7.`name` as community, - t1.alarm_time as alarmTime + t1.alarm_time, + ( CASE WHEN t1.event_source = 1 THEN "瑙嗛宸℃煡" WHEN t1.event_source = 2 THEN "浜哄伐涓婃姤" ELSE "鍏朵粬" END ) AS source, + t1.site AS address, + t2.description, + t3.`name` AS point, + t4.pic_data AS picture FROM ums_base_case t1 LEFT JOIN ums_violations t2 ON t1.id = t2.id - LEFT JOIN ums_video_point t3 on t2.video_point_id=t3.id - LEFT JOIN ums_video_alarm_report t4 on t4.id=t2.video_alarm_report_id - LEFT JOIN ums_data_dictionary t5 on t5.id=t2.grade_id - LEFT JOIN ums_data_dictionary t6 on t6.id=t1.street_id - LEFT JOIN ums_data_dictionary t7 on t7.id=t1.community_id - WHERE t1.state=1 - group by t1.id + LEFT JOIN ums_video_point t3 ON t3.id = t2.video_point_id + LEFT JOIN ums_video_alarm_report t4 ON t4.id = t2.video_alarm_report_id + <where> + <if test="beginTime !=''and beginTime!=null and endTime!=''and endTime!=null"> + t1.create_time BETWEEN #{beginTime} + AND #{endTime} + </if> + </where> + </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0