ycl-platform/pom.xml
@@ -118,7 +118,9 @@ lombok.launch.AnnotationProcessorHider$AnnotationProcessor </annotationProcessor> </annotationProcessors> <compilerArguments> <extdirs>${project.basedir}/src/main/resources/libs</extdirs> </compilerArguments> </configuration> </plugin> @@ -137,8 +139,21 @@ </configuration> </plugin> </plugins> </build> <!-- 主要配置:将引用的第三方 jar 包打进生成的 jar 文件的 BOOT-INF/lib 目录中 --> <resources> <resource> <directory>src\main\resources\libs</directory> <targetPath>BOOT-INF\lib</targetPath> <!-- <includes> <include>**/*.jar</include> </includes>--> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> ycl-platform/src/main/java/com/ycl/common/constant/BaseCaseStatus.java
@@ -50,4 +50,10 @@ */ public static final Integer CLOSING_REGISTER = 9; /** * 待上报 */ public static final Integer WAIT_REPORT = 10; } ycl-platform/src/main/java/com/ycl/remote/service/CityPlatformService.java
@@ -12,7 +12,7 @@ * @author: AI * @date: 2022-09-28 15:40 **/ @FeignClient(url = "http://10.53.139.176:81/api", name = "cityApi") @FeignClient(url = "https://zhzf.zfj.lishui.gov.cn/api", name = "cityApi") public interface CityPlatformService { /** ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
@@ -132,28 +132,33 @@ @Override public String uploadEvent(Long caseId) { BaseCase baseCase = this.getById(caseId); Violations violations = violationsService.getById(caseId); String medias = ""; String eventDesc = ""; if (violations != null) { eventDesc = violations.getDescription(); VideoAlarmReport videoAlarmReport = videoAlarmReportService.getById(violations.getVideoAlarmReportId()); if (videoAlarmReport != null) { StringBuilder stringBuilder = new StringBuilder().append("[{'mediaURL':'").append(fileUrl).append(videoAlarmReport.getPicData()).append("'}]"); medias = stringBuilder.toString(); } } EventAddParamDto dto = EventAddParamDto.builder().y84(baseCase.getLatitude() != null ? baseCase.getLatitude().toString() : "").x84(baseCase.getLongitude() != null ? baseCase.getLongitude().toString() : "").source(11).address(baseCase.getSite()).eventDesc(eventDesc).eventSign(baseCase.getCode()).medias(medias).build(); String msg = cityPlatformService.addEvent(dto); ResultResponseDto result = JSONObject.parseObject(msg, ResultResponseDto.class); if (result.getCode() == 0) { EventAddResponseDto responseDto = JSONObject.parseObject(result.getResult(), EventAddResponseDto.class); baseCase.setTaskCode(responseDto.getTaskcode()); this.updateById(baseCase); return null; } else { return result.getMsg(); } baseCase.setState(BaseCaseStatus.WAIT_REPORT); this.updateById(baseCase); return null; // Violations violations = violationsService.getById(caseId); // String medias = ""; // String eventDesc = ""; // if (violations != null) { // eventDesc = violations.getDescription(); // VideoAlarmReport videoAlarmReport = videoAlarmReportService.getById(violations.getVideoAlarmReportId()); // if (videoAlarmReport != null) { // StringBuilder stringBuilder = new StringBuilder().append("[{'mediaURL':'").append(fileUrl).append(videoAlarmReport.getPicData()).append("'}]"); // medias = stringBuilder.toString(); // } // } // EventAddParamDto dto = EventAddParamDto.builder().y84(baseCase.getLatitude() != null ? baseCase.getLatitude().toString() : "").x84(baseCase.getLongitude() != null ? baseCase.getLongitude().toString() : "").source(11).address(baseCase.getSite()).eventDesc(eventDesc).eventSign(baseCase.getCode()).medias(medias).build(); // String msg = cityPlatformService.addEvent(dto); // ResultResponseDto result = JSONObject.parseObject(msg, ResultResponseDto.class); // if (result.getCode() == 0) { // EventAddResponseDto responseDto = JSONObject.parseObject(result.getResult(), EventAddResponseDto.class); // baseCase.setTaskCode(responseDto.getTaskcode()); // this.updateById(baseCase); // return null; // } else { // return result.getMsg(); // } } @Override ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
@@ -35,7 +35,6 @@ import javax.annotation.Resource; import javax.mail.internet.MimeMessage; import javax.xml.ws.Response; import java.util.ArrayList; import java.util.Date; import java.util.List; ycl-smoke/src/main/java/com/ycl/smoke/dto/EventAddParamDto.java
New file @@ -0,0 +1,23 @@ package com.ycl.smoke.dto; import lombok.Builder; import lombok.Data; /** * EventAddParamDto 事件上报参数 * * @author: AI * @date: 2022-09-28 16:00 * @version V1.0 **/ @Data @Builder public class EventAddParamDto { private String y84; private String x84; private Integer source; private String address; private String eventDesc; private String eventSign; private String medias; } ycl-smoke/src/main/java/com/ycl/smoke/dto/EventAddResponseDto.java
New file @@ -0,0 +1,8 @@ package com.ycl.smoke.dto; import lombok.Data; @Data public class EventAddResponseDto { private String taskcode; } ycl-smoke/src/main/java/com/ycl/smoke/dto/EventProcessParamDto.java
New file @@ -0,0 +1,12 @@ package com.ycl.smoke.dto; import lombok.Builder; import lombok.Data; @Data @Builder public class EventProcessParamDto { private String taskcode; private String eventSign; } ycl-smoke/src/main/java/com/ycl/smoke/dto/ResultResponseDto.java
New file @@ -0,0 +1,10 @@ package com.ycl.smoke.dto; import lombok.Data; @Data public class ResultResponseDto { private String msg; private Integer code; private String result; } ycl-smoke/src/main/java/com/ycl/smoke/entity/BaseCase.java
New file @@ -0,0 +1,207 @@ package com.ycl.smoke.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.*; import java.io.Serializable; import java.time.LocalDateTime; @Data @EqualsAndHashCode(callSuper = false) @TableName("ums_base_case") @Builder @AllArgsConstructor @NoArgsConstructor @ApiModel(value = "案件基本信息") public class BaseCase implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "id") private Long id; /** * 事件编号 */ @TableField("code") @ApiModelProperty(value = "事件编号") private String code; /** * 事件来源(1-视频 2-手动登记) */ @TableField("event_source") @ApiModelProperty(value = "事件来源(1-视频 2-手动登记)") private Integer eventSource; /** * 问题类别(1-违规 2-违建) */ @TableField("category") @ApiModelProperty(value = "问题类别(1-违规 2-违建)") private Integer category; /** * 问题类别文本 */ @TableField(value = "category_text", exist = false) @ApiModelProperty(value = "问题类别文本") private String categoryText; /** * 所属街道 */ @TableField("street_id") @ApiModelProperty(value = "所属街道") private Integer streetId; /** * 所属街道文本 */ @TableField(value = "street_text", exist = false) @ApiModelProperty(value = "所属社区名称") private String streetText; /** * 所属社区 */ @TableField("community_id") @ApiModelProperty(value = "所属社区") private Integer communityId; /** * 所属社区文本 */ @TableField(value = "community_text", exist = false) @ApiModelProperty(value = "所属社区文本") private String communityText; /** * 报警点位 事发地点 */ @TableField("site") @ApiModelProperty(value = "报警点位 事发地点") private String site; /** * 定位信息 */ @TableField("longitude") @ApiModelProperty(value = "定位信息") private Double longitude; /** * 定位-纬度 */ @TableField("latitude") @ApiModelProperty(value = "定位-纬度") private Double latitude; /** * 报警时间 */ @TableField("alarm_time") @ApiModelProperty(value = "报警时间") private LocalDateTime alarmTime; /** * 登记人 */ @TableField("create_user") @ApiModelProperty(value = "登记人") private Long createUser; /** * 登记人文本 */ @TableField(value = "create_user_text", exist = false) @ApiModelProperty(value = "登记人文本") private String createUserText; /** * 处理状态(0误报 1上报 2立案 3派遣 4处置 5核查 6结案) */ @TableField("state") @ApiModelProperty(value = "处理状态(0误报 1上报 2立案 3派遣 4处置 5核查 6结案)") private Integer state; /** * 处理意见 */ @TableField("handling_opinion") @ApiModelProperty(value = "处理意见") private String handlingOpinion; /** * 备注 */ @TableField("remark") @ApiModelProperty(value = "备注") private String remark; /** * 审核意见 */ @TableField("audit_opinion") @ApiModelProperty(value = "审核意见") private String auditOpinion; /** * 结案意见 */ @TableField("final_opinion") @ApiModelProperty(value = "结案意见") private String finalOpinion; /** * 创建时间 */ @TableField("create_time") @ApiModelProperty(value = "创建时间") private LocalDateTime createTime; /** * 市平台编码 */ @TableField("task_code") @ApiModelProperty(value = "市平台编码") private String taskCode; /** * 市平台编码 */ @TableField("pic") @ApiModelProperty(value = "案件上报图片") private String url; /** * 结束时间 */ @TableField("close_time") @ApiModelProperty(value = "结束时间") private LocalDateTime closeTime; @TableField(value = "grid_id") @ApiModelProperty(value = "网格id") private Long gridId; @TableField("pic") @ApiModelProperty(value = "图片") private String pic; @TableField("media") @ApiModelProperty(value = "视频") private String media; } ycl-smoke/src/main/java/com/ycl/smoke/entity/VideoAlarmReport.java
New file @@ -0,0 +1,83 @@ package com.ycl.smoke.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.time.LocalDateTime; @TableName("ums_video_alarm_report") @Data @NoArgsConstructor @AllArgsConstructor @ApiModel(value = "视频报警推送记录表", description = "") @Builder public class VideoAlarmReport { @ApiModelProperty("$column.comment") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty("访问地址") @TableField("ip") private String ip; @ApiModelProperty("访问端口") @TableField("port") private Integer port; @ApiModelProperty("登录用户") @TableField("user") private String user; @ApiModelProperty("登录密码") @TableField("password") private String password; @ApiModelProperty("视频通道") @TableField("channel") private String channel; @ApiModelProperty("平台上对应的资源ID") @TableField("plat_resource_id") private String platResourceId; @ApiModelProperty("报警图片") @TableField("pic_data") private String picData; @ApiModelProperty("报警时间") @TableField("alarm_time") private LocalDateTime alarmTime; @ApiModelProperty("$column.comment") @TableField("alarm_id") private String alarmId; @ApiModelProperty("算法类型码") @TableField("algo_type") private Integer algoType; @ApiModelProperty("算法类型名称") @TableField("algo_name") private String algoName; @ApiModelProperty("报警类型码") @TableField("alarm_type") private Integer alarmType; @ApiModelProperty("报警类型名称") @TableField("alarm_name") private String alarmName; @ApiModelProperty("算法检出对象在图片中的坐标") @TableField("alarm_obj") private String alarmObj; } ycl-smoke/src/main/java/com/ycl/smoke/entity/Violations.java
New file @@ -0,0 +1,138 @@ package com.ycl.smoke.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.*; import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @TableName("ums_violations") @Builder @NoArgsConstructor @AllArgsConstructor public class Violations implements Serializable { private static final long serialVersionUID = 1L; /** * 案件id(同ums_base_case表id) */ @TableId("id") @ApiModelProperty(value = "案件id(同ums_base_case表id)") private Long id; /** * 大类 */ @TableField("category_id") @ApiModelProperty(value = "大类") private Integer categoryId; /** * 小类 */ @TableField("type_id") @ApiModelProperty(value = "小类") private Integer typeId; /** * 事件等级 */ @TableField("grade_id") @ApiModelProperty(value = "事件等级") private Long gradeId; /** * 案由 */ @TableField("action_cause") @ApiModelProperty(value = "案由") private String actionCause; /** * 是否关联商铺 */ @TableField("link_shop") @ApiModelProperty(value = "是否关联商铺") private Integer linkShop; /** * 关联商铺名称 */ @TableField("shop_name") @ApiModelProperty(value = "关联商铺名称") private Integer shopName; /** * 车牌号 */ @TableField("car_number") @ApiModelProperty(value = "车牌号") private String carNumber; /** * 问题描述 */ @TableField("description") @ApiModelProperty(value = "问题描述") private String description; /** * 反映人 */ @TableField("informant") @ApiModelProperty(value = "反映人") private String informant; /** * 反映人联系方式 */ @TableField("informant_phone_code") @ApiModelProperty(value = "反映人联系方式") private String informantPhoneCode; /** * 身份证号码 */ @TableField("informant_id_card") @ApiModelProperty(value = "身份证号码") private String informantIdCard; /** * 视频报警id */ @TableField("video_alarm_report_id") @ApiModelProperty(value = "视频报警id") private Integer videoAlarmReportId; /** * 视频报警id */ @TableField("video_point_id") @ApiModelProperty(value = "视频点位") private Integer videoPointId; /** * 大类文本 */ @TableField(value = "category_text", exist = false) @ApiModelProperty(value = "所属社区文本") private String categoryText; /** * 小类文本 */ @TableField(value = "type_text", exist = false) @ApiModelProperty(value = "小类文本") private String typeText; /** * 事件等级文本 */ @TableField(value = "grade_text", exist = false) @ApiModelProperty(value = "事件等级文本") private String gradeText; } ycl-smoke/src/main/java/com/ycl/smoke/mapper/BaseCaseMapper.java
New file @@ -0,0 +1,7 @@ package com.ycl.smoke.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.smoke.entity.BaseCase; public interface BaseCaseMapper extends BaseMapper<BaseCase> { } ycl-smoke/src/main/java/com/ycl/smoke/mapper/VideoAlarmReportMapper.java
New file @@ -0,0 +1,14 @@ package com.ycl.smoke.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.smoke.entity.VideoAlarmReport; /** * VideoAlarmReportMapper * * @author: AI * @date: 2022-09-26 17:20 * @version V1.0 **/ public interface VideoAlarmReportMapper extends BaseMapper<VideoAlarmReport> { } ycl-smoke/src/main/java/com/ycl/smoke/mapper/ViolationsMapper.java
New file @@ -0,0 +1,18 @@ package com.ycl.smoke.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.smoke.entity.Violations; import java.util.Map; /** * <p> * 违规事件 Mapper 接口 * </p> * * @author wl * @since 2022-09-24 */ public interface ViolationsMapper extends BaseMapper<Violations> { } ycl-smoke/src/main/java/com/ycl/smoke/service/CityPlatformService.java
New file @@ -0,0 +1,42 @@ package com.ycl.smoke.service; import com.ycl.smoke.dto.EventAddParamDto; import com.ycl.smoke.dto.EventProcessParamDto; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; /** * CityPlatformService 市平台对接服务 * * @version V1.0 * @author: AI * @date: 2022-09-28 15:40 **/ @FeignClient(url = "https://zhzf.zfj.lishui.gov.cn/api", name = "cityApi") public interface CityPlatformService { /** * 事件上报 * * @param paramDto * @return com.ycl.remote.dto.ResultResponseDto<com.ycl.remote.dto.EventAddResponseDto> * @author AI * @date 2022-09-28 16:12 */ @PostMapping("/unauthorized/external/event/add") String addEvent(EventAddParamDto paramDto); /** * 事件详情 * * @param paramDto * @return com.ycl.remote.dto.ResultResponseDto<com.ycl.remote.dto.EventProcessResponseDto> * @author AI * @date 2022-09-28 16:12 */ @PostMapping("/unauthorized/external/event/process") String getEventProcess(EventProcessParamDto paramDto); } ycl-smoke/src/main/java/com/ycl/smoke/task/CityUploadTask.java
New file @@ -0,0 +1,83 @@ package com.ycl.smoke.task; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ycl.smoke.dto.EventAddParamDto; import com.ycl.smoke.dto.EventAddResponseDto; import com.ycl.smoke.dto.ResultResponseDto; import com.ycl.smoke.entity.BaseCase; import com.ycl.smoke.entity.VideoAlarmReport; import com.ycl.smoke.entity.Violations; import com.ycl.smoke.mapper.BaseCaseMapper; import com.ycl.smoke.mapper.VideoAlarmReportMapper; import com.ycl.smoke.mapper.ViolationsMapper; import com.ycl.smoke.service.CityPlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; @Component public class CityUploadTask { @Resource BaseCaseMapper baseCaseMapper; @Resource ViolationsMapper violationsMapper; @Resource VideoAlarmReportMapper videoAlarmReportMapper; @Autowired CityPlatformService cityPlatformService; @Scheduled(cron = "0 */1 * * * ?") // 每5分钟执行 public void upload() { QueryWrapper<BaseCase> wrapperWc = new QueryWrapper<>(); wrapperWc.lambda().eq(BaseCase::getState, 10); List<BaseCase> baseCases = baseCaseMapper.selectList(wrapperWc); baseCases.forEach(o -> { Violations violations = violationsMapper.selectById(o.getId()); String medias = ""; String eventDesc = ""; if (violations != null) { eventDesc = violations.getDescription(); VideoAlarmReport videoAlarmReport = videoAlarmReportMapper.selectById(violations.getVideoAlarmReportId()); if (videoAlarmReport != null) { StringBuilder stringBuilder = new StringBuilder().append("[{'mediaURL':'").append(videoAlarmReport.getPicData()).append(videoAlarmReport.getPicData()).append("'}]"); medias = stringBuilder.toString(); } } EventAddParamDto dto = EventAddParamDto.builder().y84(o.getLatitude() != null ? o.getLatitude().toString() : "") .x84(o.getLongitude() != null ? o.getLongitude().toString() : "") .source(11).address(o.getSite()).eventDesc(eventDesc).eventSign(o.getCode()) .medias(medias).build(); String msg = cityPlatformService.addEvent(dto); ResultResponseDto result = JSONObject.parseObject(msg, ResultResponseDto.class); System.out.println("--" + result.toString()); if (result.getCode() == 0) { try { // EventAddResponseDto responseDto = JSONObject.parseObject(result.getResult(), EventAddResponseDto.class); // o.setTaskCode(responseDto.getTaskcode()); o.setTaskCode(result.getResult()); o.setState(2); baseCaseMapper.updateById(o); System.out.println("--更新成功"); } catch (Exception ex) { System.out.println("--" + ex.getMessage()); } } }); } } ycl-smoke/src/main/resources/application-prod.yml