考勤导出新增社保扣款

This commit is contained in:
andy 2026-02-07 16:53:45 +08:00
parent 56e6aa2bc8
commit 90478a4e1f
6 changed files with 35 additions and 5 deletions

View File

@ -74,7 +74,8 @@ public class KqUtils {
//判断打卡时间, 添加夜班次数 打卡时间在晚上7点以后
if(eqButton.getWorkHour() ==12 && hours >= 12 && attendance.getWorkStartTime().getHours() > 12){
attendance.setNightNumber(1);
}else if(eqButton.getWorkHour() == 8 && hours >= 8 && attendance.getWorkStartTime().getHours() > 18){
//必须是8小时倒班制or单班制, 并且工作时长>=8小时, 并且 上班打开时间在12点至21点 算作中班 -- 2026-02-04 因1月份张克龙中班考勤问题, 刘杰面谈
}else if(eqButton.getWorkHour() == 8 && hours >= 8 && attendance.getWorkStartTime().getHours() >= 12 && attendance.getWorkStartTime().getHours() < 21){
attendance.setMiddleShiftNumber(1);
}
//获取工作时长

View File

@ -185,6 +185,8 @@ public class RzSalaryDetail extends BaseEntity
private BigDecimal taxPayable;
@Excel(name = "社保扣款")
private BigDecimal socialSecurityDeduction;
/** 实发工资 */
@Excel(name = "实发工资")
private BigDecimal netPayroll;
@ -628,6 +630,14 @@ public class RzSalaryDetail extends BaseEntity
this.bjAmount = bjAmount;
}
public BigDecimal getSocialSecurityDeduction() {
return socialSecurityDeduction;
}
public void setSocialSecurityDeduction(BigDecimal socialSecurityDeduction) {
this.socialSecurityDeduction = socialSecurityDeduction;
}
@Override
public String toString() {
return "RzSalaryDetail{" +

View File

@ -73,6 +73,8 @@ public class SalaryVo {
/** 代缴保险 */
@Excel(name = "代缴保险")
private BigDecimal payInsurance;
@Excel(name = "社保扣款")
private BigDecimal socialSecurityDeduction;
/** 税前工资 */
@Excel(name = "税前工资")
private BigDecimal salaryBeforeTax;
@ -108,7 +110,7 @@ public class SalaryVo {
public SalaryVo() {
}
// public SalaryVo(BigDecimal monthSalary, BigDecimal basicSalary, BigDecimal jobSalary, BigDecimal overtimeSalary, BigDecimal levelSubsidies, BigDecimal contractSubsidies, BigDecimal senioritySalary, BigDecimal socialSubsidies, BigDecimal fullSubsidies, BigDecimal nightSubsidies, BigDecimal dinnerSubsidies, BigDecimal subsidyOrBonus, BigDecimal absenteeismSalary, BigDecimal absenteeismSubsidies, BigDecimal mealFee, BigDecimal deductions, BigDecimal salary, BigDecimal payInsurance, BigDecimal salaryBeforeTax, BigDecimal totalWages, BigDecimal annualExemptionAmount, BigDecimal specialDeduction, BigDecimal slowDownTheDeduction, BigDecimal aggregatePersonalIncomeTax, BigDecimal taxPayable, BigDecimal netPayroll) {
public SalaryVo(BigDecimal monthSalary, BigDecimal levelSubsidies, BigDecimal contractSubsidies, BigDecimal senioritySalary, BigDecimal socialSubsidies, BigDecimal nightSubsidies, BigDecimal dinnerSubsidies, BigDecimal subsidyOrBonus, BigDecimal absenteeismSalary, BigDecimal absenteeismSubsidies, BigDecimal mealFee, BigDecimal deductions, BigDecimal salary, BigDecimal payInsurance, BigDecimal salaryBeforeTax, BigDecimal totalWages, BigDecimal annualExemptionAmount, BigDecimal specialDeduction, BigDecimal slowDownTheDeduction, BigDecimal aggregatePersonalIncomeTax, BigDecimal taxPayable, BigDecimal netPayroll, BigDecimal salesCommission,BigDecimal middleSubsidies) {
public SalaryVo(BigDecimal monthSalary, BigDecimal levelSubsidies, BigDecimal contractSubsidies, BigDecimal senioritySalary, BigDecimal socialSubsidies, BigDecimal nightSubsidies, BigDecimal dinnerSubsidies, BigDecimal subsidyOrBonus, BigDecimal absenteeismSalary, BigDecimal absenteeismSubsidies, BigDecimal mealFee, BigDecimal deductions, BigDecimal salary, BigDecimal payInsurance, BigDecimal salaryBeforeTax, BigDecimal totalWages, BigDecimal annualExemptionAmount, BigDecimal specialDeduction, BigDecimal slowDownTheDeduction, BigDecimal aggregatePersonalIncomeTax, BigDecimal taxPayable, BigDecimal netPayroll, BigDecimal salesCommission,BigDecimal middleSubsidies, BigDecimal socialSecurityDeduction) {
this.monthSalary = monthSalary;
// this.basicSalary = basicSalary;
// this.jobSalary = jobSalary;
@ -136,6 +138,7 @@ public class SalaryVo {
this.netPayroll = netPayroll;
this.salesCommission = salesCommission;
this.middleSubsidies = middleSubsidies;
this.socialSecurityDeduction = socialSecurityDeduction;
}
}

View File

@ -118,6 +118,8 @@ public interface SalaryCalculationStrategyExchangeProcessor {
rzSalaryDetail.setMedicalInsurance(detail.getMedicalInsurance()); //医疗保险
rzSalaryDetail.setEndowmentInsurance(detail.getEndowmentInsurance()); //养老保险
rzSalaryDetail.setEmploymentInjuryInsurance(detail.getEmploymentInjuryInsurance()); //工伤保险
//社保扣款
rzSalaryDetail.setSocialSecurityDeduction(detail.getCountInsurance()); //社保扣款
//代缴社保
rzSalaryDetail.setPayInsurance(rzSalaryDetail.getAccumulationFund().add(rzSalaryDetail.getUnemploymentInsurance()).
add(rzSalaryDetail.getMaternityInsurance()).add(rzSalaryDetail.getMedicalInsurance()).add(rzSalaryDetail.getEndowmentInsurance()).add(rzSalaryDetail.getEmploymentInjuryInsurance()));

View File

@ -217,8 +217,8 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
x.getAbsenteeismSalary().add(y.getAbsenteeismSalary()), x.getAbsenteeismSubsidies().add(y.getAbsenteeismSubsidies()),x.getMealFee().add(y.getMealFee()),x.getDeductions().add(y.getDeductions()),
x.getSalary().add(y.getSalary()),x.getPayInsurance().add(y.getPayInsurance()),x.getSalaryBeforeTax().add(y.getSalaryBeforeTax()),x.getTotalWages().add(y.getTotalWages()),
x.getAnnualExemptionAmount().add(y.getAnnualExemptionAmount()),x.getSpecialDeduction().add(y.getSpecialDeduction()),x.getSlowDownTheDeduction().add(y.getSlowDownTheDeduction()),x.getAggregatePersonalIncomeTax().add(y.getAggregatePersonalIncomeTax()),
x.getTaxPayable().add(y.getTaxPayable()),x.getNetPayroll().add(y.getNetPayroll()), x.getSalesCommission().add(y.getSalesCommission()), x.getMiddleSubsidies().add(y.getMiddleSubsidies()))).orElse(new SalaryVo(BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,
BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO));
x.getTaxPayable().add(y.getTaxPayable()),x.getNetPayroll().add(y.getNetPayroll()), x.getSalesCommission().add(y.getSalesCommission()), x.getMiddleSubsidies().add(y.getMiddleSubsidies()), x.getSocialSecurityDeduction().add(y.getSocialSecurityDeduction()))).orElse(new SalaryVo(BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,
BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO));
//添加此处的原因是, 如果部门中, 有且只有1人的情况下, stream().reduce() 不会创建新的对象, 只是把唯一的对象返回了,, 会对后续的数据展示产生影响, 所以重新创new新对象
if(Collections.isNotEmpty(list) || list.size() == 1){
SalaryVo newResult = new SalaryVo();
@ -344,6 +344,7 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
Map<Long, BigDecimal> realAttendanceMap = rzAttendanceStatisticalMapper.queryStatisticalByMonth(rzSalaryDetail.getMonth()).stream().collect(Collectors.toMap(RzAttendanceStatistical::getStaffId, RzAttendanceStatistical::getRealAttendance));
List<SalaryVo> voResult = Collections.emptyList();
List<RzSalaryDetail> res_list = selectRzSalaryDetaiList(rzSalaryDetail);
for (RzSalaryDetail salaryDetail : res_list) {

View File

@ -54,10 +54,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="socialSecurityDeduction" column="social_security_deduction" />
</resultMap>
<sql id="selectRzSalaryDetailVo">
select id, staff_id, name, month, wb_flag, dept_id,month_salary, basic_salary, job_salary, daily_wage, hours_salary, overtime_salary, level_subsidies, contract_subsidies, seniority_salary, social_subsidies, full_subsidies, night_subsidies, dinner_subsidies, subsidy_or_bonus, absenteeism_salary, absenteeism_subsidies, meal_fee, deductions, salary, pay_insurance, endowment_insurance, medical_insurance, employment_injury_insurance, maternity_insurance, unemployment_insurance, accumulation_fund, salary_before_tax, total_wages, annual_exemption_amount, special_deduction, taxable_income, tax_rate, slow_down_the_deduction, aggregate_personal_income_tax, aggregate_tax, tax_payable, net_payroll, remarks, del_flag, create_by, create_time, update_by, update_time, sales_commission, middle_subsidies from rz_salary_detail
select id, staff_id, name, month, wb_flag, dept_id,month_salary, basic_salary, job_salary, daily_wage,
hours_salary, overtime_salary, level_subsidies, contract_subsidies, seniority_salary, social_subsidies,
full_subsidies, night_subsidies, dinner_subsidies, subsidy_or_bonus, absenteeism_salary, absenteeism_subsidies,
meal_fee, deductions, salary, pay_insurance, endowment_insurance, medical_insurance, employment_injury_insurance,
maternity_insurance, unemployment_insurance, accumulation_fund, salary_before_tax, total_wages, annual_exemption_amount,
special_deduction, taxable_income, tax_rate, slow_down_the_deduction, aggregate_personal_income_tax, aggregate_tax, tax_payable,
net_payroll, remarks, del_flag, create_by, create_time, update_by, update_time, sales_commission, middle_subsidies,
social_security_deduction
from rz_salary_detail
</sql>
<select id="selectRzSalaryDetailList" parameterType="RzSalaryDetail" resultMap="RzSalaryDetailResult">
@ -126,6 +135,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="socialSecurityDeduction != null">social_security_deduction,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="staffId != null">#{staffId},</if>
@ -176,6 +187,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="socialSecurityDeduction != null">#{socialSecurityDeduction},</if>
</trim>
</insert>
@ -230,6 +242,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="socialSecurityDeduction != null">social_security_deduction = #{socialSecurityDeduction},</if>
</trim>
where id = #{id}
</update>