Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/saas' into saas

Eric 2 anni fa
parent
commit
12f15fe525

+ 32 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -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)) {