1.修改月基准时长。 修改类:cn.com.lzt.userattendancedetail.service.impl.UserAttendanceDetailServiceImpl 修改方法:updateMonthlyInfo 修改内容:line399 //查看当天的 基准出勤时间 员工“排班信息”核算的时长,需要减去法定工作日排班的时长 if (null!=entity.getDatumDate()) { // add by x 20180413 // 刨除国定假 if(null!=worktype && !jsonObj.getWorktype().equals(Globals.dtype_2)) { datumAttendanceDate = datumAttendanceDate.add(entity.getDatumDate()); } } 2.修改旷工规则。单位天改为分钟 修改类:cn.com.lzt.userattendancedetail.service.impl.UserAttendanceDetailServiceImpl 修改方法:calculateBelateAndLeaveEarlyAndabsenteeism 修改内容:line745、line782 //迟到,min>30 切小于240分钟 算旷工4小时 if (dateDiffint>30&&dateDiffint<240) { BigDecimal absenteeism = dto.getAbsenteeism().add(new BigDecimal(240)); dto.setAbsenteeism(absenteeism); } //迟到,min>=240&&dateDiffint<480 算旷工8小时 if(dateDiffint>=240&&dateDiffint<480) { BigDecimal absenteeism = dto.getAbsenteeism().add(new BigDecimal(480)); dto.setAbsenteeism(absenteeism); } //迟到,min>=480 算旷工实际班次工时 if (dateDiffint>=480) { BigDecimal absenteeism = dto.getAbsenteeism().add(new BigDecimal(dateDiffint)); dto.setAbsenteeism(absenteeism); } 修改内容:line360 //如果是国定假出现缺勤,不算旷工 if (!longHoliday && !Globals.dtype_2.equals(oConvertUtils.getString(dto.getDtype()))) { ··· } 修改内容:line751 //查看当天是否有旷工 if (null!=jsonObj.getAbsenteeism() && !jsonObj.getWorktype().equals(Globals.dtype_2)) { absenteeismAmount = absenteeismAmount.add(jsonObj.getAbsenteeism()); } //查看月度基准时间 if (null!=jsonObj.getActDatumDate() && !jsonObj.getWorktype().equals(Globals.dtype_2)) { monthlyActDatumsum = monthlyActDatumsum.add(jsonObj.getActDatumDate()); } 3.修改实际出勤时间。 修改类:cn.com.lzt.userattendancedetail.service.impl.UserAttendanceDetailServiceImpl 修改内容:line2373 //设置超时加班 userAttendanceDetailEntity.setTimeoutOvertimeDuration(dto.getTimeoutOvertimeDuration()); 修改内容:line1230 //判断是否在超时加班时出勤,判断标准是超时加班时长内打卡至少一次 //如果有出勤,则timeoutOvertimeDuration=timeOutOvertimeHours(排班中超时时长);实际出勤中加上加班时长actualAttendanceDate += timeOutOvertimeHours //x20180413 String jiabanStarttimeStr = dto.getTimeOutOvertimeStime(); String jiabanEndtimeStr = dto.getTimeOutOvertimeEtime(); Date jiabanStarttime = getexactDate(dto.getYmdDate(), jiabanStarttimeStr, 0, 0); Date jiabanEndtime = getexactDate(dto.getYmdDate(), jiabanEndtimeStr, 0, 0); // 如果超时加班跨天设置,则加一 if(jiabanStarttime.after(jiabanEndtime)) { Calendar jiabanendCal = Calendar.getInstance(); jiabanendCal.setTime(jiabanEndtime); jiabanendCal.add(Calendar.DATE, 1); jiabanEndtime = jiabanendCal.getTime(); } if (oConvertUtils.isNotEmpty(jiabanStarttimeStr)&&oConvertUtils.isNotEmpty(jiabanEndtimeStr)) { for (int i = 0; i < dingAttendanceinfoEntities.size(); i++) { DingAttendanceinfoEntity dingAttendanceinfoEntity = dingAttendanceinfoEntities .get(i); Date temp = dingAttendanceinfoEntity.getAttendanceTime(); if (oConvertUtils.isNotEmpty(temp) &&temp.compareTo(jiabanEndtime) <=0 && (temp.compareTo(jiabanStarttime) >= 0)) { //设置实际超时加班时间 dto.setTimeoutOvertimeDuration(dto.getTimeOutOvertimeHours()); //实际出勤时间加上超时加班时间 BigDecimal actattendTime = dto.getActualAttendanceDate(); actattendTime.add(dto.getTimeoutOvertimeDuration()); break; } } } 修改内容:line129 //设置超时加班时长 userAttendanceDetailEntity.setTimeoutOvertimeDuration(dto.getTimeoutOvertimeDuration()); 4.超时加班和旷工工时抵扣 修改内容:line585 //旷工工时和超时加班工时进行相互抵扣 x20180415 if(timeoutOvertimeDuration.compareTo(absenteeismAmount) == 0) { //旷工工时等于超时加班工时 timeoutOvertimeDuration = BigDecimal.ZERO; absenteeismAmount = BigDecimal.ZERO; }else if(timeoutOvertimeDuration.compareTo(absenteeismAmount) > 0) { //超时加班工时多 timeoutOvertimeDuration = timeoutOvertimeDuration.subtract(absenteeismAmount); absenteeismAmount = BigDecimal.ZERO; }else { //旷工工时多 absenteeismAmount = absenteeismAmount.subtract(timeoutOvertimeDuration); timeoutOvertimeDuration = BigDecimal.ZERO; } 5.修改国定加班时长,取实际出勤时长 修改内容:Line2205 //如果当天没有请带薪假 并且这一天不是法定假日 则将这一天的基准时长记录入库 ---原有算法 //将这一天的实际出勤时间计入国定加班时长 x 20180416 if ((Globals.dtype_2.equals(oConvertUtils.getString(dto.getDtype())))) { // nationalOvertimeDuration = dto.getDatumDate(); nationalOvertimeDuration = dto.getActualAttendanceDate(); } 6.把国定值班天数从值班天数中分离出来 修改内容: 1)修改数据库表t_bus_user_attendance_total,增加字段national_duty_duration,修改absenteeism_amount字段大小至8位 2)修改类UserAttendanceTotalEntity,增加字段nationalDutyDuration,增加相应GETTER和SETTER方法 3)修改UserAttendanceDetailServiceImpl 增加内容line623 userAttendanceTotalEntity.setNationalDutyDuration(nationalDutyDuration); 修改内容line350 if (jsonObj.getIhadDuty()) { // 把国定值班从值班天数中分离出去 x 20180416 if(jsonObj.getWorktype().equals(Globals.dtype_2)) { //国定值班 nationalDutyDuration = nationalDutyDuration.add(BigDecimal.ONE); }else { //非国定普通加班 //如果这一天加班了 月度加班总和+1 dutyDuration = dutyDuration.add(BigDecimal.ONE); } } 4)修改工资计算部分,国定加班费中加上国定值班费,3倍普通值班费*国定值班天数 修改类:UserPayrollServiceImp 修改方法:cn.com.lzt.userwage.service.impl.UserPayrollServiceImpl.overtimeCalculation(UserAttendanceTotalEntity, UserWagestrategyEntity, UserWageEntity, String, PersonnelBaseArchivesManageEntity) 修改内容:line1721(新增) //把国定值班费算到国定加班费中 x20180416 BigDecimal nationaltimeoutPay = uw.getOvertimepayFixed(); //已有的国定超时加班费 BigDecimal nationaldutyPay = meal.getMoney().multiply(new BigDecimal(3)).multiply(uat.getNationalDutyDuration()); //3倍普通值班费*国定值班天数 uw.setOvertimepayFixed(nationaltimeoutPay.add(nationaldutyPay)); //两部分都赋值到国定加班费里 7.修改月度实际出勤时长应去掉值班时长 修改内容:line1045,判断是值班的情况直接返回 // normalworkStime = oConvertUtils.getString(dto.getOndutyStime(), "00:00"); // normalworkEtime =oConvertUtils.getString( dto.getOndutyEtime(), "23:59"); return; 8.考勤上报确认页面中添加国定值班天数列 修改页面:userAttendanceTotal-conform.jsp { field : 'nationalDutyDuration', title : '国定值班天数(日)', halign: 'center', width : 120, align:'right', hidden : false, sortable : false }, $('#jiabantable').datagrid('loadData',[{ timeoutOvertimeDuration:totalinfo.timeoutOvertimeDuration, nationalOvertimeDuration:totalinfo.nationalOvertimeDuration, dutyDuration:totalinfo.dutyDuration, nationalDutyDuration:totalinfo.nationalDutyDuration, specialOvertime:totalinfo.specialOvertime }]); 9.登陆去掉验证码 1.修改login.jsp 2.修改LoginController 10.把基准时间改成应出勤时长 11.增加原始超時加班時長、原始曠工时长 UserAttendanceTotalEntity增加两个字段 修改数据库表t_bus_user_attendance_total,增加字段absenteeism_amount_orig和TIMEOUT_OVERTIME_DURATION_ORIG两个字段 12.修改旷工和超时加班显示方式,加上原始数据 修改页面:userAttendanceTotal-conform.jsp function getabsenteeValue(){ if(null == ${userAttendanceTotalPage.absenteeismAmount_orig}){ return minsToHoursandMinsfmt(${userAttendanceTotalPage.absenteeismAmount}); }else{ return minsToHoursandMinsfmt(${userAttendanceTotalPage.absenteeismAmount}) + "(抵扣前:"+minsToHoursandMinsfmt(${userAttendanceTotalPage.absenteeismAmount_orig})+")"; } } function getOvertimeValue(){ if(null == ${userAttendanceTotalPage.timeoutOvertimeDuration_orig}){ return minsToHoursandMinsfmt(${userAttendanceTotalPage.timeoutOvertimeDuration}); }else{ return minsToHoursandMinsfmt(${userAttendanceTotalPage.timeoutOvertimeDuration}) + "(抵扣前:"+minsToHoursandMinsfmt(${userAttendanceTotalPage.timeoutOvertimeDuration_orig})+")"; } } 13.修改国定加班费按照员工基本工资算,而不是按照上海市最低基本工资算 修改类:UserPayrollServiceImpl 修改内容:line1786 14.修改超时加班费按照员工基本工资算,而不是按照上海市最低基本工资算 修改类:UserPayrollServiceImpl 修改内容:line1689 15.修改病假扣除按照合同年限扣除 修改类:UserPayrollServiceImpl 修改内容:line1461 calcuSickLeaveDebit(uat, uw, per); 16.修改社保扣除的小数点位数 修改类:UserPayrollServiceImpl 修改内容:line1691