|
|
@@ -31,6 +31,7 @@ import org.springblade.core.oss.model.BladeFile;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
import org.springblade.school.entity.Salary;
|
|
|
import org.springblade.school.entity.SalaryAccessory;
|
|
|
import org.springblade.school.entity.SalaryItem;
|
|
|
@@ -47,6 +48,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.BigInteger;
|
|
|
+import java.math.MathContext;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
@@ -607,7 +609,7 @@ public class SalaryItemServiceImpl extends ServiceImpl<SalaryItemMapper, SalaryI
|
|
|
}
|
|
|
SalaryItem salaryItem = new SalaryItem();
|
|
|
BeanUtil.copy(attendanceExcel,salaryItem);
|
|
|
- //根据身份证号查询教职工信息是否存在存在更新不存在新增
|
|
|
+ //根据身份证号查询教职工信息是否存在 存在更新不存在新增
|
|
|
SalaryItem item = baseMapper.selectOne(new QueryWrapper<SalaryItem>().eq("id_number", salaryItem.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
|
|
|
.eq("is_deleted", 0).eq("pid",id));
|
|
|
if (item != null){
|
|
|
@@ -615,9 +617,11 @@ public class SalaryItemServiceImpl extends ServiceImpl<SalaryItemMapper, SalaryI
|
|
|
salaryItem.setId(item.getId());
|
|
|
salaryItem.setUpdateUser(SecureUtil.getUserId());
|
|
|
salaryItem.setUpdateTime(new Date());
|
|
|
+
|
|
|
baseMapper.updateById(salaryItem);
|
|
|
message = ++ message;
|
|
|
//更新计算工资
|
|
|
+ salaryItem.setIsOrNot(1);
|
|
|
this.countSalary(salaryItem);
|
|
|
}
|
|
|
}
|
|
|
@@ -1555,6 +1559,7 @@ public class SalaryItemServiceImpl extends ServiceImpl<SalaryItemMapper, SalaryI
|
|
|
salary.setAssessTeachingResearchName(item.getAssessTeachingResearchName());//教研组长考核补贴标准
|
|
|
//salary.setCustomizeSeven(item.getAssessTeachingResearch());//教研组长考核补贴
|
|
|
salary.setEnjoyOfficeTreatment(item.getEnjoyOfficeTreatment());//是否享受办公待遇
|
|
|
+ salary.setImportedOrNot(0);//是否已导入出勤
|
|
|
SalaryItem selectOne = baseMapper.selectOne(new QueryWrapper<SalaryItem>().eq("id_number", salary.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
|
|
|
.eq("is_deleted", 0).eq("pid",salary.getPid()));
|
|
|
if (selectOne == null){
|
|
|
@@ -2430,7 +2435,52 @@ public class SalaryItemServiceImpl extends ServiceImpl<SalaryItemMapper, SalaryI
|
|
|
//10.应发工资=基本工资+工作量工资+日常考核工资+日常考核工资调整+奖励工资+职务津贴+班主任津贴+补贴项-扣除项+保险(个人部分)+公积金(个人部分).. 大于700 保险(个人部分) 不加
|
|
|
//11.实发工资=应发工资-个人所得税-个人保险-公积金个人
|
|
|
SalaryItem item = baseMapper.selectById(salaryItem.getId());
|
|
|
+ BigDecimal zeroPointEight = new BigDecimal(0.8);//居家标准为80%
|
|
|
if (item != null){
|
|
|
+ //导入的excel为出勤
|
|
|
+ if (ObjectUtil.isNotEmpty(salaryItem.getIsOrNot()) && salaryItem.getIsOrNot().equals(1)){
|
|
|
+ if (ObjectUtil.isNotEmpty(item.getImportedOrNot()) && item.getImportedOrNot().equals(1)){
|
|
|
+ throw new SecurityException(item.getCname()+"出勤已导入,请勿重复导入");
|
|
|
+ }
|
|
|
+ if (item.getAttendanceType().equals("居家")){//出勤为居家则按照所有标准80%计算
|
|
|
+ item.setSalaryWithdrawalStandard(item.getSalaryWithdrawalStandard().multiply(zeroPointEight));//工资拨付标准
|
|
|
+ item.setRankWithdrawalStandard(item.getRankWithdrawalStandard().multiply(zeroPointEight));//职级拨付标准
|
|
|
+ item.setPerformanceAward(item.getPerformanceAward().multiply(zeroPointEight));//履约奖
|
|
|
+ item.setSchoolAgeSalary(item.getSchoolAgeSalary().multiply(zeroPointEight));//校龄工资
|
|
|
+ item.setCapitalIncrease(item.getCapitalIncrease().multiply(zeroPointEight));//增资
|
|
|
+ item.setEducationSalary(item.getEducationSalary().multiply(zeroPointEight));//学历工资
|
|
|
+ item.setRankSalary(item.getRankSalary().multiply(zeroPointEight));//职级工资
|
|
|
+ item.setSalaryBaseName(item.getSalaryBaseName().multiply(zeroPointEight));//工资基数标准
|
|
|
+ item.setWorkloadSalaryCritertion(item.getWorkloadSalaryCritertion().multiply(zeroPointEight));//工作量工资标准
|
|
|
+ item.setVirtualWorkloadSalary(item.getVirtualWorkloadSalary().multiply(zeroPointEight));//虚拟工作量工资标准
|
|
|
+ item.setDoubleCease(item.getDoubleCease().multiply(zeroPointEight));//双休日工作量工资标准
|
|
|
+ item.setVirtualDoubleCease(item.getVirtualDoubleCease().multiply(zeroPointEight));//虚拟双休日工作量工资标准
|
|
|
+ item.setVirtualDailyAssessmentCriteria(item.getVirtualDailyAssessmentCriteria().multiply(zeroPointEight));//虚拟日常考核标准
|
|
|
+ item.setTermPerformanceSalaryName(item.getTermPerformanceSalaryName().multiply(zeroPointEight));//绩效工资标准
|
|
|
+ item.setAppropriationProportion(new BigDecimal(0.8));
|
|
|
+ }else if (item.getAttendanceType().equals("在校")){//在校
|
|
|
+ BigDecimal absenceDays = item.getRequiredAttendanceDays().subtract(item.getActualAttendanceDays());//缺勤天数 = 应出勤天数-实际出勤天数
|
|
|
+ BigDecimal allotment = item.getActualAttendanceDays().divide(item.getRequiredAttendanceDays(), MathContext.DECIMAL32).setScale(2,BigDecimal.ROUND_HALF_UP);//拨付比例
|
|
|
+ if (absenceDays.compareTo(new BigDecimal("5")) > 0){//缺勤天数大于5 按照 标准金额/22*出勤天数 重新计算
|
|
|
+ item.setSalaryWithdrawalStandard(item.getSalaryWithdrawalStandard().multiply(allotment));//工资拨付标准
|
|
|
+ item.setRankWithdrawalStandard(item.getRankWithdrawalStandard().multiply(allotment));//职级拨付标准
|
|
|
+ item.setPerformanceAward(item.getPerformanceAward().multiply(allotment));//履约奖
|
|
|
+ item.setSchoolAgeSalary(item.getSchoolAgeSalary().multiply(allotment));//校龄工资
|
|
|
+ item.setCapitalIncrease(item.getCapitalIncrease().multiply(allotment));//增资
|
|
|
+ item.setEducationSalary(item.getEducationSalary().multiply(allotment));//学历工资
|
|
|
+ item.setRankSalary(item.getRankSalary().multiply(allotment));//职级工资
|
|
|
+ item.setSalaryBaseName(item.getSalaryBaseName().multiply(allotment));//工资基数标准
|
|
|
+ item.setWorkloadSalaryCritertion(item.getWorkloadSalaryCritertion().multiply(allotment));//工作量工资标准
|
|
|
+ item.setVirtualWorkloadSalary(item.getVirtualWorkloadSalary().multiply(allotment));//虚拟工作量工资标准
|
|
|
+ item.setDoubleCease(item.getDoubleCease().multiply(allotment));//双休日工作量工资标准
|
|
|
+ item.setVirtualDoubleCease(item.getVirtualDoubleCease().multiply(allotment));//虚拟双休日工作量工资标准
|
|
|
+ item.setVirtualDailyAssessmentCriteria(item.getVirtualDailyAssessmentCriteria().multiply(allotment));//虚拟日常考核标准
|
|
|
+ item.setTermPerformanceSalaryName(item.getTermPerformanceSalaryName().multiply(allotment));//绩效工资标准
|
|
|
+ }
|
|
|
+ item.setAppropriationProportion(allotment);
|
|
|
+ }
|
|
|
+ item.setImportedOrNot(1);
|
|
|
+ }
|
|
|
item.setMomthWorkloadSalary(item.getMonthHour().multiply(item.getMonthPrice()));//月份工作量工资
|
|
|
item.setDoubleMoney(item.getDoubleHour().multiply(item.getDoublePrice()));//双休日工作量工资
|
|
|
item.setCustomTwo(item.getCustom().multiply(item.getCustomOne()));//代课工作量工资
|
|
|
@@ -2443,11 +2493,16 @@ public class SalaryItemServiceImpl extends ServiceImpl<SalaryItemMapper, SalaryI
|
|
|
.add(item.getCustomizeTwo())
|
|
|
.add(item.getCustomizeThree())
|
|
|
);
|
|
|
- item.setBasicsSalary(item.getSchoolAgeSalary().add(item.getCapitalIncrease()).add(item.getEducationSalary()).add(item.getRankSalary()).add(item.getSalaryBase()).add(item.getPerformanceAward()));//基础工资
|
|
|
- item.setWorkloadSalary(item.getMomthWorkloadSalary().add(item.getDoubleMoney()).add(item.getCustomTwo()).add(item.getCustomThree()).add(item.getCustomFour()).add(item.getCustomFive()).add(item.getCustomSix()).add(item.getCustomSeven()).subtract(item.getVirtualWorkloadSalary()).subtract(item.getVirtualDoubleCease()));//工作量工资
|
|
|
- item.setAwardSalary(item.getCustomAward().add(item.getCustomAwardOne()).add(item.getCustomAwardTwo()).add(item.getCustomAwardThree()).add(item.getCustomAwardFour()).add(item.getCustomAwardFive()).add(item.getCustomAwardSix()).add(item.getCustomAwardSeven()).add(item.getCustomAwardEight()).add(item.getCustomAwardNine()));//奖励工资
|
|
|
- item.setDutyAllowances(item.getLeadingCadreSubsidy().add(item.getCustomizeFive()).add(item.getPrepareLessons()).add(item.getCustomizeSix()).add(item.getTeachingResearch()).add(item.getCustomizeSeven()));//职务津贴
|
|
|
- item.setClassTeacherSubsidy(item.getClassTeacherFee().add(item.getClasses()).subtract(item.getAdjustTheBalance()).subtract(item.getPayrollCredit()).subtract(item.getPaid()).add(item.getCustomizeEight()));//班主任津贴
|
|
|
+ //基础工资
|
|
|
+ item.setBasicsSalary(item.getSchoolAgeSalary().add(item.getCapitalIncrease()).add(item.getEducationSalary()).add(item.getRankSalary()).add(item.getSalaryBase()).add(item.getPerformanceAward()));
|
|
|
+ //工作量工资
|
|
|
+ item.setWorkloadSalary(item.getMomthWorkloadSalary().add(item.getDoubleMoney()).add(item.getCustomTwo()).add(item.getCustomThree()).add(item.getCustomFour()).add(item.getCustomFive()).add(item.getCustomSix()).add(item.getCustomSeven()).subtract(item.getVirtualWorkloadSalary()).subtract(item.getVirtualDoubleCease()));
|
|
|
+ //奖励工资
|
|
|
+ item.setAwardSalary(item.getCustomAward().add(item.getCustomAwardOne()).add(item.getCustomAwardTwo()).add(item.getCustomAwardThree()).add(item.getCustomAwardFour()).add(item.getCustomAwardFive()).add(item.getCustomAwardSix()).add(item.getCustomAwardSeven()).add(item.getCustomAwardEight()).add(item.getCustomAwardNine()));
|
|
|
+ //职务津贴
|
|
|
+ item.setDutyAllowances(item.getLeadingCadreSubsidy().add(item.getCustomizeFive()).add(item.getPrepareLessons()).add(item.getCustomizeSix()).add(item.getTeachingResearch()).add(item.getCustomizeSeven()));
|
|
|
+ //班主任津贴
|
|
|
+ item.setClassTeacherSubsidy(item.getClassTeacherFee().add(item.getClasses()).subtract(item.getAdjustTheBalance()).subtract(item.getPayrollCredit()).subtract(item.getPaid()).add(item.getCustomizeEight()));
|
|
|
//补贴项
|
|
|
item.setSubsidy(item.getWx().add(item.getMaternityLeaveSalary()).add(item.getOvertimeAtWeekend()).add(item.getYearUpPerformance()).add(item.getYearDownPerformance()).add(item.getCadreAllowanceReservation()).add(item.getVacationOvertimePay()).add(item.getNewPostTrain()).add(item.getWinningPrize()).add(item.getClassMinister()).add(item.getMonthViceClassFee()).add(item.getSafetyFees()).add(item.getReserveReplacement()));
|
|
|
//扣除项
|