Commit 91d49642 by xuyamei

工资结算新增18个api

parent 8e4c40e3
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);
}
}
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,"删除工资条项目失败");
}
}
}
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);
}
}
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,"删除结算单后,发放工资的收支明细数量与预期不符");
}
}
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,"工资模版删除失败");
//
// }
}
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