diff --git a/evo-admin/src/main/java/com/evo/attendance/mapper/RzAttendanceDetailMapper.java b/evo-admin/src/main/java/com/evo/attendance/mapper/RzAttendanceDetailMapper.java index c148029..2cd8cbb 100644 --- a/evo-admin/src/main/java/com/evo/attendance/mapper/RzAttendanceDetailMapper.java +++ b/evo-admin/src/main/java/com/evo/attendance/mapper/RzAttendanceDetailMapper.java @@ -58,4 +58,12 @@ public interface RzAttendanceDetailMapper extends BaseMapper public List selectRzAttendanceDetailByMonth(Date date); + + /*** + * 检查加班情况 + * @param userId + * @param date + * @return + */ + Long checkOverTimeCard(@Param("userId") Long userId, @Param("date") Date date); } diff --git a/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java b/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java index 66875bd..f32ade7 100644 --- a/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java @@ -91,9 +91,9 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP RzAttendanceDetail rzAttendanceDetail = rzAttendanceDetailMapper.selectLastRzAttendanceDetail(sysStaff.getUserId()); //判断最后一次打卡为下班卡或没有打卡记录,则打卡为上班卡 if(StringUtils.isNull(rzAttendanceDetail) || "下班卡".equals(rzAttendanceDetail.getButtonType()) || "撤销".equals(rzAttendanceDetail.getButtonType())){ - //如果最后一条数据的卡类型为下班卡,则返回上班卡和加班卡权限 or 检查当前人员是否存在特殊加班中 或者 检查当前人员部门是否开启加班 - if(ObjectUtils.isNotEmpty(eqOverStaffMapper.selectEqOverStaffByUserId(sysStaff.getUserId())) || ObjectUtils.isEmpty(sysDeptMapper.selectOne(new LambdaQueryWrapper().eq(SysDept::getDeptId, sysStaff.getDeptId()).eq(SysDept::getIsOverTime,"1")))){ - //如果存在特殊加班, 或者当前部门没有开启加班, 则无法打加班卡 + //如果最后一条数据的卡类型为下班卡,则返回上班卡和加班卡权限 or 检查当前人员是否存在特殊加班中 或者 检查当前人员部门是否开启加班 or 当天打过加班卡 + if(ObjectUtils.isNotEmpty(eqOverStaffMapper.selectEqOverStaffByUserId(sysStaff.getUserId())) || ObjectUtils.isEmpty(sysDeptMapper.selectOne(new LambdaQueryWrapper().eq(SysDept::getDeptId, sysStaff.getDeptId()).eq(SysDept::getIsOverTime,"1"))) || rzAttendanceDetailMapper.checkOverTimeCard(sysStaff.getUserId(), new Date()) > 0){ + //如果存在特殊加班, 或者当前部门没有开启加班 或者当天打过加班, 则无法打加班卡 return initMessage(0,"验证通过", "111000000"); } return initMessage(0,"验证通过", "111100000"); diff --git a/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java b/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java index d75111e..2efc496 100644 --- a/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java @@ -625,6 +625,14 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl> companyLists = new ArrayList<>(); List> deptLists = new ArrayList<>(); + List allSheetNames = Collections.emptyList(); - List allList = new ArrayList<>(); allSheetNames.addAll(sheetCompanyNames); + List allList = new ArrayList<>(); + + for (String sheetCompanyName : sheetCompanyNames){ List dataList = companyDataList.get(sheetCompanyName); if(sheetCompanyName.equals("河北伊特")){ @@ -668,6 +679,9 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl sheetDeptNames = deptDataList.keySet().stream().sorted((x,y) -> x.compareTo(y)).collect(Collectors.toList()); allSheetNames.addAll(sheetDeptNames); for (String sheetDeptName : sheetDeptNames){ + if(Collections.asList("生技部","装配车间","设备工段").contains(sheetDeptName)){ + System.out.println(123213); + } List depts = deptDataList.get(sheetDeptName); SalaryVo result = sumSalaryVo(depts); result.setDeptName(sheetDeptName); diff --git a/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzLeaveDetailServiceImpl.java b/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzLeaveDetailServiceImpl.java index 986d652..664c4d2 100644 --- a/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzLeaveDetailServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzLeaveDetailServiceImpl.java @@ -161,39 +161,48 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl extensionMap = Collections.emptyMap(); //先计算相差几个月 Integer betweenMonth = DateUtils.getBetweenMonth(rzLeaveDetail.getLeaveStartTime(), rzLeaveDetail.getLeaveEndTime()); - Date startDate = rzLeaveDetail.getLeaveStartTime(); - for (int i = 0; i <= betweenMonth; i++) { - startDate = DateUtils.addMonths(startDate, i>0 ? 1 : 0); - //获取月的开始时间和结束时间 - Date firsDay = DateUtils.getMonthFirst(startDate); - if(firsDay.compareTo(rzLeaveDetail.getLeaveStartTime())<0){ - firsDay = rzLeaveDetail.getLeaveStartTime(); + if(betweenMonth == 0 && Long.valueOf(1).equals(DateUtils.getBetweenDays(rzLeaveDetail.getLeaveStartTime(),rzLeaveDetail.getLeaveEndTime())+1)){ + extensionMap.put("month"+m.format(rzLeaveDetail.getLeaveStartTime()), ym.format(rzLeaveDetail.getLeaveStartTime())); + //如果只请1天, 则按照录入的时间计算, 如果 + extensionMap.put("hours"+m.format(rzLeaveDetail.getLeaveStartTime()), rzLeaveDetail.getLeaveHour()); + }else{ + Date startDate = rzLeaveDetail.getLeaveStartTime(); + for (int i = 0; i <= betweenMonth; i++) { + startDate = DateUtils.addMonths(startDate, i>0 ? 1 : 0); + //获取月的开始时间和结束时间 + Date firsDay = DateUtils.getMonthFirst(startDate); + if(firsDay.compareTo(rzLeaveDetail.getLeaveStartTime())<0){ + firsDay = rzLeaveDetail.getLeaveStartTime(); + } + Date endDay = DateUtils.getMonthEnd(startDate); + if(endDay.compareTo(rzLeaveDetail.getLeaveEndTime())>0){ + endDay = rzLeaveDetail.getLeaveEndTime(); + } + //获取相差天数 因为包含开始结束, 所以需要加1 + Long dayNum = DateUtils.getBetweenDays(firsDay,endDay)+1; + List dayList = Collections.emptyList(); + for (int j = 0; j < dayNum; j++) { + dayList.add(ymd.format(DateUtils.addDays(firsDay, j>0 ? 1 : 0))); + } + List holidays = Collections.emptyList(); + if(ParamUtils.getLeaveTypeNotIncludedFaXiuAndPublicHoliday().contains(flag)){ + holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 0)); + }else if(ParamUtils.getLeaveTypeNotIncludedFaXiu().contains(flag)){ + holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 1)); + }else{ + holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 2)); + } + //获取假期里的重复天数 + Integer doubleDayNum = Collections.findDuplicatesList(holidays, dayList).size(); + //计算实际放假天数 + Integer holidayNum = dayList.size()-doubleDayNum; + extensionMap.put("month"+m.format(firsDay), ym.format(firsDay)); + //如果只请1天, 则按照录入的时间计算, 如果 + extensionMap.put("hours"+m.format(firsDay), holidayNum*8); } - Date endDay = DateUtils.getMonthEnd(startDate); - if(endDay.compareTo(rzLeaveDetail.getLeaveEndTime())>0){ - endDay = rzLeaveDetail.getLeaveEndTime(); - } - //获取相差天数 因为包含开始结束, 所以需要加1 - Long dayNum = DateUtils.getBetweenDays(firsDay,endDay)+1; - List dayList = Collections.emptyList(); - for (int j = 0; j < dayNum; j++) { - dayList.add(ymd.format(DateUtils.addDays(firsDay, j>0 ? 1 : 0))); - } - List holidays = Collections.emptyList(); - if(ParamUtils.getLeaveTypeNotIncludedFaXiuAndPublicHoliday().contains(flag)){ - holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 0)); - }else if(ParamUtils.getLeaveTypeNotIncludedFaXiu().contains(flag)){ - holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 1)); - }else{ - holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 2)); - } - //获取假期里的重复天数 - Integer doubleDayNum = Collections.findDuplicatesList(holidays, dayList).size(); - //计算实际放假天数 - Integer holidayNum = dayList.size()-doubleDayNum; - extensionMap.put("month"+m.format(firsDay), ym.format(firsDay)); - extensionMap.put("hours"+m.format(firsDay), holidayNum*8); } + + rzLeaveDetail.setExtension(JSON.toJSONString(extensionMap)); getBaseMapper().updateById(rzLeaveDetail); } diff --git a/evo-admin/src/main/resources/application.yml b/evo-admin/src/main/resources/application.yml index e67b7eb..8a3e627 100644 --- a/evo-admin/src/main/resources/application.yml +++ b/evo-admin/src/main/resources/application.yml @@ -50,7 +50,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: dev + active: druid # 文件上传 servlet: multipart: diff --git a/evo-admin/src/main/resources/mapper/attendance/RzAttendanceDetailMapper.xml b/evo-admin/src/main/resources/mapper/attendance/RzAttendanceDetailMapper.xml index f230b4f..b9d8f97 100644 --- a/evo-admin/src/main/resources/mapper/attendance/RzAttendanceDetailMapper.xml +++ b/evo-admin/src/main/resources/mapper/attendance/RzAttendanceDetailMapper.xml @@ -92,4 +92,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time + + + + diff --git a/evo-admin/src/main/resources/mapper/system/SysStaffDetailMapper.xml b/evo-admin/src/main/resources/mapper/system/SysStaffDetailMapper.xml index c414799..a2ca7c5 100644 --- a/evo-admin/src/main/resources/mapper/system/SysStaffDetailMapper.xml +++ b/evo-admin/src/main/resources/mapper/system/SysStaffDetailMapper.xml @@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" fixed_allowance, other_subsidies, - breakfast_expend, +