Commit a53643ec by ilal

提交

parent c5bf4ef2
......@@ -63,5 +63,8 @@ public class XcglAssoXcjsgz extends Model<XcglAssoXcjsgz> {
private String degkText;
@ApiModelProperty(value = "", example = "")
private Integer rulestate;
@ApiModelProperty(value = "", example = "")
private Integer defaulttype;
}
\ No newline at end of file
......@@ -645,10 +645,13 @@ public class SalaryManagementController {
if(!xcjsgz.getGsxs().equals(modifysalaryruledto.getFormula())) {
XcglAssoJsgzzx.builder().gsid(modifysalaryruledto.getXcjsgzid()).gsgs(modifysalaryruledto.getFormula())
.rule(modifysalaryruledto.getFormula()).rulestate(3).id(modifysalaryruledto.getJsgzzxid()).build().updateById();
}else {
XcglAssoJsgzzx.builder().gsid(modifysalaryruledto.getXcjsgzid()).gsgs(modifysalaryruledto.getFormula())
.rule(modifysalaryruledto.getFormula()).rulestate(xcjsgz.getOptionid()).id(modifysalaryruledto.getJsgzzxid()).build().updateById();
}
}else {
XcglAssoJsgzzx.builder().gsid(modifysalaryruledto.getXcjsgzid()).gsgs(modifysalaryruledto.getFormula())
.rule(modifysalaryruledto.getFormula()).id(modifysalaryruledto.getJsgzzxid()).build().updateById();
.rule(modifysalaryruledto.getFormula()).rulestate(xcjsgz.getOptionid()).id(modifysalaryruledto.getJsgzzxid()).build().updateById();
}
return ResultUtil.success("操作成功!");
......@@ -1406,7 +1409,6 @@ public class SalaryManagementController {
yjs.updateById();
//薪资组信息
@SuppressWarnings("unused")
XcglAdminXzz xzz = new LambdaQueryChainWrapper<XcglAdminXzz>(xcgladminxzzmapper).eq(XcglAdminXzz::getId, id).one();
// sxrq = xzz.getXzyf();
xzyf = xzz.getXzyf();
......@@ -1489,6 +1491,10 @@ public class SalaryManagementController {
if(lbcx.getId() == 24) { numover = xcglassoxzbmapper.PeriodsOvertime(orgcode, xzyf, 1, znr.getUserid());}
if(lbcx.getId() == 25) { numover = xcglassoxzbmapper.PeriodsOvertime(orgcode, xzyf, 2, znr.getUserid());}
if(lbcx.getId() == 26) { numover = xcglassoxzbmapper.PeriodsOvertime(orgcode, xzyf, 3, znr.getUserid());}
}else if(tablename.equals("xcgl_asso_gsjsmx")) {
QueryWrapper<XcglAssoGsjsmx> queryWrapper = new QueryWrapper<>();
queryWrapper.select(fieldname).eq("user_num", znr.getUserid()).eq("qyid", userBean.getOrgCode()).eq("salary_month", xzyf);//select #{tablename} from yggl_main_emp where emp_num = ?
list = xcglassogsjsmxmapper.selectMaps(queryWrapper);
}
String autacq = "";
......@@ -1641,24 +1647,29 @@ public class SalaryManagementController {
//算薪月份
String salary_month = xzz.getXzyf();//算薪月份
//个税
double perinctax = 0;
//基本工资,岗位津贴,应出勤天数,实出勤天数,事假,病假
double base_pay = 0;//基本工资
double post_allowance = 0;//岗位津贴
double attendance_days = 0;//应出勤天数
double actual_attendance_days = 0;//实出勤天数
double matter_leave = 0;//事假
double sick_leave;//病假
double sick_leave = 0;//病假
double absenteeism_days = 0;//旷工天数
double personal_income_tax = 0;//个税
double other_deductions = 0;//其他扣除
double wages_payable = 0;//应发工资
double late_cs = 0;//迟到次数
double leave_early_cs = 0;//早退次数
double late_sc = 0;//迟到时长
double leave_early_sc = 0;//早退时长
double achievement_bonus = 0;//绩效奖金
double performance_commission = 0;//业绩提成
double pre_taxmakediff = 0;//税前补差
double matter_leave_deduction = 0;//事假扣款
double sick_leave_deduction = 0;//病假扣款
double secretary_ling = 0;//司龄
double grsb = 0;//个人社保
double grgjj = 0;//个人公积金
//薪资组内成员
for(XcglAssoXzury pag : paygrlist) {
......@@ -1673,63 +1684,125 @@ public class SalaryManagementController {
XcglAssoXzb xzb = XcglAssoXzb.builder().build().selectOne(new QueryWrapper<XcglAssoXzb>().lambda().eq(XcglAssoXzb::getXzxid, xzx.getId()).eq(XcglAssoXzb::getUserid, pag.getUserid()));
post_allowance = xzb.getXzxjg();
}
XcglAssoXzb xzb = XcglAssoXzb.builder().build().selectOne(new QueryWrapper<XcglAssoXzb>().lambda().eq(XcglAssoXzb::getXzxid, xzx.getId()).eq(XcglAssoXzb::getUserid, pag.getUserid()));
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 10) {//应出勤天数
attendance_days = xzb.getXzxjg();
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 11) {//实出勤天数
actual_attendance_days = xzb.getXzxjg();
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 32) {//事假
matter_leave = xzb.getXzxjg();
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 34) {//病假
sick_leave = xzb.getXzxjg();
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 72) {//其他扣除
other_deductions = xzb.getXzxjg();
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 10) { attendance_days = xzb.getXzxjg(); }//实出勤天数
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 11) { actual_attendance_days = xzb.getXzxjg(); }//实出勤天数
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 32) { matter_leave = xzb.getXzxjg(); }//事假
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 34) { sick_leave = xzb.getXzxjg(); }//病假
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 12) { absenteeism_days = xzb.getXzxjg(); }//旷工天数
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 72) { other_deductions = xzb.getXzxjg(); }//其他扣除
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 13) { late_cs = xzb.getXzxjg(); }//迟到次数
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 14) { leave_early_cs = xzb.getXzxjg(); }//早退次数
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 18) { late_sc = xzb.getXzxjg(); }//迟到时长
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 22) { leave_early_sc = xzb.getXzxjg(); }//早退时长
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 50) { grsb = xzb.getXzxjg(); }//个人社保
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 51) { grgjj = xzb.getXzxjg(); }//个人公积金
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 43) {//司龄
YgglMainEmp xzrz = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, pag.getUserid()).eq(YgglMainEmp::getOrgCode, orgcode));
int entry_date = Integer.valueOf(ClockInTool.SunNovCSTY(xzrz.getRzTime()));//yyyy
if(Integer.valueOf(strY) - entry_date >= 0) {
secretary_ling = Integer.valueOf(strY) - entry_date;
}
XcglAssoXzb.builder().xzxjg(secretary_ling).build().update(new QueryWrapper<XcglAssoXzb>().lambda().eq(XcglAssoXzb::getXzxid, xzx.getId()).eq(XcglAssoXzb::getUserid, pag.getUserid()));
}
//公式计算
//(固定公式计算):迟到早退扣款、事假扣款、病假扣款、旷工扣款、司龄工资、应发工资、实发工资
if(xzx.getRulestate().equals(2)) {
double result = 0;
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 31) {//司龄工资
String formula = xzx.getGsgs();//#司龄#*100
String qaz = formula.replace("#司龄#", String.valueOf(secretary_ling));
double result = Double.valueOf(String.valueOf(js.eval(qaz)));
XcglAssoXzb.builder().xzxjg(result).build().update(new QueryWrapper<XcglAssoXzb>().lambda().eq(XcglAssoXzb::getXzxid, xzx.getId()).eq(XcglAssoXzb::getUserid, pag.getUserid()));
result = Double.valueOf(String.valueOf(js.eval(qaz)));
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 27) {//事假扣款
String formula = xzx.getGsgs();//#基本工资#/#应出勤天数#*#事假# #事假#*200
String qaz = formula.replace("#基本工资#", String.valueOf(base_pay)).replace("#应出勤天数#", String.valueOf(attendance_days)).replace("#事假#", String.valueOf(matter_leave));
result = Double.valueOf(String.valueOf(js.eval(qaz)));
matter_leave_deduction = result;
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 28) {//病假扣款
String formula = xzx.getGsgs();//#基本工资#/#应出勤天数#*#病假#*0.4 #病假#*100
String qaz = formula.replace("#基本工资#", String.valueOf(base_pay)).replace("#应出勤天数#", String.valueOf(attendance_days)).replace("#病假#", String.valueOf(sick_leave));
result = Double.valueOf(String.valueOf(js.eval(qaz)));
sick_leave_deduction = result;
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 29) {//旷工扣款
String formula = xzx.getGsgs();//#基本工资#/#应出勤天数#*#旷工天数#*3 #旷工天数#*100
String qaz = formula.replace("#基本工资#", String.valueOf(base_pay)).replace("#应出勤天数#", String.valueOf(attendance_days)).replace("#旷工天数#", String.valueOf(absenteeism_days));
result = Double.valueOf(String.valueOf(js.eval(qaz)));
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 30) {//迟到早退扣款
String qaz = "";
if(xzx.getGsid().equals(1)) {
String formula = xzx.getGsgs();//#迟到次数#*20+#早退次数#*15
qaz = formula.replace("#迟到次数#", String.valueOf(late_cs)).replace("#早退次数#", String.valueOf(leave_early_cs));
}else {
String formula = xzx.getGsgs();//#迟到时长#*10+#早退时长#*5
qaz = formula.replace("#迟到时长#", String.valueOf(late_sc)).replace("#早退时长数#", String.valueOf(leave_early_sc));
}
if(!("").equals(qaz)) {
result = Double.valueOf(String.valueOf(js.eval(qaz)));
}
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 48) {//应发工资
String formula = xzx.getGsgs();//#基本工资#+#岗位津贴#+#绩效奖金#+#业绩提成#+#税前补差#-#事假扣款#-#病假扣款#
String qaz = formula.replace("#基本工资#", String.valueOf(base_pay)).replace("#岗位津贴#", String.valueOf(post_allowance)).replace("#绩效奖金#", String.valueOf(achievement_bonus))
.replace("#业绩提成#", String.valueOf(performance_commission)).replace("#税前补差#", String.valueOf(pre_taxmakediff))
.replace("#事假扣款#", String.valueOf(matter_leave_deduction)).replace("#病假扣款#", String.valueOf(sick_leave_deduction));
result = Double.valueOf(String.valueOf(js.eval(qaz)));
wages_payable = result;
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 69) {//个税
//个税计算
try {
personal_income_tax = CalculationOfIndividualIncomeTax(String.valueOf(pag.getUserid()), salary_month, orgcode, wages_payable, other_deductions);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("个税计算错误");
}
result = personal_income_tax;
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 70) {//实发工资
String formula = xzx.getGsgs();//#应发工资#-#个人社保#-#个人公积金#-#个税#
String qaz = formula.replace("#应发工资#", String.valueOf(wages_payable)).replace("#个人社保#", String.valueOf(grsb)).replace("#个人公积金#", String.valueOf(grgjj)).replace("#个税#", String.valueOf(personal_income_tax));
result = Double.valueOf(String.valueOf(js.eval(qaz)));
}
XcglAssoXzb.builder().xzxjg(result).build().update(new QueryWrapper<XcglAssoXzb>().lambda().eq(XcglAssoXzb::getXzxid, xzx.getId()).eq(XcglAssoXzb::getUserid, pag.getUserid()));
}
//(自定义公式计算): 应发工资、实发工资
if(xzx.getRulestate() == 3) {
//计薪规则组项中自定义项
List<XcglAssoJsgzzx> zdyx = XcglAssoJsgzzx.builder().build().selectList(new QueryWrapper<XcglAssoJsgzzx>().lambda().eq(XcglAssoJsgzzx::getXzzid, calcomtiondto.getPay_group_id()).eq(XcglAssoJsgzzx::getIsCustom, 1));
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 48) {//应发工资
String formula = xzx.getGsgs();//#基本工资#+#岗位津贴#+#绩效奖金#+#业绩提成#+#税前补差#-#事假扣款#-#病假扣款#?
String qaz = formula.replace("#基本工资#", String.valueOf(base_pay)).replace("#岗位津贴#", String.valueOf(post_allowance)).replace("#绩效奖金#", String.valueOf(achievement_bonus))
.replace("#业绩提成#", String.valueOf(performance_commission)).replace("#税前补差#", String.valueOf(pre_taxmakediff))
.replace("#事假扣款#", String.valueOf(matter_leave_deduction)).replace("#病假扣款#", String.valueOf(sick_leave_deduction));
for(XcglAssoJsgzzx zdy : zdyx) {
}
double result = Double.valueOf(String.valueOf(js.eval(qaz)));
}
if(xzx.getIsCustom() == 0 && xzx.getOptionid() == 70) {//实发工资
}
}
}
//个税计算
try {
personal_income_tax = CalculationOfIndividualIncomeTax(String.valueOf(pag.getUserid()), salary_month, orgcode, wages_payable, other_deductions);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("个税计算错误");
}
}//存在的计薪规则组项数据对应 写入薪资表 --结束
}
}//薪资组内成员--结束
return ResultUtil.data(null, "计算完成");
}
......
......@@ -15,6 +15,7 @@
<result column="dygk_text" property="dygkText" />
<result column="degk_text" property="degkText" />
<result column="rulestate" property="rulestate" />
<result column="defaulttype" property="defaulttype" />
</resultMap>
<sql id="Base_Column_List">
......@@ -38,7 +39,7 @@
<select id="QuerySalaryRules" resultMap="BaseResultMap">
select * from xcgl_asso_xcjsgz jsgz
where jsgz.formulaname = #{formulaname}
ORDER BY jsgz.id ASC LIMIT 1
and jsgz.defaulttype = 1
</select>
<!--
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment