wuxw
2022-10-30 c13d7af78a1fd29169c3b4c3ae3497d5706948f5
service-store/src/main/java/com/java110/store/smo/impl/ScheduleClassesStaffV1InnerServiceSMOImpl.java
@@ -16,6 +16,11 @@
package com.java110.store.smo.impl;
import com.java110.dto.scheduleClasses.ScheduleClassesDto;
import com.java110.dto.scheduleClassesDay.ScheduleClassesDayDto;
import com.java110.dto.scheduleClassesTime.ScheduleClassesTimeDto;
import com.java110.intf.store.IScheduleClassesDayV1InnerServiceSMO;
import com.java110.intf.store.IScheduleClassesV1InnerServiceSMO;
import com.java110.store.dao.IScheduleClassesStaffV1ServiceDao;
import com.java110.intf.store.IScheduleClassesStaffV1InnerServiceSMO;
import com.java110.dto.scheduleClassesStaff.ScheduleClassesStaffDto;
@@ -24,11 +29,13 @@
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.dto.user.UserDto;
import com.java110.dto.PageDto;
import com.java110.utils.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/**
@@ -45,28 +52,34 @@
    @Autowired
    private IScheduleClassesStaffV1ServiceDao scheduleClassesStaffV1ServiceDaoImpl;
    @Autowired
    private IScheduleClassesV1InnerServiceSMO scheduleClassesV1InnerServiceSMOImpl;
    @Autowired
    private IScheduleClassesDayV1InnerServiceSMO scheduleClassesDayV1InnerServiceSMOImpl;
    @Override
    public int saveScheduleClassesStaff(@RequestBody  ScheduleClassesStaffPo scheduleClassesStaffPo) {
    public int saveScheduleClassesStaff(@RequestBody ScheduleClassesStaffPo scheduleClassesStaffPo) {
        int saveFlag = scheduleClassesStaffV1ServiceDaoImpl.saveScheduleClassesStaffInfo(BeanConvertUtil.beanCovertMap(scheduleClassesStaffPo));
        return saveFlag;
    }
     @Override
    public int updateScheduleClassesStaff(@RequestBody  ScheduleClassesStaffPo scheduleClassesStaffPo) {
    @Override
    public int updateScheduleClassesStaff(@RequestBody ScheduleClassesStaffPo scheduleClassesStaffPo) {
        int saveFlag = scheduleClassesStaffV1ServiceDaoImpl.updateScheduleClassesStaffInfo(BeanConvertUtil.beanCovertMap(scheduleClassesStaffPo));
        return saveFlag;
    }
     @Override
    public int deleteScheduleClassesStaff(@RequestBody  ScheduleClassesStaffPo scheduleClassesStaffPo) {
       scheduleClassesStaffPo.setStatusCd("1");
       int saveFlag = scheduleClassesStaffV1ServiceDaoImpl.updateScheduleClassesStaffInfo(BeanConvertUtil.beanCovertMap(scheduleClassesStaffPo));
       return saveFlag;
    @Override
    public int deleteScheduleClassesStaff(@RequestBody ScheduleClassesStaffPo scheduleClassesStaffPo) {
        scheduleClassesStaffPo.setStatusCd("1");
        int saveFlag = scheduleClassesStaffV1ServiceDaoImpl.updateScheduleClassesStaffInfo(BeanConvertUtil.beanCovertMap(scheduleClassesStaffPo));
        return saveFlag;
    }
    @Override
    public List<ScheduleClassesStaffDto> queryScheduleClassesStaffs(@RequestBody  ScheduleClassesStaffDto scheduleClassesStaffDto) {
    public List<ScheduleClassesStaffDto> queryScheduleClassesStaffs(@RequestBody ScheduleClassesStaffDto scheduleClassesStaffDto) {
        //校验是否传了 分页信息
@@ -84,10 +97,11 @@
    @Override
    public int queryScheduleClassesStaffsCount(@RequestBody ScheduleClassesStaffDto scheduleClassesStaffDto) {
        return scheduleClassesStaffV1ServiceDaoImpl.queryScheduleClassesStaffsCount(BeanConvertUtil.beanCovertMap(scheduleClassesStaffDto));    }
        return scheduleClassesStaffV1ServiceDaoImpl.queryScheduleClassesStaffsCount(BeanConvertUtil.beanCovertMap(scheduleClassesStaffDto));
    }
    @Override
    public List<ScheduleClassesStaffDto> queryGroupScheduleClassesStaffs(@RequestBody  ScheduleClassesStaffDto scheduleClassesStaffDto) {
    public List<ScheduleClassesStaffDto> queryGroupScheduleClassesStaffs(@RequestBody ScheduleClassesStaffDto scheduleClassesStaffDto) {
        //校验是否传了 分页信息
@@ -101,4 +115,187 @@
        return scheduleClassesStaffs;
    }
    /**
     * 判断员工是否在上班
     *
     * @param scheduleClassesStaffDto {
     *                                staffId:xxx,
     *                                today:new Date()
     *                                }
     * @return
     */
    @Override
    public ScheduleClassesStaffDto staffIsWork(@RequestBody ScheduleClassesStaffDto scheduleClassesStaffDto) {
        //查询 排班
        ScheduleClassesStaffDto tmpScheduleClassesStaffDto = new ScheduleClassesStaffDto();
        tmpScheduleClassesStaffDto.setStaffId(scheduleClassesStaffDto.getStaffId());
        List<ScheduleClassesStaffDto> scheduleClassesStaffs = BeanConvertUtil.covertBeanList(scheduleClassesStaffV1ServiceDaoImpl.getScheduleClassesStaffInfo(BeanConvertUtil.beanCovertMap(scheduleClassesStaffDto)), ScheduleClassesStaffDto.class);
        //这里 如果没有员工排班 那么就认为 员工一直在上班
        if (scheduleClassesStaffs == null || scheduleClassesStaffs.size() < 1) {
            scheduleClassesStaffDto.setWork(true);
            return scheduleClassesStaffDto;
        }
        ScheduleClassesDto scheduleClassesDto = new ScheduleClassesDto();
        scheduleClassesDto.setScheduleId(scheduleClassesStaffs.get(0).getScheduleId());
        List<ScheduleClassesDto> scheduleClassesDtos = scheduleClassesV1InnerServiceSMOImpl.queryScheduleClassess(scheduleClassesDto);
        //这里 如果没有员工排班 那么就认为 员工一直在上班
        if (scheduleClassesDtos == null || scheduleClassesDtos.size() < 1) {
            scheduleClassesStaffDto.setWork(true);
            return scheduleClassesStaffDto;
        }
        scheduleClassesStaffDto.setWork(false);
        if (ScheduleClassesDto.SCHEDULE_TYPE_DAY.equals(scheduleClassesDtos.get(0).getScheduleType())) {
            staffIsWorkDay(scheduleClassesDtos.get(0), scheduleClassesStaffDto);
        } else if (ScheduleClassesDto.SCHEDULE_TYPE_WEEK.equals(scheduleClassesDtos.get(0).getScheduleType())) {
            staffIsWorkWeek(scheduleClassesDtos.get(0), scheduleClassesStaffDto);
        } else if (ScheduleClassesDto.SCHEDULE_TYPE_MONTH.equals(scheduleClassesDtos.get(0).getScheduleType())) {
            staffIsWorkMonth(scheduleClassesDtos.get(0), scheduleClassesStaffDto);
        } else {
            scheduleClassesStaffDto.setWork(true);
        }
        return scheduleClassesStaffDto;
    }
    /**
     * 员工是否上班 按月 排班
     * @param scheduleClassesDto
     * @param scheduleClassesStaffDto
     */
    private void staffIsWorkMonth(ScheduleClassesDto scheduleClassesDto, ScheduleClassesStaffDto scheduleClassesStaffDto) {
        Calendar today = Calendar.getInstance();
        today.setTime(scheduleClassesStaffDto.getToday());
        int day = today.get(Calendar.DAY_OF_MONTH);
        ScheduleClassesDayDto scheduleClassesDayDto = new ScheduleClassesDayDto();
        scheduleClassesDayDto.setScheduleId(scheduleClassesDto.getScheduleId());
        scheduleClassesDayDto.setDay(day + "");
        List<ScheduleClassesDayDto> scheduleClassesDayDtos = scheduleClassesDayV1InnerServiceSMOImpl.queryScheduleClassesDays(scheduleClassesDayDto);
        //设置问题 ,这里默认反馈在线
        if (scheduleClassesDayDtos == null || scheduleClassesDayDtos.size() < 1) {
            scheduleClassesStaffDto.setWork(true);
            return;
        }
        List<ScheduleClassesTimeDto> times = scheduleClassesDayDtos.get(0).getTimes();
        String startTime = null;
        String endTime = null;
        for (ScheduleClassesTimeDto time : times) {
            startTime = today + " " + time.getStartTime() + ":00";
            endTime = today + " " + time.getEndTime() + ":00";
            if (DateUtil.belongCalendar(scheduleClassesStaffDto.getToday(), DateUtil.getDateFromStringA(startTime), DateUtil.getDateFromStringA(endTime))) {
                scheduleClassesStaffDto.setWork(true);
                return;
            }
        }
        scheduleClassesStaffDto.setWork(false);
    }
    /**
     * 员工是否上班 按周 排班
     * @param scheduleClassesDto
     * @param scheduleClassesStaffDto
     */
    private void staffIsWorkWeek(ScheduleClassesDto scheduleClassesDto, ScheduleClassesStaffDto scheduleClassesStaffDto) {
        Calendar today = Calendar.getInstance();
        today.setTime(scheduleClassesStaffDto.getToday());
        int week = today.get(Calendar.WEEK_OF_MONTH);
        int day = today.get(Calendar.DAY_OF_WEEK);
        //一周第一天是否为星期天
        boolean isFirstSunday = (today.getFirstDayOfWeek() == Calendar.SUNDAY);
        //获取周几
        //若一周第一天为星期天,则-1
        if (isFirstSunday) {
            day = day - 1;
            if (day == 0) {
                day = 7;
            }
        }
        ScheduleClassesDayDto scheduleClassesDayDto = new ScheduleClassesDayDto();
        scheduleClassesDayDto.setScheduleId(scheduleClassesDto.getScheduleId());
        scheduleClassesDayDto.setDay(day + "");
        scheduleClassesDayDto.setWeekFlag(week + "");
        List<ScheduleClassesDayDto> scheduleClassesDayDtos = scheduleClassesDayV1InnerServiceSMOImpl.queryScheduleClassesDays(scheduleClassesDayDto);
        //设置问题 ,这里默认反馈在线
        if (scheduleClassesDayDtos == null || scheduleClassesDayDtos.size() < 1) {
            scheduleClassesStaffDto.setWork(true);
            return;
        }
        List<ScheduleClassesTimeDto> times = scheduleClassesDayDtos.get(0).getTimes();
        String startTime = null;
        String endTime = null;
        for (ScheduleClassesTimeDto time : times) {
            startTime = today + " " + time.getStartTime() + ":00";
            endTime = today + " " + time.getEndTime() + ":00";
            if (DateUtil.belongCalendar(scheduleClassesStaffDto.getToday(), DateUtil.getDateFromStringA(startTime), DateUtil.getDateFromStringA(endTime))) {
                scheduleClassesStaffDto.setWork(true);
                return;
            }
        }
        scheduleClassesStaffDto.setWork(false);
    }
    /**
     * 员工是否上班 按天 排班
     * @param scheduleClassesDto
     * @param scheduleClassesStaffDto
     */
    private void staffIsWorkDay(ScheduleClassesDto scheduleClassesDto, ScheduleClassesStaffDto scheduleClassesStaffDto) {
        String today = DateUtil.getFormatTimeString(scheduleClassesStaffDto.getToday(), DateUtil.DATE_FORMATE_STRING_B);
        int scheduleCycle = Integer.parseInt(scheduleClassesDto.getScheduleCycle());
        int allDay = DateUtil.daysBetween(scheduleClassesDto.getComputeTime(), today) + 1;
        int day = allDay % scheduleCycle;
        if (day == 0) {
            day = scheduleCycle;
        }
        ScheduleClassesDayDto scheduleClassesDayDto = new ScheduleClassesDayDto();
        scheduleClassesDayDto.setScheduleId(scheduleClassesDto.getScheduleId());
        scheduleClassesDayDto.setDay(day + "");
        List<ScheduleClassesDayDto> scheduleClassesDayDtos = scheduleClassesDayV1InnerServiceSMOImpl.queryScheduleClassesDays(scheduleClassesDayDto);
        //设置问题 ,这里默认反馈在线
        if (scheduleClassesDayDtos == null || scheduleClassesDayDtos.size() < 1) {
            scheduleClassesStaffDto.setWork(true);
            return;
        }
        List<ScheduleClassesTimeDto> times = scheduleClassesDayDtos.get(0).getTimes();
        String startTime = null;
        String endTime = null;
        for (ScheduleClassesTimeDto time : times) {
            startTime = today + " " + time.getStartTime() + ":00";
            endTime = today + " " + time.getEndTime() + ":00";
            if (DateUtil.belongCalendar(scheduleClassesStaffDto.getToday(), DateUtil.getDateFromStringA(startTime), DateUtil.getDateFromStringA(endTime))) {
                scheduleClassesStaffDto.setWork(true);
                return;
            }
        }
        scheduleClassesStaffDto.setWork(false);
    }
}