|
@@ -420,17 +420,17 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
|
|
|
if (CollectionUtils.isEmpty(campList)) {
|
|
|
return;
|
|
|
}
|
|
|
- Date now = DateUtil.stringToDate(LocalDate.now() + " 00:00:00");
|
|
|
+ Date now = DateUtil.stringToDate(DateUtil.format(new Date(),DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN);
|
|
|
//将训练营数据根据状态分组,未开始 NOT_START,报名中 APPLY,筹备中 READY,进行中 ING,已结束 END
|
|
|
Map<String, List<TempLittleArtistTrainingCamp>> stateMap = WrapperUtil.groupList(campList, TempLittleArtistTrainingCamp::getState);
|
|
|
//未开始 NOT_START 修改为 报名中 APPLY
|
|
|
- opsState(now, stateMap, TempLittleArtistTrainingCamp.NOT_START, TempLittleArtistTrainingCamp::getApplyStartDate, TempLittleArtistTrainingCamp.APPLY);
|
|
|
+ opsStateByStart(now, stateMap, TempLittleArtistTrainingCamp.NOT_START, TempLittleArtistTrainingCamp::getApplyStartDate, TempLittleArtistTrainingCamp.APPLY);
|
|
|
//报名中 APPLY 修改为 筹备中 READY 如果报名结束日期+1天正好等于训练开始时间 并 训练时间正好是今天那么直接变更为进行中状态,那么直接修改为进行中状态
|
|
|
- opsState(now, stateMap, TempLittleArtistTrainingCamp.APPLY, TempLittleArtistTrainingCamp::getApplyEndDate, TempLittleArtistTrainingCamp.READY);
|
|
|
+ opsStateByEnd(now, stateMap, TempLittleArtistTrainingCamp.APPLY, TempLittleArtistTrainingCamp::getApplyEndDate, TempLittleArtistTrainingCamp.READY);
|
|
|
//筹备中 READY 修改为 进行中 ING
|
|
|
- opsState(now, stateMap, TempLittleArtistTrainingCamp.READY, TempLittleArtistTrainingCamp::getTrainStartDate, TempLittleArtistTrainingCamp.ING);
|
|
|
+ opsStateByStart(now, stateMap, TempLittleArtistTrainingCamp.READY, TempLittleArtistTrainingCamp::getTrainStartDate, TempLittleArtistTrainingCamp.ING);
|
|
|
//进行中 ING 修改为 已结束 END
|
|
|
- opsState(now, stateMap, TempLittleArtistTrainingCamp.ING, TempLittleArtistTrainingCamp::getTrainEndDate, TempLittleArtistTrainingCamp.END);
|
|
|
+ opsStateByEnd(now, stateMap, TempLittleArtistTrainingCamp.ING, TempLittleArtistTrainingCamp::getTrainEndDate, TempLittleArtistTrainingCamp.END);
|
|
|
//修改数据
|
|
|
campList.forEach(this::updateById);
|
|
|
//对今天开始训练的人进行分组
|
|
@@ -446,7 +446,33 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
|
|
|
* @param dateField 时间字段
|
|
|
* @param newState 新状态
|
|
|
*/
|
|
|
- private void opsState(Date now, Map<String, List<TempLittleArtistTrainingCamp>> stateMap, String oldState,
|
|
|
+ private void opsStateByEnd(Date now, Map<String, List<TempLittleArtistTrainingCamp>> stateMap, String oldState,
|
|
|
+ Function<TempLittleArtistTrainingCamp, Date> dateField, String newState) {
|
|
|
+ List<TempLittleArtistTrainingCamp> list = stateMap.get(oldState);
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ list.forEach(camp -> {
|
|
|
+ //报名中的状态
|
|
|
+ if (oldState.equals(TempLittleArtistTrainingCamp.APPLY)) {
|
|
|
+ //报名结束日期+1天
|
|
|
+ long appleEndAddTime = DateUtil.addDays(camp.getApplyEndDate(), 1).getTime();
|
|
|
+ //训练开始时间
|
|
|
+ long trainStartTime = camp.getTrainStartDate().getTime();
|
|
|
+ //今天
|
|
|
+ long nowTime = DateUtil.toDate(LocalDate.now().toString()).getTime();
|
|
|
+ //报名结束日期+1天正好等于训练开始时间 并 训练时间正好是今天那么直接变更为进行中状态
|
|
|
+ if (appleEndAddTime == trainStartTime && nowTime == trainStartTime) {
|
|
|
+ camp.setState(TempLittleArtistTrainingCamp.ING);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (now.getTime() > dateField.apply(camp).getTime()) {
|
|
|
+ camp.setState(newState);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void opsStateByStart(Date now, Map<String, List<TempLittleArtistTrainingCamp>> stateMap, String oldState,
|
|
|
Function<TempLittleArtistTrainingCamp, Date> dateField, String newState) {
|
|
|
List<TempLittleArtistTrainingCamp> list = stateMap.get(oldState);
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|