|
|
@@ -276,8 +276,8 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
for (Long oid :
|
|
|
orgIds) {
|
|
|
List<SysWorkTimeSet> sysWorkTimeSets = baseMapper.selectList(new LambdaQueryWrapper<SysWorkTimeSet>().eq(SysWorkTimeSet::getOrgId, oid).eq(SysWorkTimeSet::getEffectiveDate, request.getEffectiveDate()));
|
|
|
-
|
|
|
- if (sysWorkTimeSets.size()>0){
|
|
|
+//如果id为空表示是新增,需要判断是否存在相同机构相同时间的模板
|
|
|
+ if (request.getId() == null && sysWorkTimeSets.size() > 0) {
|
|
|
return error("机构'" + orgService.getById(oid).getName() + "'已存在选择时间的作息模板");
|
|
|
}
|
|
|
}
|
|
|
@@ -292,6 +292,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
SysWorkTimeSet set = null;
|
|
|
SysOrg org = null;
|
|
|
List<SysWorkTimeSetDayofweek> dayOfWeeks = new ArrayList<>();
|
|
|
+ Set<Long> workTimeSetIds = new HashSet<>();
|
|
|
for (Long orgId : orgIds) {
|
|
|
if (request.getId() != null) {
|
|
|
set = sysWorkTimeSetMapper.selectById(request.getId());
|
|
|
@@ -328,9 +329,10 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
dayOfWeeks.addAll(tmp);
|
|
|
set.setDayOfWeeks(dayOfWeeks);
|
|
|
sets.add(set);
|
|
|
+ workTimeSetIds.add(id);
|
|
|
}
|
|
|
-
|
|
|
- // workTimeSetDayOfWeekRepository.deleteByWorkTimeSetIds(oldWorkTimeSetIds);
|
|
|
+ //清除可能存在的旧作息数据
|
|
|
+ sysWorkTimeSetDayofweekMapper.delete(new LambdaQueryWrapper<SysWorkTimeSetDayofweek>().in(SysWorkTimeSetDayofweek::getWorkTimeSetId, workTimeSetIds));
|
|
|
for (SysWorkTimeSetDayofweek s :
|
|
|
dayOfWeeks) {
|
|
|
sysWorkTimeSetDayofweekMapper.insert(s);
|
|
|
@@ -419,7 +421,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
Date effectiveDateNext = dateList.get(index + 1);
|
|
|
//取出workTimeEditDtoListAll中ymd_date在EffectiveDate和effectiveDateNext之间的数据
|
|
|
List<SysWorkTime> workTimeEditDtoList = workTimeEditDtoListAll.stream().filter(f -> f.getDate().getTime() >= effectiveDate.getTime() && f.getDate().getTime() < effectiveDateNext.getTime()).collect(Collectors.toList());
|
|
|
- List<Date> remDates=workTimeEditDtoList.stream().map(SysWorkTime::getYmdDate).collect(Collectors.toList());
|
|
|
+ List<Date> remDates = workTimeEditDtoList.stream().map(SysWorkTime::getYmdDate).collect(Collectors.toList());
|
|
|
workTimeService.remove(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).in(SysWorkTime::getYmdDate, remDates).eq(SysWorkTime::getIsManual, 0));
|
|
|
batchnew(orgId, workTimeEditDtoList, list);
|
|
|
} else {
|
|
|
@@ -464,8 +466,10 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
return workTime;
|
|
|
}, true);
|
|
|
|
|
|
-
|
|
|
- List<SysWorkTime> exit = workTimeService.getBaseMapper().selectList(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).ge(SysWorkTime::getYmdDate, workTimeList.get(0).getDate()).eq(SysWorkTime::getIsManual, 1));
|
|
|
+ //获取当前时间以后的手动配置的作息
|
|
|
+ List<SysWorkTime> exit = workTimeService.getBaseMapper().selectList(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).ge(SysWorkTime::getYmdDate, workTimeList.get(0).getDate()).eq(SysWorkTime::getIsManual, 1));
|
|
|
+ //删除当前时间以后的模板生成的作息
|
|
|
+ sysWorkTimeMapper.delete(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getOrgId, orgId).ge(SysWorkTime::getYmdDate, workTimeList.get(0).getDate()).eq(SysWorkTime::getIsManual, 0));
|
|
|
//去掉workTimeList中orgId和ymd相同的数据
|
|
|
List<SysWorkTime> list1 = workTimeList.stream().filter(s -> {
|
|
|
return list.stream().noneMatch(f -> f.getOrgId().equals(s.getOrgId()) && f.getYmdDate().equals(s.getYmd().getDate()));
|
|
|
@@ -496,7 +500,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- list1=list1.stream().distinct().collect(Collectors.toList());
|
|
|
+ list1 = list1.stream().distinct().collect(Collectors.toList());
|
|
|
workTimeService.saveOrUpdateBatch(list1);
|
|
|
|
|
|
return workTimeList;
|
|
|
@@ -558,6 +562,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
public int deleteSysWorkTimeSetById(Long id) {
|
|
|
return sysWorkTimeSetMapper.deleteById(id);
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 生成下个月的作息
|
|
|
*/
|
|
|
@@ -582,8 +587,8 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
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()
|
|
|
+ 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));
|
|
|
|
|
|
@@ -604,25 +609,26 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
List<SysWorkTime> workTimeEditDtoList = new ArrayList<>();
|
|
|
for (DateTime time : dateTimeList) {
|
|
|
Date date1 = time.toJdkDate();
|
|
|
- System.out.println("date1:"+date1);
|
|
|
+ System.out.println("date1:" + date1);
|
|
|
//for(Long orgId:group.keySet()) {
|
|
|
- for(Map.Entry<Long,List<SysWorkTimeSet>> setMap:group.entrySet()){
|
|
|
- Optional<SysWorkTimeSet> ws= setMap.getValue().stream().filter(w->date1.after(w.getEffectiveDate())||DateUtil.isSameDay(date1,w.getEffectiveDate())).findFirst();
|
|
|
- if(!ws.isPresent()){
|
|
|
+ for (Map.Entry<Long, List<SysWorkTimeSet>> setMap : group.entrySet()) {
|
|
|
+ Optional<SysWorkTimeSet> ws = setMap.getValue().stream().filter(w -> date1.after(w.getEffectiveDate()) || DateUtil.isSameDay(date1, w.getEffectiveDate())).findFirst();
|
|
|
+ if (!ws.isPresent()) {
|
|
|
continue;
|
|
|
}
|
|
|
- SysWorkTimeSet set=ws.get();
|
|
|
+ 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;
|
|
|
+ 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(setMap.getKey());
|
|
|
- dto.setIsEnable(isEnable?1L:0L);
|
|
|
- if (ObjectUtil.isNull(dayOfWeekSet) || !(dayOfWeekSet.getIsWorkday()>0)) {
|
|
|
- Optional<SysWorkTimeSetDayofweek> firstWorkDay = set.getDayOfWeeks().stream().filter(f -> f.getIsWorkday()>0).findFirst();
|
|
|
+ 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);
|
|
|
}
|
|
|
@@ -639,21 +645,21 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Map<Long,List<SysWorkTime>> groupDay= workTimeEditDtoList.stream().collect(Collectors.groupingBy(SysWorkTime::getOrgId));
|
|
|
+ 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")));
|
|
|
+ list = this.sysWorkTimeMapper.selectList(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getIsManual, 1L).likeRight(SysWorkTime::getYmdDate, DateUtil.format(start, "yyyy-MM")));
|
|
|
/*for(Long orgId:groupDay.keySet()){*/
|
|
|
- for(Map.Entry<Long,List<SysWorkTime>> dayMap:groupDay.entrySet()){
|
|
|
+ for (Map.Entry<Long, List<SysWorkTime>> dayMap : groupDay.entrySet()) {
|
|
|
List<SysWorkTime> workTimeEditDtos = dayMap.getValue();//groupDay.get(orgId);
|
|
|
List<SysWorkTime> workTimeNewVos = list.stream().filter(w -> w.getOrgId().equals(dayMap.getKey())).collect(Collectors.toList());
|
|
|
//去掉workTimeEditDtos中机构与日期在workTimeNewVos中存在的数据
|
|
|
List<SysWorkTime> list1 = null;
|
|
|
- if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(workTimeNewVos)){
|
|
|
+ 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{
|
|
|
+ } else {
|
|
|
list1 = workTimeEditDtos;
|
|
|
}
|
|
|
|
|
|
@@ -661,6 +667,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* @param orgId
|
|
|
* @param month
|
|
|
@@ -691,7 +698,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
|
|
|
BeanHelper.copyProperties(workTime, workTimeEditDto);
|
|
|
workTime.setIsManual(0L);
|
|
|
workTime.setIsEnable(workTimeEditDto.getIsEnable());
|
|
|
- if(!(workTimeEditDto.getIsEnable()>0)){
|
|
|
+ if (!(workTimeEditDto.getIsEnable() > 0)) {
|
|
|
workTime.setWorkTime(null);
|
|
|
workTime.setWorkOffTime(null);
|
|
|
workTime.setOpenTime(null);
|