Browse Source

Merge remote-tracking branch 'origin/dev_grid_platform' into dev_grid_platform

# Conflicts:
#	epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/ExDeptDao.java
#	epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java
#	epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExDeptDao.xml
dev_shibei_match
sunyuchao 4 years ago
parent
commit
bae3ba9b2b
  1. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  2. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  3. 22
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/DisputeProcessMQMsg.java
  4. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/PageFormDTO.java
  5. 4
      epmet-gateway/pom.xml
  6. 4
      epmet-gateway/src/main/resources/bootstrap.yml
  7. 3
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java
  8. 7
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java
  9. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/MidPatrolRecordResult.java
  10. 6
      epmet-module/data-statistical/data-statistical-server/pom.xml
  11. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/OrgTypeConstant.java
  12. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java
  13. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java
  14. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
  15. 12
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java
  16. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java
  17. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerGridServiceImpl.java
  18. 30
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java
  19. 56
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
  20. 78
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml
  21. 43
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml
  22. 10
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java
  23. 31
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java
  24. 4
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
  25. 4
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseDisputeProcessDTO.java
  26. 81
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/ExDeptDTO.java
  27. 4
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/UpsertPatrolRecordForm.java
  28. 12
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/InitDataController.java
  29. 4
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseDisputeProcessEntity.java
  30. 42
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java
  31. 8
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/UserPatrolDetailEntity.java
  32. 9
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/UserPatrolRecordEntity.java
  33. 4
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java
  34. 7
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java
  35. 97
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java
  36. 3
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/UserPatrolDetailService.java
  37. 8
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/UserPatrolRecordService.java
  38. 30
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java
  39. 114
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java
  40. 13
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/UserPatrolDetailServiceImpl.java
  41. 98
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/UserPatrolRecordServiceImpl.java
  42. 11
      epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExDeptDao.xml

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -60,4 +60,9 @@ public interface ConsomerGroupConstants {
*/
String OPEN_DATA_PATROL_CHANGE_EVENT_LISTENER_GROUP = "open_data_patrol_change_event_listener_group";
/**
* 开放的对接数据(中间库) 项目变更事件监听器分组
*/
String OPEN_DATA_PROJECT_CHANGE_EVENT_LISTENER_GROUP = "open_data_project_change_event_listener_group";
}

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -43,4 +43,9 @@ public interface TopicConstants {
* 巡查记录
*/
String PATROL = "patrol";
/**
* 项目
*/
String PROJECT = "project";
}

22
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/DisputeProcessMQMsg.java

@ -0,0 +1,22 @@
package com.epmet.commons.rocketmq.messages;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/10/18 16:24
*/
@Data
@AllArgsConstructor
public class DisputeProcessMQMsg implements Serializable {
private String customerId;
private String projectId;
/**
* 操作类型新增:add 修改删除:edit
*/
private String type;
}

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/PageFormDTO.java

@ -30,11 +30,6 @@ public class PageFormDTO {
*/
private Integer offset;
/**
* 是否分页 默认分页
*/
private boolean isPage = true;
public Integer getOffset() {
return (pageNo-1)*pageSize;
}

4
epmet-gateway/pom.xml

@ -365,8 +365,8 @@
<!-- <gateway.routes.data-aggregator-server.url>http://127.0.0.1:8114</gateway.routes.data-aggregator-server.url>-->
<!-- 36、中间库服务 -->
<!-- <gateway.routes.open-data-worker-server.url>lb://open-data-worker-server</gateway.routes.open-data-worker-server.url>-->
<gateway.routes.open-data-worker-server.url>http://127.0.0.1:8117</gateway.routes.open-data-worker-server.url>
<gateway.routes.open-data-worker-server.url>lb://open-data-worker-server</gateway.routes.open-data-worker-server.url>
<!-- <gateway.routes.open-data-worker-server.url>http://127.0.0.1:8117</gateway.routes.open-data-worker-server.url>-->
<!--宣传服务-->
<gateway.routes.epmet-openapi-adv-server.url>lb://epmet-openapi-adv-server</gateway.routes.epmet-openapi-adv-server.url>

4
epmet-gateway/src/main/resources/bootstrap.yml

@ -1,4 +1,4 @@
server:
basedisputeprocessserver:
tomcat:
max-swallow-size: 100MB
port: @server.port@
@ -352,7 +352,7 @@ spring:
- CpAuth=true
#政府工作端议题管理
- id: open-data-worker-server
uri: @gateway.routes.gov-issue-server.uri@
uri: @gateway.routes.open-data-worker-server.url@
order: 38
predicates:
- Path=${server.servlet.context-path}/opendata/**

3
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.basereport.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import java.io.Serializable;
@ -10,7 +11,7 @@ import java.io.Serializable;
* @Date 2021/10/15 10:55
*/
@Data
public class EventInfoFormDTO implements Serializable {
public class EventInfoFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = 8479649048108914555L;
private String customerId;
private String projectId;

7
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java

@ -197,4 +197,11 @@ public class ScreenProjectDataDTO implements Serializable {
*/
private String tempGridName;
private String finishOrg;
private String finishOrgLevel;
private String orgIdPath;
private String finishOrgType;
}

5
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/MidPatrolRecordResult.java

@ -129,4 +129,9 @@ public class MidPatrolRecordResult implements Serializable {
*/
private String longitude;
/**
* 经纬度组合成的路线 经度,维度;
*/
private String route;
}

6
epmet-module/data-statistical/data-statistical-server/pom.xml

@ -122,6 +122,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-message-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/OrgTypeConstant.java

@ -46,4 +46,14 @@ public interface OrgTypeConstant {
*/
String COMMUNITY = "community";
/**
* 省级
*/
String PROVINCE = "province";
/**
* 市级
*/
String CITY = "city";
}

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -82,4 +82,12 @@ public interface ProjectConstant {
*/
String PROJECT_ORIGIN_AGENCY="agency";
String PROJECT_ORIGIN_EVENT="resi_event";
/**
* 自办
*/
String PROJECT_SELF_CLOSED="01";
/**
* 上报
*/
String PROJECT_REPORT="02";
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java

@ -66,4 +66,6 @@ public interface ScreenProjectDataDao extends BaseDao<ScreenProjectDataEntity> {
void deleteByProjectIds(@Param("customerId") String customerId, @Param("list") List<String> list);
int updateProjectSatisfactionScore(@Param("projectId")String projectId, @Param("score")BigDecimal score);
List<ScreenProjectDataDTO> selectProjectList(@Param("customerId") String customerId, @Param("projectId") String projectId);
}

15
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java

@ -2,6 +2,7 @@ package com.epmet.mq;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
@ -9,9 +10,11 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.constant.SystemMessageType;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.service.evaluationindex.extract.todata.FactOriginExtractService;
import com.epmet.service.evaluationindex.extract.toscreen.ScreenExtractService;
import com.epmet.service.evaluationindex.screen.ScreenProjectDataService;
import com.epmet.util.DimIdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -29,7 +32,6 @@ import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* @Description 项目变动-监听器
@ -45,6 +47,7 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
private RedisUtils redisUtils;
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -149,6 +152,16 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
SpringContextUtils.getBean(ScreenExtractService.class).extractPartData(customerId,dateId);
}
logger.info("consumer projectChanged msg success,{}",aBoolean);
//发送项目数据上报的mq消息
String type;
if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation())) {
type = SystemMessageType.PROJECT_ADD;
} else {
type = SystemMessageType.PROJECT_EDIT;
}
DisputeProcessMQMsg msg = new DisputeProcessMQMsg(customerId, msgObj.getProjectId(), type);
SpringContextUtils.getBean(ScreenProjectDataService.class).sendProjectChangeMq(msg);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】消费项目变动消息失败:",e);

12
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java

@ -18,6 +18,7 @@
package com.epmet.service.evaluationindex.screen;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.form.ScreenProjectDataInfoFormDTO;
@ -136,6 +137,15 @@ public interface ScreenProjectDataService extends BaseService<ScreenProjectDataE
* @Author zhaoqifeng
* @Date 2021/10/15 14:22
*/
List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId);
List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId, Integer pageNo, Integer pageSize);
/**
* 项目变更MQ
* @Param msg
* @Return
* @Author zhaoqifeng
* @Date 2021/10/18 15:55
*/
void sendProjectChangeMq(DisputeProcessMQMsg msg);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java

@ -325,7 +325,7 @@ public class ScreenCustomerAgencyServiceImpl extends BaseServiceImpl<ScreenCusto
@Override
public Map<String, ScreenCustomerAgencyEntity> getAgencyList(String customerId) {
LambdaQueryWrapper<ScreenCustomerAgencyEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(customerId), ScreenCustomerAgencyEntity::getAgencyId, customerId);
wrapper.eq(StringUtils.isNotBlank(customerId), ScreenCustomerAgencyEntity::getCustomerId, customerId);
List<ScreenCustomerAgencyEntity> list = baseDao.selectList(wrapper);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerGridServiceImpl.java

@ -244,7 +244,7 @@ public class ScreenCustomerGridServiceImpl extends BaseServiceImpl<ScreenCustome
@Override
public Map<String, ScreenCustomerGridDTO> getGridList(String customerId) {
LambdaQueryWrapper<ScreenCustomerGridEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(customerId), ScreenCustomerGridEntity::getGridId, customerId);
wrapper.eq(StringUtils.isNotBlank(customerId), ScreenCustomerGridEntity::getCustomerId, customerId);
List<ScreenCustomerGridEntity> list = baseDao.selectList(wrapper);
return ConvertUtils.sourceToTarget(list, ScreenCustomerGridDTO.class).stream().collect(Collectors.toMap(ScreenCustomerGridDTO::getGridId, Function.identity()));
}

30
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java

@ -17,11 +17,11 @@
package com.epmet.service.evaluationindex.screen.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
@ -34,7 +34,10 @@ import com.epmet.dto.screen.form.ScreenProjectDataInfoFormDTO;
import com.epmet.dto.screencoll.ScreenCollFormDTO;
import com.epmet.entity.evaluationindex.screen.ScreenProjectDataEntity;
import com.epmet.entity.evaluationindex.screen.ScreenProjectImgDataEntity;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.evaluationindex.screen.ScreenProjectDataService;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
@ -62,6 +65,8 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD
@Resource
private ScreenProjectImgDataDao screenProjectImgDataDao;
@Resource
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Override
public PageData<ScreenProjectDataDTO> page(Map<String, Object> params) {
@ -284,14 +289,21 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD
* @Date 2021/10/15 14:22
*/
@Override
public List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId) {
LambdaQueryWrapper<ScreenProjectDataEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(customerId), ScreenProjectDataEntity::getCustomerId, customerId);
wrapper.eq(StringUtils.isNotBlank(projectId), ScreenProjectDataEntity::getProjectId, projectId);
wrapper.ne(ScreenProjectDataEntity::getCategoryCode, null);
wrapper.ne(ScreenProjectDataEntity::getCategoryCode, "");
List<ScreenProjectDataEntity> list = baseDao.selectList(wrapper);
return ConvertUtils.sourceToTarget(list, ScreenProjectDataDTO.class);
public List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId, Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo, pageSize);
return baseDao.selectProjectList(customerId, projectId);
}
/**
* @Description 项目变更MQ
* @Param msg
* @Return
* @Author zhaoqifeng
* @Date 2021/10/18 14:00
*/
@Override
public void sendProjectChangeMq(DisputeProcessMQMsg msg) {
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectMqMsg(msg);
}
}

56
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java

@ -148,7 +148,7 @@ public class DataReportingServiceImpl implements DataReportingService {
public List<BaseDisputeProcessDTO> getEventInfo(EventInfoFormDTO formDTO) {
List<BaseDisputeProcessDTO> list;
//根据入参,获取项目
List<ScreenProjectDataDTO> projectList = screenProjectDataService.getProjectList(formDTO.getCustomerId(), formDTO.getProjectId());
List<ScreenProjectDataDTO> projectList = screenProjectDataService.getProjectList(formDTO.getCustomerId(), formDTO.getProjectId(), formDTO.getPageNo(), formDTO.getPageSize());
//项目列表为空,返回空数组
if(CollectionUtils.isEmpty(projectList)) {
return Collections.emptyList();
@ -206,21 +206,65 @@ public class DataReportingServiceImpl implements DataReportingService {
categoryCode = null;
}
}
dto.setEventCategory(categoryCode);
dto.setReportTime(project.getProjectCreateTime());
dto.setHappenDate(DateUtils.parseDate(DateUtils.format(project.getProjectCreateTime()), DateUtils.DATE_PATTERN));
dto.setEventDescription(project.getProjectContent());
//TODO 办结方式
dto.setWaysOfResolving("01");
dto.setSuccessfulOrNo(ProjectConstant.CLOSED_CASE.equals(project.getProjectStatusCode())?"Y":"N");
//TODO 办结层级
dto.setCompleteLevel("01");
if (ProjectConstant.CLOSED_CASE.equals(project.getProjectStatusCode())) {
dto.setWaysOfResolving(project.getOrgId().equals(project.getFinishOrg())?ProjectConstant.PROJECT_SELF_CLOSED:ProjectConstant.PROJECT_REPORT);
//办结组织是机关时,办结层级为机关的层级
if (OrgTypeConstant.AGENCY.equals(project.getFinishOrgType())) {
//如果是孔村的项目办结层级需要降一级
if("2fe0065f70ca0e23ce4c26fca5f1d933".equals(project.getCustomerId())) {
switch (project.getFinishOrgLevel()) {
case OrgTypeConstant.DISTRICT:
dto.setCompleteLevel("04");
break;
case OrgTypeConstant.STREET:
case OrgTypeConstant.COMMUNITY:
dto.setCompleteLevel("06");
break;
default:
break;
}
} else {
dto.setCompleteLevel(getCompleteLevel(project.getFinishOrgLevel()));
}
} else if (OrgTypeConstant.DEPARTMENT.equals(project.getFinishOrgType())) {
//办结组织是部门时,办结层级为部门所在组织的曾经
String[] orgIds = project.getOrgIdPath().split(StrConstant.COLON);
int size = orgIds.length;
ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(orgIds[size - 1]);
dto.setCompleteLevel(getCompleteLevel(agency.getLevel()));
} else {
//办结组织是网格时,办结层级为网格
dto.setCompleteLevel("07");
}
}
dto.setCompleteTime(project.getCloseCaseTime());
dto.setLat(project.getLatitude());
dto.setLng(project.getLongitude());
return dto;
}
private String getCompleteLevel(String level) {
switch (level) {
case OrgTypeConstant.PROVINCE:
return "01";
case OrgTypeConstant.CITY:
return "02";
case OrgTypeConstant.DISTRICT:
return "03";
case OrgTypeConstant.STREET:
return "04";
case OrgTypeConstant.COMMUNITY:
return "06";
default:
return null;
}
}
@Override
public List<MidPatrolRecordResult> getPatrolRecordList(MidPatrolFormDTO formDTO) {

78
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml

@ -191,4 +191,82 @@
update screen_project_data set SATISFACTION_SCORE=#{score}
where PROJECT_ID=#{projectId}
</update>
<select id="selectProjectList" resultType="com.epmet.dto.screen.ScreenProjectDataDTO">
SELECT
a.ID,
a.CUSTOMER_ID,
a.ORG_TYPE,
a.ORG_ID,
a.PARENT_ID,
a.ORG_NAME,
a.PROJECT_ID,
a.PROJECT_TITLE,
a.PROJECT_CREATE_TIME,
a.LINK_USER_ID,
a.LINK_NAME,
a.LINK_MOBILE,
a.PROJECT_CONTENT,
a.PROJECT_LEVEL,
a.PROJECT_ADDRESS,
a.ALL_CATEGORY_NAME,
a.LONGITUDE,
a.LATITUDE,
a.SATISFACTION_SCORE,
a.PROJECT_STATUS_CODE,
a.CLOSE_CASE_TIME,
a.DATA_END_TIME,
a.ALL_PARENT_IDS,
a.ORIGIN,
a.CATEGORY_CODE,
b.HANDLER_ID AS finishOrg,
b.HANDLER_TYPE AS finishOrgType,
b.ORG_ID_PATH AS orgIdPath,
c.`LEVEL` AS finishOrgLevel
FROM
screen_project_data a
LEFT JOIN (
SELECT
spp.CUSTOMER_ID,
PROJECT_ID,
HANDLER_ID,
HANDLER_TYPE,
ORG_ID_PATH
FROM
screen_project_process spp
WHERE
( spp.CUSTOMER_ID = '2fe0065f70ca0e23ce4c26fca5f1d933' OR spp.CUSTOMER_ID = '44876154d10d7cb7affd92000f84f833' OR spp.CUSTOMER_ID = '46c55cb862d6d5e6d05d2ab61a1cc07e' )
AND OPERATION = 'closed_case' UNION ALL
SELECT
spp.CUSTOMER_ID,
PROJECT_ID,
HANDLER_ID,
HANDLER_TYPE,
ORG_ID_PATH
FROM
screen_project_process spp
WHERE
( spp.CUSTOMER_ID != '2fe0065f70ca0e23ce4c26fca5f1d933' AND spp.CUSTOMER_ID != '44876154d10d7cb7affd92000f84f833' AND spp.CUSTOMER_ID != '46c55cb862d6d5e6d05d2ab61a1cc07e' )
AND OPERATION = 'close'
) b ON a.PROJECT_ID = b.PROJECT_ID
<if test='null != customerId and "" != customerId'>
AND b.CUSTOMER_ID = #{customerId}
</if>
<if test='null != projectId and "" != projectId'>
AND b.PROJECT_ID = #{projectId}
</if>
LEFT JOIN screen_customer_agency c ON b.HANDLER_ID = c.AGENCY_ID
WHERE a.DEL_FLAG = '0'
AND a.CATEGORY_CODE IS NOT NULL
AND a.CATEGORY_CODE != ''
<if test='null != customerId and "" != customerId'>
AND a.CUSTOMER_ID = #{customerId}
</if>
<if test='null != projectId and "" != projectId'>
AND a.PROJECT_ID = #{projectId}
</if>
ORDER BY
a.CREATED_TIME ASC
</select>
</mapper>

43
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

@ -1006,20 +1006,37 @@
</select>
<select id="getPatrolRecordList" resultType="com.epmet.dto.user.result.MidPatrolRecordResult">
SELECT
id, customer_id, grid, grid_pids, staff_id, agency_id, patrol_start_time, patrol_end_time,
actrual_end_time, total_time, status, del_flag, revision, created_by, created_time, updated_by, updated_time
FROM staff_patrol_record
m.id,
m.customer_id,
m.grid,
m.grid_pids,
m.staff_id,
m.agency_id,
m.patrol_start_time,
m.patrol_end_time,
m.actrual_end_time,
m.total_time,
m.STATUS,
m.del_flag,
m.revision,
m.created_by,
m.created_time,
m.updated_by,
m.updated_time,
GROUP_CONCAT(d.LATITUDE,',',d.LONGITUDE ORDER BY d.CREATED_TIME ASC SEPARATOR ';') AS route
FROM
staff_patrol_record m
LEFT JOIN staff_patrol_detail d ON m.ID = d.STAFF_PATROL_REC_ID
WHERE
1=1
1 =1
<if test="patrolId != null and patrolId != ''">
AND ID = #{patrolId}
</if>
and CUSTOMER_ID = #{customerId}
AND DEL_FLAG = '0'
order by created_time
<if test="isPage != null and isPage">
LIMIT #{offset},#{pageSize}
AND m.ID = #{patrolId}
</if>
and m.CUSTOMER_ID = #{customerId}
AND m.DEL_FLAG = '0'
GROUP BY m.ID
order by m.created_time
LIMIT #{offset},#{pageSize}
</select>
<select id="getPatrolDetailList" resultType="com.epmet.dto.user.result.MidPatrolDetailResult">
select
@ -1033,9 +1050,7 @@
and CUSTOMER_ID = #{customerId}
AND DEL_FLAG = '0'
order by created_time
<if test="isPage != null and isPage">
LIMIT #{offset},#{pageSize}
</if>
LIMIT #{offset},#{pageSize}
</select>
</mapper>

10
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java

@ -75,4 +75,14 @@ public interface SystemMessageType {
*/
String USER_PATROL_STOP = "user_patrol_stop";
/**
* 项目变动
*/
String PROJECT_ADD = "project_add";
/**
* 项目变动
*/
String PROJECT_EDIT = "project_edit";
}

31
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java

@ -182,4 +182,35 @@ public class SendMqMsgUtil {
}
/**
* desc: 发送项目变动事件消息
*
* @param msgContent
* @return boolean
* @author LiuJanJun
* @date 2021/4/23 3:01 下午
* @remark 失败重试1次,调用端自行判断如果失败是否要继续执行
*/
public boolean sendProjectMqMsg(DisputeProcessMQMsg msgContent) {
try {
SystemMsgFormDTO systemMsgFormDTO = new SystemMsgFormDTO();
systemMsgFormDTO.setMessageType(msgContent.getType());
systemMsgFormDTO.setContent(msgContent);
Result sendMsgResult;
log.info("sendProjectMqMsg param:{}",msgContent);
int retryTime = 0;
do {
sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO);
} while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO);
if (sendMsgResult != null && sendMsgResult.success()) {
return true;
}
log.error("发送(项目变动)系统消息到message服务失败:{},msg:{}", JSON.toJSONString(sendMsgResult), JSON.toJSONString(systemMsgFormDTO));
} catch (Exception e) {
log.error("sendMqMsg exception", e);
}
return false;
}
}

4
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java

@ -183,6 +183,10 @@ public class SystemMessageServiceImpl implements SystemMessageService {
case SystemMessageType.USER_PATROL_STOP:
topic = TopicConstants.PATROL;
break;
case SystemMessageType.PROJECT_ADD:
case SystemMessageType.PROJECT_EDIT:
topic = TopicConstants.PROJECT;
break;
}
return topic;
}

4
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseDisputeProcessDTO.java

@ -44,6 +44,10 @@ public class BaseDisputeProcessDTO implements Serializable {
*/
private String customerId;
private Integer detpId;
private String reporterId;
/**
* 网格编码
*/

81
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/ExDeptDTO.java

@ -0,0 +1,81 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.opendata.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 部门网格中间表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-19
*/
@Data
public class ExDeptDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 市平台部门id
*/
private Integer deptId;
/**
* 市平台父部门id
*/
private Integer parentId;
/**
* 祖级列表
*/
private String ancestors;
/**
* 市平台部门/网格名称
*/
private String fullName;
/**
* 市平台部门/网格简称
*/
private String deptName;
/**
* 市平台部门/网格编码
*/
private String deptCode;
/**
*
*/
private String gridCode;
/**
* 区县平台部门id
*/
private String deptIdQx;
/**
* 区县平台部门/网格名称
*/
private String deptNameQx;
}

4
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/UpsertPatrolRecordForm.java

@ -1,5 +1,6 @@
package com.epmet.opendata.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
@ -9,7 +10,7 @@ import javax.validation.constraints.NotEmpty;
* @author liujianjun
*/
@Data
public class UpsertPatrolRecordForm {
public class UpsertPatrolRecordForm extends PageFormDTO {
/**
* 客户Id
*/
@ -19,7 +20,6 @@ public class UpsertPatrolRecordForm {
/**
* 巡查记录id
*/
@NotEmpty(message = "patrolId不能为空")
private String patrolId;
/**

12
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/InitDataController.java

@ -18,10 +18,14 @@
package com.epmet.opendata.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.SystemMessageType;
import com.epmet.opendata.dto.form.UpsertPatrolRecordForm;
import com.epmet.opendata.service.UserPatrolRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
@ -42,9 +46,7 @@ public class InitDataController {
* @Description 网格员信息中间库同步
**/
@PostMapping("patrol/{customerId}")
public Result<Boolean> getStaffBaseInfo(@PathVariable String customerId) {
UpsertPatrolRecordForm formDTO = new UpsertPatrolRecordForm();
formDTO.setCustomerId(customerId);
return new Result().ok(userPatrolRecordService.insertPatrolRecord(formDTO));
public Result<Boolean> reloadPatrolData(@PathVariable String customerId) {
return new Result().ok(userPatrolRecordService.reloadPatrolData(customerId));
}
}

4
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseDisputeProcessEntity.java

@ -44,6 +44,10 @@ public class BaseDisputeProcessEntity extends BaseEpmetEntity {
*/
private String customerId;
private Integer detpId;
private String reporterId;
/**
* 网格编码
*/

42
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java

@ -26,7 +26,7 @@ import lombok.EqualsAndHashCode;
* 部门网格中间表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-15
* @since v1.0.0 2021-10-19
*/
@Data
@EqualsAndHashCode(callSuper=false)
@ -36,18 +36,48 @@ public class ExDeptEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 区县平台部门id
* 平台部门id
*/
private String deptIdQx;
private Integer deptId;
/**
* 区县平台部门/网格名称
* 市平台父部门id
*/
private String deptNameQx;
private Integer parentId;
/**
* 祖级列表
*/
private String ancestors;
/**
* 市平台部门/网格名称
*/
private String fullName;
/**
* 市平台部门/网格简称
*/
private String deptName;
/**
* 部门/网格编码
* 市平台部门/网格编码
*/
private String deptCode;
/**
*
*/
private String gridCode;
/**
* 区县平台部门id
*/
private String deptIdQx;
/**
* 区县平台部门/网格名称
*/
private String deptNameQx;
}

8
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/UserPatrolDetailEntity.java

@ -17,6 +17,8 @@
package com.epmet.opendata.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
@ -50,4 +52,10 @@ public class UserPatrolDetailEntity extends BaseEpmetEntity {
*/
private String route;
/**
* 是否已删除(0-未删除1-已删除)
*/
@TableField(fill = FieldFill.INSERT)
private String delFlag;
}

9
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/UserPatrolRecordEntity.java

@ -17,8 +17,9 @@
package com.epmet.opendata.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -103,4 +104,10 @@ public class UserPatrolRecordEntity extends BaseEpmetEntity {
*/
private String status;
/**
* 是否已删除(0-未删除1-已删除)
*/
@TableField(fill = FieldFill.INSERT)
private String delFlag;
}

4
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java

@ -43,9 +43,9 @@ public class RocketMQConsumerRegister extends MQAbstractRegister {
"*",
new OpenDataPatrolChangeEventListener());
register(consumerProperties,
ConsomerGroupConstants.PROJECT_CHANGED_COMPONENTS_GROUP,
ConsomerGroupConstants.OPEN_DATA_PROJECT_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.PROJECT_CHANGED,
TopicConstants.PROJECT,
"*",
new OpenDataProjectChangeEventListener());

7
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java

@ -2,11 +2,13 @@ package com.epmet.opendata.mq.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dto.basereport.form.EventInfoFormDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
@ -63,7 +65,8 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur
//messageExt.propert
logger.info("【开放数据事件监听器】-项目信息变更-收到消息内容:{}, 操作:{}, pendingMsgLabel:{}", msg, tags, pendingMsgLabel);
EventInfoFormDTO obj = JSON.parseObject(msg, EventInfoFormDTO.class);
DisputeProcessMQMsg obj = JSON.parseObject(msg, DisputeProcessMQMsg.class);
EventInfoFormDTO formDTO = ConvertUtils.sourceToTarget(obj, EventInfoFormDTO.class);
DistributedLock distributedLock = null;
RLock lock = null;
@ -71,7 +74,7 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_project:%s", obj.getProjectId()),
30L, 30L, TimeUnit.SECONDS);
SpringContextUtils.getBean(BaseDisputeProcessService.class).getEventinfo(obj);
SpringContextUtils.getBean(BaseDisputeProcessService.class).getEventinfo(formDTO);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【开放数据事件监听器】-项目信息变更-上报项目信息失败:".concat(ExceptionUtils.getErrorStackTrace(e)));

97
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java

@ -0,0 +1,97 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.opendata.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.opendata.dto.ExDeptDTO;
import com.epmet.opendata.entity.ExDeptEntity;
import java.util.List;
import java.util.Map;
/**
* 部门网格中间表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-19
*/
public interface ExDeptService extends BaseService<ExDeptEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<ExDeptDTO>
* @author generator
* @date 2021-10-19
*/
PageData<ExDeptDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<ExDeptDTO>
* @author generator
* @date 2021-10-19
*/
List<ExDeptDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return ExDeptDTO
* @author generator
* @date 2021-10-19
*/
ExDeptDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2021-10-19
*/
void save(ExDeptDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2021-10-19
*/
void update(ExDeptDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2021-10-19
*/
void delete(String[] ids);
Map<String, Integer> getDeptMap();
}

3
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/UserPatrolDetailService.java

@ -29,4 +29,7 @@ import com.epmet.opendata.entity.UserPatrolDetailEntity;
public interface UserPatrolDetailService extends BaseService<UserPatrolDetailEntity> {
int deleteByPatrolId(String patrolId);
int deleteByCustomerId(String customerId);
}

8
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/UserPatrolRecordService.java

@ -42,4 +42,12 @@ public interface UserPatrolRecordService extends BaseService<UserPatrolRecordEnt
* @return
*/
Boolean updatePatrolRecord(UpsertPatrolRecordForm patrolRecordForm);
/**
* desc重新加载数据
* @param customerId
* @return
*/
Boolean reloadPatrolData(String customerId);
}

30
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java

@ -18,20 +18,24 @@
package com.epmet.opendata.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.SystemMessageType;
import com.epmet.dto.basereport.form.EventInfoFormDTO;
import com.epmet.feign.DataStatisticalOpenFeignClient;
import com.epmet.opendata.dao.BaseDisputeProcessDao;
import com.epmet.opendata.dto.BaseDisputeProcessDTO;
import com.epmet.opendata.entity.BaseDisputeProcessEntity;
import com.epmet.opendata.service.BaseDisputeProcessService;
import com.epmet.opendata.service.ExDeptService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* 事件信息表
@ -43,6 +47,8 @@ import java.util.List;
public class BaseDisputeProcessServiceImpl extends BaseServiceImpl<BaseDisputeProcessDao, BaseDisputeProcessEntity> implements BaseDisputeProcessService {
@Resource
private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient;
@Resource
private ExDeptService exDeptService;
/**
* 获取上报事件
@ -59,15 +65,37 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl<BaseDisputePr
if (!result.success()) {
throw new RenException(result.getInternalMsg());
}
Map<String, Integer> deptMap = exDeptService.getDeptMap();
List<BaseDisputeProcessDTO> list = result.getData();
if (CollectionUtils.isNotEmpty(list)) {
List<BaseDisputeProcessEntity> entityList = ConvertUtils.sourceToTarget(list, BaseDisputeProcessEntity.class);
if("add".equals(formDTO.getType())){
entityList.forEach(item -> {
item.setDetpId(deptMap.get(item.getOrgCode()));
});
if(SystemMessageType.PROJECT_ADD.equals(formDTO.getType())){
insertBatch(entityList);
}else {
updateBatchById(entityList);
}
}
//分批次循环
while (CollectionUtils.isNotEmpty(list)) {
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
result = dataStatisticalOpenFeignClient.getEventInfo(formDTO);
list = result.getData();
if (CollectionUtils.isNotEmpty(list)) {
List<BaseDisputeProcessEntity> entityList = ConvertUtils.sourceToTarget(list, BaseDisputeProcessEntity.class);
entityList.forEach(item -> {
item.setDetpId(deptMap.get(item.getOrgCode()));
});
if("add".equals(formDTO.getType())){
insertBatch(entityList);
}else {
updateBatchById(entityList);
}
}
}
}

114
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java

@ -0,0 +1,114 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.opendata.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.opendata.dao.ExDeptDao;
import com.epmet.opendata.dto.ExDeptDTO;
import com.epmet.opendata.entity.ExDeptEntity;
import com.epmet.opendata.service.ExDeptService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 部门网格中间表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-19
*/
@Service
public class ExDeptServiceImpl extends BaseServiceImpl<ExDeptDao, ExDeptEntity> implements ExDeptService {
@Override
public PageData<ExDeptDTO> page(Map<String, Object> params) {
IPage<ExDeptEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, ExDeptDTO.class);
}
@Override
public List<ExDeptDTO> list(Map<String, Object> params) {
List<ExDeptEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, ExDeptDTO.class);
}
private QueryWrapper<ExDeptEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<ExDeptEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public ExDeptDTO get(String id) {
ExDeptEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, ExDeptDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(ExDeptDTO dto) {
ExDeptEntity entity = ConvertUtils.sourceToTarget(dto, ExDeptEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ExDeptDTO dto) {
ExDeptEntity entity = ConvertUtils.sourceToTarget(dto, ExDeptEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public Map<String, Integer> getDeptMap() {
LambdaQueryWrapper<ExDeptEntity> wrapper = new LambdaQueryWrapper<>();
List<ExDeptEntity> entityList = baseDao.selectList(wrapper);
if (CollectionUtils.isEmpty(entityList)) {
return Collections.emptyMap();
}
return entityList.stream().collect(Collectors.toMap(ExDeptEntity::getGridCode, ExDeptEntity::getDeptId, (key1, key2) -> key2));
}
}

13
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/UserPatrolDetailServiceImpl.java

@ -17,6 +17,7 @@
package com.epmet.opendata.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.opendata.dao.UserPatrolDetailDao;
import com.epmet.opendata.entity.UserPatrolDetailEntity;
@ -33,5 +34,17 @@ import org.springframework.stereotype.Service;
public class UserPatrolDetailServiceImpl extends BaseServiceImpl<UserPatrolDetailDao, UserPatrolDetailEntity> implements UserPatrolDetailService {
@Override
public int deleteByPatrolId(String patrolId) {
LambdaQueryWrapper<UserPatrolDetailEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserPatrolDetailEntity::getStaffPatrolRecId, patrolId);
return baseDao.delete(wrapper);
}
@Override
public int deleteByCustomerId(String customerId) {
LambdaQueryWrapper<UserPatrolDetailEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserPatrolDetailEntity::getCustomerId, customerId);
return baseDao.delete(wrapper);
}
}

98
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/UserPatrolRecordServiceImpl.java

@ -21,18 +21,16 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.user.param.MidPatrolFormDTO;
import com.epmet.dto.user.result.MidPatrolDetailResult;
import com.epmet.dto.user.result.MidPatrolRecordResult;
import com.epmet.feign.DataStatisticalOpenFeignClient;
import com.epmet.opendata.dao.UserPatrolDetailDao;
import com.epmet.opendata.dao.UserPatrolRecordDao;
import com.epmet.opendata.dto.form.UpsertPatrolRecordForm;
import com.epmet.opendata.entity.UserPatrolDetailEntity;
import com.epmet.opendata.entity.UserPatrolRecordEntity;
import com.epmet.opendata.service.UserPatrolDetailService;
import com.epmet.opendata.service.UserPatrolRecordService;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
@ -57,13 +55,12 @@ public class UserPatrolRecordServiceImpl extends BaseServiceImpl<UserPatrolRecor
@Autowired
private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient;
@Autowired
private UserPatrolDetailDao userPatrolDetailDao;
private UserPatrolDetailService userPatrolDetailService;
@Override
public Boolean insertPatrolRecord(UpsertPatrolRecordForm patrolRecordForm) {
log.info("upsertPatrolRecord param:{}", JSON.toJSONString(patrolRecordForm));
ValidatorUtils.validateEntity(patrolRecordForm);
boolean delFlag = false;
MidPatrolFormDTO midPatrolFormDTO = buildParam(patrolRecordForm);
Result<List<MidPatrolRecordResult>> record = dataStatisticalOpenFeignClient.getPatrolRecordList(midPatrolFormDTO);
if (record == null || !record.success()) {
@ -73,7 +70,6 @@ public class UserPatrolRecordServiceImpl extends BaseServiceImpl<UserPatrolRecor
List<MidPatrolRecordResult> data = record.getData();
if (CollectionUtils.isEmpty(data)) {
//数据已被删除了
delFlag = true;
//暂时设置error 用于排错
log.error("获取巡查记录返回为空,param:{}", JSON.toJSONString(midPatrolFormDTO));
int effectRow = baseDao.deleteById(patrolRecordForm.getPatrolId());
@ -117,37 +113,81 @@ public class UserPatrolRecordServiceImpl extends BaseServiceImpl<UserPatrolRecor
if (effectRow == NumConstant.ZERO) {
baseDao.insert(recordEntity);
}
midPatrolFormDTO.setPage(false);
//todo 过滤掉巡查结束时间之后的轨迹
Result<List<MidPatrolDetailResult>> detailResult = dataStatisticalOpenFeignClient.getPatrolDetailList(midPatrolFormDTO);
if (detailResult == null || !detailResult.success()) {
log.error("获取巡查记录明细失败,param:{}", JSON.toJSONString(midPatrolFormDTO));
return;
}
UserPatrolDetailEntity detailEntity = buildDetailEntity(o, detailResult);
UserPatrolDetailEntity detailEntity = buildDetailEntity(o);
//先删除再新增
LambdaQueryWrapper<UserPatrolDetailEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserPatrolDetailEntity::getStaffPatrolRecId, recordEntity.getId());
userPatrolDetailDao.delete(wrapper);
int insert = userPatrolDetailDao.insert(detailEntity);
userPatrolDetailService.deleteByPatrolId(recordEntity.getId());
boolean insert = userPatrolDetailService.insert(detailEntity);
});
return true;
}
@Override
public Boolean reloadPatrolData(String customerId) {
int pageNo = 1;
int pageSize = 1000;
List<MidPatrolRecordResult> resultList = null;
do {
MidPatrolFormDTO param = new MidPatrolFormDTO();
param.setCustomerId(customerId);
param.setPageNo(pageNo++);
param.setPageSize(pageSize);
Result<List<MidPatrolRecordResult>> record = dataStatisticalOpenFeignClient.getPatrolRecordList(param);
if (record == null || !record.success()) {
log.error("获取巡查记录失败,param:{}", JSON.toJSONString(param));
return false;
}
resultList = record.getData();
if (CollectionUtils.isEmpty(resultList)){
log.warn("不存在巡查记录,param:{}", JSON.toJSONString(param));
return false;
}
insertRecordBatch(resultList,true);
}while (!CollectionUtils.isEmpty(resultList) && resultList.size()> pageSize );
return null;
}
private Boolean insertRecordBatch(List<MidPatrolRecordResult> list,boolean isReload){
List<UserPatrolRecordEntity> insertList = new ArrayList<>();
list.forEach(o-> insertList.add(buildEntity(o)));
//insert
if (CollectionUtils.isEmpty(insertList)){
log.error("构建要插入的数据为空,param:{}", JSON.toJSONString(list));
return false;
}
if (isReload){
int i = userPatrolDetailService.deleteByCustomerId(list.get(0).getCustomerId());
log.info("insertRecordBatch del patrol effectRow:{}",i);
}
LambdaQueryWrapper<UserPatrolRecordEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserPatrolRecordEntity::getCustomerId, list.get(0).getCustomerId());
int delete = baseDao.delete(wrapper);
log.info("insertRecordBatch del patrol effectRow:{}",delete);
this.insertBatch(insertList, NumConstant.ONE_HUNDRED);
List<UserPatrolDetailEntity> insertDetailList = new ArrayList<>();
list.forEach(o-> {
insertDetailList.add(buildDetailEntity(o));
if (!isReload){
//先删除再新增
userPatrolDetailService.deleteByPatrolId(o.getId());
}
});
if (CollectionUtils.isEmpty(insertList)){
log.warn("构建要插入的数据为空,param:{}", JSON.toJSONString(list));
}
userPatrolDetailService.insertBatch(insertDetailList, NumConstant.ONE_HUNDRED);
return true;
}
@NotNull
private UserPatrolDetailEntity buildDetailEntity(MidPatrolRecordResult recordResult, Result<List<MidPatrolDetailResult>> detailResult) {
private UserPatrolDetailEntity buildDetailEntity(MidPatrolRecordResult recordResult) {
UserPatrolDetailEntity detailEntity = new UserPatrolDetailEntity();
detailEntity.setCustomerId(recordResult.getCustomerId());
detailEntity.setStaffPatrolRecId(recordResult.getId());
StringBuilder sb = new StringBuilder();
detailResult.getData().forEach(o -> {
sb.append(o.getLongitude())
.append(StrConstant.COMMA)
.append(o.getLatitude())
.append(StrConstant.SEMICOLON);
});
detailEntity.setRoute(sb.toString());
detailEntity.setRoute(recordResult.getRoute());
detailEntity.setId(recordResult.getId());
detailEntity.setRevision(recordResult.getRevision());
detailEntity.setCreatedBy(recordResult.getCreatedBy());
@ -188,8 +228,8 @@ public class UserPatrolRecordServiceImpl extends BaseServiceImpl<UserPatrolRecor
MidPatrolFormDTO midPatrolFormDTO = new MidPatrolFormDTO();
midPatrolFormDTO.setCustomerId(patrolRecordForm.getCustomerId());
midPatrolFormDTO.setPatrolId(patrolRecordForm.getPatrolId());
midPatrolFormDTO.setPageNo(1);
midPatrolFormDTO.setPageSize(1);
midPatrolFormDTO.setPageNo(patrolRecordForm.getPageNo());
midPatrolFormDTO.setPageSize(patrolRecordForm.getPageSize());
return midPatrolFormDTO;
}
}

11
epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExDeptDao.xml

@ -3,6 +3,17 @@
<mapper namespace="com.epmet.opendata.dao.ExDeptDao">
<resultMap type="com.epmet.opendata.entity.ExDeptEntity" id="exDeptMap">
<result property="deptId" column="dept_id"/>
<result property="parentId" column="parent_id"/>
<result property="ancestors" column="ancestors"/>
<result property="fullName" column="full_name"/>
<result property="deptName" column="dept_name"/>
<result property="deptCode" column="dept_code"/>
<result property="gridCode" column="grid_code"/>
<result property="deptIdQx" column="dept_id_qx"/>
<result property="deptNameQx" column="dept_name_qx"/>
</resultMap>
<update id="updateBatch">
UPDATE ex_dept
<trim prefix="set" suffixOverrides=",">

Loading…
Cancel
Save