| | |
| | | import com.java110.dto.attendanceClasses.AttendanceClassesDto; |
| | | import com.java110.dto.attendanceClasses.AttendanceClassesTaskDetailDto; |
| | | import com.java110.dto.attendanceClasses.AttendanceClassesTaskDto; |
| | | import com.java110.dto.attendanceClassesStaff.AttendanceClassesStaffDto; |
| | | import com.java110.dto.org.OrgStaffRelDto; |
| | | import com.java110.dto.scheduleClassesStaff.ScheduleClassesStaffDto; |
| | | import com.java110.dto.scheduleClassesTime.ScheduleClassesTimeDto; |
| | | import com.java110.dto.attendanceClasses.AttendanceClassesStaffDto; |
| | | import com.java110.dto.scheduleClasses.ScheduleClassesStaffDto; |
| | | import com.java110.dto.scheduleClasses.ScheduleClassesTimeDto; |
| | | import com.java110.dto.store.StoreDto; |
| | | import com.java110.dto.task.TaskDto; |
| | | import com.java110.dto.user.UserDto; |
| | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(tmpAttendanceClassesStaffDto.getStaffId()); |
| | | List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); |
| | | Assert.listOnlyOne(userDtos,"员工不存在"); |
| | | Assert.listOnlyOne(userDtos, "员工不存在"); |
| | | |
| | | |
| | | AttendanceClassesTaskPo attendanceClassesTaskPo = new AttendanceClassesTaskPo(); |
| | |
| | | if (flag < 1) { |
| | | throw new IllegalArgumentException("保存考勤任务失败"); |
| | | } |
| | | |
| | | for (ScheduleClassesTimeDto tmpScheduleClassesTimeDto : times) { |
| | | doGeneratorStaffAttendanceTime(tmpStoreDto, tmpAttendanceClassesDto, tmpAttendanceClassesStaffDto, tmpScheduleClassesTimeDto, attendanceClassesTaskPo); |
| | | ScheduleClassesTimeDto tmpScheduleClassesTimeDto = null; |
| | | boolean isLast = false; |
| | | for (int timeIndex = 0; timeIndex < times.size(); timeIndex++) { |
| | | tmpScheduleClassesTimeDto = times.get(timeIndex); |
| | | if (timeIndex == (times.size() - 1)) { |
| | | isLast = true; |
| | | } |
| | | doGeneratorStaffAttendanceTime(tmpStoreDto, tmpAttendanceClassesDto, tmpAttendanceClassesStaffDto, tmpScheduleClassesTimeDto, attendanceClassesTaskPo, isLast); |
| | | } |
| | | |
| | | } |
| | |
| | | * @param tmpScheduleClassesTimeDto |
| | | */ |
| | | private void doGeneratorStaffAttendanceTime(StoreDto tmpStoreDto, AttendanceClassesDto tmpAttendanceClassesDto, AttendanceClassesStaffDto tmpAttendanceClassesStaffDto, |
| | | ScheduleClassesTimeDto tmpScheduleClassesTimeDto, AttendanceClassesTaskPo attendanceClassesTaskPo) { |
| | | ScheduleClassesTimeDto tmpScheduleClassesTimeDto, AttendanceClassesTaskPo attendanceClassesTaskPo, boolean islast) { |
| | | |
| | | String curDate = DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B); |
| | | |
| | |
| | | //alter table attendance_classes_task_detail add COLUMN late_value varchar(12) not null comment '正常或者早退时间,spec_cd 1001 是迟到 2002 是正常时间'; |
| | | |
| | | String value = curDate + " " + startTimeStr + ":00"; |
| | | Date valueDate = DateUtil.getDateFromStringA(value); |
| | | Date startValueDate = DateUtil.getDateFromStringA(value); |
| | | |
| | | int timeOffset = Integer.parseInt(tmpAttendanceClassesDto.getTimeOffset()); |
| | | int maxLastOffset = Integer.parseInt(tmpAttendanceClassesDto.getMaxLastOffset()); |
| | | |
| | | AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = new AttendanceClassesTaskDetailPo(); |
| | | attendanceClassesTaskDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId("12")); |
| | | attendanceClassesTaskDetailPo.setTaskId(attendanceClassesTaskPo.getTaskId()); |
| | | attendanceClassesTaskDetailPo.setSpecCd(AttendanceClassesTaskDetailDto.SPEC_CD_START); |
| | | attendanceClassesTaskDetailPo.setValue(curDate + " " + startTimeStr + ":00"); |
| | | attendanceClassesTaskDetailPo.setValue(value); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(valueDate); |
| | | calendar.setTime(startValueDate); |
| | | calendar.add(Calendar.MINUTE, timeOffset * -1); |
| | | attendanceClassesTaskDetailPo.setLeaveValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | | |
| | | int lateOffset = Integer.parseInt(tmpAttendanceClassesDto.getLateOffset()); |
| | | calendar = Calendar.getInstance(); |
| | | calendar.setTime(valueDate); |
| | | calendar.setTime(startValueDate); |
| | | calendar.add(Calendar.MINUTE, lateOffset); |
| | | attendanceClassesTaskDetailPo.setLateValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | | attendanceClassesTaskDetailPo.setState(AttendanceClassesTaskDetailDto.STATE_WAIT); |
| | |
| | | } |
| | | |
| | | value = curDate + " " + endTimeStr + ":00"; |
| | | valueDate = DateUtil.getDateFromStringA(value); |
| | | Date endValueDate = DateUtil.getDateFromStringA(value); |
| | | |
| | | if (endValueDate.getTime() < startValueDate.getTime()) { |
| | | Calendar endDateCal = Calendar.getInstance(); |
| | | endDateCal.setTime(endValueDate); |
| | | endDateCal.add(Calendar.DAY_OF_MONTH, 1); |
| | | endValueDate = endDateCal.getTime(); |
| | | value = DateUtil.getFormatTimeString(endValueDate, DateUtil.DATE_FORMATE_STRING_A); |
| | | } |
| | | |
| | | int leaveOffset = Integer.parseInt(tmpAttendanceClassesDto.getLeaveOffset()); |
| | | |
| | |
| | | attendanceClassesTaskDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId("12")); |
| | | attendanceClassesTaskDetailPo.setTaskId(attendanceClassesTaskPo.getTaskId()); |
| | | attendanceClassesTaskDetailPo.setSpecCd(AttendanceClassesTaskDetailDto.SPEC_CD_END); |
| | | attendanceClassesTaskDetailPo.setValue(curDate + " " + endTimeStr + ":00"); |
| | | attendanceClassesTaskDetailPo.setValue(value); |
| | | |
| | | calendar = Calendar.getInstance(); |
| | | calendar.setTime(valueDate); |
| | | calendar.setTime(endValueDate); |
| | | calendar.add(Calendar.MINUTE, leaveOffset * -1); |
| | | attendanceClassesTaskDetailPo.setLeaveValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | | calendar = Calendar.getInstance(); |
| | | calendar.setTime(valueDate); |
| | | calendar.add(Calendar.MINUTE, timeOffset); |
| | | calendar.setTime(endValueDate); |
| | | if (!islast) { |
| | | calendar.add(Calendar.MINUTE, timeOffset); |
| | | } else { |
| | | calendar.add(Calendar.MINUTE, maxLastOffset); |
| | | } |
| | | attendanceClassesTaskDetailPo.setLateValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | | attendanceClassesTaskDetailPo.setState(AttendanceClassesTaskDetailDto.STATE_WAIT); |
| | | attendanceClassesTaskDetailPo.setStoreId(tmpStoreDto.getStoreId()); |