diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java index 349db1d45c..fe3416c3dc 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java @@ -202,6 +202,11 @@ public class IcEventListResultDTO implements Serializable { */ private String difficultPointName; + /** + * 日照:上报城管返回案卷唯一标识 + */ + private String taskNum; + /** * 事件附件 */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java index 70b1bd82a3..3c9b32fd2e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java @@ -34,10 +34,12 @@ import com.epmet.service.IcEventReplyService; import com.epmet.service.IcEventService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import javax.websocket.server.PathParam; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; @@ -62,6 +64,7 @@ public class IcEventController { /** * 事件管理-列表 + * * @param tokenDto * @param formDTO * @return @@ -72,6 +75,7 @@ public class IcEventController { formDTO.setStaffId(tokenDto.getUserId()); return new Result>().ok(icEventService.list(formDTO)); } + /** * @Author sun * @Description 工作端小程序-事件管理-列表 @@ -84,28 +88,29 @@ public class IcEventController { return new Result>().ok(icEventService.list(formDTO)); } - @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) - public Result get(@PathVariable("id") String id){ + @RequestMapping(value = "{id}", method = {RequestMethod.POST, RequestMethod.GET}) + public Result get(@PathVariable("id") String id) { IcEventDTO data = icEventService.get(id); return new Result().ok(data); } /** * 事件管理-新增 + * * @param tokenDto * @param formDTO * @return */ @NoRepeatSubmit @PostMapping("add") - public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcEventAddEditFormDTO formDTO){ + public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcEventAddEditFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, AddGroup.class, DefaultGroup.class); formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); formDTO.setApp(tokenDto.getApp()); formDTO.setClient(tokenDto.getClient()); - if("3".equals(formDTO.getOperationType())){ - ValidatorUtils.validateEntity(formDTO.getIssueInfo(),IcEventToIssueFormDTO.AddEventAndShiftIssue.class); + if ("3".equals(formDTO.getOperationType())) { + ValidatorUtils.validateEntity(formDTO.getIssueInfo(), IcEventToIssueFormDTO.AddEventAndShiftIssue.class); } icEventService.save(formDTO); return new Result(); @@ -113,7 +118,7 @@ public class IcEventController { @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody IcEventDTO dto){ + public Result update(@RequestBody IcEventDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); icEventService.update(dto); @@ -121,7 +126,7 @@ public class IcEventController { } @PostMapping("delete") - public Result delete(@RequestBody String[] ids){ + public Result delete(@RequestBody String[] ids) { //效验数据 AssertUtils.isArrayEmpty(ids, "id"); icEventService.delete(ids); @@ -130,6 +135,7 @@ public class IcEventController { /** * 事件处理分析-处理状态比例查询 + * * @param formDTO * @return */ @@ -148,6 +154,7 @@ public class IcEventController { /** * 事件处理分析-事件列表 + * * @param input * @return */ @@ -169,6 +176,7 @@ public class IcEventController { /** * 时间处理分析-阅读增量查询 + * * @param input * @return */ @@ -190,6 +198,7 @@ public class IcEventController { /** * 研判分析查询 + * * @param eventId * @return */ @@ -201,6 +210,7 @@ public class IcEventController { /** * 组织下,分类下的事件列表 + * * @param input * @return */ @@ -212,16 +222,17 @@ public class IcEventController { String orgType = input.getOrgType(); Integer pageNo = input.getPageNo(); Integer pageSize = input.getPageSize(); - PageData page = icEventService.getSameCategoryEvents(orgId, orgType, categroyPid, pageNo, pageSize); + PageData page = icEventService.getSameCategoryEvents(orgId, orgType, categroyPid, pageNo, pageSize); return new Result>().ok(page); } + /** * @Author sun * @Description 事件管理-回复 **/ @NoRepeatSubmit @PostMapping("reply") - public Result reply(@LoginUser TokenDto tokenDto, @RequestBody IcEventReplyFormDTO formDTO){ + public Result reply(@LoginUser TokenDto tokenDto, @RequestBody IcEventReplyFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); @@ -235,12 +246,12 @@ public class IcEventController { **/ @NoRepeatSubmit @PostMapping("icEventToProject") - public Result icEventToProject(@LoginUser TokenDto tokenDto, @RequestBody IcEventToProjectFormDTO formDTO){ + public Result icEventToProject(@LoginUser TokenDto tokenDto, @RequestBody IcEventToProjectFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); formDTO.setApp(tokenDto.getApp()); formDTO.setClient(tokenDto.getClient()); - ValidatorUtils.validateEntity(formDTO,IcEventToProjectFormDTO.ApprovalCategory.class,IcEventToProjectFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, IcEventToProjectFormDTO.ApprovalCategory.class, IcEventToProjectFormDTO.AddUserInternalGroup.class); icEventService.icEventToProject(formDTO); return new Result(); } @@ -250,7 +261,7 @@ public class IcEventController { * @Description 事件管理-转需求 **/ @PostMapping("icEventToDemand") - public Result icEventToDemand(@LoginUser TokenDto tokenDto, @RequestBody IcDemandFormDTO formDTO){ + public Result icEventToDemand(@LoginUser TokenDto tokenDto, @RequestBody IcDemandFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setDemandUserId(tokenDto.getUserId()); ValidatorUtils.validateEntity(formDTO, IcDemandFormDTO.AddUserShowGroup.class, IcDemandFormDTO.AddUserInternalGroup.class); @@ -260,6 +271,7 @@ public class IcEventController { /** * 事件转议题 + * * @param tokenDto * @param formDTO * @return @@ -283,7 +295,7 @@ public class IcEventController { public Result> categoryAnalysisTotal(@LoginUser TokenDto tokenDto, @RequestBody IcEventCategoryAnalysisFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setStaffId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO,IcEventCategoryAnalysisFormDTO.TotalPie.class); + ValidatorUtils.validateEntity(formDTO, IcEventCategoryAnalysisFormDTO.TotalPie.class); List list = icEventService.categoryAnalysisTotal(formDTO); return new Result>().ok(list); } @@ -319,7 +331,7 @@ public class IcEventController { * @Author sun * @Description 事件管理-详情 **/ - @MaskResponse(fieldNames = { "idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD }) + @MaskResponse(fieldNames = {"idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD}) @PostMapping("detail") public Result detail(@LoginUser TokenDto tokenDto, @RequestBody IcEventListFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); @@ -327,6 +339,45 @@ public class IcEventController { ValidatorUtils.validateEntity(formDTO, IcEventListFormDTO.Detail.class); return new Result().ok(icEventService.detail(formDTO)); } + + + /** + * 日照:事件上报城管 + * + * @param formDTO + * @return + */ + @MaskResponse(fieldNames = {"idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD}) + @PostMapping("reportCityManager") + public Result reportCityManager(@LoginUser TokenDto tokenDto, @RequestBody IcEventListFormDTO formDTO) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO, IcEventListFormDTO.Detail.class); + IcEventListResultDTO data = icEventService.detail(formDTO); + if (null != data && StringUtils.isNotEmpty(data.getTaskNum())) { + return new Result().error(-1, "该事件已上报,请勿重复上报!"); + } + return icEventService.reportCityManager(data); + } + + /** + * 查询上报城管数据处理状态 + * + * @param icEventId 事件ID + * @param taskNum 上报城管返回案卷唯一标识 + * @return + */ + @GetMapping("checkReportStatus") + public Result checkReportStatus(@PathParam("icEventId") String icEventId, @PathParam("taskNum") String taskNum) throws IOException { + if (StringUtils.isEmpty(icEventId)) { + return new Result().error(-1, "请确认事件是否存在!"); + } + if (StringUtils.isEmpty(taskNum)) { + return new Result().error(-1, "请确认事件是否已经上报!"); + } + return icEventService.checkReportStatus(icEventId, taskNum); + } + /** * @Author sun * @Description 工作端小程序-事件管理-详情 @@ -342,6 +393,7 @@ public class IcEventController { /** * 事件分类分析- 饼图2,直属下级 事件数量 + * * @param tokenDto * @param formDTO * @return @@ -367,19 +419,20 @@ public class IcEventController { /** * Desc: 定时任务自动评价 + * * @param formDTO * @author zxc * @date 2022/5/18 16:35 */ @PostMapping("auto-evaluation") - public Result autoEvaluation(@RequestBody AutoEvaluationFormDTO formDTO){ + public Result autoEvaluation(@RequestBody AutoEvaluationFormDTO formDTO) { icEventService.autoEvaluation(formDTO); return new Result(); } /** * @Author sun - * @Description 需求完成/项目结案时 修改事件数据 + * @Description 需求完成/项目结案时 修改事件数据 * 议题关闭时,如果议题来源于事件,也会调用此方法 **/ @PostMapping("closeprojectordemand") @@ -390,6 +443,7 @@ public class IcEventController { /** * Desc: 新增【随手拍、讲】 + * * @param tokenDto * @param formDTO * @author zxc @@ -397,7 +451,7 @@ public class IcEventController { */ @NoRepeatSubmit @PostMapping("add-event-resi") - public Result addEventFromResi(@LoginUser TokenDto tokenDto,@RequestBody AddEventFromResiFormDTO formDTO){ + public Result addEventFromResi(@LoginUser TokenDto tokenDto, @RequestBody AddEventFromResiFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, AddEventFromResiFormDTO.AddEventFromResiForm.class); formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); @@ -408,6 +462,7 @@ public class IcEventController { /** * 居民端小程序我上报的事件-列表+详情 * yapi: http://yapi.elinkservice.cn/project/102/interface/api/7781 + * * @param tokenDto * @param formDTO * @return @@ -422,6 +477,7 @@ public class IcEventController { /** * 居民端我上报的事件, 消息列表跳转详情 + * * @param tokenDto * @param formDTO * @return @@ -437,20 +493,22 @@ public class IcEventController { /** * 居民端小程序我上报的事件详情页面-回复列表 * http://yapi.elinkservice.cn/project/102/interface/api/7783 + * * @param formDTO * @return */ @PostMapping("reply-list") - public Result> replyList(@LoginUser TokenDto tokenDto,@RequestBody MyReportIcEvFormDTO formDTO) { + public Result> replyList(@LoginUser TokenDto tokenDto, @RequestBody MyReportIcEvFormDTO formDTO) { formDTO.setUserId(tokenDto.getUserId()); ValidatorUtils.validateEntity(formDTO, MyReportIcEvFormDTO.ReplyListGroup.class); - return new Result>().ok(icEventReplyService.replyList(formDTO.getIcEventId(),formDTO.getUserId())); + return new Result>().ok(icEventReplyService.replyList(formDTO.getIcEventId(), formDTO.getUserId())); } /** * 居民端小程序我上报的事件-处理中 * 点击事件进入详情页时调用此接口,消除红点 * yapi:http://yapi.elinkservice.cn/project/102/interface/api/7790 + * * @param tokenDto * @param formDTO * @return @@ -466,23 +524,24 @@ public class IcEventController { /** * 居民端我上报的事件-回复 * http://yapi.elinkservice.cn/project/102/interface/api/7789 + * * @param tokenDto * @param formDTO * @return */ @NoRepeatSubmit @PostMapping("resi-reply") - public Result resiReply(@LoginUser TokenDto tokenDto, @RequestBody ResiReplyIcEventFormDTO formDTO){ + public Result resiReply(@LoginUser TokenDto tokenDto, @RequestBody ResiReplyIcEventFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO, ResiReplyIcEventFormDTO.AddUserShowGroup.class,ResiReplyIcEventFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, ResiReplyIcEventFormDTO.AddUserShowGroup.class, ResiReplyIcEventFormDTO.AddUserInternalGroup.class); icEventService.resiReply(formDTO); return new Result(); } /** * @Author sun - * @Description 数字平台-事件导出 + * @Description 数字平台-事件导出 **/ @NoRepeatSubmit @PostMapping("export") @@ -501,8 +560,8 @@ public class IcEventController { List list = null; do { data = icEventService.list(formDTO); - data.getList().forEach(d->{ - if(!org.springframework.util.CollectionUtils.isEmpty(d.getImageList())){ + data.getList().forEach(d -> { + if (!org.springframework.util.CollectionUtils.isEmpty(d.getImageList())) { d.setImageUrl(d.getImageList().get(NumConstant.ZERO)); } }); @@ -515,7 +574,7 @@ public class IcEventController { response.setCharacterEncoding("UTF-8"); response.setHeader("content-type", "application/json; charset=UTF-8"); PrintWriter printWriter = response.getWriter(); - Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),e.getMsg()); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); printWriter.write(JSON.toJSONString(result)); printWriter.close(); } catch (Exception e) { @@ -529,7 +588,7 @@ public class IcEventController { /** * @Author sun - * @Description 工作端事件红点消除 + * @Description 工作端事件红点消除 **/ @PostMapping("govRedDot") public Result govRedDot(@RequestBody IcEventListFormDTO formDTO) { @@ -540,7 +599,7 @@ public class IcEventController { /** * @Author sun - * @Description 标记事件为难点堵点 + * @Description 标记事件为难点堵点 **/ @PostMapping("difficultpointevent") public Result difficultPointEvent(@RequestBody IcEventListFormDTO formDTO) { @@ -551,6 +610,7 @@ public class IcEventController { /** * 数据分析-个人档案-上报事件列表,根据epmetUserIdList查询 * 模仿gov/project/resieventreply/pageuserreported接口重新查询新表接口 + * * @author sun */ @PostMapping("icevent-pageuserreported") diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java index 81c5635aaf..c4c7c0d38a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java @@ -1,7 +1,6 @@ package com.epmet.entity; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,165 +14,173 @@ import java.util.Date; * @since v1.0.0 2022-05-17 */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("ic_event") public class IcEventEntity extends BaseEpmetEntity { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /** * 客户ID */ - private String customerId; + private String customerId; /** * 事件所属的网格Id */ - private String gridId; + private String gridId; /** * 网格的所属组织 */ - private String agencyId; + private String agencyId; /** * 网格的所有组织Id */ - private String gridPids; + private String gridPids; /** * 报事的人【居民端/pc端居民Id】可为空 */ - private String reportUserId; + private String reportUserId; /** * 报事人姓名 */ - private String name; + private String name; /** * 手机号 */ - private String mobile; + private String mobile; /** * 身份证号 */ - private String idCard; + private String idCard; - /** - * 反映渠道【字典表】dictTypeKey:ic_event_source_type;随手拍随时讲0、多媒体反应1、社区电话2、12345:3、网格员手持终端:4 - */ - private String sourceType; + /** + * 反映渠道【字典表】dictTypeKey:ic_event_source_type;随手拍随时讲0、多媒体反应1、社区电话2、12345:3、网格员手持终端:4 + */ + private String sourceType; - /** - * 发生时间 - */ - private Date happenTime; + /** + * 发生时间 + */ + private Date happenTime; /** * 事件内容 */ - private String eventContent; + private String eventContent; /** * 纬度 */ - private String latitude; + private String latitude; /** * 经度 */ - private String longitude; + private String longitude; /** * 地址 */ - private String address; + private String address; /** * 处理中:processing;已办结:closed_case */ - private String status; + private String status; /** * 办结时间 */ - private Date closeCaseTime; + private Date closeCaseTime; /** - * 0:已回复 1:已转项目 2:已转需求3:转议题 + * 0:已回复 1:已转项目 2:已转需求3:转议题 */ - private String operationType; + private String operationType; /** - * 项目、需求ID、议题id + * 项目、需求ID、议题id */ - private String operationId; + private String operationId; /** * 事件是否被阅读过;1已读;针对报事人待处理列表 */ - private Integer readFlag; + private Integer readFlag; /** - * 报事人的红点:展示1;不展示:0;人大代表回复,工作人员回复/立项/转需求/办结更新为1; + * 报事人的红点:展示1;不展示:0;人大代表回复,工作人员回复/立项/转需求/办结更新为1; */ - private Integer redDot; + private Integer redDot; /** * 工作端的红点:展示1;不展示:0;【居民报事、回复更新为1】 */ - private Integer govRedDot; + private Integer govRedDot; /** * 最近一次操作时间(回复、立项、转需求、办结更新此列) */ - private Date latestOperatedTime; + private Date latestOperatedTime; /** * 是否解决:已解决 resolved,未解决 un_solved */ - private String resolveStatus; + private String resolveStatus; /** * 结案说明 */ - private String closeRemark; + private String closeRemark; /** * 评论人 */ - private String commentUserId; + private String commentUserId; /** * 评论内容 */ - private String satisfaction; + private String satisfaction; /** * 评论时间 */ - private Date commentTime; + private Date commentTime; /** - * 事件审核状态[涉及附件审核需要加的状态](审核中:auditing; - auto_passed: 自动通过; - review:结果不确定,需要人工审核; - block: 结果违规; - rejected:人工审核驳回; - approved:人工审核通过) + * 事件审核状态[涉及附件审核需要加的状态](审核中:auditing; + * auto_passed: 自动通过; + * review:结果不确定,需要人工审核; + * block: 结果违规; + * rejected:人工审核驳回; + * approved:人工审核通过) */ - private String auditStatus; + private String auditStatus; /** * 审核理由 */ - private String auditReason; + private String auditReason; + + /** + * 是否标记难点堵点 0:否 1:是 + */ + private String difficultPoint; + + /** + * 日照:上传城管返回的任务ID + */ + + private String taskNum; - /** - * 是否标记难点堵点 0:否 1:是 - */ - private String difficultPoint; + private String recId; } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventReplyEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventReplyEntity.java index e477a9cb2a..b987564a8d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventReplyEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventReplyEntity.java @@ -1,7 +1,6 @@ package com.epmet.entity; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,35 +14,50 @@ import java.util.Date; * @since v1.0.0 2022-05-17 */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("ic_event_reply") public class IcEventReplyEntity extends BaseEpmetEntity { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /** * 客户ID */ - private String customerId; + private String customerId; /** * 事件Id */ - private String icEventId; + private String icEventId; /** * 回复人用户Id[工作人员ID] */ - private String fromUserId; + private String fromUserId; + + /** + * 日照:城管处理办理人姓名 + */ + private String humanName; + + /** + * 日照:城管办理部门,办理经过 + */ + private String actDefName; + + /** + * 日照:城管上报,办理时间 + */ + private Date actionTime; /** * 内容 */ - private String content; + private String content; /** * 报事人:组织-人名 */ - private String userShowName; + private String userShowName; } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java index d785949909..1271e93973 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java @@ -2,11 +2,13 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcEventDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.IcEventEntity; +import java.io.IOException; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -73,6 +75,7 @@ public interface IcEventService extends BaseService { /** * 事件列表 + * * @param orgId * @param orgType * @param categoryCode @@ -84,10 +87,11 @@ public interface IcEventService extends BaseService { * @return */ PageData listProcessAnalysisEvents(String orgId, String orgType, String categoryCode, String processStatus, Date queryStartTime, - Date queryEndTime, Integer pageNo, Integer pageSize, String biz); + Date queryEndTime, Integer pageNo, Integer pageSize, String biz); /** * 月度增量查询 + * * @param orgType * @param orgId * @param queryStartTime @@ -98,6 +102,7 @@ public interface IcEventService extends BaseService { /** * 研判分析查询 + * * @param eventId * @return */ @@ -105,6 +110,7 @@ public interface IcEventService extends BaseService { /** * 同类事件列表 + * * @param categoryPids * @param pageNo * @param pageSize @@ -132,6 +138,7 @@ public interface IcEventService extends BaseService { /** * 事件分类分析-一级分类下事件数量 + * * @param formDTO * @return */ @@ -145,6 +152,7 @@ public interface IcEventService extends BaseService { /** * Desc: 定时任务自动评价 + * * @param formDTO * @author zxc * @date 2022/5/18 16:35 @@ -162,8 +170,10 @@ public interface IcEventService extends BaseService { * @Description 事件管理-处理进展 **/ LinkedList process(IcEventReplyFormDTO formDTO); + /** * 事件分类分析- 饼图2,直属下级 事件数量 + * * @param formDTO * @return */ @@ -171,13 +181,14 @@ public interface IcEventService extends BaseService { /** * @Author sun - * @Description 需求完成/项目结案时 修改事件数据 + * @Description 需求完成/项目结案时 修改事件数据 * 议题关闭时,如果议题来源于事件,也会调用此方法 **/ void closeProjectOrDemand(ColseProjectOrDemandFormDTO formDTO); /** * Desc: 新增【随手拍、讲】 + * * @param formDTO * @author zxc * @date 2022/5/19 13:38 @@ -206,19 +217,21 @@ public interface IcEventService extends BaseService { /** * 居民端我上报的事件-回复 + * * @param formDTO */ void resiReply(ResiReplyIcEventFormDTO formDTO); /** * 居民端我上报的事件, 消息列表跳转详情 + * * @param formDTO * @return */ MyReportIcEvResDTO myReportDetail(MyReportIcEvFormDTO formDTO); /** - * @Description 工作端事件红点消除 + * @Description 工作端事件红点消除 **/ void govRedDot(String icEventId); @@ -228,14 +241,20 @@ public interface IcEventService extends BaseService { /** * 事件转议题 + * * @param formDTO */ void icEventToIssue(IcEventToIssueFormDTO formDTO); /** * 批量查询事件信息 + * * @param icEventIds * @return */ List batchSelectById(List icEventIds); + + Result reportCityManager(IcEventListResultDTO data) throws IOException; + + Result checkReportStatus(String icEventId, String taskNum) throws IOException; } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java index e5bf477bc6..6db8dce6da 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java @@ -1,6 +1,8 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -36,18 +38,31 @@ import com.epmet.enums.ProjectOriginEnum; import com.epmet.feign.*; import com.epmet.resi.group.constant.TopicConstant; import com.epmet.service.*; +import com.epmet.utils.IcEventReportUtils; +import com.epmet.utils.ReportCityManageData; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpEntity; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.io.IOException; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; @@ -102,7 +117,7 @@ public class IcEventServiceImpl extends BaseServiceImpl list(IcEventListFormDTO formDTO) { - if(StringUtils.isBlank(formDTO.getAgencyId())){ + if (StringUtils.isBlank(formDTO.getAgencyId())) { //获取当前工作人员缓存信息 CustomerStaffInfoCacheResult staffInfo = getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); formDTO.setAgencyId(staffInfo.getAgencyId()); @@ -159,10 +174,10 @@ public class IcEventServiceImpl extends BaseServiceImpl imageList = new ArrayList<>(); List voiceList = new ArrayList<>(); - for(IcEventListResultDTO.Attachment file: dto.getAttachmentList()){ + for (IcEventListResultDTO.Attachment file : dto.getAttachmentList()) { if ("image".equals(file.getType())) { imageList.add(file.getUrl()); } else if ("voice".equals(file.getType())) { @@ -187,6 +202,7 @@ public class IcEventServiceImpl extends BaseServiceImpl issueRes=govIssueOpenFeignClient.publishIssue(issueFormDTO); + Result issueRes = govIssueOpenFeignClient.publishIssue(issueFormDTO); if (!issueRes.success() || null == issueRes.getData()) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "事件转议题异常,返参:" + JSON.toJSONString(issueRes), "事件转议题异常"); } @@ -321,7 +337,7 @@ public class IcEventServiceImpl extends BaseServiceImpl effectRow = epmetHeartOpenFeignClient.deleteUserDemandByOriginId(entity.getId(), ProjectOriginEnum.IC_EVENT.getCode()); // log.info("delete userDemand result:{},eventId:{}", effectRow, id); - } else if(NumConstant.THREE_STR.equals(entity.getOperationType())){ + } else if (NumConstant.THREE_STR.equals(entity.getOperationType())) { DelIssueFormDTO delIssueFormDTO = new DelIssueFormDTO(); delIssueFormDTO.setCustomerId(loginUserUtil.getLoginUserCustomerId()); delIssueFormDTO.setUserId(loginUserUtil.getLoginUserId()); delIssueFormDTO.setIssueIds(Arrays.asList(entity.getOperationId())); // 删除议题, 议题转了项目的,再单独去删除项目 Result> delIssueRes = govIssueOpenFeignClient.deleteIssueInternal(delIssueFormDTO); - if(delIssueRes.success()&&!CollectionUtils.isEmpty(delIssueRes.getData())){ + if (delIssueRes.success() && !CollectionUtils.isEmpty(delIssueRes.getData())) { // 议题被转了项目,需要删除项目 SpringContextUtils.getBean(ProjectService.class).deleteByOriginId(delIssueRes.getData().get(0), ProjectOriginEnum.ISSUE.getCode()); } } LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper(); - wrapper.eq(IcEventEntity::getId,id).set(IcEventEntity::getUpdatedTime,new Date()) - .set(IcEventEntity::getUpdatedBy,loginUserUtil.getLoginUserId()) - .set(IcEventEntity::getDelFlag,NumConstant.ONE_STR); - baseDao.update(null,wrapper); + wrapper.eq(IcEventEntity::getId, id).set(IcEventEntity::getUpdatedTime, new Date()) + .set(IcEventEntity::getUpdatedBy, loginUserUtil.getLoginUserId()) + .set(IcEventEntity::getDelFlag, NumConstant.ONE_STR); + baseDao.update(null, wrapper); //把事件分类ic_event_category也删除了吧,以免后面数据分析用到这个表 - icEventCategoryService.delInsert(id,null); + icEventCategoryService.delInsert(id, null); } } @@ -727,6 +744,7 @@ public class IcEventServiceImpl extends BaseServiceImpl list = baseDao.icEventList(formDTO); - if(CollectionUtils.isEmpty(list)){ - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"事件不存在","事件已删除"); + if (CollectionUtils.isEmpty(list)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "事件不存在", "事件已删除"); } resultDTO = list.get(0); //查询网格名称(组织-网格) @@ -1129,7 +1147,7 @@ public class IcEventServiceImpl extends BaseServiceImpl imageList = new ArrayList<>(); List voiceList = new ArrayList<>(); resultDTO.getAttachmentList().forEach(file -> { @@ -1144,11 +1162,11 @@ public class IcEventServiceImpl extends BaseServiceImpl categoryList = new ArrayList<>(); categoryList.add(resultDTO.getCategoryId()); CategoryTagResultDTO category = queryCategory(formDTO.getCustomerId(), categoryList); - for (IssueProjectCategoryDictDTO ca : category.getCategoryList()){ + for (IssueProjectCategoryDictDTO ca : category.getCategoryList()) { if (ca.getId().equals(resultDTO.getCategoryId())) { resultDTO.setParentCategoryId(ca.getPid()); resultDTO.setCategoryId(ca.getId()); @@ -1176,7 +1194,7 @@ public class IcEventServiceImpl extends BaseServiceImpl customerIds = new ArrayList<>(); - if (StringUtils.isBlank(formDTO.getCustomerId())){ + if (StringUtils.isBlank(formDTO.getCustomerId())) { Result> allCustomerList = crmOpenFeignClient.getAllCustomerList(); - if (!allCustomerList.success()){ + if (!allCustomerList.success()) { throw new EpmetException("查询所有客户失败"); } List data = allCustomerList.getData(); customerIds.addAll(data.stream().map(m -> m.getId()).collect(Collectors.toList())); - }else { + } else { customerIds.add(formDTO.getCustomerId()); } customerIds.forEach(c -> { @@ -1230,24 +1249,25 @@ public class IcEventServiceImpl extends BaseServiceImpl ids = new ArrayList<>(); do { int start = (no - NumConstant.ONE) * size; - ids = baseDao.getAutoEvaluationIds(customerId,start,size); + ids = baseDao.getAutoEvaluationIds(customerId, start, size); // 批量更新 - if (!CollectionUtils.isEmpty(ids)){ + if (!CollectionUtils.isEmpty(ids)) { baseDao.updateAutoEvaluation(ids); } no++; - }while (ids.size() == size); + } while (ids.size() == size); } /** @@ -1260,7 +1280,7 @@ public class IcEventServiceImpl extends BaseServiceImpl issueProcessRes = govIssueOpenFeignClient.queryIssueProcess(issueIdFormDTO); - if(!issueProcessRes.success()||CollectionUtils.isEmpty(issueProcessRes.getData().getProcessList())){ + if (!issueProcessRes.success() || CollectionUtils.isEmpty(issueProcessRes.getData().getProcessList())) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "事件已转议题,议题处理进展查询异常", "事件已转议题,议题处理进展查询异常"); } - IssueAdvanceResDTO issueAdvanceResDTO=issueProcessRes.getData(); + IssueAdvanceResDTO issueAdvanceResDTO = issueProcessRes.getData(); //如果议题已转项目,先放项目的处理进展 - if("shift_project".equals(issueAdvanceResDTO.getIssueStatus())){ + if ("shift_project".equals(issueAdvanceResDTO.getIssueStatus())) { //根据议题id查询项目 - List projectEntityList=SpringContextUtils.getBean(ProjectService.class).getByOriginId(issueAdvanceResDTO.getIssueId()); - if(!CollectionUtils.isEmpty(projectEntityList)){ + List projectEntityList = SpringContextUtils.getBean(ProjectService.class).getByOriginId(issueAdvanceResDTO.getIssueId()); + if (!CollectionUtils.isEmpty(projectEntityList)) { // 项目进展 ProcessListV2FormDTO processListV2FormDTO = new ProcessListV2FormDTO(); processListV2FormDTO.setProjectId(projectEntityList.get(0).getId()); @@ -1299,8 +1319,8 @@ public class IcEventServiceImpl extends BaseServiceImpl msgList = new ArrayList<>(); UserMessageFormDTO messageFormDTO = new UserMessageFormDTO(); messageFormDTO.setCustomerId(formDTO.getCustomerId()); @@ -1402,6 +1422,7 @@ public class IcEventServiceImpl extends BaseServiceImpl isResiFlag = userOpenFeignClient.getIsResiFlag(formDTO.getUserId()); - if (!isResiFlag.success()){ + if (!isResiFlag.success()) { throw new EpmetException("查询是否注册居民失败..."); } - if (!isResiFlag.getData()){ + if (!isResiFlag.getData()) { throw new EpmetException(EpmetErrorCode.NOT_REGEIST_RESI.getCode()); } - if(StringUtils.isBlank(formDTO.getContent()) && CollectionUtils.isEmpty(formDTO.getVoiceList())) { + if (StringUtils.isBlank(formDTO.getContent()) && CollectionUtils.isEmpty(formDTO.getVoiceList())) { //话题内容和语音不能同时为空 log.error("事件内容和语音不能同时为空"); throw new RenException(EpmetErrorCode.RESI_EVENT_SUBMIT.getCode(), EpmetErrorCode.RESI_EVENT_SUBMIT.getMsg()); @@ -1427,20 +1448,20 @@ public class IcEventServiceImpl extends BaseServiceImpl> userResult = userOpenFeignClient.queryUserBaseInfo(Arrays.asList(formDTO.getUserId())); - if (!userResult.success() && CollectionUtils.isEmpty(userResult.getData())){ - throw new EpmetException("查询用户信息失败"+formDTO.getUserId()); + if (!userResult.success() && CollectionUtils.isEmpty(userResult.getData())) { + throw new EpmetException("查询用户信息失败" + formDTO.getUserId()); } entity.setReportUserId(formDTO.getUserId()); AtomicReference userShowName = new AtomicReference<>(""); userResult.getData().forEach(u -> { - if (u.getUserId().equals(formDTO.getUserId())){ + if (u.getUserId().equals(formDTO.getUserId())) { entity.setName(u.getRealName()); entity.setMobile(u.getMobile()); entity.setIdCard(u.getIdNum()); @@ -1463,12 +1484,12 @@ public class IcEventServiceImpl extends BaseServiceImpl attachmentEntityList = new ArrayList<>(); if (!CollectionUtils.isEmpty(formDTO.getAttachmentList())) { - disposeAttachment(formDTO.getAttachmentList(), attachmentEntityList,entity.getId(),formDTO.getCustomerId(),formDTO.getUserId()); + disposeAttachment(formDTO.getAttachmentList(), attachmentEntityList, entity.getId(), formDTO.getCustomerId(), formDTO.getUserId()); } if (!CollectionUtils.isEmpty(formDTO.getVoiceList())) { - disposeAttachment(formDTO.getVoiceList(), attachmentEntityList,entity.getId(),formDTO.getCustomerId(),formDTO.getUserId()); + disposeAttachment(formDTO.getVoiceList(), attachmentEntityList, entity.getId(), formDTO.getCustomerId(), formDTO.getUserId()); } - if (!CollectionUtils.isEmpty(attachmentEntityList)){ + if (!CollectionUtils.isEmpty(attachmentEntityList)) { icEventAttachmentService.insertBatch(attachmentEntityList); } // 站内信发送给社区每个工作人员 @@ -1477,6 +1498,7 @@ public class IcEventServiceImpl extends BaseServiceImpl> agencyStaffsResult = govOrgOpenFeignClient.getAgencyStaffs(formDTO); - if (!agencyStaffsResult.success()){ + if (!agencyStaffsResult.success()) { throw new EpmetException("查询组织下工作人员失败..."); } - if (!CollectionUtils.isEmpty(agencyStaffsResult.getData())){ + if (!CollectionUtils.isEmpty(agencyStaffsResult.getData())) { List msgList = new ArrayList<>(); agencyStaffsResult.getData().forEach(u -> { UserMessageFormDTO msg = new UserMessageFormDTO(); @@ -1504,7 +1526,7 @@ public class IcEventServiceImpl extends BaseServiceImpl list,List attachmentEntityList,String id,String customerId,String userId){ + public void disposeAttachment(List list, List attachmentEntityList, String id, String customerId, String userId) { int sort = NumConstant.ZERO; for (FileCommonDTO a : list) { IcEventAttachmentEntity attachment = new IcEventAttachmentEntity(); @@ -1571,16 +1594,16 @@ public class IcEventServiceImpl extends BaseServiceImpl categoryList = new ArrayList<>(); categoryList.add(dto.getCategoryId()); CategoryTagResultDTO category = queryCategory(formDTO.getCustomerId(), categoryList); - for (IssueProjectCategoryDictDTO ca : category.getCategoryList()){ + for (IssueProjectCategoryDictDTO ca : category.getCategoryList()) { if (ca.getId().equals(dto.getCategoryId())) { - if(StringUtils.isNotBlank(ca.getParentCategoryName())){ + if (StringUtils.isNotBlank(ca.getParentCategoryName())) { //大类-子类 dto.setCategoryName(ca.getParentCategoryName().concat(StrConstant.HYPHEN).concat(ca.getCategoryName())); - }else{ + } else { dto.setCategoryName(ca.getCategoryName()); } } @@ -1602,7 +1625,7 @@ public class IcEventServiceImpl extends BaseServiceImpl userIdList =new ArrayList<>(); + List userIdList = new ArrayList<>(); userIdList.add(formDTO.getUserId()); - Result> userResult=userOpenFeignClient.queryUserBaseInfo(userIdList); + Result> userResult = userOpenFeignClient.queryUserBaseInfo(userIdList); if (!userResult.success() || CollectionUtils.isEmpty(userResult.getData())) { throw new RenException("查询当前用户信息异常"); } @@ -1638,25 +1661,25 @@ public class IcEventServiceImpl extends BaseServiceImpl> agencyStaffsResult = govOrgOpenFeignClient.getAgencyStaffs(formDTO); - if (!agencyStaffsResult.success()){ + if (!agencyStaffsResult.success()) { throw new EpmetException("查询组织下工作人员失败..."); } - if (!CollectionUtils.isEmpty(agencyStaffsResult.getData())){ + if (!CollectionUtils.isEmpty(agencyStaffsResult.getData())) { List msgList = new ArrayList<>(); agencyStaffsResult.getData().forEach(u -> { UserMessageFormDTO msg = new UserMessageFormDTO(); @@ -1668,7 +1691,7 @@ public class IcEventServiceImpl extends BaseServiceImpl // AND ie.REPORT_USER_ID = #{userId} // - List list=baseDao.selectMyReport(formDTO); - if(CollectionUtils.isEmpty(list)){ + List list = baseDao.selectMyReport(formDTO); + if (CollectionUtils.isEmpty(list)) { return null; } if (!CollectionUtils.isEmpty(list)) { @@ -1710,16 +1733,16 @@ public class IcEventServiceImpl extends BaseServiceImpl categoryList = new ArrayList<>(); categoryList.add(dto.getCategoryId()); CategoryTagResultDTO category = queryCategory(formDTO.getCustomerId(), categoryList); - for (IssueProjectCategoryDictDTO ca : category.getCategoryList()){ + for (IssueProjectCategoryDictDTO ca : category.getCategoryList()) { if (ca.getId().equals(dto.getCategoryId())) { - if(StringUtils.isNotBlank(ca.getParentCategoryName())){ + if (StringUtils.isNotBlank(ca.getParentCategoryName())) { //大类-子类 dto.setCategoryName(ca.getParentCategoryName().concat(StrConstant.HYPHEN).concat(ca.getCategoryName())); - }else{ + } else { dto.setCategoryName(ca.getCategoryName()); } } @@ -1783,9 +1806,9 @@ public class IcEventServiceImpl extends BaseServiceImpl(new ArrayList<>(), NumConstant.ZERO); // } - List epmetUserIdList=new ArrayList<>(); + List epmetUserIdList = new ArrayList<>(); epmetUserIdList.add(formDTO.getUserId()); - if(!CollectionUtils.isEmpty(formDTO.getEpmetUserIdList())){ + if (!CollectionUtils.isEmpty(formDTO.getEpmetUserIdList())) { epmetUserIdList.addAll(formDTO.getEpmetUserIdList()); } formDTO.setEpmetUserIdList(epmetUserIdList); @@ -1803,9 +1826,9 @@ public class IcEventServiceImpl extends BaseServiceImpl issueRes=govIssueOpenFeignClient.publishIssue(issueFormDTO); + Result issueRes = govIssueOpenFeignClient.publishIssue(issueFormDTO); if (!issueRes.success() || null == issueRes.getData()) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "事件转议题异常,返参:" + JSON.toJSONString(issueRes), "事件转议题异常"); } @@ -1840,7 +1863,7 @@ public class IcEventServiceImpl extends BaseServiceImpl categoryEntities=new ArrayList<>(); - for (IssueProjectCategoryDictDTO ca : category.getCategoryList()){ - IcEventCategoryEntity icEventCategoryEntity=new IcEventCategoryEntity(); + List categoryEntities = new ArrayList<>(); + for (IssueProjectCategoryDictDTO ca : category.getCategoryList()) { + IcEventCategoryEntity icEventCategoryEntity = new IcEventCategoryEntity(); icEventCategoryEntity.setCustomerId(formDTO.getCustomerId()); icEventCategoryEntity.setIcEventId(formDTO.getIcEventId()); icEventCategoryEntity.setCategoryId(ca.getId()); @@ -1859,7 +1882,7 @@ public class IcEventServiceImpl extends BaseServiceImpl batchSelectById(List icEventIds) { - Listlist=baseDao.selectBatchIds(icEventIds); - return ConvertUtils.sourceToTarget(list,IcEventDTO.class); + List list = baseDao.selectBatchIds(icEventIds); + return ConvertUtils.sourceToTarget(list, IcEventDTO.class); } + @Override + public Result reportCityManager(IcEventListResultDTO data) throws IOException { + ReportCityManageData reportData; + if (null != data) { + reportData = new ReportCityManageData(); + //事件问题描述 + reportData.setEventDesc(StringUtils.isNotEmpty(data.getEventContent()) ? data.getEventContent() : ""); + //事件ID + reportData.setOtherTaskNum(StringUtils.isNotEmpty(data.getIcEventId()) ? data.getIcEventId() : ""); + //事件发生地址 + reportData.setAddress(StringUtils.isNotEmpty(data.getAddress()) ? data.getAddress() : ""); + //X坐标 +// reportData.setCoordinateX(Double.valueOf(data.getLongitude())); //先不传 + reportData.setLontitude(Double.valueOf(StringUtils.isNotEmpty(data.getLongitude()) ? data.getLongitude() : "0.0")); + //Y坐标 +// reportData.setCoordinateY(Double.valueOf(data.getLatitude())); //先不传 + reportData.setLatitude(Double.valueOf(StringUtils.isNotEmpty(data.getLatitude()) ? data.getLatitude() : "0.0")); + //上报人 + reportData.setHumanName(data.getName()); + //上报人电话 + reportData.setCellphone(data.getMobile()); + //问题来源标示:默认130057 + reportData.setEventSrcID(IcEventReportUtils.EVENT_SRC_ID); + //所属社区 + if (StringUtils.isNotEmpty(data.getGridName())) { + reportData.setCommunityName(data.getGridName().substring(0, data.getGridName().lastIndexOf("-"))); + reportData.setStreetName(data.getGridName().substring(data.getGridName().lastIndexOf("-") + 1)); + } + //案卷类型标识 城市管理 1,社会服务类 2 + reportData.setRecTypeID(1); + //问题级别标识 按照现场要求默认为1或者2 + reportData.setEventLevelID(1); + //问题类型标识 临时采用默认值 1 + reportData.setEventTypeCode("1"); + List medias = new ArrayList<>(); + if (null != data.getImageList() && data.getImageList().size() > 0) { + data.getImageList().forEach(img -> { + ReportCityManageData.Media media = new ReportCityManageData.Media(); + media.setMediaUsage("上报"); + media.setMediaType("IMAGE"); + media.setMediaURL(img); + media.setMediaName(img.substring(img.lastIndexOf("/") + 1)); +// try { +// media.setContent(IcEventReportUtils.getFileByBase64(img)); +// } catch (IOException e) { +// throw new EpmetException("下载事件图片文件失败,请联系管理员!"); +// } + medias.add(media); + }); + reportData.setMedias(medias); + } + if (null != data.getVoiceList() && data.getVoiceList().size() > 0) { + data.getVoiceList().forEach(voice -> { + ReportCityManageData.Media media = new ReportCityManageData.Media(); + media.setMediaUsage("上报"); + media.setMediaType("VOICE"); + media.setMediaURL(voice.getUrl()); + media.setMediaName(voice.getUrl().substring(voice.getUrl().lastIndexOf("/") + 1)); +// try { +// media.setContent(IcEventReportUtils.getFileByBase64(voice.getUrl())); +// } catch (IOException e) { +// throw new EpmetException("下载事件音频文件失败,请联系管理员!"); +// } + medias.add(media); + }); + reportData.setMedias(medias); + } + JSONObject result = reportData(reportData); + if (!result.getString("success").equals("false")) { + JSONObject obj = result.getJSONObject("data"); + IcEventEntity entity = new IcEventEntity(); + entity.setId(data.getIcEventId()); + entity.setRecId(obj.getString("recID")); + entity.setTaskNum(obj.getString("taskNum")); + updateById(entity); + return new Result(); + } else { + return new Result().error(8000, result.getString("message")); + } + } else { + throw new EpmetException("没有查询到该事件!"); + } + } + + @Override + public Result checkReportStatus(String icEventId, String taskNum) throws IOException { + CloseableHttpClient client = null; + CloseableHttpResponse response = null; + try { + client = HttpClients.createDefault(); + RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setConnectionRequestTimeout(3000).setSocketTimeout(10000).build(); + StringBuilder url = new StringBuilder(IcEventReportUtils.REPORT_STATUS_URL); + url.append("?senderCode=" + IcEventReportUtils.STATUS_CODE).append("&taskNum=").append(taskNum); + HttpGet get = new HttpGet(url.toString()); + get.addHeader("Content-Type", "application/json;charset=utf-8"); + get.addHeader("Accept", "application/json;charset=utf-8"); + get.addHeader("Connection", "keep-alive"); + get.setConfig(config); + response = client.execute(get); + JSONObject json = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + if (!json.getString("success").equals("false")) { + JSONArray process = JSONObject.parseObject(json.getString("data")).getJSONArray("recProcess"); + if (null != process && process.size() > 0) { + List entityList = new ArrayList<>(); + for (int i = 0; i < process.size(); i++) { + JSONObject object = process.getJSONObject(i); + IcEventReplyEntity replyEntity = new IcEventReplyEntity(); + replyEntity.setCustomerId(EpmetRequestHolder.getLoginUserCustomerId()); + replyEntity.setIcEventId(icEventId); + replyEntity.setHumanName(object.getString("humanName")); + replyEntity.setActDefName(object.getString("actDefName")); + replyEntity.setContent(object.getString("content")); + } + icEventReplyService.saveOrUpdateBatch(entityList); + } else { + return new Result().error(Integer.valueOf(json.getString("code")), json.getString("message")); + } + } else { + return new Result().error(Integer.valueOf(json.getString("code")), json.getString("message")); + } + return new Result(); + } catch (Exception e) { + throw new EpmetException(8000, "查询失败,请联系管理员!"); + } finally { + if (null != client) { + client.close(); + } + response.close(); + } + } + + private JSONObject reportData(ReportCityManageData reportData) throws IOException { + CloseableHttpClient client = null; + CloseableHttpResponse response = null; + try { + client = HttpClients.createDefault(); + HttpPost post = new HttpPost(IcEventReportUtils.REPORT_URL); + RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setConnectionRequestTimeout(3000).setSocketTimeout(10000).build(); + post.setConfig(config); + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + builder.setCharset(StandardCharsets.UTF_8); + builder.addTextBody("senderCode", IcEventReportUtils.SENDER_CODE); + builder.addTextBody("actionType", IcEventReportUtils.ACTION_TYPE); + builder.addTextBody("data", JSONObject.toJSON(reportData).toString()); + HttpEntity entity = builder.build(); + post.setEntity(entity); + response = client.execute(post); + return JSONObject.parseObject(EntityUtils.toString(response.getEntity())); + } catch (Exception e) { + throw new EpmetException("上报失败,请联系管理员!"); + } finally { + if (null != client) { + client.close(); + } + response.close(); + } + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/utils/IcEventReportUtils.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/utils/IcEventReportUtils.java new file mode 100644 index 0000000000..937d76a509 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/utils/IcEventReportUtils.java @@ -0,0 +1,102 @@ +package com.epmet.utils; + +import lombok.extern.slf4j.Slf4j; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustAllStrategy; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContexts; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Base64; + +/** + * @author yan Lu + * @description 日照:事件上报城管工具类 + * @create 2023/7/3 16:32 + */ + +@Slf4j +public class IcEventReportUtils { + + /** + * 请求地址前缀 + */ + private static final String URL_PREFIX = "https://rzzhsq.shuzirizhao.cn/eUrbanMIS/openapi/v2"; + /** + * 上报地址 + */ + public static final String REPORT_URL = URL_PREFIX + "/upstream"; + + /** + * 处理状态地址 + */ + public static final String REPORT_STATUS_URL = URL_PREFIX + "/downstream/recprocess"; + + /** + * 调用方法 + */ + public static final String ACTION_TYPE = "UP_REC_REPORT"; + + /** + * 发送方标识 + */ + public static final String SENDER_CODE = "130057"; + + /** + * 处理状态码 + */ + + public static final String STATUS_CODE = "371100"; + + /** + * 问题来源标示 + */ + public static final Integer EVENT_SRC_ID = 130057; + + /** + * 获取多媒体资源并转换为base64编码 + * + * @param url + * @return + * @throws IOException + */ + public static String getFileByBase64(String url) throws IOException { + SSLConnectionSocketFactory ssl; + CloseableHttpClient client = null; + ByteArrayOutputStream outputStream = null; + InputStream stream = null; + try { + //忽略服务端证书校验 + ssl = new SSLConnectionSocketFactory(SSLContexts.custom(). + loadTrustMaterial(null, new TrustAllStrategy()).build(), NoopHostnameVerifier.INSTANCE); + client = HttpClients.custom().setSSLSocketFactory(ssl).build(); + HttpResponse response = client.execute(new HttpGet(url)); + HttpEntity entity = response.getEntity(); + stream = entity.getContent(); + outputStream = new ByteArrayOutputStream(); + byte[] bytes = new byte[1024]; + int length; + while ((length = stream.read(bytes)) != -1) { + outputStream.write(bytes, 0, length); + } + return Base64.getEncoder().encodeToString(outputStream.toByteArray()); + } catch (Exception e) { + client.close(); + stream.close(); + outputStream.close(); + return ""; + } finally { + client.close(); + stream.close(); + outputStream.close(); + } + } + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/utils/ReportCityManageData.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/utils/ReportCityManageData.java new file mode 100644 index 0000000000..8e0bb3721a --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/utils/ReportCityManageData.java @@ -0,0 +1,191 @@ +package com.epmet.utils; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @author yan Lu + * @description 上报城管数据封装对象 + * @create 2023/7/3 16:43 + */ +@Data +public class ReportCityManageData implements Serializable { + + private static final long serialVersionUID = -5492975503443321965L; + + /** + * 问题描述 + */ + @NotBlank(message = "问题描述不能为空") + private String eventDesc; + + /** + * 第三方案件唯一标识 + */ + @NotBlank(message = "第三方案件唯一标识不能为空:上报事件ID") + private String otherTaskNum; + + /** + * 地址描述 + */ + @NotBlank(message = "事件发生地址不能为空") + private String address; + + /** + * x坐标 + * 跟主业务系统同坐标系 + */ + @NotBlank(message = "x坐标不能为空:跟主业务系统同坐标系") + private Double coordinateX; + + /** + * y坐标 + * 跟主业务系统同坐标系 + */ + @NotBlank(message = "y坐标不能为空:跟主业务系统同坐标系") + private Double coordinateY; + + /** + * 经度 + * 采用在线地图坐标系,默认为0 + */ + private Double lontitude; + + /** + * 纬度 + * 采用在线地图坐标系,默认为0 + */ + private Double latitude; + + /** + * 问题来源标示 + * 例:微信举报 :56 + */ + @NotBlank(message = "问题来源标示,例:微信举报:56") + private Integer eventSrcID; + + /** + * 所属区域代码 + */ + private String districtCode; + + /** + * 所属区域 + */ + private String districtName; + + /** + * 所属区域代码 + */ + private String streetCode; + + /** + * 所属区域 + */ + private String streetName; + + /** + * 所属社区代码 + */ + private String communityCode; + + /** + * 所属社区 + */ + private String communityName; + + /** + * 案卷类型标识 + */ + @NotBlank(message = "案卷类型标识:城市管理 1,社会服务类 2") + private Integer recTypeID; + + /** + * 问题级别标识 + * 按照现场要求默认为1或者2 + */ + @NotBlank(message = "问题级别标识:按照现场要求默认为1或者2") + private Integer eventLevelID; + + /** + * 问题类型标识 + * 临时采用默认值 1 + */ + @NotBlank(message = "问题类型标识:临时采用默认值 1") + private String eventTypeCode; + + /** + * 问题大类标识 + */ + private String mainTypeCode; + + /** + * 问题小类标识 + */ + private String subTypeCode; + + /** + * 上报多媒体数量,没有多媒体默认0 + */ + private Integer mediaNum; + + /** + * 上报人 + */ + private String humanName; + + /** + * 上报人手机号 + */ + private String cellphone; + + /** + * 多媒体信息 + */ + private List medias; + + @Data + public static class Media { + /** + * 案件任务号 + */ + private String taskNum; + + /** + * 文件名 + */ + @NotBlank(message = "文件名不能为空") + private String mediaName; + + /** + * 多媒体的完整访问路径,优先推荐 + */ + private String mediaURL; + + /** + * 多媒体用途 + * 上报、核查、核实、处置 + */ + @NotBlank(message = "多媒体用途不能为空:上报、核查、核实、处置") + private String mediaUsage; + + /** + * 多媒体类型 + * IMAGE、VIDEO、VOICE、ATTACH + */ + @NotBlank(message = "多媒体类型不能为空:IMAGE、VIDEO、VOICE、ATTACH") + private String mediaType; + + /** + * 多媒体内容 + * base64编码的表示多媒体的二进制数据流。 + */ + private String content; + + } + + +}