Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xm-sportstest
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
xiamai-test
xm-sportstest
Commits
91d49642
Commit
91d49642
authored
Nov 08, 2024
by
xuyamei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工资结算新增18个api
parent
8e4c40e3
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1054 additions
and
0 deletions
+1054
-0
src/main/java/com/xiaomai/cases/polar/finance/salary/SalaryTools.java
+396
-0
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleItemCreate.java
+109
-0
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleItemUpdate.java
+69
-0
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleSubmitOrUpdateOrDelete.java
+203
-0
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleTemplateCreateOrUpdate.java
+277
-0
No files found.
src/main/java/com/xiaomai/cases/polar/finance/salary/SalaryTools.java
0 → 100644
View file @
91d49642
package
com
.
xiaomai
.
cases
.
polar
.
finance
.
salary
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.basetest.BaseTestImpl
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.finance.salary
* @Author: xuyamei
* @CreateTime: 2024-11-06 17:26
* @Description: 工资工具类
* @Version: 1.0
*/
public
class
SalaryTools
extends
BaseTestImpl
{
/**
* @description:查询工资条项目
* @author: xuyamei
* @date: 2024/11/6 17:28
* @param
* @return: com.alibaba.fastjson.JSONArray
**/
public
JSONArray
listSettleItem
(){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settleItem_listByStudioId"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONArray
(
"result"
);
}
/**
* @description:删除工资条项目
* @author: xuyamei
* @date: 2024/11/6 17:40
* @param id:工资条项目id
* @return: void
**/
public
void
deleteSettleItem
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settleItem_delete"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* @description:创建工资条项目
* @author: xuyamei
* @date: 2024/11/6 18:16
* @param type
* @param title
* @return: java.lang.String
**/
public
String
createSettleItem
(
String
type
,
String
title
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settleItem_create"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"adjustType"
,
type
);
// PLUS 加钱,MINUS 扣钱
jsonObject
.
put
(
"title"
,
title
);
// 工资条项目名称
jsonObject
.
put
(
"id"
,
""
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getString
(
"result"
);
}
/**
* @description:查询工资模版列表数据
* @author: xuyamei
* @date: 2024/11/7 16:19
* @param adminId:员工id
* @return: com.alibaba.fastjson.JSONArray
**/
public
JSONArray
fetchPageOfTemplate
(
String
adminId
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_fetchPageOfTemplate"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"size"
,
20
);
jsonObject
.
put
(
"current"
,
0
);
jsonObject
.
put
(
"adminId"
,
adminId
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
}
/**
* @description:工资模版详情
* @author: xuyamei
* @date: 2024/11/7 16:26
* @param id:模版id
* @return: com.alibaba.fastjson.JSONObject
**/
public
JSONObject
findDetailById
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settleTemplate_findDetailById"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
);
}
/**
* @description:删除工资模版
* @author: xuyamei
* @date: 2024/11/7 16:30
* @param id:模版id
* @return: com.alibaba.fastjson.JSONObject
**/
public
void
deleteTemplate
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settleTemplate_delete"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* @description:编辑工资条模版
* @author: xuyamei
* @date: 2024/11/7 16:57
* @param body:请求参数
* @return: void
**/
public
void
updateTemplate
(
JSONObject
body
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settleTemplate_update"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* @description:查询员工
* @author: xuyamei
* @date: 2024/11/7 17:08
* @param hasTemplate 是否有模版 在工资模版传false、在工资结算单传true
* @param searchContext 搜索员工手机号或者昵称
* @param currentSettleTemplateId 当前模版id(编辑模版时用到)
* @return: com.alibaba.fastjson.JSONArray
**/
public
JSONArray
fetchStaff
(
boolean
hasTemplate
,
String
searchContext
,
String
currentSettleTemplateId
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_fetchStaff"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"current"
,
0
);
jsonObject
.
put
(
"size"
,
20
);
jsonObject
.
put
(
"state"
,
"DUTY"
);
jsonObject
.
put
(
"hasTemplate"
,
hasTemplate
);
jsonObject
.
put
(
"searchContext"
,
searchContext
);
jsonObject
.
put
(
"currentSettleTemplateId"
,
currentSettleTemplateId
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
}
/**
* @description:查询工资结算单列表
* @author: xuyamei
* @date: 2024/11/8 11:16
* @param body :请求参数
* @return: com.alibaba.fastjson.JSONArray
**/
public
JSONArray
searchSettle
(
String
body
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settle_search"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
,
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
}
/**
* @description:获取工资结算单详情
* @author: xuyamei
* @date: 2024/11/8 13:59
* @param id :结算记录id
* @return: com.alibaba.fastjson.JSONObject
**/
public
JSONObject
fetchRecordById
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_fetchRecordById"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
);
}
/**
* @description:列表查询员工结算明细
* @author: xuyamei
* @date: 2024/11/8 14:03
* @param id:结算记录id
* @return: com.alibaba.fastjson.JSONArray
**/
public
JSONArray
fetchSettleResult
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_fetchSettleResult"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"settleRecordId"
,
id
);
jsonObject
.
put
(
"size"
,
20
);
jsonObject
.
put
(
"current"
,
0
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
}
/**
* @description:获取员工工资明细详情
* @author: xuyamei
* @date: 2024/11/8 14:46
* @param id 结算记录明细id
* @return:
**/
public
JSONObject
fetchSettleResultDetailById
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_fetchSettleResultDetailById"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
);
}
/**
* @description:更新员工结算单明细
* @author: xuyamei
* @date: 2024/11/8 15:00
* @param id
* @param billItemList
* @return: void
**/
public
void
updateSettleResult
(
String
id
,
JSONArray
billItemList
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_updateSettleResult"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
jsonObject
.
put
(
"billItemList"
,
billItemList
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* @description:确认结算
* @author: xuyamei
* @date: 2024/11/8 15:30
* @param id:结算单id
* @return: void
**/
public
void
confirmSettle
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settle_confirm"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* @description:删除结算单
* @author: xuyamei
* @date: 2024/11/8 15:31
* @param id:结算单id
* @return: void
**/
public
void
deleteSettle
(
String
id
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Salary
)
.
setApiName
(
"API_settle_delete"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
}
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleItemCreate.java
0 → 100644
View file @
91d49642
package
com
.
xiaomai
.
cases
.
polar
.
finance
.
salary
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.basetest.BaseTestImpl
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Test
;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.finance.salary
* @Author: xuyamei
* @CreateTime: 2024-11-06 16:44
* @Description: 创建、删除工资条项目
* @Version: 1.0
*/
public
class
TestSettleItemCreate
extends
BaseTestImpl
{
SalaryTools
salaryTools
=
new
SalaryTools
();
JSONArray
items
=
new
JSONArray
();
@BeforeMethod
@Override
public
void
beforeTest
(){
setTestInfo
(
ApiModule
.
Polar_Salary
,
"API_settleItem_create"
,
LoginAccount
.
GYM_PROD
,
Terminal
.
B
,
"xym"
);
super
.
beforeTest
();
}
@DataProvider
public
Object
[][]
dataProvider
(){
return
new
Object
[][]{
{
"PLUS"
,
"自定义加钱工资条项目"
},
{
"MINUS"
,
"自定义扣钱工资条项目"
}
};
}
@Test
(
dataProvider
=
"dataProvider"
)
public
void
testSettleItemCreate
(
String
type
,
String
title
){
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"adjustType"
,
type
);
// PLUS 加钱,MINUS 扣钱
jsonObject
.
put
(
"title"
,
title
);
// 工资条项目名称
jsonObject
.
put
(
"id"
,
""
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
jsonObject
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
response
=
xmAppApi
.
getBodyInJSON
();
String
id
=
response
.
getString
(
"result"
);
items
.
add
(
id
);
//存储id,用于删除
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
JSONArray
listSettleItem
=
salaryTools
.
listSettleItem
();
boolean
flag
=
false
;
for
(
int
i
=
0
;
i
<
listSettleItem
.
size
();
i
++)
{
if
(
listSettleItem
.
getJSONObject
(
i
).
getString
(
"id"
).
equals
(
id
)){
flag
=
true
;
break
;
}
}
Assert
.
assertEquals
(
true
,
flag
,
"创建工资条项目失败"
);
}
@Test
public
void
testSettleItemCreate
(){
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"adjustType"
,
"PLUS"
);
// PLUS 加钱,MINUS 扣钱
jsonObject
.
put
(
"title"
,
"底薪"
);
// 工资条项目名称
jsonObject
.
put
(
"id"
,
""
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
jsonObject
.
toJSONString
(),
headers
).
assetsSuccess
(
false
);
Assert
.
assertEquals
(
xmAppApi
.
getBodyInJSON
().
getString
(
"message"
),
"已存在相同项目名称,请修改"
,
"创建同名的工资条项目名称"
);
}
@Test
(
description
=
"删除创建的工资条项目"
,
priority
=
2
)
public
void
testSettleItemDelete
(){
for
(
int
i
=
0
;
i
<
items
.
size
();
i
++)
{
// 删除工资条项目
salaryTools
.
deleteSettleItem
(
items
.
getString
(
i
));
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
// 删除后查询工资条项目是否还存在
JSONArray
listSettleItem
=
salaryTools
.
listSettleItem
();
boolean
flag
=
true
;
for
(
int
j
=
0
;
j
<
listSettleItem
.
size
();
j
++)
{
if
(
listSettleItem
.
getJSONObject
(
j
).
getString
(
"id"
).
equals
(
items
.
getString
(
i
))){
flag
=
false
;
break
;
}
}
Assert
.
assertEquals
(
true
,
flag
,
"删除工资条项目失败"
);
}
}
}
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleItemUpdate.java
0 → 100644
View file @
91d49642
package
com
.
xiaomai
.
cases
.
polar
.
finance
.
salary
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.basetest.BaseTestImpl
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.finance.salary
* @Author: xuyamei
* @CreateTime: 2024-11-06 17:57
* @Description: 编辑工资条项目
* @Version: 1.0
*/
public
class
TestSettleItemUpdate
extends
BaseTestImpl
{
SalaryTools
salaryTools
=
new
SalaryTools
();
private
String
id
;
@BeforeMethod
@Override
public
void
beforeTest
(){
setTestInfo
(
ApiModule
.
Polar_Salary
,
"API_settleItem_update"
,
LoginAccount
.
GYM_PROD
,
Terminal
.
B
,
"xym"
);
super
.
beforeTest
();
}
@Test
public
void
testSettleItemUpdate
(){
id
=
salaryTools
.
createSettleItem
(
"PLUS"
,
"自定义工资条项目"
);
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"adjustType"
,
"MINUS"
);
// PLUS 加钱,MINUS 扣钱
jsonObject
.
put
(
"title"
,
"编辑工资条项目"
);
// 工资条项目名称
jsonObject
.
put
(
"id"
,
id
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
jsonObject
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
JSONArray
listSettleItem
=
salaryTools
.
listSettleItem
();
String
afterTitle
=
""
;
String
afterAdjustType
=
""
;
for
(
int
i
=
0
;
i
<
listSettleItem
.
size
();
i
++)
{
if
(
listSettleItem
.
getJSONObject
(
i
).
getString
(
"id"
).
equals
(
id
)){
afterTitle
=
listSettleItem
.
getJSONObject
(
i
).
getString
(
"title"
);
afterAdjustType
=
listSettleItem
.
getJSONObject
(
i
).
getString
(
"adjustType"
);
break
;
}
}
Assert
.
assertEquals
(
true
,
afterTitle
.
equals
(
"编辑工资条项目"
)
&&
afterAdjustType
.
equals
(
"MINUS"
),
"编辑工资条项目失败"
);
}
@Test
(
description
=
"删除创建的工资条项目"
,
priority
=
2
)
public
void
deleteSettleItem
(){
salaryTools
.
deleteSettleItem
(
id
);
}
}
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleSubmitOrUpdateOrDelete.java
0 → 100644
View file @
91d49642
package
com
.
xiaomai
.
cases
.
polar
.
finance
.
salary
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.basetest.BaseTestImpl
;
import
com.xiaomai.cases.polar.finance.revenueAndExpenditure.RevenueAndExpenditureTools
;
import
com.xiaomai.cases.polar.setting.pay.PayTools
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.TimeUtils
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Test
;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.finance.salary
* @Author: xuyamei
* @CreateTime: 2024-11-08 10:26
* @Description: 新增、更新、删除工资结算单
* @Version: 1.0
*/
public
class
TestSettleSubmitOrUpdateOrDelete
extends
BaseTestImpl
{
SalaryTools
salaryTools
=
new
SalaryTools
();
PayTools
payTools
=
new
PayTools
();
RevenueAndExpenditureTools
revenueAndExpenditureTools
=
new
RevenueAndExpenditureTools
();
private
String
id
;
// 结算单id
private
String
settleDetailId
=
""
;
// 员工结算明细id
private
String
payWay
;
// 员工结算明细id
@BeforeMethod
@Override
public
void
beforeTest
(){
setTestInfo
(
ApiModule
.
Polar_Salary
,
"API_settle_submit"
,
LoginAccount
.
GYM_PROD
,
Terminal
.
B
,
"xym"
);
super
.
beforeTest
();
}
@Test
public
void
testSettleSubmit
()
throws
InterruptedException
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"startDate"
,
TimeUtils
.
getTodayTime
());
// 结算开始时间
jsonObject
.
put
(
"payDate"
,
TimeUtils
.
getTodayTime
());
// 发薪日期
jsonObject
.
put
(
"endDate"
,
TimeUtils
.
getTodayEndTime
());
//结算结束时间
JSONArray
adminIds
=
new
JSONArray
();
adminIds
.
add
(
xmAppApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"adminIds"
,
adminIds
);
// 查询开启的发薪方式
JSONArray
payList
=
payTools
.
getList
().
getJSONArray
(
"result"
);
for
(
int
i
=
0
;
i
<
payList
.
size
();
i
++){
if
(!
payList
.
getJSONObject
(
i
).
getString
(
"code"
).
equals
(
"6"
)){
payWay
=
payList
.
getJSONObject
(
i
).
getString
(
"code"
);
break
;
}
}
jsonObject
.
put
(
"payWay"
,
payWay
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
jsonObject
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
Thread
.
sleep
(
6000
);
String
searchContext
=
"{\"brandId\":\""
+
xmAppApi
.
getLoginInfo
().
getBrandId
()+
"\",\"studioId\":\""
+
xmAppApi
.
getLoginInfo
().
getStudioId
()+
"\",\"current\":0,\"size\":20,\"startOfPayDate\":"
+
TimeUtils
.
getTodayTime
()+
",\"endOfPayDate\":"
+
TimeUtils
.
getTodayEndTime
()+
",\"startOfCreated\":"
+
TimeUtils
.
getTodayTime
()+
",\"endOfCreated\":"
+
TimeUtils
.
getTodayEndTime
()+
",\"settleStateList\":[\"FINISHED\"],\"operatorId\":\""
+
xmAppApi
.
getLoginInfo
().
getAdminId
()+
"\"}"
;
// check 1:获取结算单列表
JSONArray
search
=
salaryTools
.
searchSettle
(
searchContext
);
String
[]
resultKey
=
{
"startDate"
,
"endDate"
,
"payDate"
,
"payWay"
,
"state"
};
String
[]
resultValue
=
{
String
.
valueOf
(
TimeUtils
.
getTodayTime
()),
String
.
valueOf
(
TimeUtils
.
getTodayEndTime
()),
String
.
valueOf
(
TimeUtils
.
getTodayTime
()),
payWay
,
"FINISHED"
};
id
=
search
.
getJSONObject
(
0
).
getString
(
"id"
);
// 获取结算记录id
for
(
int
i
=
0
;
i
<
resultKey
.
length
;
i
++){
if
(
resultKey
[
i
].
equals
(
"endDate"
)){
Assert
.
assertTrue
(
search
.
getJSONObject
(
0
).
getLong
(
resultKey
[
i
])<=
Long
.
parseLong
(
resultValue
[
i
]));
}
else
{
Assert
.
assertEquals
(
search
.
getJSONObject
(
0
).
getString
(
resultKey
[
i
]),
resultValue
[
i
],
"结算单数据与实际数据不符合"
+
resultKey
[
i
]+
":"
+
resultValue
[
i
]);
}
}
// check 2:获取结算单详情
JSONObject
fetchRecordById
=
salaryTools
.
fetchRecordById
(
id
);
for
(
int
i
=
0
;
i
<
resultKey
.
length
;
i
++){
if
(
resultKey
[
i
].
equals
(
"endDate"
)){
Assert
.
assertTrue
(
fetchRecordById
.
getLong
(
resultKey
[
i
])<=
Long
.
parseLong
(
resultValue
[
i
]));
}
else
{
Assert
.
assertEquals
(
fetchRecordById
.
getString
(
resultKey
[
i
]),
resultValue
[
i
],
"结算单详情数据与实际数据不符合"
+
resultKey
[
i
]+
":"
+
resultValue
[
i
]);
}
}
Assert
.
assertTrue
(
fetchRecordById
.
getDouble
(
"amount"
)>
0
,
"结算单详情中结算金额小于0"
);
Assert
.
assertTrue
(
fetchRecordById
.
getJSONArray
(
"settleAdminIds"
).
getString
(
0
).
equals
(
xmAppApi
.
getLoginInfo
().
getAdminId
()),
"结算单详情中结算金额小于0"
);
// check 3:获取结算单结算明细
JSONArray
fetchSettleResult
=
salaryTools
.
fetchSettleResult
(
id
);
boolean
flag
=
false
;
for
(
int
i
=
0
;
i
<
fetchSettleResult
.
size
();
i
++){
if
(
fetchSettleResult
.
getJSONObject
(
i
).
getString
(
"adminId"
).
equals
(
xmAppApi
.
getLoginInfo
().
getAdminId
())){
flag
=
true
;
settleDetailId
=
fetchSettleResult
.
getJSONObject
(
i
).
getString
(
"id"
);
Assert
.
assertTrue
(
fetchSettleResult
.
getJSONObject
(
i
).
getDouble
(
"totalAmount"
)>
0
,
"结算单结算明细中结算金额小于0"
);
Assert
.
assertTrue
(
fetchSettleResult
.
getJSONObject
(
i
).
getJSONObject
(
"coachPay"
).
getDouble
(
"amount"
)>
0
,
"结算单结算明细中上课绩效结算金额小于0"
);
Assert
.
assertTrue
(
fetchSettleResult
.
getJSONObject
(
i
).
getJSONObject
(
"salePay"
).
getDouble
(
"amount"
)>
0
,
"结算单结算明细中销售绩效结算金额小于0"
);
break
;
}
}
Assert
.
assertTrue
(
flag
,
"结算单结算明细没有目标适用员工数据"
);
// check 4:获取员工结算明细详情
JSONObject
fetchSettleResultDetailById
=
salaryTools
.
fetchSettleResultDetailById
(
settleDetailId
);
Assert
.
assertTrue
(
fetchSettleResultDetailById
.
getDouble
(
"totalAmount"
)>
0
,
"员工结算明细详情中结算金额小于0"
);
Assert
.
assertTrue
(
fetchSettleResultDetailById
.
getString
(
"adminId"
).
equals
(
xmAppApi
.
getLoginInfo
().
getAdminId
()),
"员工结算明细详情中员工id不符"
);
Assert
.
assertTrue
(
fetchSettleResultDetailById
.
getString
(
"startDate"
).
equals
(
String
.
valueOf
(
TimeUtils
.
getTodayTime
())),
"员工结算明细详情中结算开始时间错误"
);
Assert
.
assertTrue
(
fetchSettleResultDetailById
.
getLong
(
"endDate"
)<=
TimeUtils
.
getTodayEndTime
(),
"员工结算明细详情中结算结束时间错误"
);
}
@DataProvider
public
Object
[][]
dataProvider
()
{
return
new
Object
[][]{
{
1.00
,
1
},
{-
1.00
,
2
}
};
}
@Test
(
priority
=
1
,
dataProvider
=
"dataProvider"
)
public
void
testUpdateSettleResult
(
double
num
,
int
type
)
throws
InterruptedException
{
if
(
settleDetailId
.
equals
(
""
)){
JSONArray
fetchSettleResult
=
salaryTools
.
fetchSettleResult
(
id
);
for
(
int
i
=
0
;
i
<
fetchSettleResult
.
size
();
i
++){
if
(
fetchSettleResult
.
getJSONObject
(
i
).
getString
(
"adminId"
).
equals
(
xmAppApi
.
getLoginInfo
().
getAdminId
())){
settleDetailId
=
fetchSettleResult
.
getJSONObject
(
i
).
getString
(
"id"
);
break
;
}
}
}
JSONObject
fetchSettleResultDetailById
=
salaryTools
.
fetchSettleResultDetailById
(
settleDetailId
);
JSONArray
billItemList
=
fetchSettleResultDetailById
.
getJSONObject
(
"settleResultInfo"
).
getJSONArray
(
"billItemList"
);
Double
beforeTotalAmount
=
fetchSettleResultDetailById
.
getDouble
(
"totalAmount"
);
int
index
=
0
;
//加或者减几次
for
(
int
i
=
0
;
i
<
billItemList
.
size
();
i
++){
index
++;
double
amount
=
billItemList
.
getJSONObject
(
i
).
getDouble
(
"amount"
)+
num
;
billItemList
.
getJSONObject
(
i
).
put
(
"amount"
,
amount
);
}
// 编辑工资明细
salaryTools
.
updateSettleResult
(
settleDetailId
,
billItemList
);
Thread
.
sleep
(
1000
);
// check 1:获取结算明细详情
double
afterTotalAmount
=
salaryTools
.
fetchSettleResultDetailById
(
settleDetailId
).
getDouble
(
"totalAmount"
);
if
(
type
==
1
){
Assert
.
assertEquals
(
afterTotalAmount
,
beforeTotalAmount
+
index
,
"编辑工资明细后,结算金额与预期不符"
);
}
else
{
Assert
.
assertEquals
(
afterTotalAmount
,
beforeTotalAmount
-
index
,
"编辑工资明细后,结算金额与预期不符"
);
}
// check 2:获取结算单详情
JSONObject
fetchRecordById
=
salaryTools
.
fetchRecordById
(
id
);
Assert
.
assertEquals
(
fetchRecordById
.
getDouble
(
"amount"
),
afterTotalAmount
,
"结算单详情中结算金额与预期不符"
);
}
@Test
(
description
=
"确认结算"
,
priority
=
2
)
public
void
testSettleConfirm
()
throws
InterruptedException
{
// 确认结算前查询发放工资的收支明细有多少条
JSONObject
revenue
=
revenueAndExpenditureTools
.
pageNormalIncomeExpense
(
payWay
,
"EXPENSE"
,
"SALARY"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
int
beforeTotal
=
Integer
.
parseInt
(
revenue
.
getJSONObject
(
"result"
).
getString
(
"total"
));
// 确认结算
salaryTools
.
confirmSettle
(
id
);
Thread
.
sleep
(
1000
);
// check 1:结算单状态为已确认
JSONObject
fetchRecordById
=
salaryTools
.
fetchRecordById
(
id
);
Assert
.
assertEquals
(
fetchRecordById
.
getString
(
"state"
),
"CONFIRMED"
,
"结算单状态与预期不符"
);
//check 2: 收支明细
revenue
=
revenueAndExpenditureTools
.
pageNormalIncomeExpense
(
payWay
,
"EXPENSE"
,
"SALARY"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
Assert
.
assertEquals
(
Integer
.
parseInt
(
revenue
.
getJSONObject
(
"result"
).
getString
(
"total"
)),
beforeTotal
+
1
,
"确认结算后,发放工资的收支明细数量与预期不符"
);
}
@Test
(
description
=
"删除结算单"
,
priority
=
3
)
public
void
testSettleDelete
()
throws
InterruptedException
{
// 确认结算前查询发放工资的收支明细有多少条
JSONObject
revenue
=
revenueAndExpenditureTools
.
pageNormalIncomeExpense
(
payWay
,
"EXPENSE"
,
"SALARY"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
int
beforeTotal
=
Integer
.
parseInt
(
revenue
.
getJSONObject
(
"result"
).
getString
(
"total"
));
salaryTools
.
deleteSettle
(
id
);
Thread
.
sleep
(
1000
);
revenue
=
revenueAndExpenditureTools
.
pageNormalIncomeExpense
(
payWay
,
"EXPENSE"
,
"SALARY"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
Assert
.
assertEquals
(
Integer
.
parseInt
(
revenue
.
getJSONObject
(
"result"
).
getString
(
"total"
)),
beforeTotal
-
1
,
"删除结算单后,发放工资的收支明细数量与预期不符"
);
}
}
src/main/java/com/xiaomai/cases/polar/finance/salary/TestSettleTemplateCreateOrUpdate.java
0 → 100644
View file @
91d49642
package
com
.
xiaomai
.
cases
.
polar
.
finance
.
salary
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.basetest.BaseTestImpl
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.TimeUtils
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Test
;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.finance.salary
* @Author: xuyamei
* @CreateTime: 2024-11-07 10:29
* @Description: 新建工资模版
* @Version: 1.0
*/
public
class
TestSettleTemplateCreateOrUpdate
extends
BaseTestImpl
{
SalaryTools
salaryTools
=
new
SalaryTools
();
private
String
id
;
@BeforeMethod
@Override
public
void
beforeTest
(){
setTestInfo
(
ApiModule
.
Polar_Salary
,
"API_settleTemplate_create"
,
LoginAccount
.
GYM_PROD
,
Terminal
.
B
,
"xym"
);
super
.
beforeTest
();
}
@DataProvider
public
Object
[][]
dataProvider
(){
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按上课次数无梯度计算
String
coachRule1
=
"{\"method\": \"UNIFIED\",\"rules\": {\"ALL\": [{\"dimension\": \"SCHED_COUNT\",\"gradientType\": \"NONE\",\"amount\": 200,\"role\": \"COACH\"}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按上课次数梯度超额累计计算
String
coachRule2
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":[{\"role\":\"COACH\",\"dimension\":\"SCHED_COUNT\",\"gradientType\":\"OVER_ACCUMULATE\",\"gradientList\":[{\"bottom\":0,\"amount\":100},{\"bottom\":2,\"amount\":200},{\"bottom\":3,\"amount\":300},{\"bottom\":4,\"amount\":400},{\"bottom\":5,\"amount\":500},{\"bottom\":6,\"amount\":600}]}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按上课次数梯度全额累计计算
String
coachRule3
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":[{\"role\":\"COACH\",\"dimension\":\"SCHED_COUNT\",\"gradientType\":\"FULL_ACCUMULATE\",\"gradientList\":[{\"bottom\":0,\"amount\":100},{\"bottom\":2,\"amount\":200},{\"bottom\":3,\"amount\":300},{\"bottom\":4,\"amount\":400},{\"bottom\":5,\"amount\":500},{\"bottom\":6,\"amount\":600}]}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按上课次数无梯度计算
String
coachRule4
=
"{\"method\": \"UNIFIED\",\"rules\": {\"ALL\": [{\"dimension\": \"HEAD_COUNT\",\"gradientType\": \"NONE\",\"amount\": 200,\"role\": \"COACH\"}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按上课次数梯度超额累计计算
String
coachRule5
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":[{\"role\":\"COACH\",\"dimension\":\"HEAD_COUNT\",\"gradientType\":\"OVER_ACCUMULATE\",\"gradientList\":[{\"bottom\":0,\"amount\":100},{\"bottom\":2,\"amount\":200},{\"bottom\":3,\"amount\":300},{\"bottom\":4,\"amount\":400},{\"bottom\":5,\"amount\":500},{\"bottom\":6,\"amount\":600}]}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按上课人数梯度全额累计计算
String
coachRule6
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":[{\"role\":\"COACH\",\"dimension\":\"HEAD_COUNT\",\"gradientType\":\"FULL_ACCUMULATE\",\"gradientList\":[{\"bottom\":0,\"amount\":100},{\"bottom\":2,\"amount\":200},{\"bottom\":3,\"amount\":300},{\"bottom\":4,\"amount\":400},{\"bottom\":5,\"amount\":500},{\"bottom\":6,\"amount\":600}]}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按课消金额无梯度计算
String
coachRule7
=
"{\"method\": \"UNIFIED\",\"rules\": {\"ALL\": [{\"dimension\": \"CHECK_BALANCE\",\"gradientType\": \"NONE\",\"amount\": 0.11,\"role\": \"COACH\"}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按课消金额梯度超额累计计算
String
coachRule8
=
" {\"method\": \"UNIFIED\",\"rules\": {\"ALL\": [{\"role\": \"COACH\",\"dimension\": \"CHECK_BALANCE\",\"gradientType\": \"OVER_ACCUMULATE\",\"gradientList\": [{\"bottom\": 0,\"amount\": 0.1}, {\"bottom\": 2000,\"amount\": 0.2}, {\"bottom\": 3000,\"amount\": 0.3}, {\"bottom\": 4000,\"amount\": 0.4}, {\"bottom\": 5000,\"amount\": 0.5}, {\"bottom\": 6000,\"amount\": 0.6}]}]}}"
;
// 上课绩效工资+所有课程类型统一计算:主教练、助教统一计算 按课消金额梯度全额累计计算
String
coachRule9
=
" {\"method\": \"UNIFIED\",\"rules\": {\"ALL\": [{\"role\": \"COACH\",\"dimension\": \"CHECK_BALANCE\",\"gradientType\": \"FULL_ACCUMULATE\",\"gradientList\": [{\"bottom\": 0,\"amount\": 0.1}, {\"bottom\": 2000,\"amount\": 0.2}, {\"bottom\": 3000,\"amount\": 0.3}, {\"bottom\": 4000,\"amount\": 0.4}, {\"bottom\": 5000,\"amount\": 0.5}, {\"bottom\": 6000,\"amount\": 0.6}]}]}}"
;
// 上课绩效工资+所有类型统一计算:主教和助教分开计算,主教按照上课次数,无梯度计算 助教按照上课人数无梯度计算
String
coachRule10
=
"{\"method\": \"UNIFIED\",\"rules\": {\"ALL\": [{\"dimension\": \"SCHED_COUNT\",\"gradientType\": \"NONE\",\"amount\": 20,\"role\": \"CHIEF\"}, {\"dimension\":\"HEAD_COUNT\",\"gradientType\": \"NONE\",\"amount\": 30,\"role\": \"ASSISTANT\"}]}}"
;
// 上课绩效工资+所有类型统一计算:主教和助教分开计算,主教按照课消金额全额累计 助教按照上课人数超额累计计算
String
coachRule11
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":[{\"role\":\"CHIEF\",\"dimension\":\"CHECK_BALANCE\",\"gradientType\":\"FULL_ACCUMULATE\",\"gradientList\":[{\"amount\":0.1001,\"bottom\":0},{\"amount\":0.2001,\"bottom\":1000}]},{\"role\":\"ASSISTANT\",\"dimension\":\"HEAD_COUNT\",\"gradientType\":\"OVER_ACCUMULATE\",\"gradientList\":[{\"amount\":255,\"bottom\":0},{\"amount\":355,\"bottom\":10}]}]}}"
;
// 上课绩效工资+不同课程类型分开计算: 主教和助教统一计算, 团课按照上课次数无梯度、私教按上课人数超额累计计算、训练营按课消金额,全额累计结算
String
coachRule12
=
"{\"method\":\"SEPARATE\",\"rules\":{\"GROUP_CLASS\":[{\"dimension\":\"SCHED_COUNT\",\"gradientType\":\"NONE\",\"amount\":200,\"role\":\"COACH\"}],\"PERSONAL\":[{\"dimension\":\"HEAD_COUNT\",\"gradientType\":\"OVER_ACCUMULATE\",\"role\":\"COACH\",\"gradientList\":[{\"amount\":50,\"bottom\":0},{\"amount\":100,\"bottom\":1},{\"amount\":150,\"bottom\":2}]}],\"TRAINING_CAMP\":[{\"dimension\":\"CHECK_BALANCE\",\"gradientType\":\"FULL_ACCUMULATE\",\"role\":\"COACH\",\"gradientList\":[{\"amount\":0.1,\"bottom\":0},{\"amount\":0.2,\"bottom\":1000},{\"amount\":0.3,\"bottom\":3008}]}]}}"
;
// 销售绩效工资+所有商品类型统一计算:按照销售金额无梯度计算
String
saleRule1
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":{\"gradientType\":\"NONE\",\"amount\":0.02}}}"
;
// 销售绩效工资+所有商品类型统一计算:按照销售金额超额计算
String
saleRule2
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":{\"gradientType\":\"OVER_ACCUMULATE\",\"gradientList\":[{\"bottom\":0,\"amount\":0.1},{\"bottom\":1000,\"amount\":0.2},{\"bottom\":2000,\"amount\":0.25},{\"bottom\":3000,\"amount\":0.3},{\"bottom\":4000,\"amount\":0.4},{\"bottom\":5000,\"amount\":0.5},{\"bottom\":6000,\"amount\":0.6},{\"bottom\":7000,\"amount\":0.7},{\"bottom\":8000,\"amount\":0.8},{\"bottom\":9000,\"amount\":0.9}]}}}"
;
// 销售绩效工资+所有商品类型统一计算:按照销售金额全额累计计算
String
saleRule3
=
"{\"method\":\"UNIFIED\",\"rules\":{\"ALL\":{\"gradientType\":\"FULL_ACCUMULATE\",\"gradientList\":[{\"bottom\":0,\"amount\":0.1},{\"bottom\":1000,\"amount\":0.2},{\"bottom\":2000,\"amount\":0.25},{\"bottom\":3000,\"amount\":0.3},{\"bottom\":4000,\"amount\":0.4},{\"bottom\":5000,\"amount\":0.5},{\"bottom\":6000,\"amount\":0.6},{\"bottom\":7000,\"amount\":0.7},{\"bottom\":8000,\"amount\":0.8},{\"bottom\":9000,\"amount\":0.9}]}}}"
;
// 销售绩效工资+不同商品类型分开计算:会员卡无梯度、体验卡超额累计、储值卡全额累计计算、训练营物体度
String
saleRule4
=
"{\"method\":\"SEPARATE\",\"rules\":{\"MEMBER_CARD\":{\"gradientType\":\"NONE\",\"amount\":0.02},\"EXPERIENCE_CARD\":{\"gradientType\":\"OVER_ACCUMULATE\",\"gradientList\":[{\"amount\":0.1,\"bottom\":0},{\"amount\":0.2,\"bottom\":2000},{\"amount\":0.21,\"bottom\":3000},{\"amount\":0.22,\"bottom\":4000},{\"amount\":0.23,\"bottom\":5000},{\"amount\":0.24,\"bottom\":6000},{\"amount\":0.25,\"bottom\":7000},{\"amount\":0.26,\"bottom\":8000},{\"amount\":0.27,\"bottom\":9000},{\"amount\":0.28,\"bottom\":10000}]},\"DEPOSIT_CARD\":{\"gradientType\":\"FULL_ACCUMULATE\",\"gradientList\":[{\"amount\":0.1,\"bottom\":0},{\"amount\":0.15,\"bottom\":1500},{\"amount\":0.25,\"bottom\":2500},{\"amount\":0.35,\"bottom\":3500},{\"amount\":0.45,\"bottom\":4500},{\"amount\":0.5,\"bottom\":5000}]},\"TRAINING_CAMP\":{\"gradientType\":\"NONE\",\"amount\":0.1}}}"
;
return
new
Object
[][]{
{
JSONObject
.
parseObject
(
coachRule1
),
JSONObject
.
parseObject
(
saleRule1
),
true
},
{
JSONObject
.
parseObject
(
coachRule2
),
JSONObject
.
parseObject
(
saleRule2
),
true
},
{
JSONObject
.
parseObject
(
coachRule3
),
JSONObject
.
parseObject
(
saleRule3
),
true
},
{
JSONObject
.
parseObject
(
coachRule4
),
JSONObject
.
parseObject
(
saleRule4
),
true
},
{
JSONObject
.
parseObject
(
coachRule5
),
JSONObject
.
parseObject
(
saleRule1
),
true
},
{
JSONObject
.
parseObject
(
coachRule6
),
JSONObject
.
parseObject
(
saleRule2
),
true
},
{
JSONObject
.
parseObject
(
coachRule7
),
JSONObject
.
parseObject
(
saleRule3
),
true
},
{
JSONObject
.
parseObject
(
coachRule8
),
JSONObject
.
parseObject
(
saleRule4
),
true
},
{
JSONObject
.
parseObject
(
coachRule9
),
JSONObject
.
parseObject
(
saleRule4
),
false
},
{
JSONObject
.
parseObject
(
coachRule10
),
JSONObject
.
parseObject
(
saleRule1
),
true
},
{
JSONObject
.
parseObject
(
coachRule11
),
JSONObject
.
parseObject
(
saleRule2
),
true
},
{
JSONObject
.
parseObject
(
coachRule12
),
JSONObject
.
parseObject
(
saleRule3
),
false
},
};
}
@Test
(
dataProvider
=
"dataProvider"
)
public
void
testSettleTemplateCreate
(
JSONObject
coachSettleRule
,
JSONObject
saleSettleRule
,
boolean
flag
)
throws
InterruptedException
{
// 新建模版时先查询员工是否有工资模版,有则删除
JSONArray
pageOfTemplate
=
salaryTools
.
fetchPageOfTemplate
(
xmAppApi
.
getLoginInfo
().
getAdminId
());
if
(
pageOfTemplate
.
size
()
>
0
){
salaryTools
.
deleteTemplate
(
pageOfTemplate
.
getJSONObject
(
0
).
getString
(
"id"
));
}
Thread
.
sleep
(
2500
);
JSONArray
adminIds
=
new
JSONArray
();
adminIds
.
add
(
xmAppApi
.
getLoginInfo
().
getAdminId
());
String
title
=
"工资结算模版"
+
TimeUtils
.
getCurrentTime
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"adminIds"
,
adminIds
);
jsonObject
.
put
(
"title"
,
title
);
jsonObject
.
put
(
"id"
,
""
);
JSONArray
settleItemList
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
JSONObject
settleItem
=
new
JSONObject
();
switch
(
i
)
{
case
0
:
// 底薪
settleItem
.
put
(
"settleItemId"
,
"1"
);
settleItem
.
put
(
"settleItemTitle"
,
"底薪"
);
settleItem
.
put
(
"adjustType"
,
"PLUS"
);
settleItem
.
put
(
"settleRuleType"
,
"FIXED_AMOUNT"
);
// 固定金额
settleItem
.
put
(
"fixedAmount"
,
123.01
);
settleItemList
.
add
(
settleItem
);
break
;
case
1
:
if
(!
coachSettleRule
.
toString
().
equals
(
""
))
{
settleItem
.
put
(
"settleItemId"
,
"2"
);
settleItem
.
put
(
"settleItemTitle"
,
"上课绩效工资"
);
settleItem
.
put
(
"adjustType"
,
"PLUS"
);
settleItem
.
put
(
"settleRuleType"
,
"COACH_PERFORMANCE"
);
//上课绩效工资
settleItem
.
put
(
"coachSettleRule"
,
coachSettleRule
);
settleItemList
.
add
(
settleItem
);
}
break
;
case
2
:
if
(!
saleSettleRule
.
toString
().
equals
(
""
))
{
settleItem
.
put
(
"settleItemId"
,
"3"
);
settleItem
.
put
(
"settleItemTitle"
,
"销售绩效工资"
);
settleItem
.
put
(
"adjustType"
,
"PLUS"
);
settleItem
.
put
(
"settleRuleType"
,
"SALE_PERFORMANCE"
);
//销售绩效工资
settleItem
.
put
(
"saleSettleRule"
,
saleSettleRule
);
settleItemList
.
add
(
settleItem
);
}
break
;
}
}
jsonObject
.
put
(
"settleItemList"
,
settleItemList
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
jsonObject
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
id
=
xmAppApi
.
getBodyInJSON
().
getJSONObject
(
"result"
).
getString
(
"templateId"
);
Thread
.
sleep
(
1000
);
// check 1:工资模版有该条数据
pageOfTemplate
=
salaryTools
.
fetchPageOfTemplate
(
xmAppApi
.
getLoginInfo
().
getAdminId
());
Assert
.
assertEquals
(
id
,
pageOfTemplate
.
getJSONObject
(
0
).
getString
(
"id"
),
"创建工资结算模版失败"
);
// check 2:工资详情页面的数据与新建的内容一致
JSONObject
detail
=
salaryTools
.
findDetailById
(
id
);
String
resultTitle
=
detail
.
getString
(
"title"
);
Assert
.
assertEquals
(
resultTitle
,
title
,
"新建的工资模版名称与详情不一致"
);
String
resultAdminIds
=
detail
.
getJSONArray
(
"adminIds"
).
toString
();
Assert
.
assertEquals
(
resultAdminIds
,
adminIds
.
toString
(),
"新建的工资模版适用员工与详情不一致"
);
JSONArray
resultSettleItemList
=
detail
.
getJSONArray
(
"settleItemList"
);
// 返回的工资条项目参数
JSONArray
expectSettleItemList
=
jsonObject
.
getJSONArray
(
"settleItemList"
);
// 传参的工资条项目参数
JSONObject
json1
=
new
JSONObject
();
json1
.
put
(
"settleItemId"
,
resultSettleItemList
);
JSONObject
json2
=
new
JSONObject
();
json2
.
put
(
"settleItemId"
,
expectSettleItemList
);
if
(
flag
){
// 分开计算后端返回的顺序与前端不一致,所以分开计算不校验
Assert
.
assertEquals
(
json1
.
toString
(),
json2
.
toString
(),
"新建的工资模版结算项目与详情不一致"
);
}
}
@Test
(
dataProvider
=
"dataProvider"
,
priority
=
1
)
public
void
testUpdateSettleTemplate
(
JSONObject
coachSettleRule
,
JSONObject
saleSettleRule
,
boolean
flag
)
throws
InterruptedException
{
JSONArray
adminIds
=
new
JSONArray
();
adminIds
.
add
(
xmAppApi
.
getLoginInfo
().
getAdminId
());
// 查询未设置工资模版的员工
JSONArray
staffList
=
salaryTools
.
fetchStaff
(
false
,
""
,
id
);
String
adminId
=
staffList
.
size
()
>
2
?
staffList
.
getJSONObject
(
1
).
getString
(
"id"
)
:
""
;
if
(!
adminId
.
equals
(
""
)){
adminIds
.
add
(
adminId
);
}
String
title
=
"编辑工资结算模版"
+
TimeUtils
.
getCurrentTime
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"adminIds"
,
adminIds
);
jsonObject
.
put
(
"title"
,
title
);
jsonObject
.
put
(
"id"
,
id
);
JSONArray
settleItemList
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
JSONObject
settleItem
=
new
JSONObject
();
switch
(
i
)
{
case
0
:
// 底薪
settleItem
.
put
(
"settleItemId"
,
"1"
);
settleItem
.
put
(
"settleItemTitle"
,
"底薪"
);
settleItem
.
put
(
"adjustType"
,
"PLUS"
);
settleItem
.
put
(
"settleRuleType"
,
"FIXED_AMOUNT"
);
// 固定金额
settleItem
.
put
(
"fixedAmount"
,
9770.01
);
settleItemList
.
add
(
settleItem
);
break
;
case
1
:
if
(!
coachSettleRule
.
toString
().
equals
(
""
))
{
settleItem
.
put
(
"settleItemId"
,
"2"
);
settleItem
.
put
(
"settleItemTitle"
,
"上课绩效工资"
);
settleItem
.
put
(
"adjustType"
,
"PLUS"
);
settleItem
.
put
(
"settleRuleType"
,
"COACH_PERFORMANCE"
);
//上课绩效工资
settleItem
.
put
(
"coachSettleRule"
,
coachSettleRule
);
settleItemList
.
add
(
settleItem
);
}
break
;
case
2
:
if
(!
saleSettleRule
.
toString
().
equals
(
""
))
{
settleItem
.
put
(
"settleItemId"
,
"3"
);
settleItem
.
put
(
"settleItemTitle"
,
"销售绩效工资"
);
settleItem
.
put
(
"adjustType"
,
"PLUS"
);
settleItem
.
put
(
"settleRuleType"
,
"SALE_PERFORMANCE"
);
//销售绩效工资
settleItem
.
put
(
"saleSettleRule"
,
saleSettleRule
);
settleItemList
.
add
(
settleItem
);
}
break
;
}
}
jsonObject
.
put
(
"settleItemList"
,
settleItemList
);
salaryTools
.
updateTemplate
(
jsonObject
);
Thread
.
sleep
(
1000
);
// check 1:工资详情页面的数据与新建的内容一致
JSONObject
detail
=
salaryTools
.
findDetailById
(
id
);
String
resultTitle
=
detail
.
getString
(
"title"
);
Assert
.
assertEquals
(
resultTitle
,
title
,
"编辑工资模版名称与详情不一致"
);
String
resultAdminIds
=
detail
.
getJSONArray
(
"adminIds"
).
toString
();
Assert
.
assertEquals
(
resultAdminIds
,
adminIds
.
toString
(),
"编辑工资模版适用员工与详情不一致"
);
JSONArray
resultSettleItemList
=
detail
.
getJSONArray
(
"settleItemList"
);
// 返回的工资条项目参数
JSONArray
expectSettleItemList
=
jsonObject
.
getJSONArray
(
"settleItemList"
);
// 传参的工资条项目参数
System
.
out
.
println
(
resultSettleItemList
);
System
.
out
.
println
(
expectSettleItemList
);
JSONObject
json1
=
new
JSONObject
();
json1
.
put
(
"settleItemId"
,
resultSettleItemList
);
JSONObject
json2
=
new
JSONObject
();
json2
.
put
(
"settleItemId"
,
expectSettleItemList
);
if
(
flag
){
// 分开计算后端返回的顺序与前端不一致,所以分开计算不校验
Assert
.
assertEquals
(
json1
.
toString
(),
json2
.
toString
(),
"编辑的工资模版结算项目与详情不一致"
);
}
}
// @Test(priority = 2)
// public void testDeleteTemplate() {
// salaryTools.deleteTemplate(id);
// try {
// Thread.sleep(2500);
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
// // check 1:工资模版有该条数据
// JSONArray pageOfTemplate = salaryTools.fetchPageOfTemplate(xmAppApi.getLoginInfo().getAdminId());
// Assert.assertTrue(pageOfTemplate.size()==0,"工资模版删除失败");
//
// }
}
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