s-HR考勤排班同步

同步排班一般都是采用osf接口来实现的,因此可以先去看看排班的对应的osf接口。
主要的同步接口主要有 CalendarShiftSaveService(日历式排班) ListShiftSaveService(列表式排班)


我们主要关注的是subparameter这个值,这个值是需要我们传入的。
比如ListShiftSaveService接口的需要传入的是 data beginDate endDate。
beginDate代表是所选的开始日期,格式为"yyyy-MM-dd"
endDate代表是所选的结束日期,格式为"yyyy-MM-dd"
data则是需要传入的排班数据,因为ListShiftSaveService是基于列表式排班的,因此排班数据的结构如下:
[{
"2023-01-25": "[工作日]夜晚班次",
"2023-01-26": "[工作日]行政班次11",
"2023-01-27": "[工作日]夜班班次",
personId: "20180927",
personName: "周游",
rowNum: 0
}, {
"2023-01-25": "[工作日]夜晚班次",
"2023-01-26": "[工作日]行政班次11",
"2023-01-27": "[工作日]夜班班次",
personId: "20180926",
personName: "欧艳秋",
rowNum: 1
}]以第一组的数据来解释,
2023-01-25表示这一天排什么日期类型的什么班次(这里是工作日排夜晚班次),以下两个日期以此类推。
再者 这个的personId 指的是该员工的编码,即person.fnumber ,并不是person.fid
personName指的是该员工的姓名
rowNum指的是第几个 (此列在代码里好像并没有什么调用处,我也不知道是干什么的)
因此我们通过url的调用方式则是:
http://127.0.0.1:6888/shr/shr/msf/service.do?method=callService&serviceName=listShiftSaveService&data=[{"2023-01-25":"[工作日]夜晚班次","2023-01-26":"[工作日]行政班次11","2023-01-27":"[工作日]夜班班次",personId:"20180927",personName:"周游",rowNum:0},{"2023-01-25":"[工作日]夜晚班次","2023-01-26":"[工作日]行政班次11","2023-01-27":"[工作日]夜班班次",personId:"20180926",personName:"欧艳秋",rowNum:1}]&beginDate=2023-01-25&endDate=2023-01-27
通过js的调用方式是:
shr.callService({
serviceName: 'listShiftSaveService',
param: {
data:JSON.stringify( [
{"2023-01-25":"[工作日]夜晚班次","2023-01-26":"[工作日]行政班次11","2023-01-27":"[工作日]夜班班次",personId:"20180927",personName:"周游",rowNum:0},
{"2023-01-25":"[工作日]夜晚班次","2023-01-26":"[工作日]行政班次11","2023-01-27":"[工作日]夜班班次",personId:"20180926",personName:"欧艳秋",rowNum:1}
])
,
beginDate:"2023-01-25",
endDate:"2023-01-27"
},
success: function(data) {
}
});注意:其中data标注的是String类型,必须传String类型,不然会因为传入的不是String类型导致识别不到,data就会变成null。
通过java代码调用:
Map paraMap = new HashMap();
JSONArray jsonArray = new JSONArray();
JSONObject data = new JSONObject();
data.put("2023-01-25","[工作日]夜晚班次");
data.put("2023-01-26","[工作日]行政班次11");
data.put("2023-01-27","[工作日]夜班班次");
data.put("personId","20180927");
data.put("personName","周游");
data.put("rowNum","0");
jsonArray.add(data);
paraMap.put("data",jsonArray);
paraMap.put("beginDate", "2023-01-25");
paraMap.put("endDate","2023-01-27");
Map map = (Map)OSFExecutor.executeOSF(ctx, paraMap, "listShiftSaveService");CalendarShiftSaveService需要传入 numbers data beginDate endDate
numbers代表的是排班员工的编码,即person.fnumber
beginDate代表是所选的开始日期,格式为"yyyy-MM-dd"
endDate代表是所选的结束日期,格式为"yyyy-MM-dd"
data则是需要传入的排班数据,CalendarShiftSaveService是日历式排班,因此排班数据格式
s-HR考勤排班同步
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



