s-HR考勤排班同步原创
金蝶云社区-大石头故事
大石头故事
2人赞赏了该文章 679次浏览 未经作者许可,禁止转载编辑于2023年04月20日 16:54:33
summary-icon摘要由AI智能服务提供

本文介绍了使用osf接口进行同步排班的方法,包括ListShiftSaveService(列表式排班)和CalendarShiftSaveService(日历式排班)的主要接口参数及调用方式。ListShiftSaveService需要传入data(排班数据列表)、beginDate(开始日期)、endDate(结束日期)。CalendarShiftSaveService则需要numbers(员工编码列表)、data(排班数据)、beginDate和endDate。文章详细说明了两种排班方式下数据的格式和如何通过URL、JavaScript和Java代码进行调用,以及解决data类型必须为String的问题。最后,还提到了员工排班查询列表隐藏列补签卡去除超过100条限制的相关内容。

同步排班一般都是采用osf接口来实现的,因此可以先去看看排班的对应的osf接口。

主要的同步接口主要有 CalendarShiftSaveService(日历式排班) ListShiftSaveService(列表式排班)

image.png

image.png


我们主要关注的是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是日历式排班,因此排班数据格式为:

[{
	"title": "[工作日]行政班次11",
	"start": "2023-01-15"
 }, {
	"title": "[工作日]夜班班次",
	"start": "2023-01-16"
 }]

以第一组的数据来解释,

title表示这一天排什么日期类型的什么班次(这里是工作日排行政班次11)

start指的是日期


因此我们通过url的调用方式则是:

http://127.0.0.1:6888/shr/shr/msf/service.do?method=callService&serviceName=calendarShiftSaveService&numbers=["20180927","20180926"]&data=[{%20"title":"[工作日]行政班次11",%20"start":"2023-01-15"%20},{%20"title":"[工作日]夜班班次",%20"start":"2023-01-16"%20}]&beginDate=2023-01-15&endDate=2023-01-16


通过js的调用方式是:

shr.callService({
		serviceName: 'calendarShiftSaveService', 
        param: {
		data:JSON.stringify( 
            [{
            	"title": "[工作日]行政班次11",
            	"start": "2023-01-15"
             }, {
            	"title": "[工作日]夜班班次",
            	"start": "2023-01-16"
             }])
            ,
        numbers:JSON.stringify( ["20180927","20180926"]),
        beginDate:"2023-01-15",
        endDate:"2023-01-16"
                
		},
        success: function(data) {
                		    			
        }
});


通过java代码调用:

        Map paraMap = new HashMap();
        JSONArray dataArray = new JSONArray();
        JSONObject data = new JSONObject();
        data.put("title","[工作日]行政班次11");
        data.put("start","2023-01-15");
        dataArray.add(data);
        JSONObject data1 = new JSONObject();
        data1.put("title","[工作日]夜班班次");
        data1.put("start","2023-01-16");
        dataArray.add(data1);
        JSONArray numbers = new JSONArray();
        numbers.add("20180927");
        numbers.add("20180926");
        paraMap.put("numbers",numbers);
        paraMap.put("data",dataArray);
        paraMap.put("beginDate", "2023-01-15");
        paraMap.put("endDate","2023-01-16");
        Map map  = (Map)OSFExecutor.executeOSF(ctx, paraMap, "calendarShiftSaveService");

    


员工排班查询列表隐藏列

补签卡如何去除超过100条的限制

图标赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!