Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
8
8timerapiv200
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
8timerv2
8timerapiv200
Commits
b8faed05
Commit
b8faed05
authored
4 years ago
by
ilal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交薪酬计算
parent
a53643ec
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
84 additions
and
59 deletions
+84
-59
src/main/java/cn/timer/api/controller/xcgl/SalaryManagementController.java
+84
-59
No files found.
src/main/java/cn/timer/api/controller/xcgl/SalaryManagementController.java
View file @
b8faed05
...
...
@@ -512,19 +512,6 @@ public class SalaryManagementController {
zzx
.
setRulestate
(
4
);
//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入]
}
// zzx.setRule(xzxj.getGsxs());//规则********************************
// if(jsjsf[a].equals("个税")) {
// zzx.setGsid(0);
// }else {
// zzx.setGsid(xzxj.getId());//公式id 0:未关联规则
// }
// zzx.setGsgs(xzxj.getGsxs());//公式格式 系统提供/自定义公式
// if(jsjsf[a].equals("其他扣除")) {
// zzx.setRulestate(4);//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入]
// }else {
// zzx.setRulestate(2);
// }
XcglAssoOption
opt
=
new
LambdaQueryChainWrapper
<
XcglAssoOption
>(
xcglassooptionmapper
).
eq
(
XcglAssoOption:
:
getOptionname
,
jsjsf
[
a
]).
one
();
zzx
.
setOptionid
(
opt
.
getId
());
zzx
.
setType
(
2
);
//类型 1:系统项;2:非系统项
...
...
@@ -541,7 +528,6 @@ public class SalaryManagementController {
}
}
}
else
{
//从其他薪资组复制规则
/*****************/
//未加入分组
List
<
XcglAssoJsgzzx
>
wjrfzlist
=
new
LambdaQueryChainWrapper
<
XcglAssoJsgzzx
>(
xcglassojsgzzxmapper
).
eq
(
XcglAssoJsgzzx:
:
getXzzid
,
paygro
.
getPxfs
()).
eq
(
XcglAssoJsgzzx:
:
getJxgzid
,
0
).
list
();
...
...
@@ -567,7 +553,6 @@ public class SalaryManagementController {
if
(
wjrfzzzxlist
.
size
()
>
0
)
{
xcglassojsgzzxmapper
.
insertxcglassojsgzzxList
(
wjrfzzzxlist
);
}
/*************/
//计薪规则组
List
<
XcglAssoJxgz
>
jxgzlist
=
new
LambdaQueryChainWrapper
<
XcglAssoJxgz
>(
xcglassojxgzmapper
).
eq
(
XcglAssoJxgz:
:
getXzzid
,
paygro
.
getPxfs
()).
list
();
...
...
@@ -1194,30 +1179,36 @@ public class SalaryManagementController {
@PostMapping
(
value
=
"/payCustomitem"
)
@ApiOperation
(
value
=
"创建自定义计薪规则组项"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
ResponseResult
PayCustomRuleGroupItem
(
@CurrentUser
UserBean
userBean
,
@RequestBody
PayCustomZDYDto
payc
)
{
XcglAssoJsgzzx
zzx
=
XcglAssoJsgzzx
.
builder
().
build
();
zzx
.
setSalaryitem
(
payc
.
getName
());
//薪资项
zzx
.
setYhmbzd
(
payc
.
getName
());
//银行模板项 需与银行一一对应
if
(
payc
.
getSource
()
==
1
)
{
//自定义公式
zzx
.
setRule
(
payc
.
getFormula
());
//规则********************************
zzx
.
setGsid
(
0
);
//公式id 0:未关联规则
zzx
.
setGsgs
(
payc
.
getFormula
());
//公式格式 系统提供/自定义公式
zzx
.
setRulestate
(
3
);
//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入]
}
else
if
(
payc
.
getSource
()
==
2
){
zzx
.
setRule
(
"每月手动导入"
);
//规则********************************
zzx
.
setGsid
(
0
);
//公式id 0:未关联规则
zzx
.
setGsgs
(
"每月手动导入"
);
//公式格式 系统提供/自定义公式
zzx
.
setRulestate
(
4
);
//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入]
XcglAssoJsgzzx
sfcz
=
XcglAssoJsgzzx
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
XcglAssoJsgzzx
>().
lambda
().
eq
(
XcglAssoJsgzzx:
:
getXzzid
,
payc
.
getGid
()).
eq
(
XcglAssoJsgzzx:
:
getSalaryitem
,
payc
.
getName
()));
if
(
sfcz
==
null
)
{
XcglAssoJsgzzx
zzx
=
XcglAssoJsgzzx
.
builder
().
build
();
zzx
.
setSalaryitem
(
payc
.
getName
());
//薪资项
zzx
.
setYhmbzd
(
payc
.
getName
());
//银行模板项 需与银行一一对应
if
(
payc
.
getSource
()
==
1
)
{
//自定义公式
zzx
.
setRule
(
payc
.
getFormula
());
//规则********************************
zzx
.
setGsid
(
0
);
//公式id 0:未关联规则
zzx
.
setGsgs
(
payc
.
getFormula
());
//公式格式 系统提供/自定义公式
zzx
.
setRulestate
(
3
);
//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入]
}
else
if
(
payc
.
getSource
()
==
2
){
zzx
.
setRule
(
"每月手动导入"
);
//规则********************************
zzx
.
setGsid
(
0
);
//公式id 0:未关联规则
zzx
.
setGsgs
(
"每月手动导入"
);
//公式格式 系统提供/自定义公式
zzx
.
setRulestate
(
4
);
//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入]
}
zzx
.
setType
(
2
);
//类型 1:系统项;2:非系统项
zzx
.
setAddtime
(
new
Date
().
getTime
());
//添加时间
zzx
.
setAdduserid
(
userBean
.
getEmpNum
());
//添加人员id
zzx
.
setJxgzid
(
payc
.
getFgid
());
//计薪规则组id 0:未加入组
zzx
.
setRemarks
(
payc
.
getRemarks
());
//备注
zzx
.
setXzzid
(
payc
.
getGid
());
//
zzx
.
setOptionid
(
0
);
zzx
.
setIsCustom
(
1
);
//是否自定义项(0:否;1:是)
xcglassojsgzzxmapper
.
jsgzzxinsert
(
zzx
);
return
new
ResponseResult
().
success
(
"创建薪资组成功"
,
zzx
);
}
else
{
return
new
ResponseResult
().
error
(
payc
.
getName
()+
"重复添加"
);
}
zzx
.
setType
(
2
);
//类型 1:系统项;2:非系统项
zzx
.
setAddtime
(
new
Date
().
getTime
());
//添加时间
zzx
.
setAdduserid
(
userBean
.
getEmpNum
());
//添加人员id
zzx
.
setJxgzid
(
payc
.
getFgid
());
//计薪规则组id 0:未加入组
zzx
.
setRemarks
(
payc
.
getRemarks
());
//备注
zzx
.
setXzzid
(
payc
.
getGid
());
//
zzx
.
setOptionid
(
0
);
zzx
.
setIsCustom
(
1
);
//是否自定义项(0:否;1:是)
xcglassojsgzzxmapper
.
jsgzzxinsert
(
zzx
);
return
new
ResponseResult
().
success
(
"创建薪资组成功"
,
zzx
);
}
/**
...
...
@@ -1651,7 +1642,7 @@ public class SalaryManagementController {
double
base_pay
=
0
;
//基本工资
double
post_allowance
=
0
;
//岗位津贴
double
attendance_days
=
0
;
//应出勤天数
double
actual_attendance_days
=
0
;
//实出勤天数
//
double actual_attendance_days = 0;//实出勤天数
double
matter_leave
=
0
;
//事假
double
sick_leave
=
0
;
//病假
double
absenteeism_days
=
0
;
//旷工天数
...
...
@@ -1687,7 +1678,7 @@ public class SalaryManagementController {
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() == 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
();
}
//旷工天数
...
...
@@ -1708,9 +1699,9 @@ public class SalaryManagementController {
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
))
{
if
(
xzx
.
getRulestate
().
equals
(
2
)
||
(
xzx
.
getIsCustom
()
==
0
&&
xzx
.
getOptionid
()
==
69
)
)
{
double
result
=
0
;
if
(
xzx
.
getIsCustom
()
==
0
&&
xzx
.
getOptionid
()
==
31
)
{
//司龄工资
String
formula
=
xzx
.
getGsgs
();
//#司龄#*100
...
...
@@ -1732,7 +1723,7 @@ public class SalaryManagementController {
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
)));
result
=
SalaryTool
.
formatDouble
(
Double
.
valueOf
(
String
.
valueOf
(
js
.
eval
(
qaz
)
)));
}
if
(
xzx
.
getIsCustom
()
==
0
&&
xzx
.
getOptionid
()
==
30
)
{
//迟到早退扣款
String
qaz
=
""
;
...
...
@@ -1753,7 +1744,7 @@ public class SalaryManagementController {
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
)));
result
=
SalaryTool
.
formatDouble
(
Double
.
valueOf
(
String
.
valueOf
(
js
.
eval
(
qaz
)
)));
wages_payable
=
result
;
}
...
...
@@ -1765,13 +1756,13 @@ public class SalaryManagementController {
e
.
printStackTrace
();
System
.
out
.
println
(
"个税计算错误"
);
}
result
=
personal_income_tax
;
result
=
personal_income_tax
<
0
?
0.0
:
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
)));
String
qaz
=
formula
.
replace
(
"#应发工资#"
,
String
.
valueOf
(
wages_payable
)).
replace
(
"#个人社保#"
,
String
.
valueOf
(
grsb
)).
replace
(
"#个人公积金#"
,
String
.
valueOf
(
grgjj
)).
replace
(
"#个税#"
,
String
.
valueOf
(
personal_income_tax
<
0
?
0.0
:
personal_income_tax
));
result
=
SalaryTool
.
formatDouble
(
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
()));
...
...
@@ -1779,27 +1770,58 @@ public class SalaryManagementController {
//(自定义公式计算): 应发工资、实发工资
if
(
xzx
.
getRulestate
()
==
3
)
{
double
result
=
0
;
String
qaz
=
""
;
String
formula
=
""
;
//计薪规则组项中自定义项
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
))
formula
=
xzx
.
getGsgs
();
//#基本工资#+#岗位津贴#+#绩效奖金#+#业绩提成#+#税前补差#-#事假扣款#-#病假扣款#?
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
)
{
//实发工资
formula
=
xzx
.
getGsgs
();
//#应发工资#-#个人社保#-#个人公积金#-#个税#
qaz
=
formula
.
replace
(
"#应发工资#"
,
String
.
valueOf
(
wages_payable
)).
replace
(
"#个人社保#"
,
String
.
valueOf
(
grsb
)).
replace
(
"#个人公积金#"
,
String
.
valueOf
(
grgjj
)).
replace
(
"#个税#"
,
String
.
valueOf
(
personal_income_tax
));
}
for
(
XcglAssoJsgzzx
zdy
:
zdyx
)
{
double
custom_
=
0
;
//自定义
boolean
status
=
qaz
.
contains
(
"#"
+
zdy
.
getSalaryitem
()+
"#"
);
//公式中是否存在自定义
if
(
status
)
{
//存在
XcglAssoJsgzzx
zdygsx
=
XcglAssoJsgzzx
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
XcglAssoJsgzzx
>().
lambda
().
eq
(
XcglAssoJsgzzx:
:
getRulestate
,
4
).
eq
(
XcglAssoJsgzzx:
:
getIsCustom
,
1
)
.
eq
(
XcglAssoJsgzzx:
:
getOptionid
,
0
).
eq
(
XcglAssoJsgzzx:
:
getSalaryitem
,
zdy
.
getSalaryitem
()));
XcglAssoXzb
xzb_custom
=
XcglAssoXzb
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
XcglAssoXzb
>().
lambda
().
eq
(
XcglAssoXzb:
:
getXzxid
,
zdygsx
.
getId
()).
eq
(
XcglAssoXzb:
:
getUserid
,
pag
.
getUserid
()));
custom_
=
xzb_custom
.
getXzxjg
();
qaz
=
formula
.
replace
(
"#"
+
zdy
.
getSalaryitem
()+
"#"
,
String
.
valueOf
(
custom_
));
}
}
boolean
status
=
qaz
.
contains
(
"#"
);
//再次确认公式中是否存在系统数据项
if
(
status
)
{
List
<
XcglAssoJsgzzx
>
system_zdyx
=
XcglAssoJsgzzx
.
builder
().
build
().
selectList
(
new
QueryWrapper
<
XcglAssoJsgzzx
>().
lambda
().
eq
(
XcglAssoJsgzzx:
:
getXzzid
,
calcomtiondto
.
getPay_group_id
())
.
eq
(
XcglAssoJsgzzx:
:
getIsCustom
,
0
).
ne
(
XcglAssoJsgzzx:
:
getType
,
1
));
for
(
XcglAssoJsgzzx
sys
:
system_zdyx
)
{
if
(
qaz
.
contains
(
"#"
+
sys
.
getSalaryitem
()+
"#"
))
{
XcglAssoXzb
xzb_custom
=
XcglAssoXzb
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
XcglAssoXzb
>().
lambda
().
eq
(
XcglAssoXzb:
:
getXzxid
,
sys
.
getId
()).
eq
(
XcglAssoXzb:
:
getUserid
,
pag
.
getUserid
()));
double
custom_two
=
xzb_custom
.
getXzxjg
();
qaz
=
formula
.
replace
(
"#"
+
sys
.
getSalaryitem
()+
"#"
,
String
.
valueOf
(
custom_two
));
}
}
}
if
(!
qaz
.
contains
(
"#"
))
{
result
=
Double
.
valueOf
(
String
.
valueOf
(
js
.
eval
(
qaz
)));
}
else
{
System
.
err
.
println
(
xzx
.
getOptionid
()
+
":"
+
qaz
+
"有误!!!"
);
}
XcglAssoXzb
.
builder
().
xzxjg
(
result
).
build
().
update
(
new
QueryWrapper
<
XcglAssoXzb
>().
lambda
().
eq
(
XcglAssoXzb:
:
getXzxid
,
xzx
.
getId
()).
eq
(
XcglAssoXzb:
:
getUserid
,
pag
.
getUserid
()));
}
}
//存在的计薪规则组项数据对应 写入薪资表 --结束
}
//薪资组内成员--结束
...
...
@@ -1891,7 +1913,7 @@ public class SalaryManagementController {
String
[]
miscalculation
=
getPersonalincometax
(
cumynssde
);
gsmx
.
setTaxRate
(
Double
.
valueOf
(
miscalculation
[
0
]));
//税率
gsmx
.
setQuickCalculationDeduction
(
Double
.
valueOf
(
miscalculation
[
1
]));
//速算扣除数
gsmx
.
setCumYnse
(
Double
.
valueOf
(
miscalculation
[
3
]));
//累计应纳税额 【累计应纳税所得额*税率-速算扣除数】
gsmx
.
setCumYnse
(
Double
.
valueOf
(
miscalculation
[
2
]));
//累计应纳税额 【累计应纳税所得额*税率-速算扣除数】
double
cumyyjse
=
0
;
cumyyjse
=
(
sygs
==
null
?
0
:
sygs
.
getCumYyjse
())
+
(
sygs
==
null
?
0
:
sygs
.
getCumYbtse
());
...
...
@@ -1904,7 +1926,10 @@ public class SalaryManagementController {
gsmx
.
setQyid
(
orgcode
);
//企业id
gsmx
.
insert
();
personalincome
=
cumybtse
;
if
(
cumybtse
>
0
)
{
personalincome
=
cumybtse
;
}
}
return
personalincome
;
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment