|  | @@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.text.DateFormat;
 | 
	
		
			
				|  |  |  import java.time.LocalDate;
 | 
	
		
			
				|  |  |  import java.time.LocalDateTime;
 | 
	
		
			
				|  |  |  import java.time.format.DateTimeFormatter;
 | 
	
	
		
			
				|  | @@ -50,8 +51,9 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 | 
	
		
			
				|  |  |  	public List<IndexBaseDto> getIndexBaseData(String dataTypesStr, String organIdsStr, String startMonth, String endMonth) {
 | 
	
		
			
				|  |  |  		List<IndexBaseDto> result = new ArrayList<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		LocalDate nowDateTime = LocalDate.now();
 | 
	
		
			
				|  |  | +		nowDateTime.withDayOfMonth(1);
 | 
	
		
			
				|  |  |  		if(StringUtils.isBlank(startMonth)){
 | 
	
		
			
				|  |  | -			LocalDateTime nowDateTime = LocalDateTime.now();
 | 
	
		
			
				|  |  |  			startMonth = nowDateTime.getYear() + "-01";
 | 
	
		
			
				|  |  |  			endMonth = null;
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -69,8 +71,27 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 | 
	
		
			
				|  |  |  			return result;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		LocalDate startMonthDate = LocalDate.parse(startMonth + "-01", DateUtil.dateFormatter);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = indexBaseDatas.stream().collect(Collectors.groupingBy(IndexBaseMonthData::getDataType));
 | 
	
		
			
				|  |  |  		for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
 | 
	
		
			
				|  |  | +			Set<String> hasMonths = typeDateMapEntry.getValue().stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | +			LocalDate currentMonthDate = startMonthDate;
 | 
	
		
			
				|  |  | +			while (currentMonthDate.compareTo(nowDateTime)<=0){
 | 
	
		
			
				|  |  | +				if(hasMonths.contains(currentMonthDate.toString())){
 | 
	
		
			
				|  |  | +					currentMonthDate = currentMonthDate.plusMonths(1);
 | 
	
		
			
				|  |  | +					continue;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				IndexBaseMonthData indexBaseMonthData = new IndexBaseMonthData();
 | 
	
		
			
				|  |  | +				indexBaseMonthData.setMonth(Date.from(currentMonthDate.atStartOfDay(DateUtil.zoneId).toInstant()));
 | 
	
		
			
				|  |  | +				indexBaseMonthData.setTotalNum(BigDecimal.ONE);
 | 
	
		
			
				|  |  | +				indexBaseMonthData.setActivateNum(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +				indexBaseMonthData.setPercent(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +				indexBaseMonthData.setDataType(typeDateMapEntry.getKey());
 | 
	
		
			
				|  |  | +				typeDateMapEntry.getValue().add(indexBaseMonthData);
 | 
	
		
			
				|  |  | +				currentMonthDate = currentMonthDate.plusMonths(1);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			typeDateMapEntry.getValue().sort(Comparator.comparing(IndexBaseMonthData::getMonth));
 | 
	
		
			
				|  |  |  			if(IndexDataType.ACTIVATION_RATE.equals(typeDateMapEntry.getKey())||IndexDataType.HOMEWORK_CREATE_RATE.equals(typeDateMapEntry.getKey())
 | 
	
		
			
				|  |  |  					||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())
 | 
	
		
			
				|  |  |  					||IndexDataType.STUDENT_CONVERSION.equals(typeDateMapEntry.getKey())){
 | 
	
	
		
			
				|  | @@ -88,7 +109,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public Map<String, List<IndexBaseDto>> indexBaseDataTask(String startMonth, String endMonth) {
 | 
	
		
			
				|  |  | +	public Map<String, List<IndexBaseDto>> indexBaseDataTask(String month) {
 | 
	
		
			
				|  |  |  		Map<String, List<IndexBaseDto>> result = new HashMap<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM");
 | 
	
	
		
			
				|  | @@ -100,42 +121,42 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 | 
	
		
			
				|  |  |  			this.organIds.get().addAll(allOrgans.stream().map(Organization::getId).collect(Collectors.toSet()));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		startMonth = df.format(nowDate);
 | 
	
		
			
				|  |  | +		month = df.format(nowDate);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//运营数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getSchoolData(), startMonth, IndexDataType.SCHOOL);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getMusicData(), startMonth, IndexDataType.MUSIC_GROUP_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getMusicStudentData(null), startMonth, IndexDataType.MUSIC_GROUP_STUDENT);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getOtherStudentData(), startMonth, IndexDataType.OTHER_STUDENT);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getSchoolData(month), month, IndexDataType.SCHOOL);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getMusicData(), month, IndexDataType.MUSIC_GROUP_NUM);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getMusicStudentData(null), month, IndexDataType.MUSIC_GROUP_STUDENT);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getOtherStudentData(), month, IndexDataType.OTHER_STUDENT);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//业务数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getStudentSignUpData(), startMonth, IndexDataType.ACTIVATION_RATE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getHomeworkData(null), startMonth, IndexDataType.HOMEWORK_CREATE_RATE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getHomeworkData("submit"), startMonth, IndexDataType.HOMEWORK_SUBMIT_RATE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getHomeworkData("comment"), startMonth, IndexDataType.HOMEWORK_COMMENT_RATE);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getStudentSignUpData(), month, IndexDataType.ACTIVATION_RATE);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getHomeworkData(null), month, IndexDataType.HOMEWORK_CREATE_RATE);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getHomeworkData("submit"), month, IndexDataType.HOMEWORK_SUBMIT_RATE);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getHomeworkData("comment"), month, IndexDataType.HOMEWORK_COMMENT_RATE);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//经营数据
 | 
	
		
			
				|  |  | -		saveData(null, startMonth, IndexDataType.SHOULD_INCOME_MONEY);
 | 
	
		
			
				|  |  | -		saveData(null, startMonth, IndexDataType.ANTICIPATED_INCOME_MONEY);
 | 
	
		
			
				|  |  | -		saveData(null, startMonth, IndexDataType.SHOULD_EXPEND_MONEY);
 | 
	
		
			
				|  |  | -		saveData(null, startMonth, IndexDataType.ANTICIPATED_EXPEND_MONEY);
 | 
	
		
			
				|  |  | -		saveData(null, startMonth, IndexDataType.REVENUE_MONEY);
 | 
	
		
			
				|  |  | +		saveData(null, month, IndexDataType.SHOULD_INCOME_MONEY);
 | 
	
		
			
				|  |  | +		saveData(null, month, IndexDataType.ANTICIPATED_INCOME_MONEY);
 | 
	
		
			
				|  |  | +		saveData(null, month, IndexDataType.SHOULD_EXPEND_MONEY);
 | 
	
		
			
				|  |  | +		saveData(null, month, IndexDataType.ANTICIPATED_EXPEND_MONEY);
 | 
	
		
			
				|  |  | +		saveData(null, month, IndexDataType.REVENUE_MONEY);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//人事数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getTeacherData(null, null), startMonth, IndexDataType.TEACHER_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getTeacherData(JobNatureEnum.FULL_TIME, null), startMonth, IndexDataType.FULL_TIME_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getTeacherData(JobNatureEnum.PART_TIME, null), startMonth, IndexDataType.PART_TIME_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getTeacherData(null, true), startMonth, IndexDataType.DIMISSION_NUM);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getTeacherData(null, null), month, IndexDataType.TEACHER_NUM);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getTeacherData(JobNatureEnum.FULL_TIME, null), month, IndexDataType.FULL_TIME_NUM);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getTeacherData(JobNatureEnum.PART_TIME, null), month, IndexDataType.PART_TIME_NUM);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getTeacherData(null, true), month, IndexDataType.DIMISSION_NUM);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//学员变动
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getMusicStudentData("ALL"), startMonth, IndexDataType.NEWLY_STUDENT_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getMusicStudentData("QUIT"), startMonth, IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getStudentConversionData(), startMonth, IndexDataType.STUDENT_CONVERSION);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getMusicStudentData("ALL"), month, IndexDataType.NEWLY_STUDENT_NUM);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getMusicStudentData("QUIT"), month, IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getStudentConversionData(), month, IndexDataType.STUDENT_CONVERSION);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//课程数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseData(GroupType.MUSIC), startMonth, IndexDataType.MUSIC_GROUP_COURSE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseData(GroupType.VIP), startMonth, IndexDataType.VIP_GROUP_COURSE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseData(GroupType.PRACTICE), startMonth, IndexDataType.PRACTICE_GROUP_COURSE);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getGroupCourseData(GroupType.MUSIC), month, IndexDataType.MUSIC_GROUP_COURSE);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getGroupCourseData(GroupType.VIP), month, IndexDataType.VIP_GROUP_COURSE);
 | 
	
		
			
				|  |  | +		saveData(indexBaseMonthDataDao.getGroupCourseData(GroupType.PRACTICE), month, IndexDataType.PRACTICE_GROUP_COURSE);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		return result;
 | 
	
		
			
				|  |  |  	}
 |