ScheduleNewServiceImpl.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. package jnpf.base.service.impl;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.dynamic.datasource.annotation.DSTransactional;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import jnpf.base.UserInfo;
  7. import jnpf.base.entity.ScheduleLogEntity;
  8. import jnpf.base.entity.ScheduleNewEntity;
  9. import jnpf.base.entity.ScheduleNewUserEntity;
  10. import jnpf.base.mapper.ScheduleNewMapper;
  11. import jnpf.base.model.schedule.ScheduleDetailModel;
  12. import jnpf.base.model.schedule.ScheduleJobModel;
  13. import jnpf.base.model.schedule.ScheduleNewTime;
  14. import jnpf.base.service.ScheduleLogService;
  15. import jnpf.base.service.ScheduleNewService;
  16. import jnpf.base.service.ScheduleNewUserService;
  17. import jnpf.base.service.SuperServiceImpl;
  18. import jnpf.base.util.SentMessageUtil;
  19. import jnpf.base.util.job.ScheduleJobUtil;
  20. import jnpf.constant.MsgCode;
  21. import jnpf.exception.WorkFlowException;
  22. import jnpf.message.model.SentMessageForm;
  23. import jnpf.permission.entity.UserEntity;
  24. import jnpf.permission.service.UserService;
  25. import jnpf.util.*;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import java.util.*;
  29. import java.util.stream.Collectors;
  30. /**
  31. * 日程
  32. *
  33. * @author JNPF开发平台组
  34. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  35. */
  36. @Service
  37. public class ScheduleNewServiceImpl extends SuperServiceImpl<ScheduleNewMapper, ScheduleNewEntity> implements ScheduleNewService {
  38. @Autowired
  39. private ScheduleLogService scheduleLogService;
  40. @Autowired
  41. private SentMessageUtil sentMessageUtil;
  42. @Autowired
  43. private UserService userService;
  44. @Autowired
  45. private RedisUtil redisUtil;
  46. @Autowired
  47. private ScheduleNewUserService scheduleNewUserService;
  48. @Autowired
  49. private ScheduleJobUtil scheduleJobUtil;
  50. @Override
  51. public List<ScheduleNewEntity> getList(ScheduleNewTime scheduleNewTime) {
  52. List<String> scheduleId = scheduleNewUserService.getList().stream().map(ScheduleNewUserEntity::getScheduleId).collect(Collectors.toList());
  53. if (scheduleId.size() == 0) {
  54. return new ArrayList<>();
  55. }
  56. QueryWrapper<ScheduleNewEntity> queryWrapper = new QueryWrapper<>();
  57. queryWrapper.lambda().in(ScheduleNewEntity::getId, scheduleId);
  58. queryWrapper.lambda().orderByDesc(ScheduleNewEntity::getAllDay);
  59. queryWrapper.lambda().orderByAsc(ScheduleNewEntity::getStartDay);
  60. queryWrapper.lambda().orderByAsc(ScheduleNewEntity::getEndDay);
  61. queryWrapper.lambda().orderByDesc(ScheduleNewEntity::getCreatorTime);
  62. List<ScheduleNewEntity> result = this.list(queryWrapper);
  63. return result;
  64. }
  65. @Override
  66. public List<ScheduleNewEntity> getList(String groupId, Date date) {
  67. QueryWrapper<ScheduleNewEntity> queryWrapper = new QueryWrapper<>();
  68. if (StringUtil.isNotEmpty(groupId)) {
  69. queryWrapper.lambda().eq(ScheduleNewEntity::getGroupId, groupId);
  70. }
  71. if (ObjectUtil.isNotEmpty(date)) {
  72. queryWrapper.lambda().ge(ScheduleNewEntity::getStartDay, date);
  73. }
  74. return this.list(queryWrapper);
  75. }
  76. @Override
  77. public List<ScheduleNewEntity> getStartDayList(String groupId, Date date) {
  78. QueryWrapper<ScheduleNewEntity> queryWrapper = new QueryWrapper<>();
  79. if (StringUtil.isNotEmpty(groupId)) {
  80. queryWrapper.lambda().eq(ScheduleNewEntity::getGroupId, groupId);
  81. }
  82. if (ObjectUtil.isNotEmpty(date)) {
  83. queryWrapper.lambda().le(ScheduleNewEntity::getStartDay, date);
  84. }
  85. queryWrapper.lambda().orderByDesc(ScheduleNewEntity::getStartDay);
  86. return this.list(queryWrapper);
  87. }
  88. @Override
  89. public List<ScheduleNewEntity> getListAll(Date date) {
  90. if (date == null) {
  91. date = new Date();
  92. }
  93. QueryWrapper<ScheduleNewEntity> queryWrapper = new QueryWrapper<>();
  94. Integer seconds = 10;
  95. Date end = DateUtil.dateAddSeconds(date, seconds);
  96. Date start = DateUtil.dateAddSeconds(date, -seconds);
  97. queryWrapper.lambda().between(ScheduleNewEntity::getPushTime, start, end);
  98. return this.list(queryWrapper);
  99. }
  100. @Override
  101. public ScheduleNewEntity getInfo(String id) {
  102. QueryWrapper<ScheduleNewEntity> queryWrapper = new QueryWrapper<>();
  103. queryWrapper.lambda().eq(ScheduleNewEntity::getId, id);
  104. return this.getOne(queryWrapper);
  105. }
  106. @Override
  107. public List<ScheduleNewEntity> getGroupList(ScheduleDetailModel detailModel) {
  108. QueryWrapper<ScheduleNewEntity> queryWrapper = new QueryWrapper<>();
  109. String id = detailModel.getId();
  110. String groupId = detailModel.getGroupId();
  111. if (StringUtil.isNotEmpty(id)) {
  112. queryWrapper.lambda().eq(ScheduleNewEntity::getId, id);
  113. } else {
  114. queryWrapper.lambda().eq(ScheduleNewEntity::getGroupId, groupId);
  115. }
  116. queryWrapper.lambda().orderByAsc(ScheduleNewEntity::getStartDay);
  117. return this.list(queryWrapper);
  118. }
  119. @Override
  120. @DSTransactional
  121. public void create(ScheduleNewEntity entity, List<String> toUserIds, String groupId, String operationType, List<String> idList) throws WorkFlowException {
  122. UserInfo userInfo = UserProvider.getUser();
  123. if (StringUtil.isEmpty(entity.getCreatorUserId())) {
  124. entity.setCreatorUserId(userInfo.getUserId());
  125. }
  126. boolean isUser = toUserIds.contains(entity.getCreatorUserId());
  127. if (!isUser) {
  128. toUserIds.add(entity.getCreatorUserId());
  129. }
  130. time(entity);
  131. long time = entity.getEndDay().getTime() - entity.getStartDay().getTime();
  132. //间隔时间
  133. List<Date> dataList = new ArrayList<>();
  134. List<ScheduleNewEntity> listAll = new ArrayList<>();
  135. DateUtil.getNextDate(0, String.valueOf(entity.getRepetition()), entity.getStartDay(), entity.getRepeatTime(), dataList);
  136. if (CollectionUtil.isEmpty(dataList)) {
  137. throw new WorkFlowException(MsgCode.SYS132.get());
  138. }
  139. for (Date date : dataList) {
  140. ScheduleNewEntity scheduleEntity = JsonUtil.getJsonToBean(entity, ScheduleNewEntity.class);
  141. scheduleEntity.setStartDay(date);
  142. scheduleEntity.setEndDay(new Date(date.getTime() + time));
  143. if (!Objects.equals(scheduleEntity.getReminderTime(), -2)) {
  144. boolean isAllDay = Objects.equals(scheduleEntity.getAllDay(), 1);
  145. if (isAllDay) {
  146. int oneMinutes = 8 * 60;
  147. int twoMinutes = 9 * 60;
  148. int threeMinutes = 10 * 60;
  149. int day = 1440;
  150. Integer reminderTime = scheduleEntity.getReminderTime();
  151. switch (reminderTime) {
  152. case 4:
  153. case 5:
  154. case 6:
  155. oneMinutes = oneMinutes - day;
  156. twoMinutes = twoMinutes - day;
  157. threeMinutes = threeMinutes - day;
  158. break;
  159. case 7:
  160. case 8:
  161. case 9:
  162. oneMinutes = oneMinutes - day * 2;
  163. twoMinutes = twoMinutes - day * 2;
  164. threeMinutes = threeMinutes - day * 2;
  165. break;
  166. case 10:
  167. case 11:
  168. case 12:
  169. oneMinutes = oneMinutes - day * 7;
  170. twoMinutes = twoMinutes - day * 7;
  171. threeMinutes = threeMinutes - day * 7;
  172. break;
  173. default:
  174. break;
  175. }
  176. List<Integer> oneList = new ArrayList() {{
  177. add(1);
  178. add(4);
  179. add(7);
  180. add(10);
  181. }};
  182. List<Integer> twoList = new ArrayList() {{
  183. add(2);
  184. add(5);
  185. add(8);
  186. add(11);
  187. }};
  188. List<Integer> threeList = new ArrayList() {{
  189. add(3);
  190. add(6);
  191. add(9);
  192. add(12);
  193. }};
  194. Integer pushTime = 0;
  195. if (oneList.contains(reminderTime)) {
  196. pushTime = oneMinutes;
  197. } else if (twoList.contains(reminderTime)) {
  198. pushTime = twoMinutes;
  199. } else if (threeList.contains(reminderTime)) {
  200. pushTime = threeMinutes;
  201. }
  202. scheduleEntity.setPushTime(DateUtil.dateAddMinutes(scheduleEntity.getStartDay(), pushTime));
  203. } else {
  204. Integer reminderTime = scheduleEntity.getReminderTime() > 0 ? scheduleEntity.getReminderTime() : 0;
  205. scheduleEntity.setPushTime(DateUtil.dateAddMinutes(scheduleEntity.getStartDay(), -reminderTime));
  206. }
  207. }
  208. listAll.add(scheduleEntity);
  209. }
  210. List<ScheduleJobModel> scheduleJobList = new ArrayList<>();
  211. String id = "";
  212. for (int i = 0; i < listAll.size(); i++) {
  213. String randomId = idList.size() > 0 && idList.size() - 1 >= i ? idList.get(i) : RandomUtil.uuId();
  214. if (StringUtil.isEmpty(id)) {
  215. id = randomId;
  216. }
  217. ScheduleNewEntity scheduleEntity = listAll.get(i);
  218. scheduleEntity.setId(randomId);
  219. scheduleEntity.setCreatorTime(new Date());
  220. scheduleEntity.setCreatorUserId(entity.getCreatorUserId());
  221. scheduleEntity.setGroupId(groupId);
  222. scheduleEntity.setEnabledMark(1);
  223. this.saveOrUpdate(scheduleEntity);
  224. for (String toUserId : toUserIds) {
  225. ScheduleNewUserEntity userEntity = new ScheduleNewUserEntity();
  226. userEntity.setScheduleId(scheduleEntity.getId());
  227. userEntity.setToUserId(toUserId);
  228. userEntity.setEnabledMark(1);
  229. userEntity.setType(!isUser && entity.getCreatorUserId().equals(toUserId) ? 1 : 2);
  230. scheduleNewUserService.create(userEntity);
  231. }
  232. boolean isTime = ObjectUtil.isNotEmpty(scheduleEntity.getPushTime()) && scheduleEntity.getPushTime().getTime() >= System.currentTimeMillis();
  233. ScheduleJobModel jobModel = new ScheduleJobModel();
  234. jobModel.setId(scheduleEntity.getId());
  235. jobModel.setScheduleTime(scheduleEntity.getPushTime());
  236. jobModel.setUserInfo(userInfo);
  237. jobModel.setUserList(toUserIds);
  238. if (isTime) {
  239. scheduleJobList.add(jobModel);
  240. }
  241. //操作日志
  242. ScheduleLogEntity logEntity = JsonUtil.getJsonToBean(entity, ScheduleLogEntity.class);
  243. logEntity.setOperationType(operationType);
  244. logEntity.setUserId(JsonUtil.getObjectToString(toUserIds));
  245. logEntity.setScheduleId(scheduleEntity.getId());
  246. scheduleLogService.create(logEntity);
  247. }
  248. if ("1".equals(operationType)) {
  249. ScheduleDetailModel model = new ScheduleDetailModel();
  250. model.setGroupId(groupId);
  251. model.setId(id);
  252. model.setType("2");
  253. UserInfo info = JsonUtil.getJsonToBean(userInfo, UserInfo.class);
  254. UserEntity user = userService.getInfo(entity.getCreatorUserId());
  255. if (null != user) {
  256. info.setUserId(user.getId());
  257. info.setUserName(user.getRealName());
  258. info.setUserAccount(user.getAccount());
  259. }
  260. if (StringUtil.isNotBlank(id)) {
  261. msg(toUserIds, info, model, entity, "PZXTRC001", "2");
  262. }
  263. }
  264. //推送任务调度
  265. job(scheduleJobList);
  266. }
  267. @Override
  268. @DSTransactional
  269. public boolean update(String id, ScheduleNewEntity entity, List<String> toUserIds, String type) throws WorkFlowException {
  270. UserInfo userInfo = UserProvider.getUser();
  271. ScheduleNewEntity info = getInfo(id);
  272. boolean flag = false;
  273. String groupId = RandomUtil.uuId();
  274. if (info != null) {
  275. //删除一个还是多个
  276. String delGroupId = info.getGroupId();
  277. Date startDay = "2".equals(type) ? info.getStartDay() : null;
  278. List<ScheduleNewEntity> deleteList = "1".equals(type) ? new ArrayList() {{
  279. add(info);
  280. }} : getList(delGroupId, startDay);
  281. repeat(type, info);
  282. updateStartDay(delGroupId, type, startDay);
  283. List<String> scheduleIdList = deleteList.stream().map(ScheduleNewEntity::getId).collect(Collectors.toList());
  284. deleteScheduleList(scheduleIdList);
  285. create(entity, toUserIds, groupId, "2", scheduleIdList);
  286. ScheduleDetailModel detailModel = new ScheduleDetailModel();
  287. detailModel.setGroupId(groupId);
  288. List<ScheduleNewEntity> groupList = getGroupList(detailModel);
  289. ScheduleDetailModel model = new ScheduleDetailModel();
  290. model.setGroupId(groupId);
  291. model.setId(groupList.size() > 0 ? groupList.get(0).getId() : id);
  292. model.setType("2");
  293. entity.setSend("");
  294. msg(toUserIds, userInfo, model, entity, "PZXTRC002", "2");
  295. flag = true;
  296. }
  297. return flag;
  298. }
  299. @Override
  300. @DSTransactional
  301. public void deleteScheduleList(List<String> idList) {
  302. if (idList.size() > 0) {
  303. QueryWrapper<ScheduleNewEntity> queryWrapper = new QueryWrapper<>();
  304. queryWrapper.lambda().in(ScheduleNewEntity::getId, idList);
  305. this.setIgnoreLogicDelete().remove(queryWrapper);
  306. this.clearIgnoreLogicDelete();
  307. scheduleNewUserService.deleteByScheduleId(idList);
  308. scheduleLogService.delete(idList, "3");
  309. }
  310. }
  311. @Override
  312. public boolean update(String id, ScheduleNewEntity entity) {
  313. entity.setId(id);
  314. return updateById(entity);
  315. }
  316. @Override
  317. @DSTransactional
  318. public void delete(ScheduleNewEntity entity, String type) {
  319. if (entity != null) {
  320. UserInfo userInfo = UserProvider.getUser();
  321. String userId = userInfo.getUserId();
  322. String groupId = entity.getGroupId();
  323. String delGroupId = entity.getGroupId();
  324. Date startDay = "2".equals(type) ? entity.getStartDay() : null;
  325. List<ScheduleNewEntity> deleteList = "1".equals(type) ? new ArrayList() {{
  326. add(entity);
  327. }} : getList(delGroupId, startDay);
  328. List<String> scheduleIdList = deleteList.stream().map(ScheduleNewEntity::getId).collect(Collectors.toList());
  329. if (entity.getCreatorUserId().equals(userId)) {
  330. repeat(type, entity);
  331. List<String> toUserIds = scheduleNewUserService.getList(entity.getId(), null).stream().map(ScheduleNewUserEntity::getToUserId).collect(Collectors.toList());
  332. deleteScheduleList(scheduleIdList);
  333. ScheduleDetailModel model = new ScheduleDetailModel();
  334. model.setGroupId(groupId);
  335. model.setId(entity.getId());
  336. model.setType("3");
  337. entity.setSend("");
  338. msg(toUserIds, userInfo, model, entity, "PZXTRC003", "2");
  339. } else {
  340. //操作日志
  341. scheduleLogService.delete(scheduleIdList, "4");
  342. scheduleNewUserService.deleteByUserId(scheduleIdList);
  343. // ScheduleDetailModel model = new ScheduleDetailModel();
  344. // model.setGroupId(groupId);
  345. // model.setId(entity.getId());
  346. // model.setType("3");
  347. // List<String> toUserIds = new ArrayList(){{{{add(userId);}}}};
  348. // msg(toUserIds, userInfo, model, entity, "PZXTRC003" , "2");
  349. }
  350. }
  351. }
  352. @Override
  353. public void scheduleMessage(ScheduleJobModel scheduleModel) {
  354. ScheduleNewEntity info = getInfo(scheduleModel.getId());
  355. if (info != null) {
  356. List<ScheduleNewEntity> listAll = new ArrayList<>();
  357. listAll.add(info);
  358. for (ScheduleNewEntity entity : listAll) {
  359. UserInfo userInfo = scheduleModel.getUserInfo();
  360. UserEntity userEntity = userService.getInfo(entity.getCreatorUserId());
  361. List<String> toUserIds = scheduleNewUserService.getList(entity.getId(), null).stream().map(ScheduleNewUserEntity::getToUserId).collect(Collectors.toList());
  362. ScheduleDetailModel model = new ScheduleDetailModel();
  363. model.setGroupId(entity.getGroupId());
  364. model.setId(entity.getId());
  365. if (userEntity != null) {
  366. userInfo.setUserId(userEntity.getId());
  367. userInfo.setUserName(userEntity.getRealName());
  368. }
  369. model.setType("1");
  370. msg(toUserIds, userInfo, model, entity, "PZXTRC001", "2");
  371. }
  372. }
  373. }
  374. private void time(ScheduleNewEntity entity) {
  375. // 判断是否全天
  376. if (entity.getAllDay() != 1) {
  377. String startDate = DateUtil.dateToString(entity.getStartDay(), "yyyy-MM-dd") + " " + entity.getStartTime() + ":00";
  378. Date star = DateUtil.stringToDate(startDate);
  379. entity.setStartDay(star);
  380. if (entity.getDuration() != -1) {
  381. Date end = DateUtil.dateAddMinutes(entity.getStartDay(), entity.getDuration());
  382. entity.setEndDay(end);
  383. } else {
  384. String endDate = DateUtil.dateToString(entity.getEndDay(), "yyyy-MM-dd") + " " + entity.getEndTime() + ":00";
  385. Date end = DateUtil.stringToDate(endDate);
  386. entity.setEndDay(end);
  387. }
  388. } else {
  389. String startDate = DateUtil.dateToString(entity.getStartDay(), "yyyy-MM-dd") + " " + "00:00:00";
  390. Date star = DateUtil.stringToDate(startDate);
  391. entity.setStartDay(star);
  392. entity.setStartTime("00:00");
  393. String endDate = DateUtil.dateToString(entity.getEndDay(), "yyyy-MM-dd") + " " + "23:59:59";
  394. Date end = DateUtil.stringToDate(endDate);
  395. entity.setEndDay(end);
  396. entity.setEndTime("23:59");
  397. }
  398. Date repeatTime = entity.getRepeatTime();
  399. if (repeatTime != null) {
  400. String repeat = DateUtil.dateToString(repeatTime, "yyyy-MM-dd") + " " + "23:59:59";
  401. Date repeatDate = DateUtil.stringToDate(repeat);
  402. entity.setRepeatTime(repeatDate);
  403. }
  404. }
  405. private void msg(List<String> toUserIds, UserInfo userInfo, ScheduleDetailModel model, ScheduleNewEntity entity, String templateId, String type) {
  406. Map<String, Object> parameterMap = new HashMap<>();
  407. parameterMap.put("@Title", entity.getTitle());
  408. parameterMap.put("@CreatorUserName", userInfo.getUserName() + "/" + userInfo.getUserAccount());
  409. parameterMap.put("@SendTime", DateUtil.getNow().substring(11));
  410. parameterMap.put("@Content", StringUtil.isNotEmpty(entity.getContent()) ? entity.getContent() : "");
  411. parameterMap.put("@StartDate", DateUtil.daFormat(entity.getStartDay()));
  412. parameterMap.put("@StartTime", entity.getStartTime());
  413. parameterMap.put("@EndDate", DateUtil.daFormat(entity.getEndDay()));
  414. parameterMap.put("@EndTime", entity.getEndTime());
  415. parameterMap.put("Title", entity.getTitle());
  416. parameterMap.put("CreatorUserName", userInfo.getUserName());
  417. parameterMap.put("Content", StringUtil.isNotEmpty(entity.getContent()) ? entity.getContent() : "");
  418. parameterMap.put("StartDate", DateUtil.daFormat(entity.getStartDay()));
  419. parameterMap.put("StartTime", entity.getStartTime());
  420. parameterMap.put("EndDate", DateUtil.daFormat(entity.getEndDay()));
  421. parameterMap.put("EndTime", entity.getEndTime());
  422. SentMessageForm sentMessageForm = new SentMessageForm();
  423. sentMessageForm.setToUserIds(toUserIds);
  424. sentMessageForm.setUserInfo(userInfo);
  425. sentMessageForm.setParameterMap(parameterMap);
  426. sentMessageForm.setTitle(entity.getTitle());
  427. sentMessageForm.setTemplateId(StringUtil.isNotEmpty(entity.getSend()) ? entity.getSend() : templateId);
  428. sentMessageForm.setContent(JsonUtil.getObjectToString(model));
  429. Map<String, String> contentMsg = JsonUtil.entityToMaps(model);
  430. sentMessageForm.setContentMsg(contentMsg);
  431. sentMessageForm.setId(model.getId());
  432. sentMessageForm.setType(4);
  433. sentMessageUtil.sendDelegateMsg(sentMessageForm);
  434. }
  435. private void job(List<ScheduleJobModel> scheduleJobList) {
  436. scheduleJobUtil.insertRedis(scheduleJobList, redisUtil);
  437. }
  438. private void updateStartDay(String groupId, String type, Date startDay) {
  439. if ("2".equals(type)) {
  440. Date startData = DateUtil.stringToDate(DateUtil.dateToString(startDay, "yyyy-MM-dd") + " " + "00:00:00");
  441. List<ScheduleNewEntity> startDayList = getStartDayList(groupId, startData);
  442. if (startDayList.size() > 0) {
  443. Date start = startDayList.get(0).getStartDay();
  444. for (ScheduleNewEntity entity : startDayList) {
  445. Date repeatTime = entity.getRepeatTime();
  446. if (repeatTime != null) {
  447. String repeat = DateUtil.dateToString(start, "yyyy-MM-dd") + " " + "23:59:59";
  448. Date repeatDate = DateUtil.stringToDate(repeat);
  449. entity.setRepeatTime(repeatDate);
  450. update(entity.getId(), entity);
  451. }
  452. }
  453. }
  454. }
  455. }
  456. private void repeat(String type, ScheduleNewEntity info) {
  457. Date repeat = info.getRepeatTime();
  458. String groupId = info.getGroupId();
  459. List<String> typeList = new ArrayList() {{
  460. add("2");
  461. }};
  462. if (typeList.contains(type) && ObjectUtil.isNotEmpty(repeat)) {
  463. List<ScheduleNewEntity> list = getList(groupId, null);
  464. List<ScheduleNewEntity> collect = list.stream().filter(t -> t.getStartDay().getTime() < info.getStartDay().getTime()).sorted(Comparator.comparing(ScheduleNewEntity::getStartDay).reversed()).collect(Collectors.toList());
  465. for (int i = 0; i < collect.size(); i++) {
  466. ScheduleNewEntity scheduleNewEntity = collect.get(i);
  467. String dateString = DateUtil.getDateString(collect.get(0).getStartDay(), "yyyy-MM-dd") + " 23:59:59";
  468. Date repeatTime = DateUtil.stringToDate(dateString);
  469. scheduleNewEntity.setRepeatTime(repeatTime);
  470. update(scheduleNewEntity.getId(), scheduleNewEntity);
  471. }
  472. }
  473. }
  474. }