diff --git a/evo-admin/src/main/java/com/evo/common/utils/DateUtils.java b/evo-admin/src/main/java/com/evo/common/utils/DateUtils.java index a59e470..e89fff3 100644 --- a/evo-admin/src/main/java/com/evo/common/utils/DateUtils.java +++ b/evo-admin/src/main/java/com/evo/common/utils/DateUtils.java @@ -204,7 +204,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils long remainingDays = days; while (remainingDays >= 365) { int year = cal1.get(Calendar.YEAR) + yearsDiff; - int daysInYear = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 366 : 365; + //int daysInYear = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 366 : 365; + int daysInYear = 365; if (remainingDays >= daysInYear) { remainingDays -= daysInYear; yearsDiff++; diff --git a/evo-admin/src/main/java/com/evo/equipment/service/impl/EqSnDetailServiceImpl.java b/evo-admin/src/main/java/com/evo/equipment/service/impl/EqSnDetailServiceImpl.java index 954369b..54497cf 100644 --- a/evo-admin/src/main/java/com/evo/equipment/service/impl/EqSnDetailServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/equipment/service/impl/EqSnDetailServiceImpl.java @@ -167,10 +167,17 @@ public class EqSnDetailServiceImpl extends ServiceImpl loseDeviceList = Collections.emptyList(); for (EqSnDetail device : deviceList){ + //公共打卡机不需要检查 if(!WebSocketUsers.getUsers().containsKey(device.getSessionId())){ - errorMsg.append("设备"+device.getSn()+"已经失去连接;"); - device.setType("连接已断开"); - loseDeviceList.add(device); + //如果不是公共打开机, 返回信息 + if(!com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE.equals(device.getSn())){ + errorMsg.append("设备"+device.getSn()+"已经失去连接;"); + device.setType("连接已断开"); + loseDeviceList.add(device); + }else{ + //如果是公共打开机, snList清除公共打开机的数据 + snList.remove(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE); + } } sessionMap.put(device.getSn(), WebSocketUsers.getUsers().get(device.getSessionId())); } diff --git a/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java b/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java index 3934108..b0bf4b7 100644 --- a/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java @@ -86,8 +86,7 @@ public interface SalaryCalculationStrategyExchangeProcessor { * @param detail * @param rzSalaryDetail */ - default void buildRzSalaryDetail(SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical){ - + default void buildRzSalaryDetail(Boolean isMonth, SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical){ Date limitDate = DateUtils.addMonths(sysStaff.getEmploymentDate(), Integer.valueOf(String.valueOf(sysStaff.getWorkerTerm()))); Date limitMonth = null; Date month = null; @@ -106,7 +105,7 @@ public interface SalaryCalculationStrategyExchangeProcessor { ////计算应发工资 合算月工资+加班工资+学历补助+合同补助+社保补助+工龄工资+全勤奖+加班工资+夜班补助+夜餐补助+其他补助+销售提成-餐费扣款-补助扣款-其他扣款 (无需再-缺勤扣款 因为计算工资的时候, 是按照实际出勤计算的) //计算应发工资 合算月工资+加班工资+学历补助+合同补助+社保补助+工龄工资+全勤奖+加班工资+夜班补助+夜餐补助+其他补助+销售提成-餐费扣款-补助扣款-其他扣款 - rzSalaryDetail.setSalary(rzSalaryDetail.getMonthSalary().add(rzSalaryDetail.getNightSubsidies()).add(rzSalaryDetail.getDinnerSubsidies()) + rzSalaryDetail.setSalary(rzSalaryDetail.getMonthSalary().add(isMonth ? rzSalaryDetail.getOvertimeSalary() : DataUtils.DEFAULT_VALUE).add(rzSalaryDetail.getNightSubsidies()).add(rzSalaryDetail.getDinnerSubsidies()) .add(DataUtils.findDefaultValue(rzSalaryDetail.getFullSubsidies(), DataUtils.DEFAULT_VALUE)).add(rzSalaryDetail.getLevelSubsidies()).add(rzSalaryDetail.getContractSubsidies()).add(rzSalaryDetail.getSocialSubsidies()) .add(rzSalaryDetail.getSenioritySalary()).add(rzSalaryDetail.getSubsidyOrBonus()).add(rzSalaryDetail.getSalesCommission()) .subtract(rzSalaryDetail.getMealFee()).subtract(rzSalaryDetail.getAbsenteeismSubsidies()).subtract(rzSalaryDetail.getDeductions()).subtract(rzSalaryDetail.getAbsenteeismSalary())); @@ -182,7 +181,6 @@ public interface SalaryCalculationStrategyExchangeProcessor { * 计算扣款 */ default void deduction(Boolean isDk, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, BigDecimal ycHours , BigDecimal cqHours){ - System.out.println(detail.getStaffId()); //其他扣款 rzSalaryDetail.setDeductions(detail.getDeductions()); //餐饮扣款 @@ -255,10 +253,6 @@ public interface SalaryCalculationStrategyExchangeProcessor { rzSalaryDetail.setTaxableIncome(new BigDecimal("0")); } - if(sysStaff.getName().equals("杜惠斌")){ - System.out.println(111); - } - //判断是否外包,外包公司员工不做税(月薪50000不上税) if("WB".equals(sysStaff.getCompanyName())){ // 实发工资 = 税前工资 diff --git a/evo-admin/src/main/java/com/evo/finance/processor/impl/DailyWageStrategyExchangeProcessor.java b/evo-admin/src/main/java/com/evo/finance/processor/impl/DailyWageStrategyExchangeProcessor.java index 429d7cf..ea1cab3 100644 --- a/evo-admin/src/main/java/com/evo/finance/processor/impl/DailyWageStrategyExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/finance/processor/impl/DailyWageStrategyExchangeProcessor.java @@ -41,7 +41,6 @@ public class DailyWageStrategyExchangeProcessor implements SalaryCalculationStra @Override public boolean accept(SysStaffDetail detail) { //日薪不为空, 并且大于0 - System.out.println(JSON.toJSONString(detail)); return detail.getDailyWage() != null && detail.getDailyWage().compareTo(new BigDecimal(0)) > 0; } @@ -49,7 +48,7 @@ public class DailyWageStrategyExchangeProcessor implements SalaryCalculationStra public void exchangeSalaryCalculation(SysStaff sysStaff, SysStaffDetail sysStaffDetail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical, Map overTimeMap) { //组件基础数据 - buildRzSalaryDetail(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical); + buildRzSalaryDetail(false, sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical); // //计算基本工资 // monthSalary(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical); @@ -96,10 +95,8 @@ public class DailyWageStrategyExchangeProcessor implements SalaryCalculationStra //计算补助 subsidy(limitMonth, month, limitDate, sysStaff, detail, rzSalaryDetail, attendanceStatistical); //计算扣减 - - - ; - deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(DateUtils.getMonthDays(rzSalaryDetail.getMonth())).multiply(Constants.DAY_WORK_HOUR), rzAttendanceMapper.selectOne(new QueryWrapper().select( " ifnull(sum(work_sum),0) as workSum ").lambda().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth())).getWorkSum()); + deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(ParamUtils.getMonthWorkDayNum(DateUtils.getYear(rzSalaryDetail.getMonth()), DateUtils.getMonth(rzSalaryDetail.getMonth()))).multiply(Constants.DAY_WORK_HOUR), attendanceStatistical.getRealAttendance()); + //deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(DateUtils.getMonthDays(rzSalaryDetail.getMonth())).multiply(Constants.DAY_WORK_HOUR), rzAttendanceMapper.selectOne(new QueryWrapper().select( " ifnull(sum(work_sum),0) as workSum ").lambda().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth())).getWorkSum()); //deduction(detail, rzSalaryDetail, String.valueOf(DateUtils.getMonthDays(rzSalaryDetail.getMonth())), rzAttendanceMapper.selectCount(new LambdaQueryWrapper().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth()).select(RzAttendance::getId))); //日薪没有缺勤扣款, 上一天就一天 rzSalaryDetail.setAbsenteeismSalary(new BigDecimal(0)); diff --git a/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java b/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java index f60eea0..303f9a4 100644 --- a/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java @@ -61,7 +61,7 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation // //计算基本工资 // monthSalary(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical); //组件基础数据 - buildRzSalaryDetail(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical); + buildRzSalaryDetail(true, sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical); //计算薪资 calculation(sysStaff, sysStaffDetail,rzSalaryDetail); } @@ -69,7 +69,6 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation @Override public void monthSalary(Date limitMonth, Date month, Date limitDate ,SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical){ //如果计算薪资的月份 小于转正的月份, 则按照全额薪资的80%发放 - System.out.println(JSON.toJSONString(sysStaff)); BigDecimal workHourPrice = rzSalaryDetail.getBasicSalary().add(rzSalaryDetail.getJobSalary()).divide(attendanceStatistical.getShouldAttendance(),2, RoundingMode.HALF_UP); if(limitMonth.compareTo(month) > 0){ rzSalaryDetail.setMonthSalary(rzSalaryDetail.getBasicSalary().add(rzSalaryDetail.getJobSalary()).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD))); @@ -99,7 +98,7 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation //计算补助 subsidy(limitMonth, month, limitDate, sysStaff, detail, rzSalaryDetail, attendanceStatistical); //计算扣减 - deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(workNum).multiply(Constants.DAY_WORK_HOUR), rzAttendanceMapper.selectOne(new QueryWrapper().select( " ifnull(sum(work_sum),0) as workSum ").lambda().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth())).getWorkSum()); + deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(workNum).multiply(Constants.DAY_WORK_HOUR), attendanceStatistical.getRealAttendance()); //deduction(detail, rzSalaryDetail,workNum, rzAttendanceMapper.selectCount(new LambdaQueryWrapper().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth()).select(RzAttendance::getId))); //计算社保 socialSecurity(sysStaff, detail, attendanceStatistical); @@ -128,10 +127,10 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation totalAllHour = totalAllHour+hour; } } - if(totalAllHour.compareTo(0l)> 0){ - //存在工伤假, 需要计算 - rzSalaryDetail.setMonthSalary(rzSalaryDetail.getMonthSalary().add(workHourPrice.multiply(new BigDecimal(totalAllHour)))); - } +// if(totalAllHour.compareTo(0l)> 0){ +// //存在工伤假, 需要计算 +// rzSalaryDetail.setMonthSalary(rzSalaryDetail.getMonthSalary().add(workHourPrice.multiply(new BigDecimal(totalAllHour)))); +// } //如果是不打卡人员, 只计算请假时长, 如果不是未打卡人员, 需要检查应出去和实际出勤的值 if("是".equals(sysStaff.getClockIn())){ 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 87b7def..3745463 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 @@ -668,9 +668,6 @@ 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 664c4d2..d7f38dd 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 @@ -145,14 +145,6 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl i sysStaff.setSex("0"); } //根据员工ID查询原来的数据信息 -// SysStaff old_staff = getBaseMapper().selectSysStaffByUserId(sysStaff.getUserId()); + SysStaff old_staff = getBaseMapper().selectSysStaffByUserId(sysStaff.getUserId()); //判断员工更换公司 -// if(!old_staff.getCompanyName().equals(sysStaff.getCompanyName())){ -// //保存旧公司数据存档 -// old_staff.setDelFlag(Constants.DELETE_FLAG_1); -// old_staff.setUpdateBy(SecurityUtils.getUsername()); -// old_staff.setUpdateTime(DateUtils.getNowDate()); -// int i = getBaseMapper().updateSysStaff(old_staff); -// if(i < 1){ -// return AjaxResult.error(); -// } + if(!old_staff.getCompanyName().equals(sysStaff.getCompanyName())) { + SysStaffDetail sysStaffDetail = sysStaffDetailMapper.selectSysStaffDetailByStaffId(sysStaff.getUserId()); + sysStaffDetail.setSpecialDeduction(DataUtils.DEFAULT_VALUE); + sysStaffDetail.setTotalWages(DataUtils.DEFAULT_VALUE); + sysStaffDetail.setAggregatePersonalIncomeTax(DataUtils.DEFAULT_VALUE); + sysStaffDetailMapper.updateById(sysStaffDetail); + } + // //处理新公司数据 //// createNewStaff(sysStaff); // }else { @@ -307,7 +304,7 @@ public class SysStaffServiceImpl extends ServiceImpl i return AjaxResult.error(); } //修改员工详情 - // createStaffDetail(sysStaff); +// createStaffDetail(sysStaff); //修改考勤统计 rzAttendanceStatisticalService.createRzAttendance(sysStaff, Collections.emptyList(), null); //餐饮统计 diff --git a/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java b/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java index 9b30573..47f2e2a 100644 --- a/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java +++ b/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java @@ -17,6 +17,8 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; @@ -39,8 +41,6 @@ public class SubsidyCalculationUtils { public static final String xnh = "13"; public static final String yc = "11"; - - public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List subsidyInfoList){ //正式员工并且有补助信息 if(Constants.JOB_STATIS_1.equals(staff.getStatus())){