Browse Source

Merge branch 'dev_ic_data' of http://git.elinkit.com.cn:7070/r/epmet-cloud into develop

dev_shibei_match
wangxianzhang 4 years ago
parent
commit
068fbe7f62
  1. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartVolunteerService.java
  2. 12
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartVolunteerServiceImpl.java
  3. 59
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java
  4. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/VolunteerDistributionResultDTO.java
  5. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartVolunteerService.java

@ -11,5 +11,5 @@ import java.util.List;
*@Date 2021/12/8 *@Date 2021/12/8
*/ */
public interface HeartVolunteerService { public interface HeartVolunteerService {
List<VolunteerInfoEntity> listVolunteersPage(String customerId, Date endCreateTime, Integer pageNum, Integer pageSize); List<VolunteerInfoEntity> listVolunteers(String customerId, Date endCreateTime);
} }

12
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartVolunteerServiceImpl.java

@ -29,12 +29,10 @@ public class HeartVolunteerServiceImpl implements HeartVolunteerService {
private VolunteerInfoDao volunteerInfoDao; private VolunteerInfoDao volunteerInfoDao;
@Override @Override
public List<VolunteerInfoEntity> listVolunteersPage(String customerId, Date endCreateTime, Integer pageNum, Integer pageSize) { public List<VolunteerInfoEntity> listVolunteers(String customerId, Date endCreateTime) {
return PageHelper.startPage(pageNum, pageSize).doSelectPage(() -> { LambdaQueryWrapper<VolunteerInfoEntity> query = new LambdaQueryWrapper<>();
LambdaQueryWrapper<VolunteerInfoEntity> query = new LambdaQueryWrapper<>(); query.eq(VolunteerInfoEntity::getCustomerId, customerId);
query.eq(VolunteerInfoEntity::getCustomerId, customerId); query.lt(VolunteerInfoEntity::getCreatedTime, endCreateTime);
query.lt(VolunteerInfoEntity::getCreatedTime, endCreateTime); return volunteerInfoDao.selectList(query);
volunteerInfoDao.selectList(query);
});
} }
} }

59
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java

@ -67,11 +67,12 @@ public class DemandServiceImpl implements DemandService {
/** /**
* 清理旧数据 * 清理旧数据
* @param yestoday * @param targetDate 要清理哪天的数据
* @param customerIds 要清理哪些客户的
*/ */
private void clearOldDatas(List<String> customerIds, Date yestoday) { private void clearOldDatas(List<String> customerIds, Date targetDate) {
String dateDimId = DimIdGenerator.getDateDimId(yestoday); String dateDimId = DimIdGenerator.getDateDimId(targetDate);
demandStatsService.clearVolunteerDemandServiceDailyStats(customerIds, dateDimId); demandStatsService.clearVolunteerDemandServiceDailyStats(customerIds, dateDimId);
@ -90,50 +91,40 @@ public class DemandServiceImpl implements DemandService {
// 居民志愿者数量 // 居民志愿者数量
Integer resiVolunteerCount = 0; Integer resiVolunteerCount = 0;
// 党员志愿者用户id列表
List<String> partymemberVolunteerUserIds = new ArrayList<>(16); List<String> partymemberVolunteerUserIds = new ArrayList<>(16);
int pageNum = 1; List<VolunteerInfoEntity> volunteers = heartVolunteerService.listVolunteers(customerId, endTime);
int volunteerPageSize = 5;
while (true) { volunteerTotalCount = volunteers.size();
int shardingStartIndex = 0;
int shardingSize = 2;
List<VolunteerInfoEntity> volunteersPage = heartVolunteerService.listVolunteersPage(customerId, endTime, pageNum, volunteerPageSize); // 分片开始下标
int shardingStartIndex = 0;
// 分片大小(条数)
int shardingSize = 2;
// 分片去确定党员身份,防止in条件过大
while (true) {
int realShardingSize = Math.min(shardingSize, volunteerTotalCount - shardingStartIndex);
// 如果查询结果为0,说明没有更多的志愿者了 if (realShardingSize <= 0) {
if (volunteersPage.size() == 0) {
break; break;
} }
volunteerTotalCount += volunteersPage.size(); int shardingEndIndex = shardingStartIndex + realShardingSize;
List<String> volunteerUserIds = volunteers.subList(shardingStartIndex, shardingEndIndex)
// 分片去确定党员身份 .stream()
while (true) { .map((volunteerInfoEntity) -> volunteerInfoEntity.getUserId())
int realShardingSize = Math.min(shardingSize, volunteersPage.size() - shardingStartIndex); .collect(Collectors.toList());
if (realShardingSize == 0) { List<String> tempPartymemberUserIds = userService.filterUserIds(volunteerUserIds, EpmetRoleKeyConstant.PARTYMEMBER);
break;
}
int shardingEndIndex = shardingStartIndex + realShardingSize;
List<String> volunteerUserIds = volunteersPage.subList(shardingStartIndex, shardingEndIndex)
.stream()
.map((volunteerInfoEntity) -> volunteerInfoEntity.getUserId())
.collect(Collectors.toList());
List<String> tempPartymemberUserIds = userService.filterUserIds(volunteerUserIds, EpmetRoleKeyConstant.PARTYMEMBER);
partymemberVolunteerUserIds.addAll(tempPartymemberUserIds); partymemberVolunteerUserIds.addAll(tempPartymemberUserIds);
shardingStartIndex = shardingEndIndex;
}
pageNum++; shardingStartIndex = shardingEndIndex;
} }
partymemberVolunteerCount += partymemberVolunteerUserIds.size(); partymemberVolunteerCount = partymemberVolunteerUserIds.size();
resiVolunteerCount = volunteerTotalCount - partymemberVolunteerCount; resiVolunteerCount = volunteerTotalCount - partymemberVolunteerCount;
//2. 查询志愿者服务次数 //2. 查询志愿者服务次数

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/VolunteerDistributionResultDTO.java

@ -27,7 +27,7 @@ public class VolunteerDistributionResultDTO {
@Data @Data
public static class Distribution { public static class Distribution {
private Set<String> volunteerTypes; private Set<String> volunteerCategories;
private String epmetUserId; private String epmetUserId;
private String icResiUserId; private String icResiUserId;
private String longitude; private String longitude;

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java

@ -162,7 +162,7 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve
ServiceConstant.GOV_ORG_SERVER, ServiceConstant.GOV_ORG_SERVER,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg);
distribution.setVolunteerTypes(volunteerTypes); distribution.setVolunteerCategories(volunteerTypes);
distribution.setEpmetUserId(userBaseInfo.getUserId()); distribution.setEpmetUserId(userBaseInfo.getUserId());
distribution.setIcResiUserId(icResiUserInfo.getId()); distribution.setIcResiUserId(icResiUserInfo.getId());
Optional.of(building).ifPresent(b -> { Optional.of(building).ifPresent(b -> {

Loading…
Cancel
Save