diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiItemController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiItemController.java index bce25d11d..61f5f093f 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiItemController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiItemController.java @@ -172,7 +172,13 @@ public class ApiItemController { /** * 新新向党,外部调用,推送随手拍数据 - * + * 返参示例:{ + * "code": 0, //0成功 + * "data": { + * "id": "37bcc5f4419b62634f2802aef8c3492f" + * }, + * "msg": "success" + * } * @param fromDTO * @return */ diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 190f89592..92b58fcdf 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -27,6 +27,7 @@ import java.util.List; * @date 2019/9/7 9:27 */ @FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = AdminFeignClientFallback.class) +// @FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = AdminFeignClientFallback.class,url = "http://127.0.0.1:9092") public interface AdminFeignClient { /** diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/XxxdEventDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/XxxdEventDTO.java index 639550644..cf2dbf276 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/XxxdEventDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/XxxdEventDTO.java @@ -4,7 +4,6 @@ import java.io.Serializable; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; @@ -89,35 +88,72 @@ public class XxxdEventDTO implements Serializable { private String[] audios; /** - * 北上速办事件id - */ - private String bssbEventId; - - /** - * 处理状态:0-未处理;1-已处理;5-不予处理 + * 反馈入参:处理状态:0-未处理;1-已处理;5-不予处理 */ private String status; /** - * 处理结果 + * 反馈入参:处理结果 */ private String processResult; /** - * 处理时间:yyyy-MM-dd HH:mm:ss + * 反馈入参:处理时间:yyyy-MM-dd HH:mm:ss */ private String processTime; /** - * 处理人 + * 处理人:北上速办处理进展对应的处理部门 */ private String processUser; + /** + * 北上速办处理进展表id + */ + private String processId; + /** * 是否已同步,0:未同步;1,已同步 + * 成功上传到民生诉求后,值为1 */ private Integer sync; + /** + * 0已接收;1已转北上速办事件;2已反馈给新新向党 + * -2反馈新新向党失败 + */ + private String internalStatus; + + /** + * 北上速办事件id + */ + private String bssbEventId; + + /** + * 内部备注 + */ + private String internalRemark; + + /** + * 网格id + */ + private String gridId; + + /** + * 网格名称 + */ + private String gridName; + + /** + * 社区id + */ + private String communityId; + + /** + * 街道id + */ + private String streetId; + /** * 删除标识 0:未删除,1:已删除 */ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdFeedBackQuestionTaskFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdFeedBackQuestionTaskFormDTO.java new file mode 100644 index 000000000..e951f99c8 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdFeedBackQuestionTaskFormDTO.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.dto.events.form; + +import lombok.Data; + +/** + * @Description 新新向党随手拍的接收数据 + * @Author yzm + * @Date 2023/5/25 9:27 + */ +@Data +public class XxxdFeedBackQuestionTaskFormDTO { + /** + * 问题标识,可唯一识别用户问题的id + */ + private String questionId; + /** + * 开始日期:yyyy-MM-dd + */ + private String startDateStr; + /** + * 结束日期:yyyy-MM-dd + */ + private String endDateStr; +} + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/SubmitItemFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/SubmitItemFormDTO.java index b110070b2..da8b58378 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/SubmitItemFormDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/SubmitItemFormDTO.java @@ -6,6 +6,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.Date; import java.util.List; /** @@ -140,10 +141,13 @@ public class SubmitItemFormDTO implements Serializable { /** - * 区分 0 网格员上报还是 1 居民上报 + * 区分 0 网格员上报还是 1 居民上报;2:新新向党随手拍 */ private String appealSource; - + /** + * 发布时间 + */ + private Date distributeTime; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/XxxdEventController.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/XxxdEventController.java index 23031b2b9..f6b38f88b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/XxxdEventController.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/XxxdEventController.java @@ -1,28 +1,17 @@ package com.elink.esua.epdc.modules.events.controller; -import cn.hutool.core.codec.Base64Encoder; -import cn.hutool.crypto.SecureUtil; -import cn.hutool.crypto.symmetric.AES; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.constant.XxxdConstant; import com.elink.esua.epdc.dto.events.XxxdEventDTO; import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO; +import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionTaskFormDTO; import com.elink.esua.epdc.dto.events.result.XxxdFeedBackResultDTO; import com.elink.esua.epdc.modules.events.service.XxxdEventService; -import com.fasterxml.jackson.core.JsonParser; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.*; import org.springframework.web.bind.annotation.*; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.RestTemplate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -103,5 +92,15 @@ public class XxxdEventController { } + /** + * 新新向党_随手拍处理反馈定时任务,job调用此方法 + * + * @return + */ + @PostMapping("xxxdFeedBackQuestionTask") + public Result xxxdFeedBackQuestionTask(@RequestBody XxxdFeedBackQuestionTaskFormDTO formDTO) { + xxxdEventService.xxxdFeedBackQuestionTask(formDTO.getQuestionId(), formDTO.getStartDateStr(), formDTO.getEndDateStr()); + return new Result(); + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/XxxdEventDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/XxxdEventDao.java index a4f0d87d9..18acfa86f 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/XxxdEventDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/XxxdEventDao.java @@ -3,6 +3,9 @@ package com.elink.esua.epdc.modules.events.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.modules.events.entity.XxxdEventEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 新新向党随手拍的接收数据 @@ -12,5 +15,17 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface XxxdEventDao extends BaseDao { - + /** + * @param questionId + * @param startDateStr yyyy-MM-dd + * @param endDateStr yyyy-MM-dd + * @param pageIndex + * @param pageSize + * @return + */ + List selectNoFeedBackData(@Param("questionId") String questionId, + @Param("startDateStr") String startDateStr, + @Param("endDateStr") String endDateStr, + @Param("pageIndex") int pageIndex, + @Param("pageSize") int pageSize); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/XxxdEventEntity.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/XxxdEventEntity.java index 2c9b1f062..72d6a0455 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/XxxdEventEntity.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/XxxdEventEntity.java @@ -77,33 +77,69 @@ public class XxxdEventEntity extends BaseEpdcEntity { private String audios; /** - * 北上速办事件id - */ - private String bssbEventId; - - /** - * 处理状态:0-未处理;1-已处理;5-不予处理 + * 反馈入参:处理状态:0-未处理;1-已处理;5-不予处理 */ private String status; /** - * 处理结果 + * 反馈入参:处理结果 */ private String processResult; /** - * 处理时间:yyyy-MM-dd HH:mm:ss + * 反馈入参:处理时间:yyyy-MM-dd HH:mm:ss */ private String processTime; /** - * 处理人 + * 处理人:北上速办处理进展对应的处理部门 */ private String processUser; + /** + * 北上速办处理进展表id + */ + private String processId; + /** * 是否已同步,0:未同步;1,已同步 + * 成功上传到民生诉求后,值为1 */ private Integer sync; + /** + * 0已接收;1已转北上速办事件;2已反馈给新新向党 + * -2反馈新新向党失败 + */ + private String internalStatus; + + /** + * 北上速办事件id + */ + private String bssbEventId; + + /** + * 内部备注 + */ + private String internalRemark; + + /** + * 网格id + */ + private String gridId; + + /** + * 网格名称 + */ + private String gridName; + + /** + * 社区id + */ + private String communityId; + + /** + * 街道id + */ + private String streetId; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/XxxdEventService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/XxxdEventService.java index fe82d8b87..1d5c6eb33 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/XxxdEventService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/XxxdEventService.java @@ -52,4 +52,13 @@ public interface XxxdEventService extends BaseService { * @date 2023-05-22 */ void delete(List ids); + + /** + * 新新向党_随手拍处理反馈定时任务,调用 + * + * @param questionId + * @param startDateStr yyyy-MM-dd + * @param endDateStr yyyy-MM-dd + */ + void xxxdFeedBackQuestionTask(String questionId,String startDateStr, String endDateStr); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/XxxdEventServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/XxxdEventServiceImpl.java index 6a4f8ec20..76ed8784c 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/XxxdEventServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/XxxdEventServiceImpl.java @@ -13,15 +13,20 @@ import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.StrConstant; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; +import com.elink.esua.epdc.commons.tools.utils.DateUtils; +import com.elink.esua.epdc.commons.tools.utils.SpringContextUtils; import com.elink.esua.epdc.constant.XxxdConstant; import com.elink.esua.epdc.dto.events.XxxdEventDTO; import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO; import com.elink.esua.epdc.dto.events.result.XxxdFeedBackResultDTO; +import com.elink.esua.epdc.dto.item.form.SubmitItemFormDTO; +import com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO; import com.elink.esua.epdc.modules.events.dao.XxxdEventDao; import com.elink.esua.epdc.modules.events.entity.XxxdEventEntity; import com.elink.esua.epdc.modules.events.service.XxxdEventService; -import com.google.zxing.oned.UPCAReader; +import com.elink.esua.epdc.modules.item.service.impl.ItemServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.http.*; import org.springframework.stereotype.Service; @@ -31,6 +36,7 @@ import org.springframework.web.client.RestTemplate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -68,14 +74,55 @@ public class XxxdEventServiceImpl extends BaseServiceImpl picList = Arrays.asList(entity.getPics().split(StrConstant.SEMICOLON)); + submitItemFormDTO.setImages(picList); + } + if(StringUtils.isNotBlank(entity.getAudios())){ + // 随手拍语音为多段,epdc_item表语音只能上传一个,这里默认取第一个 + List audioList = Arrays.asList(entity.getAudios().split(StrConstant.SEMICOLON)); + if (CollectionUtils.isNotEmpty(audioList)) { + submitItemFormDTO.setItemVoice(audioList.get(NumConstant.ZERO)); + } + } + //这个方法内部,会更新xxxd_event,记录是否成功 + SpringContextUtils.getBean(ItemServiceImpl.class).submitXxxdEventToItem(entity.getId(), entity.getLongitude(), entity.getLatitude(), submitItemFormDTO); + } + /** * 更新 @@ -183,4 +230,75 @@ public class XxxdEventServiceImpl extends BaseServiceImpl list = null; + do { + int pageIndex = (pageNo - NumConstant.ONE) * pageSize; + list = baseDao.selectNoFeedBackData(questionId, startDateStr, endDateStr, pageIndex, pageSize); + //处理数据 + feedBackQuestion(list); + pageNo=pageNo+NumConstant.ONE; + } while (CollectionUtils.isNotEmpty(list) && list.size() == pageSize); + } + + + /** + * 循环每一条数据,查询最后一条处理进展反馈给新新向党 + * @param list + */ + private void feedBackQuestion(List list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + for (XxxdEventEntity xxxdEventEntity : list) { + LambdaUpdateWrapper updateWrapper=new LambdaUpdateWrapper<>(); + updateWrapper.eq(XxxdEventEntity::getId,xxxdEventEntity.getId()); + try { + // 查询北上速办诉求的处理进展 + List processList = SpringContextUtils.getBean(ItemServiceImpl.class).queryItemProcess(xxxdEventEntity.getBssbEventId()); + if(CollectionUtils.isEmpty(processList)){ + throw new RenException("epdc_item_handle_process处理进展为空"); + } + ItemHandleProgressResultDTO latestProcess=processList.get(NumConstant.ZERO); + String processResult = latestProcess.getAdvice(); + String processTime = latestProcess.getCreatedTime(); + // 向新新向党反馈数据结果:status:0-未处理,1-已处理,5-不予处理 + XxxdFeedBackResultDTO resultDTO = submitFeedback(xxxdEventEntity.getQuestionId(), NumConstant.ONE_STR, processResult, processTime); + if (resultDTO.getSuccess()) { + // 反馈成功 + updateWrapper.set(XxxdEventEntity::getStatus, NumConstant.ONE_STR) + .set(XxxdEventEntity::getProcessResult, processResult) + .set(XxxdEventEntity::getProcessTime, processTime) + .set(XxxdEventEntity::getInternalStatus, NumConstant.TWO_STR) + .set(XxxdEventEntity::getProcessId, latestProcess.getId()) + .set(XxxdEventEntity::getProcessUser, latestProcess.getHandlerDept()) + .set(XxxdEventEntity::getInternalRemark, "反馈成功"); + }else{ + updateWrapper.set(XxxdEventEntity::getInternalRemark,resultDTO.getMessage()) + .set(XxxdEventEntity::getInternalStatus,"-2"); + } + } catch (RenException e) { + updateWrapper.set(XxxdEventEntity::getInternalRemark,e.getMsg()) + .set(XxxdEventEntity::getInternalStatus,"-2"); + } catch (Exception e) { + updateWrapper.set(XxxdEventEntity::getInternalRemark,"反馈异常") + .set(XxxdEventEntity::getInternalStatus,"-2"); + } finally { + baseDao.update(null, updateWrapper); + } + } + + } + + } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java index 2c4fb4ced..f9f70ef7b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java @@ -19,7 +19,8 @@ import java.util.List; * @email yujintao@elink-cn.com * @date 2019/9/7 9:27 */ -@FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = AdminFeignClientFallback.class) +// @FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = AdminFeignClientFallback.class) +@FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = AdminFeignClientFallback.class,url = "http://127.0.0.1:9092") public interface AdminFeignClient { /** @@ -138,4 +139,15 @@ public interface AdminFeignClient { @PostMapping(value = "sys/dept/meta/all", consumes = MediaType.APPLICATION_JSON_VALUE) Result> getAllDept(); + + /** + * 根据坐标获取系统网格 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author zhy + * @date 2022/9/5 15:53 + */ + @PostMapping("sys/appsys/dept/gis/getGridByCoordinate") + Result getGridByCoordinate(GisFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java index 534b07ebc..52c317206 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java @@ -85,4 +85,8 @@ public class AdminFeignClientFallback implements AdminFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getAllDept"); } + @Override + public Result getGridByCoordinate(GisFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getGridByCoordinate",formDTO); + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java index 1a2b29bf7..678e5b189 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java @@ -295,7 +295,7 @@ public class ItemEntity extends BaseEpdcEntity { private Integer repeatFlag; /** - * 区分 0 网格员上报还是 1居民上报 + * 区分 0 网格员上报还是 1 居民上报;2:新新向党随手拍 */ private String appealSource; diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java index b849c3985..c35e63210 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java @@ -23,11 +23,13 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; 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.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant; +import com.elink.esua.epdc.commons.tools.constant.StrConstant; import com.elink.esua.epdc.commons.tools.enums.*; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.page.PageData; @@ -42,6 +44,7 @@ import com.elink.esua.epdc.commons.tools.security.content.dto.result.CheckResult import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.*; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.constant.*; import com.elink.esua.epdc.constants.MenuCodeConstant; import com.elink.esua.epdc.dto.*; @@ -76,7 +79,9 @@ import com.elink.esua.epdc.modules.category.dao.CategoryDao; import com.elink.esua.epdc.modules.category.entity.CategoryEntity; import com.elink.esua.epdc.modules.category.service.CategoryService; import com.elink.esua.epdc.modules.events.dao.ImgDao; +import com.elink.esua.epdc.modules.events.dao.XxxdEventDao; import com.elink.esua.epdc.modules.events.entity.ImgEntity; +import com.elink.esua.epdc.modules.events.entity.XxxdEventEntity; import com.elink.esua.epdc.modules.events.service.EpdcEventsService; import com.elink.esua.epdc.modules.events.service.ImgService; import com.elink.esua.epdc.modules.feign.AdminFeignClient; @@ -106,6 +111,8 @@ import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestParam; @@ -231,6 +238,8 @@ public class ItemServiceImpl extends BaseServiceImpl implem // private ItemProcessModifyProducer itemProcessModifyProducer; @Resource private ItemDeptDao itemDeptDao; + @Autowired + private XxxdEventDao xxxdEventDao; @Override public PageData page(Map params) { @@ -3441,6 +3450,108 @@ public class ItemServiceImpl extends BaseServiceImpl implem return new Result().ok(entity.getSerialNum()); } + /** + * 新新向党的事件推送过来,调用此方法。 + * 此方法与上面的submitMsFzItemResi逻辑一致,只是返参返回epdc_item.id + * @param formDto + * @return + */ + @Transactional(rollbackFor = Exception.class) + public String submitMsFzItemResiForXxxd(SubmitItemFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + imageCheck(formDto.getImages()); + ItemEntity entity = ConvertUtils.sourceToTarget(formDto, ItemEntity.class); + if (null == formDto.getDistributeTime()) { + entity.setDistributeTime(new Date()); + } + entity.setItemState(0);//处理中 + entity.setLastHandleTime(new Date()); + entity.setCategoryCode("13"); + entity.setCategoryFullName("其他"); + entity.setFirstCategoryCode("13"); + entity.setItemCode("PT" + System.currentTimeMillis());//项目编号 + entity.setIsPeople("1");//诉求上报 + entity.setAppealSource(formDto.getAppealSource()); + String code = ""; + if (NumConstant.ZERO_STR.equals(formDto.getPeopleFlag())) { + //民生诉求所属网格对应的所属社区的市中心编码 + Result result = adminFeignClient.getCompleteDept(entity.getGridId()); + if (result.success()) { + code = result.getData().getCommunityDisCenterZoningCode(); + } + entity.setSerialNum(getSerialNum("MS" + code)); + } else if (NumConstant.ONE_STR.equals(formDto.getPeopleFlag())) { + //执法诉求所属街道的市中心编码 + Result dtoResult = adminFeignClient.getSysDeptInfo(entity.getGridId()); + if (dtoResult.success()) { + code = dtoResult.getData().getDisCenterZoningCode(); + // 因为是街道账号,所以上级一定是市北区委 + Long pids = dtoResult.getData().getPid(); + String pnames = dtoResult.getData().getParentName(); + entity.setParentDeptIds(pids + ""); + entity.setParentDeptNames(pnames); + entity.setAllDeptIds(pids + "," + entity.getGridId()); + entity.setAllDeptNames(pnames + "-" + entity.getGrid()); + } + + entity.setSerialNum(getSerialNum("FZ" + code)); + } + baseDao.insert(entity); + //插入项目部门关联表 + itemDeptService.savePeopleSubmitInfo(entity); + // 保存图片 + imgService.saveImages(formDto.getImages(), entity.getId(), ImageConstant.TYPE_IMAGE_BIZ_EVENTS); + // 插入项目处理流程表 + ItemHandleProcessEntity itemHandleProcessEntity = new ItemHandleProcessEntity(); + itemHandleProcessEntity.setItemId(entity.getId()); + itemHandleProcessEntity.setState(ItemHandleCategoryEnum.HANDLE_I_HANDLE_GRID_TOP.getValue()); + itemHandleProcessEntity.setHandleAdvice("诉求已查收,正在办理。"); + itemHandleProcessEntity.setOutHandleAdvice("诉求已查收,正在办理。"); + itemHandleProcessEntity.setHandlerDeptId(entity.getGridId()); + itemHandleProcessEntity.setHandlerDept(entity.getGrid()); + itemHandleProcessService.insert(itemHandleProcessEntity); + //发送事件至区中心 + if ("1".equals(formDto.getPeopleFlag())) { + //保存至企业表 + itemEnterpriseService.savaZfInfo(entity, formDto); + ItemHandleSubmitFormDTO dto = new ItemHandleSubmitFormDTO(); + dto.setId(entity.getId()); + dto.setOutHandleAdvice(itemHandleProcessEntity.getOutHandleAdvice()); + dto.setHandleCategory(ItemHandleCategoryEnum.HANDLE_CLOSING_CASE_APPLY.getValue()); + sendItemToDsf(dto, itemHandleProcessEntity); + } + // !!!!!!!只有生产推送市平台 + Environment environment = SpringContextUtils.getBean(Environment.class); + String[] activeProfiles = environment.getActiveProfiles(); + if (activeProfiles.length > 0 && "prod".equals(activeProfiles[0])) { + log.info("当前运行环境:" + activeProfiles[0]); + // 发送到市平台 + try { + if (NumConstant.ZERO_STR.equals(formDto.getPeopleFlag())) { + // 民生 + sendCaseLivelihood(entity); + } else if (NumConstant.ONE_STR.equals(formDto.getPeopleFlag())) { + // 发展 + sendCaseDevelop(entity); + } + } catch (Exception e) { + StringBuffer str = new StringBuffer(); + switch (formDto.getPeopleFlag()) { + case NumConstant.ZERO_STR: + str.append("民生"); + break; + case NumConstant.ONE_STR: + str.append("发展"); + break; + } + str.append("诉求上报,发送事件数据到市中心错误,诉求项目Id->").append(entity.getId()); + log.error(str.toString()); + e.printStackTrace(); + } + } + return entity.getId(); + } + /** * @return void * @describe: 民生诉求 组装数据到市平台 @@ -5430,4 +5541,96 @@ public class ItemServiceImpl extends BaseServiceImpl implem } } + + /** + * 新新向党随手拍事件,保存到民生诉求epdc_item表 + * + * @param submitItemFormDTO :新新向党的随手拍事件 + */ + public void submitXxxdEventToItem(String xxxdEventEntityId,String longitude,String latitude,SubmitItemFormDTO submitItemFormDTO) { + // 0已接收;1已转北上速办事件;2已完结 + String internalStatus = ""; + // 北上速办事件id + String bssbEventId = ""; + // 内部备注 + String internalRemark = ""; + // 网格id + String gridId = ""; + // 网格名称 + String gridName = ""; + // 社区id + String communityId = ""; + // 街道id + String streetId = ""; + // 是否已同步,0:未同步;1,已同步 + Integer sync = NumConstant.ZERO; + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(XxxdEventEntity::getId, xxxdEventEntityId); + try { + // 查询网格信息 + GisFormDTO gisFormDTO = new GisFormDTO(); + gisFormDTO.setLongitude(longitude); + gisFormDTO.setLatitude(latitude); + Result gisGridRes = adminFeignClient.getGridByCoordinate(gisFormDTO); + if (!gisGridRes.success() || null == gisGridRes.getData()) { + internalRemark = "根据经纬度获取网格信息失败:" + gisGridRes.getMsg(); + log.error("submitXxxdEventToItem上传到民生诉求异常:" + internalRemark); + return;// 测试时候注释掉,让它继续执行 + } else { + gridId = String.valueOf(gisGridRes.getData().getGridId()); + gridName = gisGridRes.getData().getGridName(); + communityId = String.valueOf(gisGridRes.getData().getCommunityId()); + streetId = String.valueOf(gisGridRes.getData().getStreetId()); + + // 调用北上诉办-民生诉求方法 + submitItemFormDTO.setGridId(gisGridRes.getData().getGridId()); + submitItemFormDTO.setGrid(gisGridRes.getData().getGridName()); + } + // dev开发环境临时赋值 + Environment environment = SpringContextUtils.getBean(Environment.class); + String[] activeProfiles = environment.getActiveProfiles(); + if (activeProfiles.length > 0 && "dev".equals(activeProfiles[0])) { + log.info("当前运行环境:" + activeProfiles[0]); + submitItemFormDTO.setGridId(1001L); + submitItemFormDTO.setGrid("test"); + } + // 复制了一个民生诉求提交方法submitMsFzItemResi =》submitMsFzItemResiForXxxd + bssbEventId = this.submitMsFzItemResiForXxxd(submitItemFormDTO); + + if(StringUtils.isNotBlank(bssbEventId)){ + //成功返回epdc_item.id,说明提交民生诉求成功,状态改为1 + internalStatus=NumConstant.ONE_STR; + // 置为已同步 + sync=NumConstant.ONE; + log.info("submitXxxdEventToItem上传到民生诉求成功:bssbEventId:"+bssbEventId); + } + } catch (Exception e) { + internalRemark="上传到民生诉求异常"; + log.error("submitXxxdEventToItem上传到民生诉求异常",e); + } finally { + log.info("最终都会被执行-------------------"); + updateWrapper.set(StringUtils.isNotBlank(internalStatus), XxxdEventEntity::getInternalStatus, internalStatus) + .set(StringUtils.isNotBlank(bssbEventId), XxxdEventEntity::getBssbEventId, bssbEventId) + .set(StringUtils.isNotBlank(internalRemark), XxxdEventEntity::getInternalRemark, internalRemark) + .set(StringUtils.isNotBlank(gridId), XxxdEventEntity::getGridId, gridId) + .set(StringUtils.isNotBlank(gridName), XxxdEventEntity::getGridName, gridName) + .set(StringUtils.isNotBlank(communityId), XxxdEventEntity::getCommunityId, communityId) + .set(StringUtils.isNotBlank(streetId), XxxdEventEntity::getStreetId, streetId) + .set(null != sync, XxxdEventEntity::getSync, sync); + xxxdEventDao.update(null, updateWrapper); + } + + + } + + /** + * 获取民生诉求,处理进展 + * @param itemId + * @return + */ + public List queryItemProcess(String itemId){ + List dtoList = baseDao.selectListOfItemHandleProgressByWork(itemId); + return dtoList; + } + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml index 89770bbb2..7775c986e 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml @@ -3,6 +3,29 @@ - + + \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/ItemFeignClient.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/ItemFeignClient.java index 6cb1bc129..c01f49716 100644 --- a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/ItemFeignClient.java +++ b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/ItemFeignClient.java @@ -2,6 +2,7 @@ package com.elink.esua.epdc.feign; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionTaskFormDTO; import com.elink.esua.epdc.dto.item.form.GetAbnormalDataFormDTO; import com.elink.esua.epdc.dto.screen.form.DataStatisticsFormDTO; import com.elink.esua.epdc.feign.fallback.ItemFeignClientFallback; @@ -79,4 +80,12 @@ public interface ItemFeignClient { @PostMapping("events/PushToCity/getAbnormalData") Result getAbnormalData(@RequestBody GetAbnormalDataFormDTO formDTO); + /** + * 新新向党_随手拍处理反馈定时任务,job调用此方法 + * + * @return + */ + @PostMapping("events/xxxd/question/xxxdFeedBackQuestionTask") + Result xxxdFeedBackQuestionTask(@RequestBody XxxdFeedBackQuestionTaskFormDTO formDTO); + } diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/ItemFeignClientFallback.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/ItemFeignClientFallback.java index 939a95461..086db236c 100644 --- a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/ItemFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/ItemFeignClientFallback.java @@ -3,6 +3,7 @@ package com.elink.esua.epdc.feign.fallback; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionTaskFormDTO; import com.elink.esua.epdc.dto.item.form.GetAbnormalDataFormDTO; import com.elink.esua.epdc.dto.screen.form.DataStatisticsFormDTO; import com.elink.esua.epdc.feign.ItemFeignClient; @@ -68,4 +69,14 @@ public class ItemFeignClientFallback implements ItemFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "getAbnormalData", formDTO); } + /** + * 新新向党_随手拍处理反馈定时任务,job调用此方法 + * + * @param formDTO + * @return + */ + @Override + public Result xxxdFeedBackQuestionTask(XxxdFeedBackQuestionTaskFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "xxxdFeedBackQuestionTask", formDTO); + } } diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTask.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTask.java new file mode 100644 index 000000000..5297b0ade --- /dev/null +++ b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTask.java @@ -0,0 +1,18 @@ +package com.elink.esua.epdc.task.events; + +/** + * 新新向党_随手拍处理反馈定时任务 + * + * @author yzm + * @date 2023/05/25 09:19 + */ +public interface XxxdFeedBackQuestionTask { + + /** + * @param params + * @return void + * @author yzm + * @date 2023/05/25 09:19 + */ + void run(String params); +} diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTaskImpl.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTaskImpl.java new file mode 100644 index 000000000..bf3d4a384 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTaskImpl.java @@ -0,0 +1,42 @@ +package com.elink.esua.epdc.task.events; + +import com.alibaba.fastjson.JSON; +import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionTaskFormDTO; +import com.elink.esua.epdc.feign.ItemFeignClient; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description 新新向党_随手拍处理反馈定时任务 + * @Author yzm + * @Date 2023/5/25 9:20 + */ +@Component("XxxdFeedBackQuestionTask") +public class XxxdFeedBackQuestionTaskImpl implements XxxdFeedBackQuestionTask { + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private ItemFeignClient itemFeignClient; + + /** + * @param params + * @return void + * @author yzm + * @date 2023/05/25 09:19 + */ + @Override + public void run(String params) { + logger.debug("XxxdFeedBackQuestionTask定时任务正在执行,参数为:{}", params); + XxxdFeedBackQuestionTaskFormDTO formDTO = new XxxdFeedBackQuestionTaskFormDTO(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, XxxdFeedBackQuestionTaskFormDTO.class); + } + itemFeignClient.xxxdFeedBackQuestionTask(formDTO); + } + + +} +