luojun 2 роки тому
батько
коміт
5b5867a50d

+ 5 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java

@@ -5,6 +5,8 @@ import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -14,6 +16,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
+import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -29,6 +32,7 @@ import com.xunmei.system.mapper.SysWorkTimeSetMapper;
 import com.xunmei.system.service.ISysOrgService;
 import com.xunmei.system.service.ISysWorkTimeService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
@@ -476,4 +480,5 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
     public int checkWorkTime(Map<String, Object> param) {
         return sysWorkTimeMapper.checkWorkTime(param);
     }
+
 }

+ 100 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

@@ -8,6 +8,7 @@ import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -553,4 +554,103 @@ 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);
+//            }
+//        }
+//
+//        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);
+//        }
+//
+//    }
 }