|
|
@@ -552,103 +552,173 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
public int deleteSysWorkTimeSetById(Long id) {
|
|
|
return sysWorkTimeSetMapper.deleteById(id);
|
|
|
}
|
|
|
-// /**
|
|
|
-// * 生成下个月的作息
|
|
|
-// */
|
|
|
-// @Transactional(rollbackFor = Exception.class)
|
|
|
-// public void generateNextMonth() {
|
|
|
-// Calendar calendar = Calendar.getInstance();
|
|
|
-// calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
-// System.out.println("============================ work_time_job 1================== : " + calendar.getTime());
|
|
|
-//
|
|
|
-// calendar.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
-// calendar.add(Calendar.MONTH, 1);
|
|
|
-// Integer year = calendar.get(Calendar.YEAR);
|
|
|
-// generateWorkTime(year, calendar.get(Calendar.MONTH));
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Transactional(rollbackFor = Exception.class)
|
|
|
-// public void generateWorkTime(int year, int month) {
|
|
|
-// Calendar calendar = Calendar.getInstance();
|
|
|
-// calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
-// calendar.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
-// calendar.set(Calendar.MONTH, month);
|
|
|
-// calendar.set(Calendar.YEAR, year);
|
|
|
-// System.out.println("============================ work_time_job 1================== : " + calendar.getTime());
|
|
|
-// List<SysWorkTimeSet> workTimes = this.list(new LambdaQueryWrapper<SysWorkTimeSet>().eq(SysWorkTimeSet::getYear,year));
|
|
|
-// Map<Long,List<SysWorkTimeSet>> group= workTimes.stream()
|
|
|
-// .sorted(Comparator.comparing(SysWorkTimeSet::getEffectiveDate).reversed())
|
|
|
-// .collect(Collectors.groupingBy(w->w.getOrgId()));
|
|
|
-//
|
|
|
-// final Date date = com.xunmei.common.core.utils.DateHelper.getDate(calendar.getTime());
|
|
|
-// System.out.println("============================ work_time_job 2================== : " + date);
|
|
|
-// final com.xunmei.common.core.utils.DateHelper dateTime = new com.xunmei.common.core.utils.DateHelper(date);
|
|
|
-// final Date start = dateTime.monthStart();
|
|
|
-// final Date end = dateTime.monthEnd();
|
|
|
-// final List<DateTime> dateTimeList = DateUtil.rangeToList(start, end, DateField.DAY_OF_MONTH);
|
|
|
-// System.out.println(JSON.toJSONString(dateTimeList));
|
|
|
-//// HolidayDto holidayDto = new HolidayDto();
|
|
|
-//// holidayDto.setYear(year);
|
|
|
-//// List<Holiday> holidayList = this.holidayService.all(holidayDto);
|
|
|
-//// List<Date> holidayDates = null;
|
|
|
-//// if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(holidayList)) {
|
|
|
-//// holidayDates = holidayList.stream().map(p -> p.getYmdDate()).collect(Collectors.toList());
|
|
|
-//// }
|
|
|
-// List<SysWorkTime> workTimeEditDtoList = new ArrayList<>();
|
|
|
-// for (DateTime time : dateTimeList) {
|
|
|
-// Date date1 = time.toJdkDate();
|
|
|
-// System.out.println("date1:"+date1);
|
|
|
-// for(Long orgId:group.keySet()) {
|
|
|
-// Optional<SysWorkTimeSet> ws= group.get(orgId).stream().filter(w->date1.after(w.getEffectiveDate())||DateUtil.isSameDay(date1,w.getEffectiveDate())).findFirst();
|
|
|
-// if(!ws.isPresent()){
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// SysWorkTimeSet set=ws.get();
|
|
|
-// List<SysWorkTimeSetDayofweek> temp=ws.get().getDayOfWeeks();
|
|
|
-// int i = time.dayOfWeek();
|
|
|
-// SysWorkTimeSetDayofweek dayOfWeekSet = temp.stream().filter(e->e.getDayOfWeek().equals(i)).findFirst().get();
|
|
|
-// boolean isEnable = ObjectUtil.isNotNull(dayOfWeekSet) && dayOfWeekSet.getIsWorkday();
|
|
|
-// WorkTimeEditDto dto = new WorkTimeEditDto();
|
|
|
-// dto.setDate(time);
|
|
|
-// dto.setOrgId(orgId);
|
|
|
-// dto.setIsEnable(isEnable);
|
|
|
-// if (ObjectUtil.isNull(dayOfWeekSet) || !dayOfWeekSet.getIsWorkday()) {
|
|
|
-// Optional<WorkTimeSetDayOfWeek> firstWorkDay = set.getDayOfWeeks().stream().filter(f -> f.getIsWorkday()).findFirst();
|
|
|
-// if (firstWorkDay.isPresent()) {
|
|
|
-// dayOfWeekSet = firstWorkDay.get();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// //dto.setIsEnable(dayOfWeekSet.getIsWorkday());
|
|
|
-// workTimeEditDtoList.add(dto);
|
|
|
-// dto.setWorkTime(dayOfWeekSet.getWorkTime());
|
|
|
-// dto.setWorkOffTime(dayOfWeekSet.getWorkOffTime());
|
|
|
-// dto.setOpenTime(dayOfWeekSet.getOpenTime());
|
|
|
-// dto.setCloseTime(dayOfWeekSet.getCloseTime());
|
|
|
-// dto.setNoonbreakStart(dayOfWeekSet.getNoonbreakStart());
|
|
|
-// dto.setNoonbreakEnd(dayOfWeekSet.getNoonbreakEnd());
|
|
|
-// workTimeEditDtoList.add(dto);
|
|
|
-// }
|
|
|
+ /**
|
|
|
+ * 生成下个月的作息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void generateNextMonth() {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
+ System.out.println("============================ work_time_job 1================== : " + calendar.getTime());
|
|
|
+
|
|
|
+ calendar.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ calendar.add(Calendar.MONTH, 1);
|
|
|
+ int year = calendar.get(Calendar.YEAR);
|
|
|
+ generateWorkTime(year, calendar.get(Calendar.MONTH));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void generateWorkTime(int year, int month) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
+ calendar.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ calendar.set(Calendar.MONTH, month);
|
|
|
+ calendar.set(Calendar.YEAR, year);
|
|
|
+ System.out.println("============================ work_time_job 1================== : " + calendar.getTime());
|
|
|
+ List<SysWorkTimeSet> workTimes = this.list(new LambdaQueryWrapper<SysWorkTimeSet>().eq(SysWorkTimeSet::getYear,year));
|
|
|
+ Map<Long,List<SysWorkTimeSet>> group= workTimes.stream()
|
|
|
+ .sorted(Comparator.comparing(SysWorkTimeSet::getEffectiveDate).reversed())
|
|
|
+ .collect(Collectors.groupingBy(SysWorkTimeSet::getOrgId));
|
|
|
+
|
|
|
+ final Date date = com.xunmei.common.core.utils.DateHelper.getDate(calendar.getTime());
|
|
|
+ System.out.println("============================ work_time_job 2================== : " + date);
|
|
|
+ final com.xunmei.common.core.utils.DateHelper dateTime = new com.xunmei.common.core.utils.DateHelper(date);
|
|
|
+ final Date start = dateTime.monthStart();
|
|
|
+ final Date end = dateTime.monthEnd();
|
|
|
+ final List<DateTime> dateTimeList = DateUtil.rangeToList(start, end, DateField.DAY_OF_MONTH);
|
|
|
+ System.out.println(JSON.toJSONString(dateTimeList));
|
|
|
+// HolidayDto holidayDto = new HolidayDto();
|
|
|
+// holidayDto.setYear(year);
|
|
|
+// List<Holiday> holidayList = this.holidayService.all(holidayDto);
|
|
|
+// List<Date> holidayDates = null;
|
|
|
+// if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(holidayList)) {
|
|
|
+// holidayDates = holidayList.stream().map(p -> p.getYmdDate()).collect(Collectors.toList());
|
|
|
// }
|
|
|
-//
|
|
|
-// Map<Long,List<WorkTimeEditDto>> groupDay= workTimeEditDtoList.stream().collect(Collectors.groupingBy(w->w.getOrgId()));
|
|
|
-// //获取所有机构下个月的按日配置的作息
|
|
|
-// List<WorkTimeNewVo> list = new ArrayList<>();
|
|
|
-// list = objectMapper.getNextMonthWorkTime(DateUtil.format(start, "yyyy-MM"));
|
|
|
-// for(Long orgId:groupDay.keySet()){
|
|
|
-// List<WorkTimeEditDto> workTimeEditDtos = groupDay.get(orgId);
|
|
|
-// List<WorkTimeNewVo> workTimeNewVos = list.stream().filter(w -> w.getOrgId().equals(orgId)).collect(Collectors.toList());
|
|
|
-// //去掉workTimeEditDtos中机构与日期在workTimeNewVos中存在的数据
|
|
|
-// List<WorkTimeEditDto> list1 = null;
|
|
|
-// if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(workTimeNewVos)){
|
|
|
-// list1 = workTimeEditDtos.stream().filter(s -> {
|
|
|
-// return workTimeNewVos.stream().noneMatch(f -> f.getOrgId().equals(s.getOrgId()) && f.getYmdDate().equals(s.getDate()));
|
|
|
-// }).collect(Collectors.toList());
|
|
|
-// }else{
|
|
|
-// list1 = workTimeEditDtos;
|
|
|
-// }
|
|
|
-//
|
|
|
-// batch(orgId, date, list1);
|
|
|
+ List<SysWorkTime> workTimeEditDtoList = new ArrayList<>();
|
|
|
+ for (DateTime time : dateTimeList) {
|
|
|
+ Date date1 = time.toJdkDate();
|
|
|
+ System.out.println("date1:"+date1);
|
|
|
+ for(Long orgId:group.keySet()) {
|
|
|
+ Optional<SysWorkTimeSet> ws= group.get(orgId).stream().filter(w->date1.after(w.getEffectiveDate())||DateUtil.isSameDay(date1,w.getEffectiveDate())).findFirst();
|
|
|
+ if(!ws.isPresent()){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ SysWorkTimeSet set=ws.get();
|
|
|
+ List<SysWorkTimeSetDayofweek> temp = this.sysWorkTimeSetDayofweekMapper.selectList(new LambdaQueryWrapper<SysWorkTimeSetDayofweek>().eq(SysWorkTimeSetDayofweek::getWorkTimeSetId, set.getId()));
|
|
|
+ set.setDayOfWeeks(temp);
|
|
|
+ Long i = (long) time.dayOfWeek();
|
|
|
+ SysWorkTimeSetDayofweek dayOfWeekSet = temp.stream().filter(e->e.getDayOfWeek().equals(i)).findFirst().orElse(null);;
|
|
|
+ boolean isEnable = ObjectUtil.isNotNull(dayOfWeekSet) && dayOfWeekSet.getIsWorkday()>0;
|
|
|
+ SysWorkTime dto = new SysWorkTime();
|
|
|
+ dto.setDate(time);
|
|
|
+ dto.setOrgId(orgId);
|
|
|
+ dto.setIsEnable(isEnable?1L:0L);
|
|
|
+ if (ObjectUtil.isNull(dayOfWeekSet) || !(dayOfWeekSet.getIsWorkday()>0)) {
|
|
|
+ Optional<SysWorkTimeSetDayofweek> firstWorkDay = set.getDayOfWeeks().stream().filter(f -> f.getIsWorkday()>0).findFirst();
|
|
|
+ if (firstWorkDay.isPresent()) {
|
|
|
+ dayOfWeekSet = firstWorkDay.orElseGet(SysWorkTimeSetDayofweek::new);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //dto.setIsEnable(dayOfWeekSet.getIsWorkday());
|
|
|
+// workTimeEditDtoList.add(dto);
|
|
|
+ dto.setWorkTime(dayOfWeekSet.getWorkTime());
|
|
|
+ dto.setWorkOffTime(dayOfWeekSet.getWorkOffTime());
|
|
|
+ dto.setOpenTime(dayOfWeekSet.getOpenTime());
|
|
|
+ dto.setCloseTime(dayOfWeekSet.getCloseTime());
|
|
|
+ dto.setNoonbreakStart(dayOfWeekSet.getNoonbreakStart());
|
|
|
+ dto.setNoonbreakEnd(dayOfWeekSet.getNoonbreakEnd());
|
|
|
+ workTimeEditDtoList.add(dto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Long,List<SysWorkTime>> groupDay= workTimeEditDtoList.stream().collect(Collectors.groupingBy(SysWorkTime::getOrgId));
|
|
|
+ //获取所有机构下个月的按日配置的作息
|
|
|
+ List<SysWorkTime> list = new ArrayList<>();
|
|
|
+ list = this.sysWorkTimeMapper.selectList(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getIsManual,1L).likeRight(SysWorkTime::getYmdDate,DateUtil.format(start, "yyyy-MM")));
|
|
|
+ for(Long orgId:groupDay.keySet()){
|
|
|
+ List<SysWorkTime> workTimeEditDtos = groupDay.get(orgId);
|
|
|
+ List<SysWorkTime> workTimeNewVos = list.stream().filter(w -> w.getOrgId().equals(orgId)).collect(Collectors.toList());
|
|
|
+ //去掉workTimeEditDtos中机构与日期在workTimeNewVos中存在的数据
|
|
|
+ List<SysWorkTime> list1 = null;
|
|
|
+ if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(workTimeNewVos)){
|
|
|
+ list1 = workTimeEditDtos.stream().filter(s -> {
|
|
|
+ return workTimeNewVos.stream().noneMatch(f -> f.getOrgId().equals(s.getOrgId()) && f.getYmdDate().equals(s.getDate()));
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ list1 = workTimeEditDtos;
|
|
|
+ }
|
|
|
+
|
|
|
+ batch(orgId, date, list1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * @param orgId
|
|
|
+ * @param month
|
|
|
+ * @param workTimeEditDtoList
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void batch(final Long orgId, final Date month, final List<SysWorkTime> workTimeEditDtoList) {
|
|
|
+ // 小于现在时间的不允许修改
|
|
|
+ final Date now = DateUtil.beginOfDay(new Date());
|
|
|
+ List<SysWorkTime> workTimeList = StreamHelper.to(workTimeEditDtoList, workTimeEditDto -> {
|
|
|
+ final Date workDate = workTimeEditDto.getDate();
|
|
|
+ if (workTimeEditDto.getIsEnable() == null || workDate.before(now)) {
|
|
|
+// WORKTIMEBUSINESSLOG.info("作息时间[ {} ]小于现在时间, 不允许改变", workDate);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ final SysWorkTime workTime = new SysWorkTime();
|
|
|
+ workTime.setOrgId(orgId);
|
|
|
+ workTime.setYmd(Ymd.of(workTimeEditDto.getDate()));
|
|
|
+ workTime.setYmdDate(workTime.getYmd().getDate());
|
|
|
+ workTime.setYmdDay(Long.valueOf(workTime.getYmd().getDay()));
|
|
|
+ workTime.setYmdHalfyear(Long.valueOf(workTime.getYmd().getHalfyear()));
|
|
|
+ workTime.setYmdHour(Long.valueOf(workTime.getYmd().getHour()));
|
|
|
+ workTime.setYmdMinute(Long.valueOf(workTime.getYmd().getMinute()));
|
|
|
+ workTime.setYmdMonth(Long.valueOf(workTime.getYmd().getMonth()));
|
|
|
+ workTime.setYmdQuarter(Long.valueOf(workTime.getYmd().getQuarter()));
|
|
|
+ workTime.setYmdWeek(Long.valueOf(workTime.getYmd().getWeek()));
|
|
|
+ workTime.setYmdYear(Long.valueOf(workTime.getYmd().getYear()));
|
|
|
+ BeanHelper.copyProperties(workTime, workTimeEditDto);
|
|
|
+ workTime.setIsManual(0L);
|
|
|
+ workTime.setIsEnable(workTimeEditDto.getIsEnable());
|
|
|
+ if(!(workTimeEditDto.getIsEnable()>0)){
|
|
|
+ workTime.setWorkTime(null);
|
|
|
+ workTime.setWorkOffTime(null);
|
|
|
+ workTime.setOpenTime(null);
|
|
|
+ workTime.setCloseTime(null);
|
|
|
+ workTime.setNoonbreakStart(null);
|
|
|
+ workTime.setNoonbreakEnd(null);
|
|
|
+ }
|
|
|
+ return workTime;
|
|
|
+ }, true);
|
|
|
+
|
|
|
+ //
|
|
|
+ this.workTimeService.saveOrUpdateBatch(workTimeList);
|
|
|
+
|
|
|
+// WorkTimeMonthFindMonthDto request = new WorkTimeMonthFindMonthDto();
|
|
|
+// request.setMonth(month);
|
|
|
+// request.setOrgId(orgId);
|
|
|
+// SysWorkTimeMonth db = workTimeMonthService.findMonthTime(request);
|
|
|
+// if (db != null) {
|
|
|
+// int openCount = (int) workTimeEditDtoList.stream().filter(w -> w.getIsEnable() != null && w.getIsEnable() == true).count();
|
|
|
+// int closeCount = (int) workTimeEditDtoList.stream().filter(w -> w.getIsEnable() != null && w.getIsEnable() == false).count();
|
|
|
+// ;
|
|
|
+//// for (final WorkTime workTime : workTimeList) {
|
|
|
+//// if (workTime.getIsEnable()) {
|
|
|
+//// openCount++;
|
|
|
+//// } else {
|
|
|
+//// closeCount++;
|
|
|
+//// }
|
|
|
+//// }
|
|
|
+// db.setUpdateTime(new Date());
|
|
|
+// db.setCloseCount((long) closeCount);
|
|
|
+// db.setOpenCount((long) openCount);
|
|
|
+// return this.workTimeMonthService.save(db);
|
|
|
+// } else {
|
|
|
+// return this.workTimeMonthService.save(WorkTimeMonth.of(orgId, month, workTimeList));
|
|
|
// }
|
|
|
-//
|
|
|
-// }
|
|
|
+
|
|
|
+ }
|
|
|
}
|