更新员工工资项(异常阻塞)
接口说明: 批量上传录入员工指定工资项数据,更新接口每批次更新员工数量不超过100条。异常员工阻塞整体更新,只要有一个员工存在异常,整体就不执行更新操作。
接口调用逻辑为先获取公司的公司项配置信息,然后再去更新员工对应的工资项。
请求方式:POST(HTTPS)
请求地址:https://api.xinrenxinshi.com/v5/payroll/update
请求Header:
key | value |
---|---|
access_token | 获取的access_token的实际值 |
Query参数:
key | value |
---|---|
sign | 签名值 |
Body参数:
参数 | 类型 | 必传(Y/N) | 说明 |
---|---|---|---|
timestamp | Long | Y | 请求时间戳(精确到毫秒) |
employeePayrolls | List<EmployeePayroll> | Y | 需要更新的员工及工资数据,每批次不超过100个 |
EmployeePayroll
参数 | 类型 | 必传(Y/N) | 说明 |
---|---|---|---|
employeeId | String | Y | 员工id |
bonus | Map<String,Object> | N | 奖金调整,key为奖金项ID,value为调整后的奖金金额 |
adjust | Map<String,Object> | N | 调整项调整,key为调整项ID,value为调整后的调整金额 |
cost | Map<String,Object> | N | 成本调整,key为成本项ID,value为调整后的成本金额 |
other | Map<String,Object> | N | 其他调整,key为其他项ID,value为调整后的其他项金额,更新的值类型详见工资项更新注意事项 |
工资项更新注意事项:
- employeePayrolls批量更新员工数量每批次不超过100个,超出限制返回数量限制错误
- 需要更新的工资项信息小数点后保留两位小数
- 奖金项数值区间0~100,0000,输入不合法,返回参数错误
- 调整项数值区间-100,0000~100,0000,输入不合法,返回参数错误
- 成本项数值区间-100,0000~100,0000,输入不合法,返回参数错误
- 其他项数值区间-1000,0000~1000,0000,输入不合法,返回参数错误
- 对于文本类型以及数值类型的其他工资项,value为调整后的值;
- 对于日期类型的其他工资项。value的值的格式为 "yyyy-MM-dd";
- 对于选项类型的其他工资项。value的值为选项类型的datasource中的选项。例如:datasource为{A,B,C},则value只能为A或B或C;
- 对于城市类型的其他工资项。value的值为城市列表接口中type为3(即区域类型为城市)的区域编码。
返回结果:
参数 | 类型 | 必传(Y/N) | 说明 |
---|---|---|---|
errcode | Integer | Y | 错误码枚举值 |
errmsg | String | Y | 错误码对应描述信息 |
data | Map<String,String> | N | 响应数据, 如果更新的数据中存在异常的员工信息,则返回。其中key为员工id,value为异常原因 |
请求示例(HTTPS):
https://api.xinrenxinshi.com/v5/payroll/update?sign=7omyqoNIY5QPWKCyQM3Q7Hk8mNQ=
请求Body示例:
{
"employeePayrolls":[
{
"adjust":{
"888365":"42000",
"888366":"42000"
},
"bonus":{
"2050451":"45221",
"2050453":"44221",
"2050455":"43221"
},
"cost":{
"1266417":"410010",
"1266419":"4000"
},
"employeeId":"445eee504ec8475db0ab04da81b5edf8",
"other":{
"06c39d5998614d91af6ac4e5d6738392":"171",
"f231a9fa2fba48d3be6c199e663bd91f":"2我是多行文本11111",
"1ce38a5158a4498f98b2ab1ed5b30208":"自定义选项",
"23d962fc7be144bf9c6a5a9606172fa6":"我是单行文本1个字符",
"05d3a4b445f3450ab37c98b721fde495":"12",
"1ba5cd0b0b264c86997f945b0de0711c":"2021-08-30"
}
},
{
"adjust":{
"888365":"42000",
"888366":"42000"
},
"bonus":{
"2050453":"45221",
"2050455":"44221"
},
"cost":{
"1266417":"410010"
},
"employeeId":"ba241cdcd46040dd9a3bdede5a02fc8e",
"other":{
"06c39d5998614d91af6ac4e5d6738392":"144",
"f231a9fa2fba48d3be6c199e663bd91f":"222222是多行文本",
"1ce38a5158a4498f98b2ab1ed5b30208":"自定义选项",
"23d962fc7be144bf9c6a5a9606172fa6":"我是单行文本2个字符",
"05d3a4b445f3450ab37c98b721fde495":"13",
"1ba5cd0b0b264c86997f945b0de0711c":"2022-08-28"
}
}
],
"timestamp":1706683156557
}
SDK请求示例(java):
PayrollUpdateRequest request = new PayrollUpdateRequest(access_token());
List<EmployeePayroll> list = new ArrayList<>();
EmployeePayroll employeePayroll = new EmployeePayroll();
employeePayroll.setEmployeeId("ba241cdcd46040dd9a3bdede5a02fc8e");
HashMap<String, String> adjust = new HashMap<>();
adjust.put("888365", "2000");
employeePayroll.setAdjust(adjust);
HashMap<String, String> bonus = new HashMap<>();
bonus.put("2050451", "5000");
employeePayroll.setBonus(bonus);
HashMap<String, String> cost = new HashMap<>();
cost.put("1266419", "1000");
employeePayroll.setCost(cost);
HashMap<String, String> other = new HashMap<>();
other.put("23d962fc7be144bf9c6a5a9606172fa6", "我是单行文本");
other.put("f231a9fa2fba48d3be6c199e663bd91f", "我是多行文本");
other.put("06c39d5998614d91af6ac4e5d6738392", "143");
other.put("1ba5cd0b0b264c86997f945b0de0711c", "2021-08-09");
other.put("1ce38a5158a4498f98b2ab1ed5b30208", "自定义选项");
other.put("f248ac7531b1431fab07c7ec1e30a38a", "2000.01");
employeePayroll.setOther(other);
list.add(employeePayroll);
EmployeePayroll employeePayroll1 = new EmployeePayroll();
employeePayroll1.setEmployeeId("445eee504ec8475db0ab04da81b5edf8");
HashMap<String, String> adjust1 = new HashMap<>();
adjust1.put("888365", "2000");
employeePayroll1.setAdjust(adjust1);
HashMap<String, String> bonus1 = new HashMap<>();
bonus1.put("2050451", "5000");
employeePayroll1.setBonus(bonus1);
HashMap<String, String> cost1 = new HashMap<>();
cost1.put("1266419", "1000");
employeePayroll1.setCost(cost1);
HashMap<String, String> other1 = new HashMap<>();
other1.put("23d962fc7be144bf9c6a5a9606172fa6", "我是单行文本1");
other1.put("f231a9fa2fba48d3be6c199e663bd91f", "我是多行文本");
other1.put("06c39d5998614d91af6ac4e5d6738392", "143");
other1.put("1ba5cd0b0b264c86997f945b0de0711c", "2021-08-09");
other1.put("1ce38a5158a4498f98b2ab1ed5b30208", "自定义选项");
other1.put("f248ac7531b1431fab07c7ec1e30a38a", "2000.01");
employeePayroll.setOther(other);
list.add(employeePayroll1);
request.setEmployeePayrolls(list);
OpenapiResponse<Void> voidOpenapiResponse = XrxsPayrollService.updateEmpPayrollSetting(request);
响应示例:
{
"errcode":20405,
"errmsg":"员工工资更新失败, {\"ba241cdcd46040dd9a3bdede5a02fc8e\":\"该员工尚未定薪\",\"445eee504ec8475db0ab04da81b5edf8\":\"当前工资账套[202105]不存在该员工\"}",
"data":{
"ba241cdcd46040dd9a3bdede5a02fc8e":"该员工尚未定薪",
"445eee504ec8475db0ab04da81b5edf8":"当前工资账套[202105]不存在该员工"
}
}