目前支援組織人員 API
本頁展示所有用於調整部門組織的 API,在各個組織類別中,會先說明其屬性結構,隨後提供支援的 API 以供參考。
另外提醒,在呼叫每個 API 時,都需要提供公司代號 CorpCode
作為必填參數,用於識別不同公司內的組織資料。
部門層級¶
部門中包含部門層級,在新增部門前必須先設定部門層級,請參考以下資料:
- 部門層級說明:維護[部門層級]
- API 文件:UofxService.BASE.DeptLevel
部門層級的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
部門層級代號 |
Name |
部門層級名稱 |
Seq |
部門層級的階層與排序 ( 從 1 開始 ) |
Active |
是否啟用部門層級 |
OriginalCode |
原始部門層級代號 ( 修改部門層級代號時使用 ) |
部門層級支援的 API 如下:
// 取得部門層級
var deptLev = await UofxService.BASE.DeptLevel.Get("CorpCode");
// 新增部門層級
var result = await UofxService.BASE.DeptLevel.Create(new DeptLevelViewModel()
{
CorpCode = "CorpCode",
Seq = 1,
Code = "lev1",
Name = "Level1",
Active = true
});
// 修改部門層級
var result = await UofxService.BASE.DeptLevel.Update(new DeptLevelUpdateModel()
{
CorpCode = "CorpCode",
OriginalCode = "lev1",
Code = "lev2",
Name = "Level2"
});
// 修改部門層級狀態
var result = await UofxService.BASE.DeptLevel.UpdateStatus(new DeptLevelUpdateStatusModel()
{
CorpCode = "CorpCode",
Code = "lev2",
Active = false
});
// 修改部門層級等級
var result = await UofxService.BASE.DeptLevel.UpdateSeq(new DeptLevelUpdateSeqModel()
{
CorpCode = "CorpCode",
Code = "lev2",
Seq = 2
});
// 刪除部門層級
var result = await UofxService.BASE.DeptLevel.Delete(new DeptLevelDeleteModel()
{
CorpCode = "CorpCode",
Code = "lev2"
});
部門¶
設定部門層級後,可以新增與調整部門內容,請參考以下資料:
- 組織架構說明:維護組織架構
- API 文件:UofxService.BASE.Department
部門的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
部門代號 |
Name |
部門名稱 |
Seq |
部門的排序 ( 從 0 開始 ) |
Active |
是否啟用部門 |
IncludeSubDept |
是否包含子部門 |
ParentCode |
父部門代號 ( 可設定為空值,代表無父部門 ) |
DeptLevelCode |
部門層級代號 |
OriginalCode |
原始部門代號 ( 修改部門代號時使用 ) |
Description |
描述 |
部門支援的 API 如下:
// 取得全部部門
var allDepts = await UofxService.BASE.Department.Get(new DepartmentGetModel()
{
CorpCode = "CorpCode",
IncludeSubDept = true
});
// 取得特定部門
var depts = await UofxService.BASE.Department.Get(new DepartmentGetModel()
{
CorpCode = "CorpCode",
Code = "Demo",
IncludeSubDept = false
});
var dept = depts.First();
// 新增部門
var result = await UofxService.BASE.Department.Create(new DepartmentCreateModel()
{
ParentCode = "DemoParent",
CorpCode = "CorpCode",
Code = "Demo",
DeptLevelCode = "lev2",
Name = "From SDK",
Description = "From SDK create"
});
// 修改部門資料
var result = await UofxService.BASE.Department.Update(new DepartmentUpdateModel()
{
CorpCode = "CorpCode",
OriginalCode = "Demo",
Code = "Demo2",
Name = "From SDK2",
DeptLevelCode = "lev1",
Description = "From SDK update"
});
// 修改部門狀態
var result = await UofxService.BASE.Department.UpdateState(new DepartmentUpdateStatusModel()
{
CorpCode = "CorpCode",
Code = "Demo2",
Active = false
});
// 移動部門順序與階層
var result = await UofxService.BASE.Department.Move(new DepartmentMoveModel()
{
CorpCode = "CorpCode",
Code = "Demo2",
ParentCode = "DemoParent2", //移動到那個部門之下,如不填則移動到最上層
Seq = 2
});
// 刪除部門
var result = await UofxService.BASE.Department.Remove(new DepartmentRemoveModel()
{
CorpCode = "CorpCode",
Code = "Demo2"
});
職稱¶
人員帳號包含職稱,在新增人員前必須先設定職稱,請參考以下資料:
- 職稱說明:維護[職稱]
- API 文件:UofxService.BASE.JobTitle
職稱的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
職稱代號 |
Title |
職稱名稱 |
Rank |
職稱階層 |
Seq |
職稱排序 ( 從 1 開始 ) |
Active |
是否啟用職稱 |
OriginalCode |
原始職稱代號 ( 修改職稱代號時使用 ) |
職稱支援的 API 如下:
// 取得職稱
var jobTitles = await UofxService.BASE.JobTitle.Get(_corpCode);
// 新增職稱
var result = await UofxService.BASE.JobTitle.Create(new JobTitleViewModel()
{
CorpCode = "CorpCode",
Rank = 1,
Seq = 1,
Code = "Title1",
Title = "From SDK create",
Active = true
});
// 修改職稱
var result = UofxService.BASE.JobTitle.Update(new JobTitleUpdateModel()
{
CorpCode = "CorpCode",
OriginalCode = "Title1",
Code = "Title2",
Title = "From SDK update"
});
// 修改職稱狀態
var result = UofxService.BASE.JobTitle.UpdateStatus(new JobTitleUpdateStatusModel()
{
CorpCode = "CorpCode",
Code = "Title2",
Active = true
});
// 修改職稱順序
var result = UofxService.BASE.JobTitle.UpdateSeq(new JobTitleUpdateSeqModel()
{
CorpCode = "CorpCode",
Code = "Title2",
Rank = 2,
Seq = 1
});
// 刪除職稱
var result = UofxService.BASE.JobTitle.Delete(new JobTitleDeleteModel()
{
CorpCode = "CorpCode",
Code = "Title2"
});
職務類別¶
職務類別為職務中的其中一個屬性,請參考以下資料:
職務類別的屬性結構:
參數名稱 | 說明 |
---|---|
Category |
職務類別名稱 |
Seq |
職務類別排序 ( 從 1 開始 ) |
OriginalCategory |
原始職務類別名稱 ( 修改職務類別名稱時使用 ) |
職務類別支援的 API 如下:
// 修改職務類別
var result = await UofxService.BASE.JobFuncCategory.Update(new JobFuncCategoryUpdateModel()
{
CorpCode = "CorpCode",
OriginalCategory = "Category1",
Category = "Category2"
});
// 修改職務類別順序
var result = await UofxService.BASE.JobFuncCategory.UpdateSeq(new JobFuncCategoryUpdateSeqModel()
{
CorpCode = "CorpCode",
Category = "Category2"
Seq = 2
});
// 刪除職務類別
var result = await UofxService.BASE.JobFuncCategory.Delete(new JobFuncCategoryDeleteModel()
{
CorpCode = "CorpCode",
Category = "Category2"
});
Note
目前暫無新增與取得職務類別的 API,若要新增職務類別可以在新增職務時直接設定,若該職務類別不存在會自動新增。
職務¶
人員帳號包含職務,在新增人員前必須先設定職務,請參考以下資料:
- 職務說明:維護[職務]
- API 文件:UofxService.BASE.JobFunc
職務的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
職務代號 |
JobFunc |
職務名稱 |
Seq |
職務排序 ( 從 1 開始 ) |
Active |
是否啟用職務 |
CategoryName |
職務類別名稱 |
OriginalCode |
原始職務代號 ( 修改職務代號時使用 ) |
職務支援的 API 如下:
// 取得職務
var jobFuns = await UofxService.BASE.JobFunc.Get(_corpCode);
// 新增職務
var result = await UofxService.BASE.JobFunc.Create(new JobFuncViewModel()
{
CorpCode = "CorpCode",
CategoryName = "管理",
Code = "PM",
JobFunc = "專案經理",
Active = true
});
// 修改職務
var result = await UofxService.BASE.JobFunc.Update(new JobFuncUpdateModel()
{
CorpCode = "CorpCode",
OriginalCode = "PM",
Code = "SP",
JobFunc = "專案經理主管"
});
// 修改職務狀態
var result = await UofxService.BASE.JobFunc.UpdateStatus(new JobFuncUpdateStatusModel
{
CorpCode = "CorpCode",
Code = "SP",
Active = false
});
// 修改職務順序or類別
var result = await UofxService.BASE.JobFunc.UpdateSeq(new JobFuncUpdateSeqModel()
{
CorpCode = "CorpCode",
Code = "SP",
CategoryName = "主管",
Seq = 1
});
// 刪除職務
var result = await UofxService.BASE.JobFunc.Delete(new JobFuncDeleteModel()
{
CorpCode = "CorpCode",
Code = "SP"
});
人員¶
有了部門、職稱與職務的組織架構,則可以新增與修改人員帳號資料,請參考以下資料:
- 人員說明:維護人員資訊
- API 文件:UofxService.BASE.OrgEmpl
人員的屬性結構:
參數名稱 | 說明 |
---|---|
UserType |
人員的類別 ( 帳號 Account , 員編 EmployeeNo ) |
UserCode |
帳號或員編 |
Account |
人員帳號 |
Name |
中文姓名 |
EnglishName |
英文姓名 |
EmployeeNumber |
員工編號 |
ExpiredTime |
帳號過期時間 |
Gender |
性別 ( 男性 0 , 女性 1 , 其他 2 ) |
IdCardNumber |
身份證字號 |
BirthDate |
生日 |
PhoneNumber |
行動電話 |
BusinessCard |
名片職稱 |
HireDate |
到職日 |
ResignationDate |
離職日 |
Email |
主要信箱 |
EmailEx |
其他信箱 |
Locked |
是否鎖定人員帳號 |
Active |
是否停用人員帳號 |
SupervisorType |
主管類別 ( 依部門主管 DeptManager , 依自訂簽核主管 Customize ) |
SupervisorAccount |
主管類別若為「依自訂簽核主管」,需設定主管帳號 |
Depts |
所屬部門職務,下方進一步說明 Depts 的屬性 |
MainDept |
人員主要部門,下方進一步說明 MainDept 的屬性 |
所屬部門職務Depts
的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
部門代號 |
IsMainDept |
是否為主要部門 |
JobTitleCode |
職稱代號 |
JobFuncs |
職務代號 ( 可多筆 ) |
人員主要部門MainDept
的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
部門代號 |
JobTitleCode |
職稱代號 |
JobFuncs |
職務代號 ( 可多筆 ) |
人員支援的 API 如下:
// 取得特定人員
var empl = await UofxService.BASE.OrgEmpl.Get(new EmplQueryRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane"
});
// 取得特定人員部門
var emplDept = await UofxService.BASE.OrgEmpl.GetDept(new EmplQueryRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane"
});
// 新增人員
var result = await UofxService.BASE.OrgEmpl.CreateEmpl(new EmpCreateRequestModel()
{
CorpCode = "CorpCode",
Account = "jane",
Name = "Jane",
Gender = "2",
EnglishName = "Jane",
EmployeeNumber = "EMP00234",
ExpiredTime = DateTime.Now.AddYears(3),
IdCardNumber = "A123456789",
BirthDate = new DateTime(1992, 8, 25),
PhoneNumber = "0912345678",
BusinessCard = "Jane Doe - Project Manager",
HireDate = new DateTime(2019, 4, 10),
Email = "jane.doe@example.com",
EmailEx = "jane.doe@corp.com",
Depts = new List<EmpCreateOfDeptItemRequestModel>
{
new EmpCreateOfDeptItemRequestModel
{
Code = "Demo",
IsMainDept = true,
JobTitleCode = "Title1",
JobFuncs = new List<string> { "PM", "SP" }
},
new EmpCreateOfDeptItemRequestModel
{
Code = "Demo2",
IsMainDept = false,
JobTitleCode = "Title2",
JobFuncs = new List<string> { "PM" }
}
}
});
// 修改人員
var result = await UofxService.BASE.OrgEmpl.Update(new EmplUpdateRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
Account = "jane",
Name = "Jane Doe",
Gender = "2",
EnglishName = "Jane Doe",
EmployeeNumber = "EMP00234",
IdCardNumber = "A123456789",
BirthDate = new DateTime(2000, 8, 25),
PhoneNumber = "0912345678",
BusinessCard = "Jane Doe - Project Manager",
HireDate = new DateTime(2023, 4, 10),
Email = "jane.doe@example.com",
EmailEx = "jane.doe@corp.com",
});
// 鎖定/解鎖人員
var result = await UofxService.BASE.OrgEmpl.UpdateAcctLocked(new EmplUpdateAcctLockedRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
Locked = false
});
// 修改人員狀態
var result = await UofxService.BASE.OrgEmpl.UpdateAcctStatus(new EmplUpdateAcctStatusRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
Active = true
});
// 修改人員帳號到期日
var result = await UofxService.BASE.OrgEmpl.UpdateAcctExpiredTime(new EmplUpdateAcctExpiredTimeRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
ExpiredTime = new DateTime(2024, 11, 30)
});
// 修改人員離職日
var result = await UofxService.BASE.OrgEmpl.UpdateEmplResignationDate(new EmplUpdateResignationDateRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
ResignationDate = new DateTime(2024, 11, 30)
});
// 修改人員主管
var result = await UofxService.BASE.OrgEmpl.UpdateSupervisor(new EmplUpdateSupervisorRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
DeptCode = "Demo",
SupervisorType = SupervisorType.DeptManager
});
// 修改人員部門
var result = await UofxService.BASE.OrgEmpl.UpdateEmplDept(new EmplUpdateDeptRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
Depts = new List<DeptRequestModel>
{
new DeptRequestModel
{
Code = "Demo",
IsMainDept = false,
JobTitleCode = "Title3",
JobFuncs = new List<string> { "RD" }
},
new DeptRequestModel
{
Code = "Demo2",
IsMainDept = true,
JobTitleCode = "Title4",
JobFuncs = new List<string> { "SP" }
}
}
});
// 修改人員主要部門
var result = await UofxService.BASE.OrgEmpl.UpdateEmplMainDept(new EmplUpdateMainDeptRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
MainDept = new DeptRequestModelBase
{
Code = "Demo3",
JobTitleCode = "Title5",
JobFuncs = new List<string> { "RD" }
}
});
// 刪除人員
var result = await UofxService.BASE.OrgEmpl.Delete(new EmplDeleteRequestModel()
{
CorpCode = "CorpCode",
UserType = UserType.Account,
UserCode = "jane",
});
部門主管¶
新增部門與人員後,可以指定部門主管,請參考以下資料:
- 組織架構說明:維護組織架構
- API 文件:UofxService.BASE.Department.Manager
部門主管的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
部門代號 |
Type |
人員的類別 ( 帳號 Account , 員編 EmployeeNo ) |
Value |
帳號或員編 |
部門主管支援的 API 如下:
// 取得部門主管
var manager = await UofxService.BASE.Department.Manager.Get(new DeptManagerModel()
{
CorpCode = "CorpCode",
Code = "Demo"
});
// 設定部門主管
var result = await UofxService.BASE.Department.Manager.Set(new DeptSetManagerModel()
{
CorpCode = "CorpCode",
Code = "Demo",
Type = UserType.Account,
Value = "jane"
});
// 移除部門主管
var result = await UofxService.BASE.Department.Manager.Remove(new DeptRemoveManagerModel()
{
CorpCode = "CorpCode",
Code = "Demo",
});
批次更新部門¶
若要使用外部系統同步更新 UOF X 的部門,需要先將修改完成的組織部門資料進行轉換,再呼叫 API 進行同步,請參考以下資料:
- API 文件:UofxService.BASE.Department.Batch
- 注意事項:批次調整部門順序階層的影響
批次更新部門的屬性結構:
參數名稱 | 說明 |
---|---|
Code |
部門代號 |
ParentCode |
父部門代號 ( 可設定為空值,代表無父部門 ) |
Active |
是否啟用部門 |
Seq |
部門的排序 ( 從 0 開始 ) |
批次更新部門支援的 API 如下:
請先準備好要更新的部門資料
deptToUpdate
try { // 使用 Select 將 deptToUpdate 轉換為 DeptBatchMoveModel 物件 // 再將所有轉換後的物件存入 IDeptBatchMoveModel 類型的 List var batchMoveList = deptToUpdate.Select(item => new DeptBatchMoveModel { ParentCode = item.ParentCode, Code = item.Code, Active = item.Active, Seq = item.Seq }).ToList<IDeptBatchMoveModel>(); // 批次更新部門 var result = await UofxService.BASE.Department.Batch.MoveAndState(new DepartmentBatchMoveRequestModel() { CorpCode = _corpCode, BatchMove = batchMoveList }); Console.WriteLine(JsonConvert.SerializeObject(result, Formatting.Indented)); } catch (Exception ex) { ... } public class DeptBatchMoveModel : IDeptBatchMoveModel { public string ParentCode { get; set; } public string Code { get; set; } public bool Active { get; set; } public int Seq { get; set; } }