From ead280567beb29e26e0980c6b3770815e6fe86d9 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期日, 12 十一月 2023 10:09:14 +0800 Subject: [PATCH] 油烟统计 --- ycl-platform/src/main/java/com/ycl/service/video/impl/VideoPointServiceImpl.java | 14 ycl-platform/src/main/resources/application-dev.yml | 2 ycl-platform/src/main/java/com/ycl/service/video/impl/IVideoPointService.java | 2 ycl-smoke/src/main/java/com/ycl/smoke/remote/service/ISmokeDetectionService.java | 29 + ycl-common/src/main/java/com/ycl/enums/common/DictTypeEnum.java | 5 ycl-platform/src/main/java/com/ycl/controller/smoke/OdsStatisticsController.java | 66 +++ ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsCurAlarm.java | 8 ycl-platform/src/main/java/com/ycl/service/region/impl/SccgRegionServiceImpl.java | 8 ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsCurAlarmService.java | 1 ycl-platform/src/main/java/com/ycl/service/video/IVideoAlarmReportService.java | 2 ycl-smoke/src/main/java/com/ycl/smoke/mapper/OdsStatisticsMapper.java | 17 + ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java | 10 ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java | 2 ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParam2Dto.java | 47 ++ ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChildDto.java | 7 ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamDto.java | 2 ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java | 7 ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsStatistics.java | 46 ++ ycl-platform/src/main/java/com/ycl/dto/video/HKAlarmParam.java | 105 ++++++ ycl-platform/src/main/java/com/ycl/controller/platformApi/TranspondDHController.java | 135 +++++++ ycl-platform/src/main/java/com/ycl/service/region/ISccgRegionService.java | 2 ycl-platform/src/main/java/com/ycl/service/smoke/IOdsStatisticsService.java | 17 + ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java | 9 ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsStatisticsServiceImpl.java | 23 + ycl-platform/src/main/java/com/ycl/service/caseHandler/IViolationsService.java | 2 ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java | 76 +++ ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChild2Dto.java | 50 ++ ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsStatisticsService.java | 17 + ycl-smoke/src/main/java/com/ycl/smoke/utils/HttpUtil.java | 2 ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsCurAlarmServiceImpl.java | 14 ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java | 128 +++++++ ycl-smoke/src/main/java/com/ycl/smoke/dto/DataDetectorDailyStatsParamDto.java | 21 + ycl-smoke/src/main/resources/mapper/smoke/OdsStatisticsMapper.xml | 17 + ycl-platform/src/main/java/com/ycl/mapper/smoke/OdsStatisticsMapper.java | 16 ycl-platform/src/main/java/com/ycl/entity/smoke/OdsStatistics.java | 46 ++ ycl-platform/src/main/java/com/ycl/entity/region/SccgRegion.java | 4 ycl-platform/src/main/java/com/ycl/service/smoke/impl/OdsStatisticsServiceImpl.java | 34 ++ 37 files changed, 971 insertions(+), 22 deletions(-) diff --git a/ycl-common/src/main/java/com/ycl/enums/common/DictTypeEnum.java b/ycl-common/src/main/java/com/ycl/enums/common/DictTypeEnum.java index 94974c3..f84d4c4 100644 --- a/ycl-common/src/main/java/com/ycl/enums/common/DictTypeEnum.java +++ b/ycl-common/src/main/java/com/ycl/enums/common/DictTypeEnum.java @@ -37,10 +37,11 @@ /** * 鑾峰緱鎵�鏈夋灇涓剧被鍨嬪埌map + * * @return */ - public static Map<String,String> getAllToMap() { - Map<String,String> map = new HashMap<>(); + public static Map<String, String> getAllToMap() { + Map<String, String> map = new HashMap<>(); for (DictTypeEnum alarmType : values()) { map.put(alarmType.getCode(), alarmType.getType()); } 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 84df694..b36d4d7 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 @@ -7,6 +7,7 @@ import com.ycl.annotation.LogSave; import com.ycl.api.CommonResult; import com.ycl.dto.video.AlarmParam; +import com.ycl.dto.video.HKAlarmParam; import com.ycl.entity.video.VideoPoint; import com.ycl.enums.common.ResultCode; import com.ycl.service.video.IVideoAlarmReportService; @@ -66,6 +67,15 @@ return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage()); } + @ApiOperation("娴峰悍瑙嗛鎶ヨ鎺ㄩ�丄PI") + @PostMapping("/HK/alarmReport") + @LogSave(operationType = "鎶ヨ绠$悊", contain = "娴峰悍瑙嗛鎶ヨ鎺ㄩ��") + public CommonResult hkAlarmReport(@RequestBody @Validated HKAlarmParam alarmParam) { +// System.out.println("淇濆瓨鎶ヨ鏁版嵁锛�" + JSONObject.toJSONString(alarmParam)); + videoAlarmReportService.saveFromHK(alarmParam); + return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage()); + } + @GetMapping("/Video/{code}/{subType}") @ApiOperation(value = "璁惧鑾峰彇鐩戞帶鍦板潃") @SneakyThrows diff --git a/ycl-platform/src/main/java/com/ycl/controller/platformApi/TranspondDHController.java b/ycl-platform/src/main/java/com/ycl/controller/platformApi/TranspondDHController.java new file mode 100644 index 0000000..01cdf10 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/controller/platformApi/TranspondDHController.java @@ -0,0 +1,135 @@ +package com.ycl.controller.platformApi; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.ycl.annotation.LogSave; +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.utils.MD5Util; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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; + +@Api(tags = "绗笁鏂规帴鍙�-澶у崕") +@RestController +@RequestMapping("/API/videoService/eventCenter/messages") +public class TranspondDHController { + + @Value("${videoPoint.url}") + private String url; + + @Value("${videoPoint.userName}") + private String userName; + + @Value("${videoPoint.passWord}") + private String passWord; + + @Value("${videoPoint.ip}") + private String ip; + + @ApiOperation("娑堟伅璁㈤槄") + @GetMapping("/subscribeAddress") + public CommonResult subscribeAddress() { + String url = "/videoService/eventCenter/messages/subscribeAddress"; + return getResult(url, ""); + } + + @ApiOperation("闀胯疆璇㈣幏鍙栨秷鎭�") + @GetMapping("/subscribe") + public CommonResult subscribe(@RequestParam Integer type, + @RequestParam Integer msgId, + @RequestParam(required = false) Integer msgNum, + @RequestParam(required = false) Integer waitSec) { + String url = "/videoService/eventCenter/messages/subscribe"; + String param = "?type=" + type + "&msgId=" + msgId + "&msgNum=" + msgNum + "&waitSec=" + waitSec; + return getResult(url, param); + } + + private CommonResult<?> getResult(String url, String param) { + try { + String token = getToken(); + + HttpHeaders deviceHeaders = new HttpHeaders(); + ObjectMapper objectMapper = new ObjectMapper(); + deviceHeaders.add("X-Subject-Token", token); + HttpEntity<Object> deviceEntity = new HttpEntity<>(deviceHeaders); + + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity<String> exchange = restTemplate.exchange(url + param, HttpMethod.GET, deviceEntity, String.class); + System.out.println(exchange); + return CommonResult.success(exchange); + } catch (Exception ex) { + return CommonResult.failed(); + } + } + + + private String getToken() throws JsonProcessingException { + + String clientType = "winpc"; + String reqUrl = "/videoService/accounts/authorize"; + 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); + return objectMapper.readTree(secondResEntity.getBody()).get("token").textValue(); + } + +} diff --git a/ycl-platform/src/main/java/com/ycl/controller/smoke/OdsStatisticsController.java b/ycl-platform/src/main/java/com/ycl/controller/smoke/OdsStatisticsController.java new file mode 100644 index 0000000..d7b0966 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/controller/smoke/OdsStatisticsController.java @@ -0,0 +1,66 @@ +package com.ycl.controller.smoke; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ycl.annotation.LogSave; +import com.ycl.api.CommonPage; +import com.ycl.api.CommonResult; +import com.ycl.controller.BaseController; +import com.ycl.entity.smoke.OdsCurAlarm; +import com.ycl.entity.smoke.OdsCustomer; +import com.ycl.entity.smoke.OdsStatistics; +import com.ycl.service.smoke.IOdsCurAlarmService; +import com.ycl.service.smoke.IOdsStatisticsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/smoke") +@Api(tags = "娌圭儫绠$悊绠$悊-缁熻鏁版嵁鏁版嵁") +public class OdsStatisticsController extends BaseController { + + IOdsStatisticsService odsStatisticsService; + IOdsCurAlarmService curAlarmService; + + @Autowired + public void setOdsStatisticsService(IOdsStatisticsService odsStatisticsService) { + this.odsStatisticsService = odsStatisticsService; + } + + @Autowired + public void setCurAlarmService(IOdsCurAlarmService curAlarmService) { + this.curAlarmService = curAlarmService; + } + + @ApiOperation("妫�娴嬩华鎬讳綋鎯呭喌鎶ヨ〃") + @RequestMapping(value = "/statistics/listDataDetectorDailyStats", method = RequestMethod.GET) + @ResponseBody + @LogSave(operationType = "娌圭儫妯″潡", contain = "妫�娴嬩华鎬讳綋鎯呭喌鎶ヨ〃") + public CommonResult<String> findDataDetectorDailyStats() { + OdsStatistics odsStatistics = odsStatisticsService.getByType("listDataDetectorDailyStats"); + return CommonResult.success(odsStatistics.getContent()); + } + + + @ApiOperation("娌圭儫鍑忔帓缁熻") + @RequestMapping(value = "/statistics/listDetectorDaily", method = RequestMethod.GET) + @ResponseBody + @LogSave(operationType = "娌圭儫妯″潡", contain = "娌圭儫鍑忔帓缁熻") + public CommonResult<String> findDetectorDaily() { + OdsStatistics odsStatistics = odsStatisticsService.getByType("listDetectorDaily"); + return CommonResult.success(odsStatistics.getContent()); + } + + @ApiOperation("鐩戞祴鎶ヨ缁熻&杩愮淮鎯呭喌鎶ヨ〃") + @RequestMapping(value = "/statistics/listCurAlarm", method = RequestMethod.GET) + @ResponseBody + @LogSave(operationType = "娌圭儫妯″潡", contain = "鐩戞祴鎶ヨ缁熻&杩愮淮鎯呭喌鎶ヨ〃") + public CommonResult<List<OdsCurAlarm>> findCurAlarm() { + List<OdsCurAlarm> list = curAlarmService.list(); + return CommonResult.success(list); + } +} diff --git a/ycl-platform/src/main/java/com/ycl/dto/video/HKAlarmParam.java b/ycl-platform/src/main/java/com/ycl/dto/video/HKAlarmParam.java new file mode 100644 index 0000000..b17d322 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/dto/video/HKAlarmParam.java @@ -0,0 +1,105 @@ +package com.ycl.dto.video; + +import io.swagger.models.auth.In; +import lombok.Data; + +@Data +public class HKAlarmParam { + /** + * 浜嬩欢鍞竴鏍囪瘑 + */ + private String eventId; + /** + * 涓婃姤浜虹數璇� + */ + private String contact; + /** + * 浜嬩欢鍐呭 + */ + private String eventContent; + /** + * 瀵规柟浜嬩欢缂栧彿 + */ + private String eventNumber; + /** + * 浜嬮」鍚嶇О + */ + private String eventType; + /** + * 浜嬩欢瑙勬ā(1鐗瑰ぇ,2閲嶅ぇ,3涓�鑸�) + */ + private String eventscale; + /** + * 闄勪欢锛屽涓敤閫楀彿闅斿紑 + */ + private String fileUrl; + /** + * 鐪佸ぇ绫� + */ + private String firsttype; + /** + * 鏄惁閲嶇偣鍦烘墍(0:鍚�;1:鏄�) + */ + private Integer focusSite; + /** + * 浜嬪彂鏃堕棿 + */ + private String incidentDate; + /** + * 鏄惁閲嶇偣浜嬩欢(0鍚︼紝1鏄�) + */ + private Integer keyEvent; + /** + * 绾害 + */ + private Double latitude; + /** + * 缁忓害 + */ + private Double longitude; + /** + * 鐪乤dcode + */ + private String prefectureCodeIdaas; + /** + * 娑変簨浜烘暟 + */ + private String relatepeoplecount; + /** + * 涓婃姤浜哄鍚� + */ + private String reportUserName; + /** + * 涓婃姤鏃堕棿 + */ + private String reportedDate; + /** + * 涓婃姤绯荤粺鍚嶇О + */ + private String reportedDepartment; + /** + * 浜嬪彂鍦扮偣 + */ + private String scene; + /** + * 鐪佸皬绫� + */ + private String secondtype; + /** + * 浜嬩欢鏍囬 + */ + private String subject; + /** + * 浜嬩欢鏉ユ簮绯荤粺 + */ + private String synergySource; + /** + * 鐪佺粏鍒嗙被 + */ + private String thirdtype; + /** + * 绱ф�ョ▼搴�(1:绱ф��;2闈炵揣鎬�) + */ + private String urgentExtent; + +} diff --git a/ycl-platform/src/main/java/com/ycl/entity/region/SccgRegion.java b/ycl-platform/src/main/java/com/ycl/entity/region/SccgRegion.java index 8b9f4fc..a583805 100644 --- a/ycl-platform/src/main/java/com/ycl/entity/region/SccgRegion.java +++ b/ycl-platform/src/main/java/com/ycl/entity/region/SccgRegion.java @@ -46,6 +46,10 @@ @ApiModelProperty(value = "榛樿0") private Long parentId; + @TableField("region_code") + @ApiModelProperty(value = "鍦板煙缂栫爜") + private String regionCode; + /** * 绫诲瀷1-琛楅亾2-绀惧尯3-涔�4-闀� */ diff --git a/ycl-platform/src/main/java/com/ycl/entity/smoke/OdsStatistics.java b/ycl-platform/src/main/java/com/ycl/entity/smoke/OdsStatistics.java new file mode 100644 index 0000000..62f9c98 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/entity/smoke/OdsStatistics.java @@ -0,0 +1,46 @@ +package com.ycl.entity.smoke; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * <p> + * 鎶ヨ娑堟伅 + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("ums_ods_statistics") +public class OdsStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * Id + */ + @TableId("id") + @JsonProperty("Id") + private String id; + + /** + * 璁惧鐨刴n鏁版嵁 + */ + @TableField("type_name") + private String typeName; + + /** + * 鏁版嵁鏀堕泦鏃堕棿 + */ + @TableField("content") + private String content; + +} diff --git a/ycl-platform/src/main/java/com/ycl/mapper/smoke/OdsStatisticsMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/smoke/OdsStatisticsMapper.java new file mode 100644 index 0000000..39ca1ce --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/mapper/smoke/OdsStatisticsMapper.java @@ -0,0 +1,16 @@ +package com.ycl.mapper.smoke; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.entity.smoke.OdsStatistics; + +/** + * <p> + * 鎶ヨ娑堟伅 Mapper 鎺ュ彛 + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +public interface OdsStatisticsMapper extends BaseMapper<OdsStatistics> { + +} diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IViolationsService.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IViolationsService.java index 2889d34..143330f 100644 --- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IViolationsService.java +++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IViolationsService.java @@ -1,5 +1,6 @@ package com.ycl.service.caseHandler; +import com.ycl.dto.video.HKAlarmParam; import com.ycl.entity.caseHandler.Violations; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.entity.video.VideoAlarmReport; @@ -27,5 +28,6 @@ */ void saveFromVideo(List<VideoAlarmReport> videoAlarmReports); + void saveFromHKVideo(HKAlarmParam alarmParam); List<VideoAndAreaVO> selectType(); } diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java index eea6be4..b32471e 100644 --- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java @@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.common.util.UtilNumber; +import com.ycl.dto.video.HKAlarmParam; import com.ycl.entity.caseHandler.BaseCase; import com.ycl.entity.caseHandler.EventSource; import com.ycl.entity.caseHandler.QuestionCategory; import com.ycl.entity.caseHandler.Violations; import com.ycl.entity.dict.DataDictionary; +import com.ycl.entity.region.SccgRegion; import com.ycl.entity.resources.ImageResources; import com.ycl.entity.video.VideoAlarmReport; import com.ycl.entity.video.VideoPoint; @@ -17,6 +19,7 @@ import com.ycl.service.caseHandler.IBaseCaseService; import com.ycl.service.caseHandler.IViolationsService; import com.ycl.service.dict.IDataDictionaryService; +import com.ycl.service.region.ISccgRegionService; import com.ycl.service.resources.IImageResourcesService; import com.ycl.service.video.impl.IVideoPointService; import com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO; @@ -24,8 +27,11 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.Instant; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.List; + /** * <p> @@ -42,7 +48,7 @@ private IBaseCaseService baseCaseService; private IDataDictionaryService dataDictionaryService; private IImageResourcesService imageResourcesService; - + private ISccgRegionService regionService; @Resource BaseCaseMapper baseCaseMapper; @@ -69,20 +75,19 @@ this.imageResourcesService = imageResourcesService; } + @Autowired + public void setRegionService(ISccgRegionService regionService) { + this.regionService = regionService; + } + @Override public void saveFromVideo(List<VideoAlarmReport> videoAlarmReports) { for (VideoAlarmReport videoAlarmReport : videoAlarmReports) { - VideoPoint videoPoint = null; - LambdaQueryWrapper<VideoPoint> queryWrapper = new LambdaQueryWrapper<VideoPoint>() - .eq(VideoPoint::getPlatResourceId, videoAlarmReport.getPlatResourceId()) - .or().eq(VideoPoint::getCode, videoAlarmReport.getPlatResourceId()); - List<VideoPoint> pointList = videoPointService.list(queryWrapper); - if (pointList.size() > 0) { - videoPoint = pointList.get(0); - } + BaseCase baseCase = BaseCase.builder().eventSource(EventSource.VIDEO.getCode()).category(QuestionCategory.VIOLATION.getCode()) .code(utilNumber.createCaseCode()).createTime(LocalDateTime.now()).createUser(0L).state(1).alarmTime(videoAlarmReport.getAlarmTime()).build(); Violations violations = new Violations(); + VideoPoint videoPoint = videoPointService.getByCode(videoAlarmReport.getPlatResourceId()); if (videoPoint != null) { baseCase.setLatitude(videoPoint.getLatitude()); baseCase.setLongitude(videoPoint.getLongitude()); @@ -120,6 +125,59 @@ } @Override + public void saveFromHKVideo(HKAlarmParam alarmParam) { + + SccgRegion region = regionService.getByCode(alarmParam.getPrefectureCodeIdaas()); + VideoPoint videoPoint = videoPointService.getByCode(alarmParam.getEventNumber()); + + List<DataDictionary> dataDictionaries = dataDictionaryService.queryByRemark(alarmParam.getSubject()); + + Instant instant = Instant.ofEpochMilli(Long.parseLong(alarmParam.getIncidentDate())); + + BaseCase baseCase = BaseCase.builder().eventSource(1).category(QuestionCategory.VIOLATION.getCode()) + .code(utilNumber.createCaseCode()).createTime(LocalDateTime.now()).createUser(0L).state(1). + alarmTime(LocalDateTime.ofInstant(instant, ZoneId.systemDefault())).build(); + Violations violations = new Violations(); + + baseCase.setLatitude(alarmParam.getLatitude()); + baseCase.setLongitude(alarmParam.getLongitude()); + if (region != null) { + baseCase.setStreetId(region.getId().intValue()); + } + baseCase.setSite(alarmParam.getScene()); + + baseCaseService.save(baseCase); + violations.setId(baseCase.getId()); + + if (dataDictionaries.size() > 0) { + violations.setGradeId(dataDictionaries.get(0).getId()); + } + + violations.setDescription(alarmParam.getEventContent()); + violations.setInformant(alarmParam.getReportUserName()); + violations.setInformantPhoneCode(alarmParam.getContact()); + if (videoPoint != null) { + violations.setVideoPointId(videoPoint.getId()); + } + baseMapper.insert(violations); + String[] imgs = alarmParam.getFileUrl().split(","); + + try { + for (int i = 0; i < imgs.length; i++) { + ImageResources imageResources = new ImageResources(); + imageResources.setType("01"); + imageResources.setBelongToId(baseCase.getId()); + imageResources.setUrl(imgs[i]); + imageResources.setCreateTime(LocalDateTime.now()); + imageResourcesService.save(imageResources); + + } + } catch (Exception ex) { + + } + } + + @Override public List<VideoAndAreaVO> selectType() { return baseCaseMapper.selectType(); } diff --git a/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java b/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java index 587582b..5273142 100644 --- a/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java +++ b/ycl-platform/src/main/java/com/ycl/service/dict/IDataDictionaryService.java @@ -35,4 +35,6 @@ Page listViolations(Integer current, Integer size, String keyWord); List<DataDictionaryVo> queryTreeType(String typeCode, Integer level); + + List<DataDictionary> queryByRemark(String remark); } diff --git a/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java index 454d2ca..2f34e0b 100644 --- a/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/dict/impl/DataDictionaryServiceImpl.java @@ -83,4 +83,13 @@ public List<DataDictionaryVo> queryTreeType(String typeCode, Integer level) { return baseMapper.queryTreeType(typeCode, level); } + + @Override + public List<DataDictionary> queryByRemark(String remark) { + LambdaQueryWrapper<DataDictionary> queryWrapper = new LambdaQueryWrapper<DataDictionary>() + .eq(DataDictionary::getRemark, remark); + + List<DataDictionary> dataDictionary = dataDictionaryMapper.selectList(queryWrapper); + return dataDictionary; + } } diff --git a/ycl-platform/src/main/java/com/ycl/service/region/ISccgRegionService.java b/ycl-platform/src/main/java/com/ycl/service/region/ISccgRegionService.java index 2cac581..a325270 100644 --- a/ycl-platform/src/main/java/com/ycl/service/region/ISccgRegionService.java +++ b/ycl-platform/src/main/java/com/ycl/service/region/ISccgRegionService.java @@ -24,4 +24,6 @@ Page<SccgRegion> list(Integer pageSize, Integer pageNum); List<SccgRegion> getChildren(Long parentId); + + SccgRegion getByCode(String code); } diff --git a/ycl-platform/src/main/java/com/ycl/service/region/impl/SccgRegionServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/region/impl/SccgRegionServiceImpl.java index 02929fd..9f578e5 100644 --- a/ycl-platform/src/main/java/com/ycl/service/region/impl/SccgRegionServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/region/impl/SccgRegionServiceImpl.java @@ -101,4 +101,12 @@ List<SccgRegion> regions = baseMapper.selectList(wrapper); return regions; } + + @Override + public SccgRegion getByCode(String code) { + LambdaQueryWrapper<SccgRegion> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SccgRegion::getRegionCode, code); + + return baseMapper.selectOne(wrapper); + } } diff --git a/ycl-platform/src/main/java/com/ycl/service/smoke/IOdsStatisticsService.java b/ycl-platform/src/main/java/com/ycl/service/smoke/IOdsStatisticsService.java new file mode 100644 index 0000000..adb6a5d --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/service/smoke/IOdsStatisticsService.java @@ -0,0 +1,17 @@ +package com.ycl.service.smoke; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.entity.smoke.OdsStatistics; + +/** + * <p> + * 鎶ヨ娑堟伅 鏈嶅姟绫� + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +public interface IOdsStatisticsService extends IService<OdsStatistics> { + + OdsStatistics getByType(String typeName); +} diff --git a/ycl-platform/src/main/java/com/ycl/service/smoke/impl/OdsStatisticsServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/smoke/impl/OdsStatisticsServiceImpl.java new file mode 100644 index 0000000..1af3b00 --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/service/smoke/impl/OdsStatisticsServiceImpl.java @@ -0,0 +1,34 @@ +package com.ycl.service.smoke.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.entity.caseHandler.WorkflowConfigStep; +import com.ycl.entity.smoke.OdsStatistics; +import com.ycl.mapper.smoke.OdsStatisticsMapper; +import com.ycl.service.smoke.IOdsStatisticsService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * <p> + * 鎶ヨ娑堟伅 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +@Service +public class OdsStatisticsServiceImpl extends ServiceImpl<OdsStatisticsMapper, OdsStatistics> implements IOdsStatisticsService { + + @Override + public OdsStatistics getByType(String typeName) { + LambdaQueryWrapper<OdsStatistics> queryWrapper = new LambdaQueryWrapper<OdsStatistics>().eq(OdsStatistics::getTypeName, typeName).orderByDesc(OdsStatistics::getId); + List<OdsStatistics> list = this.list(queryWrapper); + if (list.size() > 0) { + return list.get(0); + } + return null; + } +} diff --git a/ycl-platform/src/main/java/com/ycl/service/video/IVideoAlarmReportService.java b/ycl-platform/src/main/java/com/ycl/service/video/IVideoAlarmReportService.java index a745258..518a330 100644 --- a/ycl-platform/src/main/java/com/ycl/service/video/IVideoAlarmReportService.java +++ b/ycl-platform/src/main/java/com/ycl/service/video/IVideoAlarmReportService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.dto.video.AlarmParam; +import com.ycl.dto.video.HKAlarmParam; import com.ycl.entity.video.VideoAlarmReport; /** @@ -21,4 +22,5 @@ */ void save(AlarmParam alarmParam); + void saveFromHK(HKAlarmParam alarmParam); } diff --git a/ycl-platform/src/main/java/com/ycl/service/video/impl/IVideoPointService.java b/ycl-platform/src/main/java/com/ycl/service/video/impl/IVideoPointService.java index 81edc68..6350430 100644 --- a/ycl-platform/src/main/java/com/ycl/service/video/impl/IVideoPointService.java +++ b/ycl-platform/src/main/java/com/ycl/service/video/impl/IVideoPointService.java @@ -20,4 +20,6 @@ public interface IVideoPointService extends IService<VideoPoint> { IPage<VideoPointVo> getList(Integer streetId, Integer communityId, Integer current, Integer size); + + VideoPoint getByCode(String code); } diff --git a/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java index 5873897..0d822f5 100644 --- a/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java @@ -219,6 +219,13 @@ } } + @Override + public void saveFromHK(HKAlarmParam alarmParam) { + if (alarmParam != null) { + violationsService.saveFromHKVideo(alarmParam); + } + } + private List<VideoAlarmReport> getByAlarmId(String alarmId) { LambdaQueryWrapper<VideoAlarmReport> queryWrapper = new LambdaQueryWrapper<VideoAlarmReport>().eq(VideoAlarmReport::getAlarmId, alarmId); return this.list(queryWrapper); diff --git a/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoPointServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoPointServiceImpl.java index f057787..ab6c578 100644 --- a/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoPointServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/video/impl/VideoPointServiceImpl.java @@ -1,5 +1,6 @@ package com.ycl.service.video.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ycl.entity.video.VideoPoint; @@ -27,4 +28,17 @@ public IPage<VideoPointVo> getList(Integer streetId, Integer communityId, Integer current, Integer size) { return baseMapper.search(new Page<>(current, size), streetId, communityId); } + + @Override + public VideoPoint getByCode(String code) { + VideoPoint videoPoint = null; + LambdaQueryWrapper<VideoPoint> queryWrapper = new LambdaQueryWrapper<VideoPoint>() + .eq(VideoPoint::getPlatResourceId, code) + .or().eq(VideoPoint::getCode, code); + List<VideoPoint> pointList = this.list(queryWrapper); + if (pointList.size() > 0) { + videoPoint = pointList.get(0); + } + return videoPoint; + } } diff --git a/ycl-platform/src/main/resources/application-dev.yml b/ycl-platform/src/main/resources/application-dev.yml index b186f3c..206594e 100644 --- a/ycl-platform/src/main/resources/application-dev.yml +++ b/ycl-platform/src/main/resources/application-dev.yml @@ -35,7 +35,7 @@ timeout: 0 datasource: - url: jdbc:mysql://42.193.1.25:3306/sccg1020?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false + url: jdbc:mysql://42.193.1.25:3306/sccg?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false username: root password: 321$YcYl@1970! type: com.alibaba.druid.pool.DruidDataSource diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParam2Dto.java b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParam2Dto.java new file mode 100644 index 0000000..8ea18c4 --- /dev/null +++ b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParam2Dto.java @@ -0,0 +1,47 @@ +package com.ycl.smoke.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@Builder +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CurAlarmParam2Dto { + /** + * 璧峰浣嶇疆 - 蹇呭~ + */ + @JsonProperty("StartAt") + private Integer StartAt; + /** + * 璇锋眰鏁伴噺 - 蹇呭~ + */ + @JsonProperty("Size") + private Integer Size; + /** + * 1锛氳秴鏍�2锛氬紓甯� - 蹇呭~ + */ + @JsonProperty("Typ") + private Integer Typ; + + /** + * 鎺掑簭渚濇嵁 - 鍚� + */ + @JsonProperty("SortBy") + private String SortBy; + /** + * 鍗囧簭銆侀檷搴� + */ + @JsonProperty("SortMode") + private String SortMode; + + + @JsonProperty("Param") + private CurAlarmParamChild2Dto Param; +} + + + diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChild2Dto.java b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChild2Dto.java new file mode 100644 index 0000000..85dc83d --- /dev/null +++ b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChild2Dto.java @@ -0,0 +1,50 @@ +package com.ycl.smoke.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@Builder +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CurAlarmParamChild2Dto { + /** + * 鏄� 鏄惁闇�瑕佹渶楂樻祿搴︽棩鏈� + */ + @JsonProperty("WithCEmissionsMaxDate") + public Boolean WithCEmissionsMaxDate; + + @JsonProperty("LocaleWithDevice") + public Boolean LocaleWithDevice; + + /** + * 鏄� 鏌ヨ璧峰鏃堕棿 + */ + @JsonProperty("startAt") + public Long StartAt; + /** + * 鏄� 鏌ヨ缁撴潫鏃堕棿 + */ + @JsonProperty("endAt") + public Long EndAt; + + /** + * 鍚� 鍋ュ悍鐮侀鑹� + */ + @JsonProperty("HealthCodeColor") + public String HealthCodeColor; + /** + * 鍚� 璁惧缂栫爜 + */ + @JsonProperty("mn") + public String mn; + /** + * 25 鍚� 鎵�灞炲崟浣� + */ + @JsonProperty("Owner") + public String Owner; + +} diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChildDto.java b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChildDto.java index 96dae28..4a2afff 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChildDto.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamChildDto.java @@ -1,5 +1,6 @@ package com.ycl.smoke.dto; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Builder; import lombok.Data; @@ -8,12 +9,17 @@ @Data @Builder @EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) public class CurAlarmParamChildDto { /** * 鏄� 鏄惁闇�瑕佹渶楂樻祿搴︽棩鏈� */ @JsonProperty("WithCEmissionsMaxDate") public Boolean WithCEmissionsMaxDate; + + @JsonProperty("LocaleWithDevice") + public Boolean LocaleWithDevice; + /** * 鏄� 鏌ヨ璧峰鏃堕棿 */ @@ -24,6 +30,7 @@ */ @JsonProperty("EndAt") public Long EndAt; + /** * 鍚� 鍋ュ悍鐮侀鑹� */ diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamDto.java b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamDto.java index c5fc479..b750923 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamDto.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/dto/CurAlarmParamDto.java @@ -1,5 +1,6 @@ package com.ycl.smoke.dto; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Builder; import lombok.Data; @@ -8,6 +9,7 @@ @Data @Builder @EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) public class CurAlarmParamDto { /** * 璧峰浣嶇疆 - 蹇呭~ diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/dto/DataDetectorDailyStatsParamDto.java b/ycl-smoke/src/main/java/com/ycl/smoke/dto/DataDetectorDailyStatsParamDto.java new file mode 100644 index 0000000..ce62b3b --- /dev/null +++ b/ycl-smoke/src/main/java/com/ycl/smoke/dto/DataDetectorDailyStatsParamDto.java @@ -0,0 +1,21 @@ +package com.ycl.smoke.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@Builder +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DataDetectorDailyStatsParamDto { + // {"Typ":1,"WithAreaLocaleReport":false,"Owner":"/7686/","AcquitDateBegin":"2023-10-12","AcquitDateEnd":"2023-11-11"}: + @JsonProperty("Typ") + private Integer Typ; + private Boolean WithAreaLocaleReport; + private String Owner; + private String AcquitDateBegin; + private String AcquitDateEnd; +} diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsCurAlarm.java b/ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsCurAlarm.java index b6713fc..b1b00fc 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsCurAlarm.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsCurAlarm.java @@ -209,14 +209,14 @@ */ @TableField("local_lat") @JsonProperty("LocaleLat") - private String localLat; + private String LocaleLat; /** * 缁忓害 */ @TableField("local_lng") @JsonProperty("LocaleLng") - private String localLng; + private String LocaleLng; /** * 璁惧鐨刴n鏁版嵁 @@ -237,7 +237,7 @@ */ @TableField("off_line_cause_by_shop_days") @JsonProperty("OfflineCausedByShopDays") - private Integer offLineCauseByShopDays; + private Integer OfflineCausedByShopDays; /** * 鎵�灞炲崟浣� @@ -251,7 +251,7 @@ */ @TableField("shop_close_days") @JsonProperty("ShopClosedDays") - private Integer shopCloseDays; + private Integer ShopClosedDays; /** * 鐘舵�乕1:涓�鑸洃娴嬬偣,2:鐗规畩鐩戞祴鐐�,99:搴熷純鐩戞祴鐐筣 diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsStatistics.java b/ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsStatistics.java new file mode 100644 index 0000000..2636be5 --- /dev/null +++ b/ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsStatistics.java @@ -0,0 +1,46 @@ +package com.ycl.smoke.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * <p> + * 鎶ヨ娑堟伅 + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("ums_ods_statistics") +public class OdsStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * Id + */ + @TableId("id") + @JsonProperty("Id") + private String id; + + /** + * 璁惧鐨刴n鏁版嵁 + */ + @TableField("type_name") + private String typeName; + + /** + * 鏁版嵁鏀堕泦鏃堕棿 + */ + @TableField("content") + private String content; + +} diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/mapper/OdsStatisticsMapper.java b/ycl-smoke/src/main/java/com/ycl/smoke/mapper/OdsStatisticsMapper.java new file mode 100644 index 0000000..6241faf --- /dev/null +++ b/ycl-smoke/src/main/java/com/ycl/smoke/mapper/OdsStatisticsMapper.java @@ -0,0 +1,17 @@ +package com.ycl.smoke.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.smoke.entity.OdsAlarmMsg; +import com.ycl.smoke.entity.OdsStatistics; + +/** + * <p> + * 鎶ヨ娑堟伅 Mapper 鎺ュ彛 + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +public interface OdsStatisticsMapper extends BaseMapper<OdsStatistics> { + +} diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/remote/service/ISmokeDetectionService.java b/ycl-smoke/src/main/java/com/ycl/smoke/remote/service/ISmokeDetectionService.java index 0d6f102..123c83c 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/remote/service/ISmokeDetectionService.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/remote/service/ISmokeDetectionService.java @@ -47,6 +47,35 @@ @RequestHeader("Auth") String token); + /** + * 鎬讳綋鎯呭喌 + * + * @param {"Typ":1,"WithAreaLocaleReport":false,"AcquitDateBegin":"2023-10-12","AcquitDateEnd":"2023-11-11"}: + * @param token + * @return + */ + @PostMapping(value = "/admin/listDataDetectorDailyStats") + String getListDataDetectorDailyStats(@RequestBody DataDetectorDailyStatsParamDto paramDto, + @RequestHeader("Auth") String token); + + /** + * 娌圭儫鍑忔帓 + * + * @param {"StartAt":0,"Size":20,"Param":{"startAt":1697040000,"endAt":1699631999}}: + * @param token + * @return + */ + @PostMapping(value = "/admin/listDetectorDaily") + String getListDetectorDaily(@RequestBody CurAlarmParam2Dto paramDto, + @RequestHeader("Auth") String token); + + /** + * 鐩戞祴鎶ヨ缁熻 杩愮淮鎯呭喌鎶ヨ〃 + * + * @param {"StartAt":0,"Size":20,"Typ":2,"SortBy":"status","SortMode":"asc","Param":{"StartAt":1696953600,"EndAt":1699545600,"LocaleWithDevice":true}}: + * @param token + * @return + */ @PostMapping(value = "/admin/listCurAlarm") String getListCurAlarm(@RequestBody CurAlarmParamDto paramDto, @RequestHeader("Auth") String token); diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsCurAlarmService.java b/ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsCurAlarmService.java index b06b155..1e18836 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsCurAlarmService.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsCurAlarmService.java @@ -13,4 +13,5 @@ */ public interface IOdsCurAlarmService extends IService<OdsCurAlarm> { + void saveByLocalId(OdsCurAlarm o); } diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsStatisticsService.java b/ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsStatisticsService.java new file mode 100644 index 0000000..918ccb9 --- /dev/null +++ b/ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsStatisticsService.java @@ -0,0 +1,17 @@ +package com.ycl.smoke.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.smoke.entity.OdsAlarmMsg; +import com.ycl.smoke.entity.OdsStatistics; + +/** + * <p> + * 鎶ヨ娑堟伅 鏈嶅姟绫� + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +public interface IOdsStatisticsService extends IService<OdsStatistics> { + +} diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsCurAlarmServiceImpl.java b/ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsCurAlarmServiceImpl.java index da03bef..3d10bee 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsCurAlarmServiceImpl.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsCurAlarmServiceImpl.java @@ -1,10 +1,13 @@ package com.ycl.smoke.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ycl.smoke.entity.OdsCurAlarm; import com.ycl.smoke.mapper.OdsCurAlarmMapper; import com.ycl.smoke.service.IOdsCurAlarmService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; + +import java.util.List; /** * <p> @@ -17,4 +20,15 @@ @Service public class OdsCurAlarmServiceImpl extends ServiceImpl<OdsCurAlarmMapper, OdsCurAlarm> implements IOdsCurAlarmService { + @Override + public void saveByLocalId(OdsCurAlarm o) { + LambdaQueryWrapper<OdsCurAlarm> queryWrapper = new LambdaQueryWrapper<OdsCurAlarm>().eq(OdsCurAlarm::getLocaleId, o.getLocaleId()); + List<OdsCurAlarm> list = this.list(queryWrapper); + if (list.size() > 0) { + o.setId(list.get(0).getId()); + updateById(o); + } else { + save(o); + } + } } diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsStatisticsServiceImpl.java b/ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsStatisticsServiceImpl.java new file mode 100644 index 0000000..297cf32 --- /dev/null +++ b/ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsStatisticsServiceImpl.java @@ -0,0 +1,23 @@ +package com.ycl.smoke.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.smoke.entity.OdsAlarmMsg; +import com.ycl.smoke.entity.OdsStatistics; +import com.ycl.smoke.mapper.OdsAlarmMsgMapper; +import com.ycl.smoke.mapper.OdsStatisticsMapper; +import com.ycl.smoke.service.IOdsAlarmMsgService; +import com.ycl.smoke.service.IOdsStatisticsService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鎶ヨ娑堟伅 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author lyq + * @since 2023-02-28 + */ +@Service +public class OdsStatisticsServiceImpl extends ServiceImpl<OdsStatisticsMapper, OdsStatistics> implements IOdsStatisticsService { + +} diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java b/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java index 8038a21..68846db 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java @@ -4,26 +4,30 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ycl.service.redis.RedisService; import com.ycl.smoke.entity.*; import com.ycl.smoke.dto.*; import com.ycl.smoke.remote.service.ISmokeDetectionService; import com.ycl.smoke.service.*; +import com.ycl.smoke.utils.HttpUtil; import com.ycl.utils.redis.RedisKey; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Calendar; import java.util.Date; import java.util.List; @Component public class ScheduledTask { - + private final String host = "http://116.62.234.187:8120"; ISmokeDetectionService smokeDetectionService; IOdsAlarmMsgService alarmMsgService; @@ -43,6 +47,8 @@ IOdsAlarmRecordService alarmRecordService; IOdsCurAlarmService curAlarmService; + + IOdsStatisticsService odsStatisticsService; @Resource private RedisService redisService; @@ -95,6 +101,11 @@ @Autowired public void setDetectorDailyService(IOdsDetectorDailyService detectorDailyService) { this.detectorDailyService = detectorDailyService; + } + + @Autowired + public void setOdsStatisticsService(IOdsStatisticsService odsStatisticsService) { + this.odsStatisticsService = odsStatisticsService; } @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц @@ -194,6 +205,10 @@ } } + @Scheduled(cron = "0 */30 * * * ?") // 姣�5鍒嗛挓鎵ц + public void loginTask() { + login(); + } // @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц @Scheduled(cron = "0 */1 * * * ?") // 姣�5鍒嗛挓鎵ц @@ -218,7 +233,6 @@ private void getInTimeData(DataIntimeParamDto paramDto) { try { - String jj = JSON.toJSONString(paramDto); String json = smokeDetectionService.listDataIntime(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString()); SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class); @@ -358,11 +372,32 @@ } } + /** + * 鐩戞祴鎶ヨ缁熻 杩愮淮鎯呭喌鎶ヨ〃 + */ @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц // @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц public void listCurAlarm() { try { - CurAlarmParamDto paramDto = CurAlarmParamDto.builder().Typ(2).build(); + CurAlarmParamDto paramDto = CurAlarmParamDto.builder().StartAt(0).Size(20).SortBy("status").SortMode("asc").Typ(2).build(); + CurAlarmParamChildDto childDto = CurAlarmParamChildDto.builder().build(); + + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MILLISECOND, 0); + calendar.add(Calendar.DAY_OF_MONTH, -1); + long todayZero = calendar.getTimeInMillis(); + + calendar.add(Calendar.DAY_OF_MONTH, 1); + calendar.add(Calendar.MONTH, -1); + long lastMonthZero = calendar.getTimeInMillis(); + + childDto.setStartAt(lastMonthZero / 1000); + childDto.setEndAt(todayZero / 1000); + childDto.setLocaleWithDevice(true); + paramDto.setParam(childDto); String json = smokeDetectionService.getListCurAlarm(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString()); SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class); @@ -372,7 +407,7 @@ List<OdsCurAlarm> list = responseDataDto.getContent(); list.forEach(o -> { try { - curAlarmService.save(o); + curAlarmService.saveByLocalId(o); } catch (Exception ex) { System.out.printf(ex.getMessage()); } @@ -380,7 +415,7 @@ // alarmMsgService.saveBatch(list); } else if (responseDto.getStatus() == 114) { login(); - queryDataDetectorDaily2Task(); + listCurAlarm(); } else { System.out.printf(responseDto.getData().toString()); } @@ -389,6 +424,89 @@ } } + /** + * 妫�娴嬩华鎬讳綋鎯呭喌鎶ヨ〃 + */ + @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц +// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц + public void listDataDetectorDailyStats() { + try { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + String dateEnd = df.format(calendar.getTime()); + + calendar.add(Calendar.MONTH, -1); + String dateBegin = df.format(calendar.getTime()); + + DataDetectorDailyStatsParamDto paramDto = DataDetectorDailyStatsParamDto.builder().Typ(1).WithAreaLocaleReport(false) + .AcquitDateBegin(dateBegin).AcquitDateEnd(dateEnd).build(); + String json = smokeDetectionService.getListDataDetectorDailyStats(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString()); + SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class); + + if (responseDto.getStatus() == 200) { + LambdaUpdateWrapper<OdsStatistics> update = new LambdaUpdateWrapper<OdsStatistics>() + .eq(OdsStatistics::getTypeName, "listDataDetectorDailyStats") + .set(OdsStatistics::getContent, responseDto.getData().toString()); + + odsStatisticsService.update(update); + } else if (responseDto.getStatus() == 114) { + login(); + listDataDetectorDailyStats(); + } else { + System.out.printf(responseDto.getData().toString()); + } + } catch (Exception ex) { + System.out.printf(ex.getMessage()); + } + } + + /** + * 娌圭儫鍑忔帓缁熻 + */ + @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц +// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц + public void listDetectorDaily() { + try { + CurAlarmParam2Dto paramDto = CurAlarmParam2Dto.builder().StartAt(0).Size(20).build(); + CurAlarmParamChild2Dto childDto = CurAlarmParamChild2Dto.builder().build(); + + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MILLISECOND, 0); + calendar.add(Calendar.DAY_OF_MONTH, -1); + long todayZero = calendar.getTimeInMillis(); + + calendar.add(Calendar.DAY_OF_MONTH, 1); + calendar.add(Calendar.MONTH, -1); + long lastMonthZero = calendar.getTimeInMillis(); + + childDto.setStartAt(lastMonthZero / 1000); + childDto.setEndAt(todayZero / 1000); + paramDto.setParam(childDto); + // {"StartAt":0,"Size":20,"Param":{"startAt":1697040000,"endAt":1699631999}}: + String json = smokeDetectionService.getListDetectorDaily(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString()); + SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class); + + if (responseDto.getStatus() == 200) { + LambdaUpdateWrapper<OdsStatistics> update = new LambdaUpdateWrapper<OdsStatistics>() + .eq(OdsStatistics::getTypeName, "listDetectorDaily") + .set(OdsStatistics::getContent, responseDto.getData().toString()); + + odsStatisticsService.update(update); + } else if (responseDto.getStatus() == 114) { + login(); + listDetectorDaily(); + } else { + System.out.printf(responseDto.getData().toString()); + } + } catch (Exception ex) { + System.out.printf(ex.getMessage()); + } + } + + void login() { LoginParamDto loginParamDto = LoginParamDto.builder().username("閬傛槍鍩庣灞�").password("123456").noCode(true).build(); String json = smokeDetectionService.loginAction(loginParamDto); diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/utils/HttpUtil.java b/ycl-smoke/src/main/java/com/ycl/smoke/utils/HttpUtil.java index faaf54b..940e13b 100644 --- a/ycl-smoke/src/main/java/com/ycl/smoke/utils/HttpUtil.java +++ b/ycl-smoke/src/main/java/com/ycl/smoke/utils/HttpUtil.java @@ -118,7 +118,7 @@ //绗笁姝ワ細缁檋ttpPost璁剧疆JSON鏍煎紡鐨勫弬鏁� StringEntity requestEntity = new StringEntity(json,"utf-8"); requestEntity.setContentEncoding("UTF-8"); - httpPost.setHeader("Content-type", "application/json"); + httpPost.setHeader("Content-type", "application/x-www-form-urlencoded"); httpPost.setHeader("Auth",token); httpPost.setEntity(requestEntity); diff --git a/ycl-smoke/src/main/resources/mapper/smoke/OdsStatisticsMapper.xml b/ycl-smoke/src/main/resources/mapper/smoke/OdsStatisticsMapper.xml new file mode 100644 index 0000000..6383c5c --- /dev/null +++ b/ycl-smoke/src/main/resources/mapper/smoke/OdsStatisticsMapper.xml @@ -0,0 +1,17 @@ +<?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.ycl.smoke.mapper.OdsStatisticsMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ycl.smoke.entity.OdsStatistics"> + <id column="id" property="id" /> + <result column="type_name" property="typeName" /> + <result column="content" property="content" /> + </resultMap> + + <!-- 閫氱敤鏌ヨ缁撴灉鍒� --> + <sql id="Base_Column_List"> + id, type_name, content + </sql> + +</mapper> -- Gitblit v1.8.0