跳轉到

目前支援組織人員 API

本頁展示所有用於調整部門組織的 API,在各個組織類別中,會先說明其屬性結構,隨後提供支援的 API 以供參考。

另外提醒,在呼叫每個 API 時,都需要提供公司代號 CorpCode 作為必填參數,用於識別不同公司內的組織資料。

部門層級

部門中包含部門層級,在新增部門前必須先設定部門層級,請參考以下資料:

部門層級的屬性結構:

參數名稱 說明
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"
});

部門

設定部門層級後,可以新增與調整部門內容,請參考以下資料:

部門的屬性結構:

參數名稱 說明
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"
});

職稱

人員帳號包含職稱,在新增人員前必須先設定職稱,請參考以下資料:

職稱的屬性結構:

參數名稱 說明
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,若要新增職務類別可以在新增職務時直接設定,若該職務類別不存在會自動新增。

職務

人員帳號包含職務,在新增人員前必須先設定職務,請參考以下資料:

職務的屬性結構:

參數名稱 說明
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"
});

人員

有了部門、職稱與職務的組織架構,則可以新增與修改人員帳號資料,請參考以下資料:

人員的屬性結構:

參數名稱 說明
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",
});

部門主管

新增部門與人員後,可以指定部門主管,請參考以下資料:

部門主管的屬性結構:

參數名稱 說明
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 進行同步,請參考以下資料:

批次更新部門的屬性結構:

參數名稱 說明
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; }
}