|  | @ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.commons.tools.constant.NumConstant; |  |  | import com.epmet.commons.tools.constant.NumConstant; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.commons.tools.exception.EpmetErrorCode; |  |  | import com.epmet.commons.tools.exception.EpmetErrorCode; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.commons.tools.exception.RenException; |  |  | import com.epmet.commons.tools.exception.RenException; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | import com.epmet.commons.tools.utils.Result; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | import com.epmet.dto.CustomerDTO; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | import com.epmet.feign.OperCrmOpenFeignClient; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.enums.AchievementTypeEnum; |  |  | import com.epmet.modules.enums.AchievementTypeEnum; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.group.dao.ResiGroupDao; |  |  | import com.epmet.modules.group.dao.ResiGroupDao; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.group.entity.ResiGroupAchievementConfigEntity; |  |  | import com.epmet.modules.group.entity.ResiGroupAchievementConfigEntity; | 
			
		
	
	
		
		
			
				
					|  | @ -12,6 +15,7 @@ import com.epmet.modules.group.entity.ResiGroupEntity; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.group.service.AbstractStatsAchievementService; |  |  | import com.epmet.modules.group.service.AbstractStatsAchievementService; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.group.service.StatsAchievementService; |  |  | import com.epmet.modules.group.service.StatsAchievementService; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.member.dao.ResiGroupMemberDao; |  |  | import com.epmet.modules.member.dao.ResiGroupMemberDao; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | import com.epmet.modules.member.entity.ResiGroupMemberEntity; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.topic.dao.ResiTopicDao; |  |  | import com.epmet.modules.topic.dao.ResiTopicDao; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.modules.topic.entity.ResiTopicEntity; |  |  | import com.epmet.modules.topic.entity.ResiTopicEntity; | 
			
		
	
		
		
			
				
					|  |  | import com.epmet.resi.group.constant.TopicConstant; |  |  | import com.epmet.resi.group.constant.TopicConstant; | 
			
		
	
	
		
		
			
				
					|  | @ -25,6 +29,7 @@ import org.springframework.util.CollectionUtils; | 
			
		
	
		
		
			
				
					|  |  | import java.util.ArrayList; |  |  | import java.util.ArrayList; | 
			
		
	
		
		
			
				
					|  |  | import java.util.Date; |  |  | import java.util.Date; | 
			
		
	
		
		
			
				
					|  |  | import java.util.List; |  |  | import java.util.List; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | /** |  |  | /** | 
			
		
	
		
		
			
				
					|  |  |  * desc: |  |  |  * desc: | 
			
		
	
	
		
		
			
				
					|  | @ -42,6 +47,8 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |     private ResiTopicDao resiTopicDao; |  |  |     private ResiTopicDao resiTopicDao; | 
			
		
	
		
		
			
				
					|  |  |     @Autowired |  |  |     @Autowired | 
			
		
	
		
		
			
				
					|  |  |     private ResiGroupDao resiGroupDao; |  |  |     private ResiGroupDao resiGroupDao; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     @Autowired | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     private OperCrmOpenFeignClient operCrmOpenFeignClient; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     /** |  |  |     /** | 
			
		
	
	
		
		
			
				
					|  | @ -52,30 +59,84 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |      * @date 2021/4/20 |  |  |      * @date 2021/4/20 | 
			
		
	
		
		
			
				
					|  |  |      */ |  |  |      */ | 
			
		
	
		
		
			
				
					|  |  |     @Override |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |     public Boolean initAllGroupAchievement(String customerId) { |  |  |     public Boolean initAllGroupAchievement(String cId) { | 
			
				
				
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					|  |  |         //计算所有类型的  小组人数、话题数、转议题数、小组内问题解决数
 |  |  |         //计算所有类型的  小组人数、话题数、转议题数、小组内问题解决数
 | 
			
		
	
		
		
			
				
					
					|  |  |         QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>(); |  |  |         //1。获取客户
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         queryWrapper.lambda().eq(ResiGroupEntity::getDelFlag, '0'); |  |  |         List<String> customerIdList = getCustomerIds(cId); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         if (StringUtils.isNotBlank(customerId)) { |  |  |         if (CollectionUtils.isEmpty(customerIdList)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             queryWrapper.lambda().eq(ResiGroupEntity::getCustomerId, customerId); |  |  |             throw new RenException("没有需要初始化的客户数据"); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |         List<ResiGroupEntity> groupEntities = resiGroupDao.selectList(queryWrapper); |  |  |         for (String customerId : customerIdList) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         groupEntities.forEach(group -> { |  |  |             //2。获取小组数据
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             AchievementTypeEnum[] achievementTypeEnum = AchievementTypeEnum.values(); |  |  |             List<ResiGroupEntity> groupEntities = getCustomerGroupList(customerId); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             for (AchievementTypeEnum anEnum : achievementTypeEnum) { |  |  |             if (CollectionUtils.isEmpty(groupEntities)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 try { |  |  |                 log.warn("没有需要初始化的小组数据,customerId:{}", customerId); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     Thread.sleep(2); |  |  |                 continue; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 } catch (InterruptedException e) { |  |  |             } | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     e.printStackTrace(); |  |  |             for (ResiGroupEntity groupEntity : groupEntities) { | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |                 //2.1 获取小组成员数据
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 String groupId = groupEntity.getId(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<ResiGroupMemberEntity> groupMemberList = getGroupMemberList(customerId, groupId); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 if (CollectionUtils.isEmpty(groupMemberList)) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     log.warn("没有需要初始化的小组成员数据,customerId:{},groupId:{}", customerId, groupId); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     //初始化小组的前4个成就
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     calculateGroupAchievement(customerId, groupId, NumConstant.ZERO, AchievementTypeEnum.MEMBER.getCode()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 } else { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     //2.2 计算出 组成员 达到的成就
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     List<ResiGroupAchievementStatsEntity> memberArriveList = new ArrayList<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     buildAchievementEntityList(customerId, groupId, AchievementTypeEnum.MEMBER.getCode(), groupMemberList.size(), null, memberArriveList); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     //设置实际达到成就时间 最后一条为未实现 所以-1
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     for (int j = 0; j < memberArriveList.size() - 1; j++) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                         memberArriveList.get(j).setArriveTime(groupEntities.get(j).getCreatedTime()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     saveOrUpdate(memberArriveList, true); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 //2.3 获取小组话题数据
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<ResiTopicEntity> groupTopicList = getGroupTopicList(customerId, groupId); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 if (CollectionUtils.isEmpty(groupTopicList)) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     log.warn("没有需要初始化的小组话题数据,customerId:{},groupId:{}", customerId, groupId); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     continue; | 
			
		
	
		
		
			
				
					|  |  |                 } |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |                 calculateAcm(group.getCustomerId(), group.getId(), anEnum.getCode()); |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |                 //2.4 计算出 话题 达到的成就
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<ResiGroupAchievementStatsEntity> topicArriveList = new ArrayList<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 buildAchievementEntityList(customerId, groupId, AchievementTypeEnum.TOPIC.getCode(), groupTopicList.size(), null, topicArriveList); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 //设置实际达到成就时间 最后一条为未实现 所以-1
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 for (int j = 0; j < topicArriveList.size() - 1; j++) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     topicArriveList.get(j).setArriveTime(groupTopicList.get(j).getCreatedTime()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 //2.5 计算出 转议题 达到的成就
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<ResiTopicEntity> toIssueTopicList = groupTopicList.stream().filter(ResiTopicEntity::getShiftIssue).collect(Collectors.toList()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<ResiGroupAchievementStatsEntity> toIssueArriveList = new ArrayList<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 buildAchievementEntityList(customerId, groupId, AchievementTypeEnum.TOISSUE.getCode(), toIssueTopicList.size(), null, toIssueArriveList); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 //设置实际达到成就时间 最后一条为未实现 所以-1
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 for (int j = 0; j < toIssueArriveList.size() - 1; j++) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     toIssueArriveList.get(j).setArriveTime(toIssueTopicList.get(j).getCreatedTime()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 //2.6 计算出 话题被解决 达到的成就
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<ResiTopicEntity> resolveTopicList = groupTopicList.stream() | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                         .filter(o -> TopicConstant.CLOSED.equals(o.getStatus()) && TopicConstant.RESOLVED.equals(o.getClosedStatus())).collect(Collectors.toList()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<ResiGroupAchievementStatsEntity> resolveTopicArriveList = new ArrayList<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 buildAchievementEntityList(customerId, groupId, AchievementTypeEnum.RESOVLE_TOPIC.getCode(), resolveTopicList.size(), null, resolveTopicArriveList); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 //设置实际达到成就时间 最后一条为未实现 所以-1
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 for (int j = 0; j < resolveTopicArriveList.size() - 1; j++) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     resolveTopicArriveList.get(j).setArriveTime(resolveTopicList.get(j).getCreatedTime()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 saveOrUpdate(topicArriveList, true); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 saveOrUpdate(toIssueArriveList, true); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 saveOrUpdate(resolveTopicArriveList, true); | 
			
		
	
		
		
			
				
					|  |  |             } |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |         }); |  |  |         } | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |         return true; |  |  |         return true; | 
			
		
	
		
		
			
				
					|  |  |     } |  |  |     } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     /** |  |  |     /** | 
			
		
	
		
		
			
				
					|  |  |      * desc: 根据小组Id计算小组成就 入口 |  |  |      * desc: 根据小组Id计算小组成就 入口 | 
			
		
	
		
		
			
				
					|  |  |      * |  |  |      * | 
			
		
	
	
		
		
			
				
					|  | @ -99,7 +160,7 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |                 QueryWrapper<ResiTopicEntity> queryWrapper = new QueryWrapper<>(); |  |  |                 QueryWrapper<ResiTopicEntity> queryWrapper = new QueryWrapper<>(); | 
			
		
	
		
		
			
				
					|  |  |                 queryWrapper.lambda().eq(ResiTopicEntity::getCustomerId, customerId) |  |  |                 queryWrapper.lambda().eq(ResiTopicEntity::getCustomerId, customerId) | 
			
		
	
		
		
			
				
					|  |  |                         .eq(ResiTopicEntity::getGroupId, groupId) |  |  |                         .eq(ResiTopicEntity::getGroupId, groupId) | 
			
		
	
		
		
			
				
					
					|  |  |                         .eq(ResiTopicEntity::getDelFlag, NumConstant.ZERO); |  |  |                         .eq(ResiTopicEntity::getDelFlag, NumConstant.ZERO_STR); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                 currentValue = resiTopicDao.selectCount(queryWrapper); |  |  |                 currentValue = resiTopicDao.selectCount(queryWrapper); | 
			
		
	
		
		
			
				
					|  |  |                 break; |  |  |                 break; | 
			
		
	
		
		
			
				
					|  |  |             case MEMBER: |  |  |             case MEMBER: | 
			
		
	
	
		
		
			
				
					|  | @ -111,7 +172,7 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |                 queryWrapper.lambda().eq(ResiTopicEntity::getCustomerId, customerId) |  |  |                 queryWrapper.lambda().eq(ResiTopicEntity::getCustomerId, customerId) | 
			
		
	
		
		
			
				
					|  |  |                         .eq(ResiTopicEntity::getGroupId, groupId) |  |  |                         .eq(ResiTopicEntity::getGroupId, groupId) | 
			
		
	
		
		
			
				
					|  |  |                         .eq(ResiTopicEntity::getShiftIssue, NumConstant.ONE) |  |  |                         .eq(ResiTopicEntity::getShiftIssue, NumConstant.ONE) | 
			
		
	
		
		
			
				
					
					|  |  |                         .eq(ResiTopicEntity::getDelFlag, NumConstant.ZERO); |  |  |                         .eq(ResiTopicEntity::getDelFlag, NumConstant.ZERO_STR); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                 currentValue = resiTopicDao.selectCount(queryWrapper); |  |  |                 currentValue = resiTopicDao.selectCount(queryWrapper); | 
			
		
	
		
		
			
				
					|  |  |                 break; |  |  |                 break; | 
			
		
	
		
		
			
				
					|  |  |             case RESOVLE_TOPIC: |  |  |             case RESOVLE_TOPIC: | 
			
		
	
	
		
		
			
				
					|  | @ -122,7 +183,7 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |                         .eq(ResiTopicEntity::getStatus, TopicConstant.CLOSED) |  |  |                         .eq(ResiTopicEntity::getStatus, TopicConstant.CLOSED) | 
			
		
	
		
		
			
				
					|  |  |                         .eq(ResiTopicEntity::getClosedStatus, TopicConstant.RESOLVED) |  |  |                         .eq(ResiTopicEntity::getClosedStatus, TopicConstant.RESOLVED) | 
			
		
	
		
		
			
				
					|  |  |                         .eq(ResiTopicEntity::getShiftIssue, NumConstant.ONE) |  |  |                         .eq(ResiTopicEntity::getShiftIssue, NumConstant.ONE) | 
			
		
	
		
		
			
				
					
					|  |  |                         .eq(ResiTopicEntity::getDelFlag, NumConstant.ZERO); |  |  |                         .eq(ResiTopicEntity::getDelFlag, NumConstant.ZERO_STR); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                 currentValue = resiTopicDao.selectCount(queryWrapper); |  |  |                 currentValue = resiTopicDao.selectCount(queryWrapper); | 
			
		
	
		
		
			
				
					|  |  |                 break; |  |  |                 break; | 
			
		
	
		
		
			
				
					|  |  |             default: |  |  |             default: | 
			
		
	
	
		
		
			
				
					|  | @ -165,14 +226,15 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |         //改为已实现
 |  |  |         //改为已实现
 | 
			
		
	
		
		
			
				
					|  |  |         if (currentValue >= targetValue) { |  |  |         if (currentValue >= targetValue) { | 
			
		
	
		
		
			
				
					|  |  |             isBatch = true; |  |  |             isBatch = true; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             buildAchievementEntityList(customerId, groupId, achievementType, currentValue, one.getTargetValue(), haveArrive); | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |             boolean isContinue; |  |  | //            boolean isContinue;
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             int pageNum = NumConstant.ONE; |  |  | //            int pageNum = NumConstant.ONE;
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             int pageSize = NumConstant.TEN; |  |  | //            int pageSize = NumConstant.TEN;
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             do { |  |  | //            do {
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 List<ResiGroupAchievementConfigEntity> list = getConfigByType(achievementType, pageNum++, pageSize); |  |  | //                List<ResiGroupAchievementConfigEntity> list = getConfigByType(achievementType, pageNum++, pageSize);
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 isContinue = buildArriveList(customerId, groupId, achievementType, currentValue, one.getTargetValue(), haveArrive, list); |  |  | //                isContinue = buildArriveList(customerId, groupId, achievementType, currentValue, one.getTargetValue(), haveArrive, list);
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             } while (isContinue); |  |  | //            } while (isContinue);
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |         if (isBatch) { |  |  |         if (isBatch) { | 
			
		
	
	
		
		
			
				
					|  | @ -195,6 +257,14 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |      */ |  |  |      */ | 
			
		
	
		
		
			
				
					|  |  |     private void initAchievementStat(String customerId, String groupId, String achievementType, int currentValue, List<ResiGroupAchievementStatsEntity> haveArrive) { |  |  |     private void initAchievementStat(String customerId, String groupId, String achievementType, int currentValue, List<ResiGroupAchievementStatsEntity> haveArrive) { | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         buildAchievementEntityList(customerId, groupId, achievementType, currentValue, null, haveArrive); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         if (CollectionUtils.isEmpty(haveArrive)) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             throw new RenException("小组达成成就失败"); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     private void buildAchievementEntityList(String customerId, String groupId, String achievementType, | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                                             Integer currentValue, Integer targetValue, List<ResiGroupAchievementStatsEntity> haveArrive) { | 
			
		
	
		
		
			
				
					|  |  |         boolean isContinue; |  |  |         boolean isContinue; | 
			
		
	
		
		
			
				
					|  |  |         int pageNum = NumConstant.ONE; |  |  |         int pageNum = NumConstant.ONE; | 
			
		
	
		
		
			
				
					|  |  |         int pageSize = NumConstant.TEN; |  |  |         int pageSize = NumConstant.TEN; | 
			
		
	
	
		
		
			
				
					|  | @ -205,11 +275,8 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |                 log.error("calculateMember get config fail"); |  |  |                 log.error("calculateMember get config fail"); | 
			
		
	
		
		
			
				
					|  |  |                 throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode()); |  |  |                 throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode()); | 
			
		
	
		
		
			
				
					|  |  |             } |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |             isContinue = buildArriveList(customerId, groupId, achievementType, currentValue, null, haveArrive, list); |  |  |             isContinue = buildArriveList(customerId, groupId, achievementType, currentValue, targetValue, haveArrive, list); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |         } while (isContinue); |  |  |         } while (isContinue); | 
			
		
	
		
		
			
				
					|  |  |         if (CollectionUtils.isEmpty(haveArrive)) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             throw new RenException("小组达成成就失败"); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     } |  |  |     } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     private boolean buildArriveList(String customerId, String groupId, String achievementType, int currentValue, Integer targetValue, |  |  |     private boolean buildArriveList(String customerId, String groupId, String achievementType, int currentValue, Integer targetValue, | 
			
		
	
	
		
		
			
				
					|  | @ -257,4 +324,71 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |         return list; |  |  |         return list; | 
			
		
	
		
		
			
				
					|  |  |     } |  |  |     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     /** | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * desc:获取小组List 按创建时间升序 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @param customerId | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @return | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     private List<ResiGroupEntity> getCustomerGroupList(String customerId) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         queryWrapper.lambda() | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiGroupEntity::getDelFlag, NumConstant.ZERO_STR) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiGroupEntity::getCustomerId, customerId) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .orderByAsc(ResiGroupEntity::getCreatedTime); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return resiGroupDao.selectList(queryWrapper); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     /** | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * desc:获取小组成员(非组长)List 按创建时间升序 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @param customerId | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @return | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     private List<ResiGroupMemberEntity> getGroupMemberList(String customerId, String groupId) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         QueryWrapper<ResiGroupMemberEntity> memberQuery = new QueryWrapper<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         memberQuery.lambda() | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiGroupMemberEntity::getCustomerId, customerId) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiGroupMemberEntity::getResiGroupId, groupId) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiGroupMemberEntity::getDelFlag, NumConstant.ZERO_STR) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiGroupMemberEntity::getGroupLeaderFlag, TopicConstant.MEMBER) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .orderByAsc(ResiGroupMemberEntity::getCreatedTime); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return resiGroupMemberDao.selectList(memberQuery); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     /** | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * desc:获取小组话题List 按创建时间升序 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @param customerId | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @return | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     private List<ResiTopicEntity> getGroupTopicList(String customerId, String groupId) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         QueryWrapper<ResiTopicEntity> memberQuery = new QueryWrapper<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         memberQuery.lambda() | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiTopicEntity::getCustomerId, customerId) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiTopicEntity::getGroupId, groupId) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .eq(ResiTopicEntity::getDelFlag, NumConstant.ZERO_STR) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 .orderByAsc(ResiTopicEntity::getCreatedTime); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return resiTopicDao.selectList(memberQuery); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     /** | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * desc:获取客户IdList | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @param customerId | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      * @return | 
			
		
	
		
		
			
				
					|  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     private List<String> getCustomerIds(String customerId) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         List<String> customerIdList = new ArrayList<>(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         if (StringUtils.isBlank(customerId)) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             Result<List<CustomerDTO>> allCustomerList = operCrmOpenFeignClient.getAllCustomerList(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             if (allCustomerList != null && !CollectionUtils.isEmpty(allCustomerList.getData())) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 customerIdList.addAll(allCustomerList.getData().stream().map(CustomerDTO::getId).collect(Collectors.toList())); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         } else { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             customerIdList.add(customerId); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return customerIdList; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					|  |  | } |  |  | } | 
			
		
	
	
		
		
			
				
					|  | 
 |