Browse Source

Merge remote-tracking branch 'origin/feature/xxxd'

feature/dangjian
yinzuomei 3 years ago
parent
commit
7b8a3be037
  1. 8
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiItemController.java
  2. 1
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java
  3. 56
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/XxxdEventDTO.java
  4. 25
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdFeedBackQuestionTaskFormDTO.java
  5. 8
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/SubmitItemFormDTO.java
  6. 23
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/XxxdEventController.java
  7. 17
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/XxxdEventDao.java
  8. 54
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/XxxdEventEntity.java
  9. 9
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/XxxdEventService.java
  10. 120
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/XxxdEventServiceImpl.java
  11. 14
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java
  12. 4
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java
  13. 2
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java
  14. 203
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
  15. 25
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml
  16. 9
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/ItemFeignClient.java
  17. 11
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/ItemFeignClientFallback.java
  18. 18
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTask.java
  19. 42
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/events/XxxdFeedBackQuestionTaskImpl.java

8
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
*/

1
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 {
/**

56
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已删除
*/

25
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;
}

8
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;
}

23
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();
}
}

17
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<XxxdEventEntity> {
/**
* @param questionId
* @param startDateStr yyyy-MM-dd
* @param endDateStr yyyy-MM-dd
* @param pageIndex
* @param pageSize
* @return
*/
List<XxxdEventEntity> selectNoFeedBackData(@Param("questionId") String questionId,
@Param("startDateStr") String startDateStr,
@Param("endDateStr") String endDateStr,
@Param("pageIndex") int pageIndex,
@Param("pageSize") int pageSize);
}

54
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;
}

9
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<XxxdEventEntity> {
* @date 2023-05-22
*/
void delete(List<String> ids);
/**
* 新新向党_随手拍处理反馈定时任务,调用
*
* @param questionId
* @param startDateStr yyyy-MM-dd
* @param endDateStr yyyy-MM-dd
*/
void xxxdFeedBackQuestionTask(String questionId,String startDateStr, String endDateStr);
}

120
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<XxxdEventDao, XxxdEven
.eq(XxxdEventEntity::getDelFlag, NumConstant.ZERO_STR);
XxxdEventEntity origin=baseDao.selectOne(queryWrapper);
if (null == origin) {
// 0已接收;1已转北上速办事件;2已完结
entity.setInternalStatus(NumConstant.ZERO_STR);
entity.setSync(NumConstant.ZERO);
insert(entity);
} else {
entity.setId(origin.getId());
updateById(entity);
}
// 优化下这个方法
submitXxxdEventToItem(entity);
return entity.getId();
}
/**
* 新新向党随手拍事件组装数据插入民生诉求epdc_item表
* @param entity
*/
private void submitXxxdEventToItem(XxxdEventEntity entity) {
//同步到北上速办-民生诉求
SubmitItemFormDTO submitItemFormDTO=new SubmitItemFormDTO();
submitItemFormDTO.setNickName(entity.getName());
submitItemFormDTO.setMobile(entity.getContact());
submitItemFormDTO.setItemContent(entity.getDescription());
submitItemFormDTO.setIssueLatitude(Double.parseDouble(entity.getLatitude()));
submitItemFormDTO.setIssueLongitude(Double.parseDouble(entity.getLongitude()));
submitItemFormDTO.setIssueAddress(entity.getLocation());
submitItemFormDTO.setPeopleFlag(NumConstant.ZERO_STR);
//区分 0 网格员上报还是 1 居民上报;2:新新向党随手拍
submitItemFormDTO.setAppealSource(NumConstant.TWO_STR);
submitItemFormDTO.setShowFlag(NumConstant.ZERO_STR);
submitItemFormDTO.setDistributeTime(DateUtils.parse(entity.getPubTime(),"yyyy-MM-dd HH:mm:ss"));
submitItemFormDTO.setUserId(entity.getContact());
submitItemFormDTO.setIsPartyMember(NumConstant.ZERO_STR);
//图片,语音
if(StringUtils.isNotBlank(entity.getPics())){
List<String> picList = Arrays.asList(entity.getPics().split(StrConstant.SEMICOLON));
submitItemFormDTO.setImages(picList);
}
if(StringUtils.isNotBlank(entity.getAudios())){
// 随手拍语音为多段,epdc_item表语音只能上传一个,这里默认取第一个
List<String> 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<XxxdEventDao, XxxdEven
}
/**
* 新新向党_随手拍处理反馈定时任务,调用
*
* @param questionId
* @param startDateStr yyyy-MM-dd
* @param endDateStr yyyy-MM-dd
*/
@Override
public void xxxdFeedBackQuestionTask(String questionId, String startDateStr, String endDateStr) {
int pageNo=1;
int pageSize=200;
List<XxxdEventEntity> 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<XxxdEventEntity> list) {
if (CollectionUtils.isEmpty(list)) {
return;
}
for (XxxdEventEntity xxxdEventEntity : list) {
LambdaUpdateWrapper<XxxdEventEntity> updateWrapper=new LambdaUpdateWrapper<>();
updateWrapper.eq(XxxdEventEntity::getId,xxxdEventEntity.getId());
try {
// 查询北上速办诉求的处理进展
List<ItemHandleProgressResultDTO> 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);
}
}
}
}

14
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<List<DeptDTO>> getAllDept();
/**
* 根据坐标获取系统网格
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.GisGridDTO>
* @author zhy
* @date 2022/9/5 15:53
*/
@PostMapping("sys/appsys/dept/gis/getGridByCoordinate")
Result<GisGridDTO> getGridByCoordinate(GisFormDTO formDto);
}

4
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<GisGridDTO> getGridByCoordinate(GisFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getGridByCoordinate",formDTO);
}
}

2
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;

203
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<ItemDao, ItemEntity> implem
// private ItemProcessModifyProducer itemProcessModifyProducer;
@Resource
private ItemDeptDao itemDeptDao;
@Autowired
private XxxdEventDao xxxdEventDao;
@Override
public PageData<ItemDTO> page(Map<String, Object> params) {
@ -3441,6 +3450,108 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> 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<CompleteDeptDTO> 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<SysDeptDTO> 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<ItemDao, ItemEntity> 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<XxxdEventEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(XxxdEventEntity::getId, xxxdEventEntityId);
try {
// 查询网格信息
GisFormDTO gisFormDTO = new GisFormDTO();
gisFormDTO.setLongitude(longitude);
gisFormDTO.setLatitude(latitude);
Result<GisGridDTO> 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<ItemHandleProgressResultDTO> queryItemProcess(String itemId){
List<ItemHandleProgressResultDTO> dtoList = baseDao.selectListOfItemHandleProgressByWork(itemId);
return dtoList;
}
}

25
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml

@ -3,6 +3,29 @@
<mapper namespace="com.elink.esua.epdc.modules.events.dao.XxxdEventDao">
<!-- 查询未反馈,在北上速办这,已经关闭或者结案的数据,推送给新新向党 -->
<select id="selectNoFeedBackData" parameterType="map" resultType="com.elink.esua.epdc.modules.events.entity.XxxdEventEntity">
SELECT
xe.*
FROM
xxxd_event xe
LEFT JOIN epdc_item ei
WHERE
xe.DEL_FLAG = '0'
AND xe.INTERNAL_STATUS != '2'
AND xe.BSSB_EVENT_ID = ei.ID
and ei.ITEM_STATE !='0'
<if test="null != questionId and '' != questionId">
and xe.QUESTION_ID = #{questionId}
</if>
<if test="null != startDateStr and '' != startDateStr">
and DATE_FORMAT(xe.CREATED_TIME,'%Y-%m-%d') >= #{startDateStr}
</if>
<if test="null != endDateStr and '' != endDateStr">
AND DATE_FORMAT(xe.CREATED_TIME,'%Y-%m-%d') <![CDATA[ <= ]]> #{endDateStr}
</if>
order by xe.CREATED_TIME asc
LIMIT #{pageIndex}, #{pageSize}
</select>
</mapper>

9
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);
}

11
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);
}
}

18
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);
}

42
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);
}
}
Loading…
Cancel
Save