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
*/
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;
@Override
public List<VolunteerInfoEntity> listVolunteersPage(String customerId, Date endCreateTime, Integer pageNum, Integer pageSize) {
return PageHelper.startPage(pageNum, pageSize).doSelectPage(() -> {
LambdaQueryWrapper<VolunteerInfoEntity> query = new LambdaQueryWrapper<>();
query.eq(VolunteerInfoEntity::getCustomerId, customerId);
query.lt(VolunteerInfoEntity::getCreatedTime, endCreateTime);
volunteerInfoDao.selectList(query);
});
public List<VolunteerInfoEntity> listVolunteers(String customerId, Date endCreateTime) {
LambdaQueryWrapper<VolunteerInfoEntity> query = new LambdaQueryWrapper<>();
query.eq(VolunteerInfoEntity::getCustomerId, customerId);
query.lt(VolunteerInfoEntity::getCreatedTime, endCreateTime);
return 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);
@ -90,50 +91,40 @@ public class DemandServiceImpl implements DemandService {
// 居民志愿者数量
Integer resiVolunteerCount = 0;
// 党员志愿者用户id列表
List<String> partymemberVolunteerUserIds = new ArrayList<>(16);
int pageNum = 1;
int volunteerPageSize = 5;
List<VolunteerInfoEntity> volunteers = heartVolunteerService.listVolunteers(customerId, endTime);
while (true) {
int shardingStartIndex = 0;
int shardingSize = 2;
volunteerTotalCount = volunteers.size();
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 (volunteersPage.size() == 0) {
if (realShardingSize <= 0) {
break;
}
volunteerTotalCount += volunteersPage.size();
// 分片去确定党员身份
while (true) {
int realShardingSize = Math.min(shardingSize, volunteersPage.size() - shardingStartIndex);
int shardingEndIndex = shardingStartIndex + realShardingSize;
List<String> volunteerUserIds = volunteers.subList(shardingStartIndex, shardingEndIndex)
.stream()
.map((volunteerInfoEntity) -> volunteerInfoEntity.getUserId())
.collect(Collectors.toList());
if (realShardingSize == 0) {
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);
List<String> tempPartymemberUserIds = userService.filterUserIds(volunteerUserIds, EpmetRoleKeyConstant.PARTYMEMBER);
partymemberVolunteerUserIds.addAll(tempPartymemberUserIds);
shardingStartIndex = shardingEndIndex;
}
partymemberVolunteerUserIds.addAll(tempPartymemberUserIds);
pageNum++;
shardingStartIndex = shardingEndIndex;
}
partymemberVolunteerCount += partymemberVolunteerUserIds.size();
partymemberVolunteerCount = partymemberVolunteerUserIds.size();
resiVolunteerCount = volunteerTotalCount - partymemberVolunteerCount;
//2. 查询志愿者服务次数

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

@ -27,7 +27,7 @@ public class VolunteerDistributionResultDTO {
@Data
public static class Distribution {
private Set<String> volunteerTypes;
private Set<String> volunteerCategories;
private String epmetUserId;
private String icResiUserId;
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,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg);
distribution.setVolunteerTypes(volunteerTypes);
distribution.setVolunteerCategories(volunteerTypes);
distribution.setEpmetUserId(userBaseInfo.getUserId());
distribution.setIcResiUserId(icResiUserInfo.getId());
Optional.of(building).ifPresent(b -> {

Loading…
Cancel
Save