// Package corehr code generated by oapi sdk gen
/*
 * MIT License
 *
 * Copyright (c) 2022 Lark Technologies Pte. Ltd.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package larkcorehr

import (
	"io"

	"fmt"
	"io/ioutil"
	"strconv"

	"context"
	"errors"

	"github.com/larksuite/oapi-sdk-go/v3/event"

	"github.com/larksuite/oapi-sdk-go/v3/core"
)

const (
	GetApprovalGroupsUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	GetApprovalGroupsUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	GetApprovalGroupsUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	GetApprovalGroupsUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	OpenQueryDepartmentChangeListByIdsApprovalGroupsUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	OpenQueryDepartmentChangeListByIdsApprovalGroupsUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	OpenQueryDepartmentChangeListByIdsApprovalGroupsUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	OpenQueryDepartmentChangeListByIdsApprovalGroupsUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	OpenQueryDepartmentChangeListByIdsApprovalGroupsDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	OpenQueryDepartmentChangeListByIdsApprovalGroupsDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	OpenQueryDepartmentChangeListByIdsApprovalGroupsDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	OpenQueryJobChangeListByIdsApprovalGroupsUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	OpenQueryJobChangeListByIdsApprovalGroupsUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	OpenQueryJobChangeListByIdsApprovalGroupsUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	OpenQueryJobChangeListByIdsApprovalGroupsUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	OpenQueryJobChangeListByIdsApprovalGroupsDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	OpenQueryJobChangeListByIdsApprovalGroupsDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	OpenQueryJobChangeListByIdsApprovalGroupsDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	OpenQueryPositionChangeListByIdsApprovalGroupsUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	OpenQueryPositionChangeListByIdsApprovalGroupsUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	OpenQueryPositionChangeListByIdsApprovalGroupsUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	OpenQueryPositionChangeListByIdsApprovalGroupsUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	OpenQueryPositionChangeListByIdsApprovalGroupsDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	OpenQueryPositionChangeListByIdsApprovalGroupsDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	OpenQueryPositionChangeListByIdsApprovalGroupsDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	OpenGetApproverListUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	OpenGetApproverListUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	OpenGetApproverListUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	OpenGetApproverListUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ApproverStatusSkipped       = -2 // 跳过
	ApproverStatusInitiated     = -1 // 发起
	ApproverStatusNotStarted    = 0  // 未开始
	ApproverStatusInProgress    = 1  // 进行中
	ApproverStatusRejected      = 2  // 已拒绝
	ApproverStatusApproved      = 3  // 已通过
	ApproverStatusCancelled     = 4  // 被撤回
	ApproverStatusCC            = 5  // 抄送
	ApproverStatusFormSubmitted = 6  // 表单提交
	ApproverStatusFailed        = 12 // 失败
	ApproverStatusRolledBack    = 14 // 已回退
	ApproverStatusRevoke        = 16 // 发起撤销

)

const (
	GetByDepartmentBpUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	GetByDepartmentBpUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	GetByDepartmentBpUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	GetByDepartmentBpUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	GetByDepartmentBpDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	GetByDepartmentBpDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	GetByDepartmentBpDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	ListBpUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListBpUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListBpUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListBpUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListBpDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	ListBpDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	ListBpDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	SearchContractV2UserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchContractV2UserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchContractV2UserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchContractV2UserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchQueryCostAllocationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchQueryCostAllocationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchQueryCostAllocationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchQueryCostAllocationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateVersionCostAllocationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateVersionCostAllocationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateVersionCostAllocationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateVersionCostAllocationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	RemoveVersionCostAllocationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	RemoveVersionCostAllocationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	RemoveVersionCostAllocationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	RemoveVersionCostAllocationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	UpdateVersionCostAllocationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	UpdateVersionCostAllocationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	UpdateVersionCostAllocationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	UpdateVersionCostAllocationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateCostCenterV2UserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateCostCenterV2UserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateCostCenterV2UserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateCostCenterV2UserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchCostCenterV2UserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchCostCenterV2UserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchCostCenterV2UserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchCostCenterV2UserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SearchCostCenterV2UserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchCostCenterV2UserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchCostCenterV2UserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchCostCenterV2UserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateCostCenterVersionUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateCostCenterVersionUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateCostCenterVersionUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateCostCenterVersionUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchCostCenterVersionUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchCostCenterVersionUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchCostCenterVersionUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchCostCenterVersionUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateCustomOrgUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateCustomOrgUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateCustomOrgUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateCustomOrgUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchCustomOrgUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchCustomOrgUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchCustomOrgUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchCustomOrgUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	QueryCustomOrgUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	QueryCustomOrgUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	QueryCustomOrgUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	QueryCustomOrgUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchQueryDefaultCostCenterUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchQueryDefaultCostCenterUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchQueryDefaultCostCenterUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchQueryDefaultCostCenterUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateVersionDefaultCostCenterUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateVersionDefaultCostCenterUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateVersionDefaultCostCenterUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateVersionDefaultCostCenterUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	RemoveVersionDefaultCostCenterUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	RemoveVersionDefaultCostCenterUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	RemoveVersionDefaultCostCenterUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	RemoveVersionDefaultCostCenterUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	UpdateVersionDefaultCostCenterUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	UpdateVersionDefaultCostCenterUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	UpdateVersionDefaultCostCenterUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	UpdateVersionDefaultCostCenterUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchGetDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchGetDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchGetDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchGetDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchGetDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	BatchGetDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	BatchGetDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	DeleteDepartmentV2DepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	DeleteDepartmentV2DepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	DeleteDepartmentV2DepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	ParentsDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	ParentsDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	ParentsDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	PatchDepartmentV2UserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchDepartmentV2UserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchDepartmentV2UserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchDepartmentV2UserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchDepartmentV2DepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	PatchDepartmentV2DepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	PatchDepartmentV2DepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	QueryMultiTimelineDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	QueryMultiTimelineDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	QueryMultiTimelineDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	QueryMultiTimelineDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	QueryMultiTimelineDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	QueryMultiTimelineDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	QueryMultiTimelineDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	QueryOperationLogsDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	QueryOperationLogsDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	QueryOperationLogsDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	QueryRecentChangeDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	QueryRecentChangeDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	QueryRecentChangeDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	QueryTimelineDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	QueryTimelineDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	QueryTimelineDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	QueryTimelineDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	QueryTimelineDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	QueryTimelineDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	QueryTimelineDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	SearchDepartmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchDepartmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchDepartmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchDepartmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SearchDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	SearchDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	SearchDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	TreeDepartmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	TreeDepartmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	TreeDepartmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	GetProcessInfoListByDraftIDUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	GetProcessInfoListByDraftIDUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	GetProcessInfoListByDraftIDUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	GetProcessInfoListByDraftIDUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchGetEmployeeUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchGetEmployeeUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchGetEmployeeUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchGetEmployeeUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchGetEmployeeDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	BatchGetEmployeeDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	BatchGetEmployeeDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	SearchEmployeeEmploymentStatusHired      = "hired"      // 在职
	SearchEmployeeEmploymentStatusTerminated = "terminated" // 离职
)

const (
	SearchEmployeeUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchEmployeeUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchEmployeeUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchEmployeeUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SearchEmployeeDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	SearchEmployeeDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	SearchEmployeeDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	BatchEmployeesAdditionalJobUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchEmployeesAdditionalJobUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchEmployeesAdditionalJobUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchEmployeesAdditionalJobUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchEmployeesAdditionalJobDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	BatchEmployeesAdditionalJobDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	BatchEmployeesAdditionalJobDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	CreateEmployeesAdditionalJobUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateEmployeesAdditionalJobUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateEmployeesAdditionalJobUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateEmployeesAdditionalJobUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateEmployeesAdditionalJobDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	CreateEmployeesAdditionalJobDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	CreateEmployeesAdditionalJobDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	PatchEmployeesAdditionalJobUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchEmployeesAdditionalJobUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchEmployeesAdditionalJobUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchEmployeesAdditionalJobUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchEmployeesAdditionalJobDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	PatchEmployeesAdditionalJobDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	PatchEmployeesAdditionalJobDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	BatchGetEmployeesBpUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchGetEmployeesBpUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchGetEmployeesBpUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchGetEmployeesBpUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateEmployeesInternationalAssignmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateEmployeesInternationalAssignmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateEmployeesInternationalAssignmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateEmployeesInternationalAssignmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateEmployeesInternationalAssignmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	CreateEmployeesInternationalAssignmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	CreateEmployeesInternationalAssignmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	ListEmployeesInternationalAssignmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListEmployeesInternationalAssignmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListEmployeesInternationalAssignmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListEmployeesInternationalAssignmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListEmployeesInternationalAssignmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	ListEmployeesInternationalAssignmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	ListEmployeesInternationalAssignmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	PatchEmployeesInternationalAssignmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	PatchEmployeesInternationalAssignmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	PatchEmployeesInternationalAssignmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	PatchEmployeesInternationalAssignmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	PatchEmployeesInternationalAssignmentDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	PatchEmployeesInternationalAssignmentDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	PatchEmployeesInternationalAssignmentDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	BatchGetEmployeesJobDataUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchGetEmployeesJobDataUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchGetEmployeesJobDataUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchGetEmployeesJobDataUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchGetEmployeesJobDataDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	BatchGetEmployeesJobDataDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	BatchGetEmployeesJobDataDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	QueryEmployeesJobDataUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	QueryEmployeesJobDataUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	QueryEmployeesJobDataUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	QueryEmployeesJobDataUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	QueryEmployeesJobDataDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	QueryEmployeesJobDataDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	QueryEmployeesJobDataDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	BatchGetJobUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	BatchGetJobUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	BatchGetJobUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	BatchGetJobUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateJobChangeV2TransferModeType1 = 1 // 直接异动
	CreateJobChangeV2TransferModeType2 = 2 // 发起异动

)

const (
	CreateJobChangeV2UserIDTypeUserId         = "user_id"          // 以user_id来识别用户
	CreateJobChangeV2UserIDTypeUnionId        = "union_id"         // 以union_id来识别用户
	CreateJobChangeV2UserIDTypeOpenId         = "open_id"          // 以open_id来识别用户
	CreateJobChangeV2UserIDTypePeopleAdminId  = "people_admin_id"  // 以people_admin_id来识别用户
	CreateJobChangeV2UserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的ID来识别用户
)

const (
	CreateJobChangeV2DepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	CreateJobChangeV2DepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	CreateJobChangeV2DepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	RevokeJobChangeUserIDTypeUserId         = "user_id"          // 以user_id来识别用户
	RevokeJobChangeUserIDTypeUnionId        = "union_id"         // 以union_id来识别用户
	RevokeJobChangeUserIDTypeOpenId         = "open_id"          // 以open_id来识别用户
	RevokeJobChangeUserIDTypePeopleAdminId  = "people_admin_id"  // 以people_admin_id来识别用户
	RevokeJobChangeUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的ID来识别用户
)

const (
	SearchJobChangeUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchJobChangeUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchJobChangeUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchJobChangeUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SearchJobChangeDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	SearchJobChangeDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	SearchJobChangeDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	EditOffboardingUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	EditOffboardingUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	EditOffboardingUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	EditOffboardingUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	RevokeOffboardingUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	RevokeOffboardingUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	RevokeOffboardingUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	RevokeOffboardingUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SubmitV2OffboardingOffboardingModeTerminationOfDismissal = 1 // 直接离职
	SubmitV2OffboardingOffboardingModeOffboardingWithProcess = 2 // 发起离职审批

)

const (
	SubmitV2OffboardingUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SubmitV2OffboardingUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SubmitV2OffboardingUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SubmitV2OffboardingUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreatePositionDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	CreatePositionDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	CreatePositionDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	PatchPositionDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	PatchPositionDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	PatchPositionDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	QueryPositionDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	QueryPositionDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	QueryPositionDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	QueryPositionUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	QueryPositionUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	QueryPositionUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	QueryPositionUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListPreHireV2UserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListPreHireV2UserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListPreHireV2UserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListPreHireV2UserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListPreHireV2DepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	ListPreHireV2DepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	ListPreHireV2DepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	SearchPreHireOnboardingStatusPreboarding = "preboarding" // 待入职
	SearchPreHireOnboardingStatusDeleted     = "deleted"     // 已删除
	SearchPreHireOnboardingStatusDayOne      = "day_one"     // 准备就绪
	SearchPreHireOnboardingStatusWithdrawn   = "withdrawn"   // 已撤销
	SearchPreHireOnboardingStatusCompleted   = "completed"   // 已完成
)

const (
	SearchPreHireRehireToBeConfirmed = "to_be_confirmed" // 待确认，系统会判断该员工是否存在历史雇佣记录，如果存在且需要二次确认时会调用失败，并返回历史雇佣记录
	SearchPreHireRehireNo            = "no"              // 否，系统直接标为非离职重聘人员，不再做重复判断
	SearchPreHireRehireYes           = "yes"             // 是，要求历史雇佣信息 ID 必填
)

const (
	SearchPreHireUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchPreHireUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchPreHireUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchPreHireUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SearchPreHireDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	SearchPreHireDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	SearchPreHireDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	SearchProbationProbationStatusPending    = "pending"    // 审批中
	SearchProbationProbationStatusRejected   = "rejected"   // 已拒绝
	SearchProbationProbationStatusWaiting    = "waiting"    // 待发起转正
	SearchProbationProbationStatusApproved   = "approved"   // 审批通过
	SearchProbationProbationStatusConverted  = "converted"  // 已转正
	SearchProbationProbationStatusOffboarded = "offboarded" // 已离职
)

const (
	SearchProbationFinalAssessmentResultApproved = "approved" // 通过
	SearchProbationFinalAssessmentResultRejected = "rejected" // 不通过
)

const (
	SearchProbationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SearchProbationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SearchProbationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SearchProbationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	SearchProbationDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	SearchProbationDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	SearchProbationDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	SubmitProbationConversionMode1 = 1 // 直接转正
	SubmitProbationConversionMode2 = 2 // 发起转正

)

const (
	SubmitProbationSubmissionTypeSelfSubmission = "self_submission" // 员工
	SubmitProbationSubmissionTypeSystem         = "system"          // 系统
	SubmitProbationSubmissionTypeHrSubmission   = "hr_submission"   // HR
)

const (
	SubmitProbationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	SubmitProbationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	SubmitProbationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	SubmitProbationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	WithdrawProbationUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	WithdrawProbationUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	WithdrawProbationUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	WithdrawProbationUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	CreateProbationAssessmentUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	CreateProbationAssessmentUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	CreateProbationAssessmentUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	CreateProbationAssessmentUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	AssessmentForCreateAssessmentStatusNotStarted = "not_started" // 未开始
	AssessmentForCreateAssessmentStatusInProcess  = "in_process"  // 进行中
	AssessmentForCreateAssessmentStatusCompleted  = "completed"   // 已完成
	AssessmentForCreateAssessmentStatusNoNeed     = "no_need"     // 无需考核
)

const (
	AssessmentForCreateAssessmentResultApproved = "approved" // 通过
	AssessmentForCreateAssessmentResultRejected = "rejected" // 不通过
)

const (
	FlowVariableDataProcessUserIDTypeOpenId         = "open_id"          // 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。了解更多：如何获取 Open ID
	FlowVariableDataProcessUserIDTypeUnionId        = "union_id"         // 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。了解更多：如何获取 Union ID？
	FlowVariableDataProcessUserIDTypeUserId         = "user_id"          // 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。了解更多：如何获取 User ID？ 默认值：open_id 当值为 user_id，字段权限要求：获取用户 user ID（仅自建应用）
	FlowVariableDataProcessUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	FlowVariableDataProcessDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	FlowVariableDataProcessDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	FlowVariableDataProcessDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 department_id 来标识部门
)

const (
	GetProcessUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	GetProcessUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	GetProcessUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	GetProcessUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ProcessApproverStatusApproved = 2 // 拒绝
	ProcessApproverStatusRejected = 3 // 通过

)

const (
	UpdateProcessApproverUserIDTypeOpenId         = "open_id"          // 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。了解更多：如何获取 Open ID
	UpdateProcessApproverUserIDTypeUnionId        = "union_id"         // 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。了解更多：如何获取 Union ID？
	UpdateProcessApproverUserIDTypeUserId         = "user_id"          // 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。了解更多：如何获取 User ID？ 默认值：open_id 当值为 user_id，字段权限要求：获取用户 user ID（仅自建应用）
	UpdateProcessApproverUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	UpdateProcessApproverDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	UpdateProcessApproverDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	UpdateProcessApproverDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 people_corehr_department_id 来标识部门
)

const (
	ProcessExtraExtraTypePreExtra     = 0 // 前加签
	ProcessExtraExtraTypeCurrentExtra = 1 // 并加签
	ProcessExtraExtraTypePostExtra    = 2 // 后加签

)

const (
	ProcessExtraApprovalTypeOR  = 0 // 或签
	ProcessExtraApprovalTypeAND = 1 // 会签

)

const (
	OpenApproverExtraUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	OpenApproverExtraUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	OpenApproverExtraUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	OpenApproverExtraUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	GetProcessFormVariableDataUserIDTypeOpenId         = "open_id"          // 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。了解更多：如何获取 Open ID
	GetProcessFormVariableDataUserIDTypeUnionId        = "union_id"         // 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。了解更多：如何获取 Union ID？
	GetProcessFormVariableDataUserIDTypeUserId         = "user_id"          // 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。了解更多：如何获取 User ID？ 默认值：open_id 当值为 user_id，字段权限要求：获取用户 user ID（仅自建应用）
	GetProcessFormVariableDataUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	GetProcessFormVariableDataDepartmentIDTypeOpenDepartmentId         = "open_department_id"          // 以 open_department_id 来标识部门
	GetProcessFormVariableDataDepartmentIDTypeDepartmentId             = "department_id"               // 以 department_id 来标识部门
	GetProcessFormVariableDataDepartmentIDTypePeopleCorehrDepartmentId = "people_corehr_department_id" // 以 department_id 来标识部门
)

const (
	OpenApproverTransferUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	OpenApproverTransferUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	OpenApproverTransferUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	OpenApproverTransferUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	UpdateProcessRevokeUserIDTypeOpenId         = "open_id"          // 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。了解更多：如何获取 Open ID
	UpdateProcessRevokeUserIDTypeUnionId        = "union_id"         // 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。了解更多：如何获取 Union ID？
	UpdateProcessRevokeUserIDTypeUserId         = "user_id"          // 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。了解更多：如何获取 User ID？ 默认值：open_id 当值为 user_id，字段权限要求：获取用户 user ID（仅自建应用）
	UpdateProcessRevokeUserIDTypePeopleCorehrId = "people_corehr_id" // people corehr系统的用户id
)

const (
	UpdateProcessWithdrawUserIDTypeOpenId         = "open_id"          // 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。了解更多：如何获取 Open ID
	UpdateProcessWithdrawUserIDTypeUnionId        = "union_id"         // 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。了解更多：如何获取 Union ID？
	UpdateProcessWithdrawUserIDTypeUserId         = "user_id"          // 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。了解更多：如何获取 User ID？ 默认值：open_id 当值为 user_id，字段权限要求：获取用户 user ID（仅自建应用）
	UpdateProcessWithdrawUserIDTypePeopleCorehrId = "people_corehr_id" // people corehr系统的用户id
)

const (
	ListSignatureFileUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListSignatureFileUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListSignatureFileUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListSignatureFileUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListSignatureFileByBizIdUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListSignatureFileByBizIdUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListSignatureFileByBizIdUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListSignatureFileByBizIdUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	QuerySignatureFileUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	QuerySignatureFileUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	QuerySignatureFileUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	QuerySignatureFileUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	TerminateSignatureFileUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	TerminateSignatureFileUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	TerminateSignatureFileUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	TerminateSignatureFileUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	ListSignatureNodeByFileIdUserIDTypeUserId         = "user_id"          // 以 user_id 来识别用户
	ListSignatureNodeByFileIdUserIDTypeUnionId        = "union_id"         // 以 union_id 来识别用户
	ListSignatureNodeByFileIdUserIDTypeOpenId         = "open_id"          // 以 open_id 来识别用户
	ListSignatureNodeByFileIdUserIDTypePeopleCorehrId = "people_corehr_id" // 以飞书人事的 ID 来识别用户
)

const (
	BatchGetSignatureTemplateInfoWithThumbnailUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	BatchGetSignatureTemplateInfoWithThumbnailUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	BatchGetSignatureTemplateInfoWithThumbnailUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

type AbnormalReason struct {
	Id *string `json:"id,omitempty"` // 异常原因ID

	Type *int `json:"type,omitempty"` // 异常原因类型，1-系统异常，2-用户自定义异常;

	I18nElements []*AbnormalReasonI18nElement `json:"i18n_elements,omitempty"` // 异常原因列表
}

type AbnormalReasonBuilder struct {
	id     string // 异常原因ID
	idFlag bool

	type_    int // 异常原因类型，1-系统异常，2-用户自定义异常;
	typeFlag bool

	i18nElements     []*AbnormalReasonI18nElement // 异常原因列表
	i18nElementsFlag bool
}

func NewAbnormalReasonBuilder() *AbnormalReasonBuilder {
	builder := &AbnormalReasonBuilder{}
	return builder
}

// 异常原因ID
//
// 示例值：6893014062142064135
func (builder *AbnormalReasonBuilder) Id(id string) *AbnormalReasonBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 异常原因类型，1-系统异常，2-用户自定义异常;
//
// 示例值：1
func (builder *AbnormalReasonBuilder) Type(type_ int) *AbnormalReasonBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 异常原因列表
//
// 示例值：
func (builder *AbnormalReasonBuilder) I18nElements(i18nElements []*AbnormalReasonI18nElement) *AbnormalReasonBuilder {
	builder.i18nElements = i18nElements
	builder.i18nElementsFlag = true
	return builder
}

func (builder *AbnormalReasonBuilder) Build() *AbnormalReason {
	req := &AbnormalReason{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.i18nElementsFlag {
		req.I18nElements = builder.i18nElements
	}
	return req
}

type AbnormalReasonElement struct {
	Tag *string `json:"tag,omitempty"` // 组件类型

	Text *string `json:"text,omitempty"` // 文本

	Href *string `json:"href,omitempty"` // 超链接
}

type AbnormalReasonElementBuilder struct {
	tag     string // 组件类型
	tagFlag bool

	text     string // 文本
	textFlag bool

	href     string // 超链接
	hrefFlag bool
}

func NewAbnormalReasonElementBuilder() *AbnormalReasonElementBuilder {
	builder := &AbnormalReasonElementBuilder{}
	return builder
}

// 组件类型
//
// 示例值：a,text
func (builder *AbnormalReasonElementBuilder) Tag(tag string) *AbnormalReasonElementBuilder {
	builder.tag = tag
	builder.tagFlag = true
	return builder
}

// 文本
//
// 示例值：这个是一个文本字段
func (builder *AbnormalReasonElementBuilder) Text(text string) *AbnormalReasonElementBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 超链接
//
// 示例值：https://open.feishu.cn/
func (builder *AbnormalReasonElementBuilder) Href(href string) *AbnormalReasonElementBuilder {
	builder.href = href
	builder.hrefFlag = true
	return builder
}

func (builder *AbnormalReasonElementBuilder) Build() *AbnormalReasonElement {
	req := &AbnormalReasonElement{}
	if builder.tagFlag {
		req.Tag = &builder.tag

	}
	if builder.textFlag {
		req.Text = &builder.text

	}
	if builder.hrefFlag {
		req.Href = &builder.href

	}
	return req
}

type AbnormalReasonI18nElement struct {
	Lang *string `json:"lang,omitempty"` // 语言

	Elements []*AbnormalReasonElement `json:"elements,omitempty"` // 异常原因列表
}

type AbnormalReasonI18nElementBuilder struct {
	lang     string // 语言
	langFlag bool

	elements     []*AbnormalReasonElement // 异常原因列表
	elementsFlag bool
}

func NewAbnormalReasonI18nElementBuilder() *AbnormalReasonI18nElementBuilder {
	builder := &AbnormalReasonI18nElementBuilder{}
	return builder
}

// 语言
//
// 示例值：zh-CN,en-US
func (builder *AbnormalReasonI18nElementBuilder) Lang(lang string) *AbnormalReasonI18nElementBuilder {
	builder.lang = lang
	builder.langFlag = true
	return builder
}

// 异常原因列表
//
// 示例值：
func (builder *AbnormalReasonI18nElementBuilder) Elements(elements []*AbnormalReasonElement) *AbnormalReasonI18nElementBuilder {
	builder.elements = elements
	builder.elementsFlag = true
	return builder
}

func (builder *AbnormalReasonI18nElementBuilder) Build() *AbnormalReasonI18nElement {
	req := &AbnormalReasonI18nElement{}
	if builder.langFlag {
		req.Lang = &builder.lang

	}
	if builder.elementsFlag {
		req.Elements = builder.elements
	}
	return req
}

type Address struct {
	FullAddressLocalScript *string `json:"full_address_local_script,omitempty"` // 完整地址（本地文字）

	FullAddressWesternScript *string `json:"full_address_western_script,omitempty"` // 完整地址（西方文字）

	AddressId *string `json:"address_id,omitempty"` // 地址 ID

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	RegionId *string `json:"region_id,omitempty"` // 主要行政区

	CityId *string `json:"city_id,omitempty"` // 城市（该字段待作废，请勿使用）

	DistinctId *string `json:"distinct_id,omitempty"` // 区/县（该字段待作废，请勿使用）

	CityIdV2 *string `json:"city_id_v2,omitempty"` // 城市

	DistrictIdV2 *string `json:"district_id_v2,omitempty"` // 区/县

	AddressLine1 *string `json:"address_line1,omitempty"` // 地址行 1

	AddressLine2 *string `json:"address_line2,omitempty"` // 地址行 2

	AddressLine3 *string `json:"address_line3,omitempty"` // 地址行 3

	AddressLine4 *string `json:"address_line4,omitempty"` // 地址行 4

	AddressLine5 *string `json:"address_line5,omitempty"` // 地址行 5

	AddressLine6 *string `json:"address_line6,omitempty"` // 地址行 6

	AddressLine7 *string `json:"address_line7,omitempty"` // 地址行 7

	AddressLine8 *string `json:"address_line8,omitempty"` // 地址行 8

	AddressLine9 *string `json:"address_line9,omitempty"` // 地址行 9

	LocalAddressLine1 *string `json:"local_address_line1,omitempty"` // 地址行 1（非拉丁语系的本地文字）

	LocalAddressLine2 *string `json:"local_address_line2,omitempty"` // 地址行 2（非拉丁语系的本地文字）

	LocalAddressLine3 *string `json:"local_address_line3,omitempty"` // 地址行 3（非拉丁语系的本地文字）

	LocalAddressLine4 *string `json:"local_address_line4,omitempty"` // 地址行 4（非拉丁语系的本地文字）

	LocalAddressLine5 *string `json:"local_address_line5,omitempty"` // 地址行 5（非拉丁语系的本地文字）

	LocalAddressLine6 *string `json:"local_address_line6,omitempty"` // 地址行 6（非拉丁语系的本地文字）

	LocalAddressLine7 *string `json:"local_address_line7,omitempty"` // 地址行 7（非拉丁语系的本地文字）

	LocalAddressLine8 *string `json:"local_address_line8,omitempty"` // 地址行 8（非拉丁语系的本地文字）

	LocalAddressLine9 *string `json:"local_address_line9,omitempty"` // 地址行 9（非拉丁语系的本地文字）

	PostalCode *string `json:"postal_code,omitempty"` // 邮政编码

	AddressTypeList []*Enum `json:"address_type_list,omitempty"` // 地址类型

	IsPrimary *bool `json:"is_primary,omitempty"` // 主要地址

	IsPublic *bool `json:"is_public,omitempty"` // 公开地址

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CitySubdivision1 *string `json:"city_subdivision_1,omitempty"` // 城市往下细分 1 层的行政区

	CitySubdivision2 *string `json:"city_subdivision_2,omitempty"` // 城市往下细分 2 层的行政区

	RegionSubdivision1 *string `json:"region_subdivision_1,omitempty"` // 主要行政区往下细分 1 层的行政区

	RegionSubdivision2 *string `json:"region_subdivision_2,omitempty"` // 主要行政区往下细分 2 层的行政区

	CityText *string `json:"city_text,omitempty"` // 城市（仅文本）

	LocalCityText *string `json:"local_city_text,omitempty"` // 城市（仅文本，非拉丁语系的本地文字）
}

type AddressBuilder struct {
	fullAddressLocalScript     string // 完整地址（本地文字）
	fullAddressLocalScriptFlag bool

	fullAddressWesternScript     string // 完整地址（西方文字）
	fullAddressWesternScriptFlag bool

	addressId     string // 地址 ID
	addressIdFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	regionId     string // 主要行政区
	regionIdFlag bool

	cityId     string // 城市（该字段待作废，请勿使用）
	cityIdFlag bool

	distinctId     string // 区/县（该字段待作废，请勿使用）
	distinctIdFlag bool

	cityIdV2     string // 城市
	cityIdV2Flag bool

	districtIdV2     string // 区/县
	districtIdV2Flag bool

	addressLine1     string // 地址行 1
	addressLine1Flag bool

	addressLine2     string // 地址行 2
	addressLine2Flag bool

	addressLine3     string // 地址行 3
	addressLine3Flag bool

	addressLine4     string // 地址行 4
	addressLine4Flag bool

	addressLine5     string // 地址行 5
	addressLine5Flag bool

	addressLine6     string // 地址行 6
	addressLine6Flag bool

	addressLine7     string // 地址行 7
	addressLine7Flag bool

	addressLine8     string // 地址行 8
	addressLine8Flag bool

	addressLine9     string // 地址行 9
	addressLine9Flag bool

	localAddressLine1     string // 地址行 1（非拉丁语系的本地文字）
	localAddressLine1Flag bool

	localAddressLine2     string // 地址行 2（非拉丁语系的本地文字）
	localAddressLine2Flag bool

	localAddressLine3     string // 地址行 3（非拉丁语系的本地文字）
	localAddressLine3Flag bool

	localAddressLine4     string // 地址行 4（非拉丁语系的本地文字）
	localAddressLine4Flag bool

	localAddressLine5     string // 地址行 5（非拉丁语系的本地文字）
	localAddressLine5Flag bool

	localAddressLine6     string // 地址行 6（非拉丁语系的本地文字）
	localAddressLine6Flag bool

	localAddressLine7     string // 地址行 7（非拉丁语系的本地文字）
	localAddressLine7Flag bool

	localAddressLine8     string // 地址行 8（非拉丁语系的本地文字）
	localAddressLine8Flag bool

	localAddressLine9     string // 地址行 9（非拉丁语系的本地文字）
	localAddressLine9Flag bool

	postalCode     string // 邮政编码
	postalCodeFlag bool

	addressTypeList     []*Enum // 地址类型
	addressTypeListFlag bool

	isPrimary     bool // 主要地址
	isPrimaryFlag bool

	isPublic     bool // 公开地址
	isPublicFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	citySubdivision1     string // 城市往下细分 1 层的行政区
	citySubdivision1Flag bool

	citySubdivision2     string // 城市往下细分 2 层的行政区
	citySubdivision2Flag bool

	regionSubdivision1     string // 主要行政区往下细分 1 层的行政区
	regionSubdivision1Flag bool

	regionSubdivision2     string // 主要行政区往下细分 2 层的行政区
	regionSubdivision2Flag bool

	cityText     string // 城市（仅文本）
	cityTextFlag bool

	localCityText     string // 城市（仅文本，非拉丁语系的本地文字）
	localCityTextFlag bool
}

func NewAddressBuilder() *AddressBuilder {
	builder := &AddressBuilder{}
	return builder
}

// 完整地址（本地文字）
//
// 示例值：中国北京北京
func (builder *AddressBuilder) FullAddressLocalScript(fullAddressLocalScript string) *AddressBuilder {
	builder.fullAddressLocalScript = fullAddressLocalScript
	builder.fullAddressLocalScriptFlag = true
	return builder
}

// 完整地址（西方文字）
//
// 示例值：Beijing, Beijing, China,
func (builder *AddressBuilder) FullAddressWesternScript(fullAddressWesternScript string) *AddressBuilder {
	builder.fullAddressWesternScript = fullAddressWesternScript
	builder.fullAddressWesternScriptFlag = true
	return builder
}

// 地址 ID
//
// 示例值：6989822217869624863
func (builder *AddressBuilder) AddressId(addressId string) *AddressBuilder {
	builder.addressId = addressId
	builder.addressIdFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *AddressBuilder) CountryRegionId(countryRegionId string) *AddressBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 主要行政区
//
// 示例值：6863326815667095047
func (builder *AddressBuilder) RegionId(regionId string) *AddressBuilder {
	builder.regionId = regionId
	builder.regionIdFlag = true
	return builder
}

// 城市（该字段待作废，请勿使用）
//
// 示例值：6863333254578046471
func (builder *AddressBuilder) CityId(cityId string) *AddressBuilder {
	builder.cityId = cityId
	builder.cityIdFlag = true
	return builder
}

// 区/县（该字段待作废，请勿使用）
//
// 示例值：6863333516579440141
func (builder *AddressBuilder) DistinctId(distinctId string) *AddressBuilder {
	builder.distinctId = distinctId
	builder.distinctIdFlag = true
	return builder
}

// 城市
//
// 示例值：6863333254578046471
func (builder *AddressBuilder) CityIdV2(cityIdV2 string) *AddressBuilder {
	builder.cityIdV2 = cityIdV2
	builder.cityIdV2Flag = true
	return builder
}

// 区/县
//
// 示例值：6863333516579440141
func (builder *AddressBuilder) DistrictIdV2(districtIdV2 string) *AddressBuilder {
	builder.districtIdV2 = districtIdV2
	builder.districtIdV2Flag = true
	return builder
}

// 地址行 1
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *AddressBuilder) AddressLine1(addressLine1 string) *AddressBuilder {
	builder.addressLine1 = addressLine1
	builder.addressLine1Flag = true
	return builder
}

// 地址行 2
//
// 示例值：PoewH
func (builder *AddressBuilder) AddressLine2(addressLine2 string) *AddressBuilder {
	builder.addressLine2 = addressLine2
	builder.addressLine2Flag = true
	return builder
}

// 地址行 3
//
// 示例值：PoewH
func (builder *AddressBuilder) AddressLine3(addressLine3 string) *AddressBuilder {
	builder.addressLine3 = addressLine3
	builder.addressLine3Flag = true
	return builder
}

// 地址行 4
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine4(addressLine4 string) *AddressBuilder {
	builder.addressLine4 = addressLine4
	builder.addressLine4Flag = true
	return builder
}

// 地址行 5
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine5(addressLine5 string) *AddressBuilder {
	builder.addressLine5 = addressLine5
	builder.addressLine5Flag = true
	return builder
}

// 地址行 6
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine6(addressLine6 string) *AddressBuilder {
	builder.addressLine6 = addressLine6
	builder.addressLine6Flag = true
	return builder
}

// 地址行 7
//
// 示例值：jmwJc
func (builder *AddressBuilder) AddressLine7(addressLine7 string) *AddressBuilder {
	builder.addressLine7 = addressLine7
	builder.addressLine7Flag = true
	return builder
}

// 地址行 8
//
// 示例值：rafSu
func (builder *AddressBuilder) AddressLine8(addressLine8 string) *AddressBuilder {
	builder.addressLine8 = addressLine8
	builder.addressLine8Flag = true
	return builder
}

// 地址行 9
//
// 示例值：McPRG
func (builder *AddressBuilder) AddressLine9(addressLine9 string) *AddressBuilder {
	builder.addressLine9 = addressLine9
	builder.addressLine9Flag = true
	return builder
}

// 地址行 1（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *AddressBuilder) LocalAddressLine1(localAddressLine1 string) *AddressBuilder {
	builder.localAddressLine1 = localAddressLine1
	builder.localAddressLine1Flag = true
	return builder
}

// 地址行 2（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *AddressBuilder) LocalAddressLine2(localAddressLine2 string) *AddressBuilder {
	builder.localAddressLine2 = localAddressLine2
	builder.localAddressLine2Flag = true
	return builder
}

// 地址行 3（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *AddressBuilder) LocalAddressLine3(localAddressLine3 string) *AddressBuilder {
	builder.localAddressLine3 = localAddressLine3
	builder.localAddressLine3Flag = true
	return builder
}

// 地址行 4（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine4(localAddressLine4 string) *AddressBuilder {
	builder.localAddressLine4 = localAddressLine4
	builder.localAddressLine4Flag = true
	return builder
}

// 地址行 5（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine5(localAddressLine5 string) *AddressBuilder {
	builder.localAddressLine5 = localAddressLine5
	builder.localAddressLine5Flag = true
	return builder
}

// 地址行 6（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine6(localAddressLine6 string) *AddressBuilder {
	builder.localAddressLine6 = localAddressLine6
	builder.localAddressLine6Flag = true
	return builder
}

// 地址行 7（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressBuilder) LocalAddressLine7(localAddressLine7 string) *AddressBuilder {
	builder.localAddressLine7 = localAddressLine7
	builder.localAddressLine7Flag = true
	return builder
}

// 地址行 8（非拉丁语系的本地文字）
//
// 示例值：rafSu
func (builder *AddressBuilder) LocalAddressLine8(localAddressLine8 string) *AddressBuilder {
	builder.localAddressLine8 = localAddressLine8
	builder.localAddressLine8Flag = true
	return builder
}

// 地址行 9（非拉丁语系的本地文字）
//
// 示例值：McPRG
func (builder *AddressBuilder) LocalAddressLine9(localAddressLine9 string) *AddressBuilder {
	builder.localAddressLine9 = localAddressLine9
	builder.localAddressLine9Flag = true
	return builder
}

// 邮政编码
//
// 示例值：611530
func (builder *AddressBuilder) PostalCode(postalCode string) *AddressBuilder {
	builder.postalCode = postalCode
	builder.postalCodeFlag = true
	return builder
}

// 地址类型
//
// 示例值：
func (builder *AddressBuilder) AddressTypeList(addressTypeList []*Enum) *AddressBuilder {
	builder.addressTypeList = addressTypeList
	builder.addressTypeListFlag = true
	return builder
}

// 主要地址
//
// 示例值：true
func (builder *AddressBuilder) IsPrimary(isPrimary bool) *AddressBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 公开地址
//
// 示例值：true
func (builder *AddressBuilder) IsPublic(isPublic bool) *AddressBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *AddressBuilder) CustomFields(customFields []*CustomFieldData) *AddressBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 城市往下细分 1 层的行政区
//
// 示例值：123
func (builder *AddressBuilder) CitySubdivision1(citySubdivision1 string) *AddressBuilder {
	builder.citySubdivision1 = citySubdivision1
	builder.citySubdivision1Flag = true
	return builder
}

// 城市往下细分 2 层的行政区
//
// 示例值：123
func (builder *AddressBuilder) CitySubdivision2(citySubdivision2 string) *AddressBuilder {
	builder.citySubdivision2 = citySubdivision2
	builder.citySubdivision2Flag = true
	return builder
}

// 主要行政区往下细分 1 层的行政区
//
// 示例值：123
func (builder *AddressBuilder) RegionSubdivision1(regionSubdivision1 string) *AddressBuilder {
	builder.regionSubdivision1 = regionSubdivision1
	builder.regionSubdivision1Flag = true
	return builder
}

// 主要行政区往下细分 2 层的行政区
//
// 示例值：123
func (builder *AddressBuilder) RegionSubdivision2(regionSubdivision2 string) *AddressBuilder {
	builder.regionSubdivision2 = regionSubdivision2
	builder.regionSubdivision2Flag = true
	return builder
}

// 城市（仅文本）
//
// 示例值：example
func (builder *AddressBuilder) CityText(cityText string) *AddressBuilder {
	builder.cityText = cityText
	builder.cityTextFlag = true
	return builder
}

// 城市（仅文本，非拉丁语系的本地文字）
//
// 示例值：example
func (builder *AddressBuilder) LocalCityText(localCityText string) *AddressBuilder {
	builder.localCityText = localCityText
	builder.localCityTextFlag = true
	return builder
}

func (builder *AddressBuilder) Build() *Address {
	req := &Address{}
	if builder.fullAddressLocalScriptFlag {
		req.FullAddressLocalScript = &builder.fullAddressLocalScript

	}
	if builder.fullAddressWesternScriptFlag {
		req.FullAddressWesternScript = &builder.fullAddressWesternScript

	}
	if builder.addressIdFlag {
		req.AddressId = &builder.addressId

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.regionIdFlag {
		req.RegionId = &builder.regionId

	}
	if builder.cityIdFlag {
		req.CityId = &builder.cityId

	}
	if builder.distinctIdFlag {
		req.DistinctId = &builder.distinctId

	}
	if builder.cityIdV2Flag {
		req.CityIdV2 = &builder.cityIdV2

	}
	if builder.districtIdV2Flag {
		req.DistrictIdV2 = &builder.districtIdV2

	}
	if builder.addressLine1Flag {
		req.AddressLine1 = &builder.addressLine1

	}
	if builder.addressLine2Flag {
		req.AddressLine2 = &builder.addressLine2

	}
	if builder.addressLine3Flag {
		req.AddressLine3 = &builder.addressLine3

	}
	if builder.addressLine4Flag {
		req.AddressLine4 = &builder.addressLine4

	}
	if builder.addressLine5Flag {
		req.AddressLine5 = &builder.addressLine5

	}
	if builder.addressLine6Flag {
		req.AddressLine6 = &builder.addressLine6

	}
	if builder.addressLine7Flag {
		req.AddressLine7 = &builder.addressLine7

	}
	if builder.addressLine8Flag {
		req.AddressLine8 = &builder.addressLine8

	}
	if builder.addressLine9Flag {
		req.AddressLine9 = &builder.addressLine9

	}
	if builder.localAddressLine1Flag {
		req.LocalAddressLine1 = &builder.localAddressLine1

	}
	if builder.localAddressLine2Flag {
		req.LocalAddressLine2 = &builder.localAddressLine2

	}
	if builder.localAddressLine3Flag {
		req.LocalAddressLine3 = &builder.localAddressLine3

	}
	if builder.localAddressLine4Flag {
		req.LocalAddressLine4 = &builder.localAddressLine4

	}
	if builder.localAddressLine5Flag {
		req.LocalAddressLine5 = &builder.localAddressLine5

	}
	if builder.localAddressLine6Flag {
		req.LocalAddressLine6 = &builder.localAddressLine6

	}
	if builder.localAddressLine7Flag {
		req.LocalAddressLine7 = &builder.localAddressLine7

	}
	if builder.localAddressLine8Flag {
		req.LocalAddressLine8 = &builder.localAddressLine8

	}
	if builder.localAddressLine9Flag {
		req.LocalAddressLine9 = &builder.localAddressLine9

	}
	if builder.postalCodeFlag {
		req.PostalCode = &builder.postalCode

	}
	if builder.addressTypeListFlag {
		req.AddressTypeList = builder.addressTypeList
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.citySubdivision1Flag {
		req.CitySubdivision1 = &builder.citySubdivision1

	}
	if builder.citySubdivision2Flag {
		req.CitySubdivision2 = &builder.citySubdivision2

	}
	if builder.regionSubdivision1Flag {
		req.RegionSubdivision1 = &builder.regionSubdivision1

	}
	if builder.regionSubdivision2Flag {
		req.RegionSubdivision2 = &builder.regionSubdivision2

	}
	if builder.cityTextFlag {
		req.CityText = &builder.cityText

	}
	if builder.localCityTextFlag {
		req.LocalCityText = &builder.localCityText

	}
	return req
}

type AddressForUpdate struct {
	AddressId *string `json:"address_id,omitempty"` // 地址 ID

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	RegionId *string `json:"region_id,omitempty"` // 主要行政区

	LocalAddressLine1 *string `json:"local_address_line1,omitempty"` // 地址行 1（非拉丁语系的本地文字）

	LocalAddressLine2 *string `json:"local_address_line2,omitempty"` // 地址行 2（非拉丁语系的本地文字）

	LocalAddressLine3 *string `json:"local_address_line3,omitempty"` // 地址行 3（非拉丁语系的本地文字）

	LocalAddressLine4 *string `json:"local_address_line4,omitempty"` // 地址行 4（非拉丁语系的本地文字）

	LocalAddressLine5 *string `json:"local_address_line5,omitempty"` // 地址行 5（非拉丁语系的本地文字）

	LocalAddressLine6 *string `json:"local_address_line6,omitempty"` // 地址行 6（非拉丁语系的本地文字）

	LocalAddressLine7 *string `json:"local_address_line7,omitempty"` // 地址行 7（非拉丁语系的本地文字）

	LocalAddressLine8 *string `json:"local_address_line8,omitempty"` // 地址行 8（非拉丁语系的本地文字）

	LocalAddressLine9 *string `json:"local_address_line9,omitempty"` // 地址行 9（非拉丁语系的本地文字）

	PostalCode *string `json:"postal_code,omitempty"` // 邮政编码

	AddressTypes []string `json:"address_types,omitempty"` // 地址类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "address" - custom_api_name = "address_type"

	IsPrimary *bool `json:"is_primary,omitempty"` // 主要地址

	IsPublic *bool `json:"is_public,omitempty"` // 公开地址

	CityIdV2 *string `json:"city_id_v2,omitempty"` // 城市

	DistrictIdV2 *string `json:"district_id_v2,omitempty"` // 区/县

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	AddressLine1 *string `json:"address_line1,omitempty"` // 地址行 1

	AddressLine2 *string `json:"address_line2,omitempty"` // 地址行 2

	AddressLine3 *string `json:"address_line3,omitempty"` // 地址行 3

	AddressLine4 *string `json:"address_line4,omitempty"` // 地址行 4

	AddressLine5 *string `json:"address_line5,omitempty"` // 地址行 5

	AddressLine6 *string `json:"address_line6,omitempty"` // 地址行 6

	AddressLine7 *string `json:"address_line7,omitempty"` // 地址行 7

	AddressLine8 *string `json:"address_line8,omitempty"` // 地址行 8

	AddressLine9 *string `json:"address_line9,omitempty"` // 地址行 9
}

type AddressForUpdateBuilder struct {
	addressId     string // 地址 ID
	addressIdFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	regionId     string // 主要行政区
	regionIdFlag bool

	localAddressLine1     string // 地址行 1（非拉丁语系的本地文字）
	localAddressLine1Flag bool

	localAddressLine2     string // 地址行 2（非拉丁语系的本地文字）
	localAddressLine2Flag bool

	localAddressLine3     string // 地址行 3（非拉丁语系的本地文字）
	localAddressLine3Flag bool

	localAddressLine4     string // 地址行 4（非拉丁语系的本地文字）
	localAddressLine4Flag bool

	localAddressLine5     string // 地址行 5（非拉丁语系的本地文字）
	localAddressLine5Flag bool

	localAddressLine6     string // 地址行 6（非拉丁语系的本地文字）
	localAddressLine6Flag bool

	localAddressLine7     string // 地址行 7（非拉丁语系的本地文字）
	localAddressLine7Flag bool

	localAddressLine8     string // 地址行 8（非拉丁语系的本地文字）
	localAddressLine8Flag bool

	localAddressLine9     string // 地址行 9（非拉丁语系的本地文字）
	localAddressLine9Flag bool

	postalCode     string // 邮政编码
	postalCodeFlag bool

	addressTypes     []string // 地址类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "address" - custom_api_name = "address_type"
	addressTypesFlag bool

	isPrimary     bool // 主要地址
	isPrimaryFlag bool

	isPublic     bool // 公开地址
	isPublicFlag bool

	cityIdV2     string // 城市
	cityIdV2Flag bool

	districtIdV2     string // 区/县
	districtIdV2Flag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	addressLine1     string // 地址行 1
	addressLine1Flag bool

	addressLine2     string // 地址行 2
	addressLine2Flag bool

	addressLine3     string // 地址行 3
	addressLine3Flag bool

	addressLine4     string // 地址行 4
	addressLine4Flag bool

	addressLine5     string // 地址行 5
	addressLine5Flag bool

	addressLine6     string // 地址行 6
	addressLine6Flag bool

	addressLine7     string // 地址行 7
	addressLine7Flag bool

	addressLine8     string // 地址行 8
	addressLine8Flag bool

	addressLine9     string // 地址行 9
	addressLine9Flag bool
}

func NewAddressForUpdateBuilder() *AddressForUpdateBuilder {
	builder := &AddressForUpdateBuilder{}
	return builder
}

// 地址 ID
//
// 示例值：6989822217869624863
func (builder *AddressForUpdateBuilder) AddressId(addressId string) *AddressForUpdateBuilder {
	builder.addressId = addressId
	builder.addressIdFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *AddressForUpdateBuilder) CountryRegionId(countryRegionId string) *AddressForUpdateBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 主要行政区
//
// 示例值：6863326815667095047
func (builder *AddressForUpdateBuilder) RegionId(regionId string) *AddressForUpdateBuilder {
	builder.regionId = regionId
	builder.regionIdFlag = true
	return builder
}

// 地址行 1（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *AddressForUpdateBuilder) LocalAddressLine1(localAddressLine1 string) *AddressForUpdateBuilder {
	builder.localAddressLine1 = localAddressLine1
	builder.localAddressLine1Flag = true
	return builder
}

// 地址行 2（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *AddressForUpdateBuilder) LocalAddressLine2(localAddressLine2 string) *AddressForUpdateBuilder {
	builder.localAddressLine2 = localAddressLine2
	builder.localAddressLine2Flag = true
	return builder
}

// 地址行 3（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *AddressForUpdateBuilder) LocalAddressLine3(localAddressLine3 string) *AddressForUpdateBuilder {
	builder.localAddressLine3 = localAddressLine3
	builder.localAddressLine3Flag = true
	return builder
}

// 地址行 4（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) LocalAddressLine4(localAddressLine4 string) *AddressForUpdateBuilder {
	builder.localAddressLine4 = localAddressLine4
	builder.localAddressLine4Flag = true
	return builder
}

// 地址行 5（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) LocalAddressLine5(localAddressLine5 string) *AddressForUpdateBuilder {
	builder.localAddressLine5 = localAddressLine5
	builder.localAddressLine5Flag = true
	return builder
}

// 地址行 6（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) LocalAddressLine6(localAddressLine6 string) *AddressForUpdateBuilder {
	builder.localAddressLine6 = localAddressLine6
	builder.localAddressLine6Flag = true
	return builder
}

// 地址行 7（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) LocalAddressLine7(localAddressLine7 string) *AddressForUpdateBuilder {
	builder.localAddressLine7 = localAddressLine7
	builder.localAddressLine7Flag = true
	return builder
}

// 地址行 8（非拉丁语系的本地文字）
//
// 示例值：rafSu
func (builder *AddressForUpdateBuilder) LocalAddressLine8(localAddressLine8 string) *AddressForUpdateBuilder {
	builder.localAddressLine8 = localAddressLine8
	builder.localAddressLine8Flag = true
	return builder
}

// 地址行 9（非拉丁语系的本地文字）
//
// 示例值：McPRG
func (builder *AddressForUpdateBuilder) LocalAddressLine9(localAddressLine9 string) *AddressForUpdateBuilder {
	builder.localAddressLine9 = localAddressLine9
	builder.localAddressLine9Flag = true
	return builder
}

// 邮政编码
//
// 示例值：611530
func (builder *AddressForUpdateBuilder) PostalCode(postalCode string) *AddressForUpdateBuilder {
	builder.postalCode = postalCode
	builder.postalCodeFlag = true
	return builder
}

// 地址类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "address" - custom_api_name = "address_type"
//
// 示例值：
func (builder *AddressForUpdateBuilder) AddressTypes(addressTypes []string) *AddressForUpdateBuilder {
	builder.addressTypes = addressTypes
	builder.addressTypesFlag = true
	return builder
}

// 主要地址
//
// 示例值：true
func (builder *AddressForUpdateBuilder) IsPrimary(isPrimary bool) *AddressForUpdateBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 公开地址
//
// 示例值：true
func (builder *AddressForUpdateBuilder) IsPublic(isPublic bool) *AddressForUpdateBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

// 城市
//
// 示例值：6863333254578046471
func (builder *AddressForUpdateBuilder) CityIdV2(cityIdV2 string) *AddressForUpdateBuilder {
	builder.cityIdV2 = cityIdV2
	builder.cityIdV2Flag = true
	return builder
}

// 区/县
//
// 示例值：6863333516579440141
func (builder *AddressForUpdateBuilder) DistrictIdV2(districtIdV2 string) *AddressForUpdateBuilder {
	builder.districtIdV2 = districtIdV2
	builder.districtIdV2Flag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *AddressForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *AddressForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 地址行 1
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *AddressForUpdateBuilder) AddressLine1(addressLine1 string) *AddressForUpdateBuilder {
	builder.addressLine1 = addressLine1
	builder.addressLine1Flag = true
	return builder
}

// 地址行 2
//
// 示例值：PoewH
func (builder *AddressForUpdateBuilder) AddressLine2(addressLine2 string) *AddressForUpdateBuilder {
	builder.addressLine2 = addressLine2
	builder.addressLine2Flag = true
	return builder
}

// 地址行 3
//
// 示例值：PoewH
func (builder *AddressForUpdateBuilder) AddressLine3(addressLine3 string) *AddressForUpdateBuilder {
	builder.addressLine3 = addressLine3
	builder.addressLine3Flag = true
	return builder
}

// 地址行 4
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) AddressLine4(addressLine4 string) *AddressForUpdateBuilder {
	builder.addressLine4 = addressLine4
	builder.addressLine4Flag = true
	return builder
}

// 地址行 5
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) AddressLine5(addressLine5 string) *AddressForUpdateBuilder {
	builder.addressLine5 = addressLine5
	builder.addressLine5Flag = true
	return builder
}

// 地址行 6
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) AddressLine6(addressLine6 string) *AddressForUpdateBuilder {
	builder.addressLine6 = addressLine6
	builder.addressLine6Flag = true
	return builder
}

// 地址行 7
//
// 示例值：jmwJc
func (builder *AddressForUpdateBuilder) AddressLine7(addressLine7 string) *AddressForUpdateBuilder {
	builder.addressLine7 = addressLine7
	builder.addressLine7Flag = true
	return builder
}

// 地址行 8
//
// 示例值：rafSu
func (builder *AddressForUpdateBuilder) AddressLine8(addressLine8 string) *AddressForUpdateBuilder {
	builder.addressLine8 = addressLine8
	builder.addressLine8Flag = true
	return builder
}

// 地址行 9
//
// 示例值：McPRG
func (builder *AddressForUpdateBuilder) AddressLine9(addressLine9 string) *AddressForUpdateBuilder {
	builder.addressLine9 = addressLine9
	builder.addressLine9Flag = true
	return builder
}

func (builder *AddressForUpdateBuilder) Build() *AddressForUpdate {
	req := &AddressForUpdate{}
	if builder.addressIdFlag {
		req.AddressId = &builder.addressId

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.regionIdFlag {
		req.RegionId = &builder.regionId

	}
	if builder.localAddressLine1Flag {
		req.LocalAddressLine1 = &builder.localAddressLine1

	}
	if builder.localAddressLine2Flag {
		req.LocalAddressLine2 = &builder.localAddressLine2

	}
	if builder.localAddressLine3Flag {
		req.LocalAddressLine3 = &builder.localAddressLine3

	}
	if builder.localAddressLine4Flag {
		req.LocalAddressLine4 = &builder.localAddressLine4

	}
	if builder.localAddressLine5Flag {
		req.LocalAddressLine5 = &builder.localAddressLine5

	}
	if builder.localAddressLine6Flag {
		req.LocalAddressLine6 = &builder.localAddressLine6

	}
	if builder.localAddressLine7Flag {
		req.LocalAddressLine7 = &builder.localAddressLine7

	}
	if builder.localAddressLine8Flag {
		req.LocalAddressLine8 = &builder.localAddressLine8

	}
	if builder.localAddressLine9Flag {
		req.LocalAddressLine9 = &builder.localAddressLine9

	}
	if builder.postalCodeFlag {
		req.PostalCode = &builder.postalCode

	}
	if builder.addressTypesFlag {
		req.AddressTypes = builder.addressTypes
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	if builder.cityIdV2Flag {
		req.CityIdV2 = &builder.cityIdV2

	}
	if builder.districtIdV2Flag {
		req.DistrictIdV2 = &builder.districtIdV2

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.addressLine1Flag {
		req.AddressLine1 = &builder.addressLine1

	}
	if builder.addressLine2Flag {
		req.AddressLine2 = &builder.addressLine2

	}
	if builder.addressLine3Flag {
		req.AddressLine3 = &builder.addressLine3

	}
	if builder.addressLine4Flag {
		req.AddressLine4 = &builder.addressLine4

	}
	if builder.addressLine5Flag {
		req.AddressLine5 = &builder.addressLine5

	}
	if builder.addressLine6Flag {
		req.AddressLine6 = &builder.addressLine6

	}
	if builder.addressLine7Flag {
		req.AddressLine7 = &builder.addressLine7

	}
	if builder.addressLine8Flag {
		req.AddressLine8 = &builder.addressLine8

	}
	if builder.addressLine9Flag {
		req.AddressLine9 = &builder.addressLine9

	}
	return req
}

type AddressTimeline struct {
	AddressItems []*Address `json:"address_items,omitempty"` // 地址信息

	Id *string `json:"id,omitempty"` // ID

	EmploymentId *string `json:"employment_id,omitempty"` // 用户ID

	VersionId *string `json:"version_id,omitempty"` // 版本信息ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间
}

type AddressTimelineBuilder struct {
	addressItems     []*Address // 地址信息
	addressItemsFlag bool

	id     string // ID
	idFlag bool

	employmentId     string // 用户ID
	employmentIdFlag bool

	versionId     string // 版本信息ID
	versionIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool
}

func NewAddressTimelineBuilder() *AddressTimelineBuilder {
	builder := &AddressTimelineBuilder{}
	return builder
}

// 地址信息
//
// 示例值：
func (builder *AddressTimelineBuilder) AddressItems(addressItems []*Address) *AddressTimelineBuilder {
	builder.addressItems = addressItems
	builder.addressItemsFlag = true
	return builder
}

// ID
//
// 示例值：7293840901707662896
func (builder *AddressTimelineBuilder) Id(id string) *AddressTimelineBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户ID
//
// 示例值：7893840901707662896
func (builder *AddressTimelineBuilder) EmploymentId(employmentId string) *AddressTimelineBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 版本信息ID
//
// 示例值：7182837312403818029
func (builder *AddressTimelineBuilder) VersionId(versionId string) *AddressTimelineBuilder {
	builder.versionId = versionId
	builder.versionIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2025-03-12 00:00:00
func (builder *AddressTimelineBuilder) EffectiveTime(effectiveTime string) *AddressTimelineBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：9999-12-31 23:59:59
func (builder *AddressTimelineBuilder) ExpirationTime(expirationTime string) *AddressTimelineBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

func (builder *AddressTimelineBuilder) Build() *AddressTimeline {
	req := &AddressTimeline{}
	if builder.addressItemsFlag {
		req.AddressItems = builder.addressItems
	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.versionIdFlag {
		req.VersionId = &builder.versionId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	return req
}

type ApprovalGroup struct {
	ApprovalGroupId *string `json:"approval_group_id,omitempty"` // 组织架构调整审批组 ID

	ProcessId *string `json:"process_id,omitempty"` // 组织架构调整流程 ID

	ApprovalGroupStatus *string `json:"approval_group_status,omitempty"` // 组织架构调整流程状态

	ApprovalGroupStatusV2 *int `json:"approval_group_status_v2,omitempty"` // 组织架构调整流程状态V2

	Topic *string `json:"topic,omitempty"` // 调整主题

	AdjustReason *string `json:"adjust_reason,omitempty"` // 调整原因

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	CreatedBy *string `json:"created_by,omitempty"` // 发起人

	DraftId *string `json:"draft_id,omitempty"` // 组织架构调整任务 ID

	DraftStatus *string `json:"draft_status,omitempty"` // 组织架构调整任务状态

	DepartmentChanges []string `json:"department_changes,omitempty"` // 关联的部门调整记录 ID 列表

	JobChanges []string `json:"job_changes,omitempty"` // 关联的人员调整记录 ID 列表

	PositionChanges []string `json:"position_changes,omitempty"` // 关联的岗位调整记录 ID 列表
}

type ApprovalGroupBuilder struct {
	approvalGroupId     string // 组织架构调整审批组 ID
	approvalGroupIdFlag bool

	processId     string // 组织架构调整流程 ID
	processIdFlag bool

	approvalGroupStatus     string // 组织架构调整流程状态
	approvalGroupStatusFlag bool

	approvalGroupStatusV2     int // 组织架构调整流程状态V2
	approvalGroupStatusV2Flag bool

	topic     string // 调整主题
	topicFlag bool

	adjustReason     string // 调整原因
	adjustReasonFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	createdBy     string // 发起人
	createdByFlag bool

	draftId     string // 组织架构调整任务 ID
	draftIdFlag bool

	draftStatus     string // 组织架构调整任务状态
	draftStatusFlag bool

	departmentChanges     []string // 关联的部门调整记录 ID 列表
	departmentChangesFlag bool

	jobChanges     []string // 关联的人员调整记录 ID 列表
	jobChangesFlag bool

	positionChanges     []string // 关联的岗位调整记录 ID 列表
	positionChangesFlag bool
}

func NewApprovalGroupBuilder() *ApprovalGroupBuilder {
	builder := &ApprovalGroupBuilder{}
	return builder
}

// 组织架构调整审批组 ID
//
// 示例值：6991776076699549697
func (builder *ApprovalGroupBuilder) ApprovalGroupId(approvalGroupId string) *ApprovalGroupBuilder {
	builder.approvalGroupId = approvalGroupId
	builder.approvalGroupIdFlag = true
	return builder
}

// 组织架构调整流程 ID
//
// 示例值：6991776076699549697
func (builder *ApprovalGroupBuilder) ProcessId(processId string) *ApprovalGroupBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 组织架构调整流程状态
//
// 示例值：
func (builder *ApprovalGroupBuilder) ApprovalGroupStatus(approvalGroupStatus string) *ApprovalGroupBuilder {
	builder.approvalGroupStatus = approvalGroupStatus
	builder.approvalGroupStatusFlag = true
	return builder
}

// 组织架构调整流程状态V2
//
// 示例值：
func (builder *ApprovalGroupBuilder) ApprovalGroupStatusV2(approvalGroupStatusV2 int) *ApprovalGroupBuilder {
	builder.approvalGroupStatusV2 = approvalGroupStatusV2
	builder.approvalGroupStatusV2Flag = true
	return builder
}

// 调整主题
//
// 示例值：测试组织架构调整
func (builder *ApprovalGroupBuilder) Topic(topic string) *ApprovalGroupBuilder {
	builder.topic = topic
	builder.topicFlag = true
	return builder
}

// 调整原因
//
// 示例值：测试
func (builder *ApprovalGroupBuilder) AdjustReason(adjustReason string) *ApprovalGroupBuilder {
	builder.adjustReason = adjustReason
	builder.adjustReasonFlag = true
	return builder
}

// 生效日期
//
// 示例值：2022-03-01
func (builder *ApprovalGroupBuilder) EffectiveDate(effectiveDate string) *ApprovalGroupBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 发起人
//
// 示例值：6974641477444060708
func (builder *ApprovalGroupBuilder) CreatedBy(createdBy string) *ApprovalGroupBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 组织架构调整任务 ID
//
// 示例值：6991776076699549697
func (builder *ApprovalGroupBuilder) DraftId(draftId string) *ApprovalGroupBuilder {
	builder.draftId = draftId
	builder.draftIdFlag = true
	return builder
}

// 组织架构调整任务状态
//
// 示例值：
func (builder *ApprovalGroupBuilder) DraftStatus(draftStatus string) *ApprovalGroupBuilder {
	builder.draftStatus = draftStatus
	builder.draftStatusFlag = true
	return builder
}

// 关联的部门调整记录 ID 列表
//
// 示例值：
func (builder *ApprovalGroupBuilder) DepartmentChanges(departmentChanges []string) *ApprovalGroupBuilder {
	builder.departmentChanges = departmentChanges
	builder.departmentChangesFlag = true
	return builder
}

// 关联的人员调整记录 ID 列表
//
// 示例值：
func (builder *ApprovalGroupBuilder) JobChanges(jobChanges []string) *ApprovalGroupBuilder {
	builder.jobChanges = jobChanges
	builder.jobChangesFlag = true
	return builder
}

// 关联的岗位调整记录 ID 列表
//
// 示例值：
func (builder *ApprovalGroupBuilder) PositionChanges(positionChanges []string) *ApprovalGroupBuilder {
	builder.positionChanges = positionChanges
	builder.positionChangesFlag = true
	return builder
}

func (builder *ApprovalGroupBuilder) Build() *ApprovalGroup {
	req := &ApprovalGroup{}
	if builder.approvalGroupIdFlag {
		req.ApprovalGroupId = &builder.approvalGroupId

	}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.approvalGroupStatusFlag {
		req.ApprovalGroupStatus = &builder.approvalGroupStatus

	}
	if builder.approvalGroupStatusV2Flag {
		req.ApprovalGroupStatusV2 = &builder.approvalGroupStatusV2

	}
	if builder.topicFlag {
		req.Topic = &builder.topic

	}
	if builder.adjustReasonFlag {
		req.AdjustReason = &builder.adjustReason

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.draftIdFlag {
		req.DraftId = &builder.draftId

	}
	if builder.draftStatusFlag {
		req.DraftStatus = &builder.draftStatus

	}
	if builder.departmentChangesFlag {
		req.DepartmentChanges = builder.departmentChanges
	}
	if builder.jobChangesFlag {
		req.JobChanges = builder.jobChanges
	}
	if builder.positionChangesFlag {
		req.PositionChanges = builder.positionChanges
	}
	return req
}

type ApproverInfo struct {
	ApproverId *string `json:"approver_id,omitempty"` // 审批任务id

	ProcessId *string `json:"process_id,omitempty"` // 流程id

	ApproverStatus *int `json:"approver_status,omitempty"` // 任务状态
}

type ApproverInfoBuilder struct {
	approverId     string // 审批任务id
	approverIdFlag bool

	processId     string // 流程id
	processIdFlag bool

	approverStatus     int // 任务状态
	approverStatusFlag bool
}

func NewApproverInfoBuilder() *ApproverInfoBuilder {
	builder := &ApproverInfoBuilder{}
	return builder
}

// 审批任务id
//
// 示例值：7410781046418966060
func (builder *ApproverInfoBuilder) ApproverId(approverId string) *ApproverInfoBuilder {
	builder.approverId = approverId
	builder.approverIdFlag = true
	return builder
}

// 流程id
//
// 示例值：7410781046418966060
func (builder *ApproverInfoBuilder) ProcessId(processId string) *ApproverInfoBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 任务状态
//
// 示例值：1
func (builder *ApproverInfoBuilder) ApproverStatus(approverStatus int) *ApproverInfoBuilder {
	builder.approverStatus = approverStatus
	builder.approverStatusFlag = true
	return builder
}

func (builder *ApproverInfoBuilder) Build() *ApproverInfo {
	req := &ApproverInfo{}
	if builder.approverIdFlag {
		req.ApproverId = &builder.approverId

	}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.approverStatusFlag {
		req.ApproverStatus = &builder.approverStatus

	}
	return req
}

type Assessment struct {
	AssessmentId *string `json:"assessment_id,omitempty"` // 考核结果 ID

	AssessmentStatus *Enum `json:"assessment_status,omitempty"` // 考核状态

	AssessmentResult *Enum `json:"assessment_result,omitempty"` // 试用期考核结果

	AssessmentScore *float64 `json:"assessment_score,omitempty"` // 考核得分

	AssessmentGrade *Enum `json:"assessment_grade,omitempty"` // 试用期考核等级

	AssessmentComment *string `json:"assessment_comment,omitempty"` // 考核评语

	AssessmentDetail *string `json:"assessment_detail,omitempty"` // 考核结果页面超链接

	IsFinalAsssessment *bool `json:"is_final_asssessment,omitempty"` // 是否为最终考核结果
}

type AssessmentBuilder struct {
	assessmentId     string // 考核结果 ID
	assessmentIdFlag bool

	assessmentStatus     *Enum // 考核状态
	assessmentStatusFlag bool

	assessmentResult     *Enum // 试用期考核结果
	assessmentResultFlag bool

	assessmentScore     float64 // 考核得分
	assessmentScoreFlag bool

	assessmentGrade     *Enum // 试用期考核等级
	assessmentGradeFlag bool

	assessmentComment     string // 考核评语
	assessmentCommentFlag bool

	assessmentDetail     string // 考核结果页面超链接
	assessmentDetailFlag bool

	isFinalAsssessment     bool // 是否为最终考核结果
	isFinalAsssessmentFlag bool
}

func NewAssessmentBuilder() *AssessmentBuilder {
	builder := &AssessmentBuilder{}
	return builder
}

// 考核结果 ID
//
// 示例值：6893014061142064135
func (builder *AssessmentBuilder) AssessmentId(assessmentId string) *AssessmentBuilder {
	builder.assessmentId = assessmentId
	builder.assessmentIdFlag = true
	return builder
}

// 考核状态
//
// 示例值：
func (builder *AssessmentBuilder) AssessmentStatus(assessmentStatus *Enum) *AssessmentBuilder {
	builder.assessmentStatus = assessmentStatus
	builder.assessmentStatusFlag = true
	return builder
}

// 试用期考核结果
//
// 示例值：
func (builder *AssessmentBuilder) AssessmentResult(assessmentResult *Enum) *AssessmentBuilder {
	builder.assessmentResult = assessmentResult
	builder.assessmentResultFlag = true
	return builder
}

// 考核得分
//
// 示例值：99.9
func (builder *AssessmentBuilder) AssessmentScore(assessmentScore float64) *AssessmentBuilder {
	builder.assessmentScore = assessmentScore
	builder.assessmentScoreFlag = true
	return builder
}

// 试用期考核等级
//
// 示例值：
func (builder *AssessmentBuilder) AssessmentGrade(assessmentGrade *Enum) *AssessmentBuilder {
	builder.assessmentGrade = assessmentGrade
	builder.assessmentGradeFlag = true
	return builder
}

// 考核评语
//
// 示例值：超出预期
func (builder *AssessmentBuilder) AssessmentComment(assessmentComment string) *AssessmentBuilder {
	builder.assessmentComment = assessmentComment
	builder.assessmentCommentFlag = true
	return builder
}

// 考核结果页面超链接
//
// 示例值：https://qwe1123433.feishuapp.bytedance.net/ae/ui/apps//122265871113330/recordPages/2/records/17611111112?objectId=17663333322543&recordPageId=171128122312
func (builder *AssessmentBuilder) AssessmentDetail(assessmentDetail string) *AssessmentBuilder {
	builder.assessmentDetail = assessmentDetail
	builder.assessmentDetailFlag = true
	return builder
}

// 是否为最终考核结果
//
// 示例值：false
func (builder *AssessmentBuilder) IsFinalAsssessment(isFinalAsssessment bool) *AssessmentBuilder {
	builder.isFinalAsssessment = isFinalAsssessment
	builder.isFinalAsssessmentFlag = true
	return builder
}

func (builder *AssessmentBuilder) Build() *Assessment {
	req := &Assessment{}
	if builder.assessmentIdFlag {
		req.AssessmentId = &builder.assessmentId

	}
	if builder.assessmentStatusFlag {
		req.AssessmentStatus = builder.assessmentStatus
	}
	if builder.assessmentResultFlag {
		req.AssessmentResult = builder.assessmentResult
	}
	if builder.assessmentScoreFlag {
		req.AssessmentScore = &builder.assessmentScore

	}
	if builder.assessmentGradeFlag {
		req.AssessmentGrade = builder.assessmentGrade
	}
	if builder.assessmentCommentFlag {
		req.AssessmentComment = &builder.assessmentComment

	}
	if builder.assessmentDetailFlag {
		req.AssessmentDetail = &builder.assessmentDetail

	}
	if builder.isFinalAsssessmentFlag {
		req.IsFinalAsssessment = &builder.isFinalAsssessment

	}
	return req
}

type AssessmentForCreate struct {
	AssessmentStatus *string `json:"assessment_status,omitempty"` // 考核状态

	AssessmentResult *string `json:"assessment_result,omitempty"` // 试用期考核结果

	AssessmentScore *float64 `json:"assessment_score,omitempty"` // 考核得分

	AssessmentGrade *string `json:"assessment_grade,omitempty"` // 试用期考核等级

	AssessmentComment *string `json:"assessment_comment,omitempty"` // 考核评语

	AssessmentDetail *string `json:"assessment_detail,omitempty"` // 考核结果页面超链接

	IsFinalAsssessment *bool `json:"is_final_asssessment,omitempty"` // 是否为最终考核结果
}

type AssessmentForCreateBuilder struct {
	assessmentStatus     string // 考核状态
	assessmentStatusFlag bool

	assessmentResult     string // 试用期考核结果
	assessmentResultFlag bool

	assessmentScore     float64 // 考核得分
	assessmentScoreFlag bool

	assessmentGrade     string // 试用期考核等级
	assessmentGradeFlag bool

	assessmentComment     string // 考核评语
	assessmentCommentFlag bool

	assessmentDetail     string // 考核结果页面超链接
	assessmentDetailFlag bool

	isFinalAsssessment     bool // 是否为最终考核结果
	isFinalAsssessmentFlag bool
}

func NewAssessmentForCreateBuilder() *AssessmentForCreateBuilder {
	builder := &AssessmentForCreateBuilder{}
	return builder
}

// 考核状态
//
// 示例值：completed
func (builder *AssessmentForCreateBuilder) AssessmentStatus(assessmentStatus string) *AssessmentForCreateBuilder {
	builder.assessmentStatus = assessmentStatus
	builder.assessmentStatusFlag = true
	return builder
}

// 试用期考核结果
//
// 示例值：approved
func (builder *AssessmentForCreateBuilder) AssessmentResult(assessmentResult string) *AssessmentForCreateBuilder {
	builder.assessmentResult = assessmentResult
	builder.assessmentResultFlag = true
	return builder
}

// 考核得分
//
// 示例值：99.9
func (builder *AssessmentForCreateBuilder) AssessmentScore(assessmentScore float64) *AssessmentForCreateBuilder {
	builder.assessmentScore = assessmentScore
	builder.assessmentScoreFlag = true
	return builder
}

// 试用期考核等级
//
// 示例值：grade_a
func (builder *AssessmentForCreateBuilder) AssessmentGrade(assessmentGrade string) *AssessmentForCreateBuilder {
	builder.assessmentGrade = assessmentGrade
	builder.assessmentGradeFlag = true
	return builder
}

// 考核评语
//
// 示例值：超出预期
func (builder *AssessmentForCreateBuilder) AssessmentComment(assessmentComment string) *AssessmentForCreateBuilder {
	builder.assessmentComment = assessmentComment
	builder.assessmentCommentFlag = true
	return builder
}

// 考核结果页面超链接
//
// 示例值：暂无示例
func (builder *AssessmentForCreateBuilder) AssessmentDetail(assessmentDetail string) *AssessmentForCreateBuilder {
	builder.assessmentDetail = assessmentDetail
	builder.assessmentDetailFlag = true
	return builder
}

// 是否为最终考核结果
//
// 示例值：false
func (builder *AssessmentForCreateBuilder) IsFinalAsssessment(isFinalAsssessment bool) *AssessmentForCreateBuilder {
	builder.isFinalAsssessment = isFinalAsssessment
	builder.isFinalAsssessmentFlag = true
	return builder
}

func (builder *AssessmentForCreateBuilder) Build() *AssessmentForCreate {
	req := &AssessmentForCreate{}
	if builder.assessmentStatusFlag {
		req.AssessmentStatus = &builder.assessmentStatus

	}
	if builder.assessmentResultFlag {
		req.AssessmentResult = &builder.assessmentResult

	}
	if builder.assessmentScoreFlag {
		req.AssessmentScore = &builder.assessmentScore

	}
	if builder.assessmentGradeFlag {
		req.AssessmentGrade = &builder.assessmentGrade

	}
	if builder.assessmentCommentFlag {
		req.AssessmentComment = &builder.assessmentComment

	}
	if builder.assessmentDetailFlag {
		req.AssessmentDetail = &builder.assessmentDetail

	}
	if builder.isFinalAsssessmentFlag {
		req.IsFinalAsssessment = &builder.isFinalAsssessment

	}
	return req
}

type Bank struct {
	BankId *string `json:"bank_id,omitempty"` // 银行 ID

	BankName []*I18n `json:"bank_name,omitempty"` // 银行名称

	BankCode *string `json:"bank_code,omitempty"` // 总行代码

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家/地区 ID，可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询

	Status *int `json:"status,omitempty"` // 状态

	CreateTime *string `json:"create_time,omitempty"` // 创建时间

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间
}

type BankBuilder struct {
	bankId     string // 银行 ID
	bankIdFlag bool

	bankName     []*I18n // 银行名称
	bankNameFlag bool

	bankCode     string // 总行代码
	bankCodeFlag bool

	countryRegionId     string // 国家/地区 ID，可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询
	countryRegionIdFlag bool

	status     int // 状态
	statusFlag bool

	createTime     string // 创建时间
	createTimeFlag bool

	updateTime     string // 更新时间
	updateTimeFlag bool
}

func NewBankBuilder() *BankBuilder {
	builder := &BankBuilder{}
	return builder
}

// 银行 ID
//
// 示例值：MDBH00000080
func (builder *BankBuilder) BankId(bankId string) *BankBuilder {
	builder.bankId = bankId
	builder.bankIdFlag = true
	return builder
}

// 银行名称
//
// 示例值：
func (builder *BankBuilder) BankName(bankName []*I18n) *BankBuilder {
	builder.bankName = bankName
	builder.bankNameFlag = true
	return builder
}

// 总行代码
//
// 示例值：CMB
func (builder *BankBuilder) BankCode(bankCode string) *BankBuilder {
	builder.bankCode = bankCode
	builder.bankCodeFlag = true
	return builder
}

// 国家/地区 ID，可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询
//
// 示例值：6862995757234914824
func (builder *BankBuilder) CountryRegionId(countryRegionId string) *BankBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *BankBuilder) Status(status int) *BankBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 创建时间
//
// 示例值：2020-01-01 00:00:00
func (builder *BankBuilder) CreateTime(createTime string) *BankBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2024-01-01 00:00:00
func (builder *BankBuilder) UpdateTime(updateTime string) *BankBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

func (builder *BankBuilder) Build() *Bank {
	req := &Bank{}
	if builder.bankIdFlag {
		req.BankId = &builder.bankId

	}
	if builder.bankNameFlag {
		req.BankName = builder.bankName
	}
	if builder.bankCodeFlag {
		req.BankCode = &builder.bankCode

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	return req
}

type BankAccount struct {
	BankName *string `json:"bank_name,omitempty"` // 银行名称

	BankAccountNumber *string `json:"bank_account_number,omitempty"` // 银行账号

	AccountHolder *string `json:"account_holder,omitempty"` // 开户人姓名

	Bank *Enum `json:"bank,omitempty"` // 银行枚举（该字段待作废，请勿使用）

	BankIdentificationCode *string `json:"bank_identification_code,omitempty"` // 银行识别码（该字段待作废，请勿使用）

	BranchName *string `json:"branch_name,omitempty"` // 支行名称

	BankId *string `json:"bank_id,omitempty"` // 银行 ID（该字段待作废，请勿使用）

	BranchId *string `json:"branch_id,omitempty"` // 支行 ID（该字段待作废，请勿使用）

	BankIdV2 *string `json:"bank_id_v2,omitempty"` // 银行 ID，详细信息可通过【查询银行信息】接口查询获得

	BranchIdV2 *string `json:"branch_id_v2,omitempty"` // 支行 ID，要求必须为填入银行的支行，详细信息可通过【查询支行信息】接口查询获得

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家/地区 ID，详细信息可通过【查询国家/地区信息】接口查询获得

	BankAccountUsage []*Enum `json:"bank_account_usage,omitempty"` // 银行卡用途，枚举值可通过文档【飞书人事枚举常量】银行卡用途（Bank Account Usage）枚举定义部分获得

	BankAccountType *Enum `json:"bank_account_type,omitempty"` // 银行卡类型，枚举值可通过文档【飞书人事枚举常量】银行卡类型（Bank Account Type）枚举定义部分获得

	PaymentType *Enum `json:"payment_type,omitempty"` // 分配方式，枚举值可通过文档【飞书人事枚举常量】分配方式（Payment Type）枚举定义部分获得

	PaymentRate *string `json:"payment_rate,omitempty"` // 分配比例

	PaymentAmount *string `json:"payment_amount,omitempty"` // 分配金额

	Priority *int `json:"priority,omitempty"` // 分配优先级

	CurrencyId *string `json:"currency_id,omitempty"` // 货币id

	IBAN *string `json:"IBAN,omitempty"` // 国际银行账号

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type BankAccountBuilder struct {
	bankName     string // 银行名称
	bankNameFlag bool

	bankAccountNumber     string // 银行账号
	bankAccountNumberFlag bool

	accountHolder     string // 开户人姓名
	accountHolderFlag bool

	bank     *Enum // 银行枚举（该字段待作废，请勿使用）
	bankFlag bool

	bankIdentificationCode     string // 银行识别码（该字段待作废，请勿使用）
	bankIdentificationCodeFlag bool

	branchName     string // 支行名称
	branchNameFlag bool

	bankId     string // 银行 ID（该字段待作废，请勿使用）
	bankIdFlag bool

	branchId     string // 支行 ID（该字段待作废，请勿使用）
	branchIdFlag bool

	bankIdV2     string // 银行 ID，详细信息可通过【查询银行信息】接口查询获得
	bankIdV2Flag bool

	branchIdV2     string // 支行 ID，要求必须为填入银行的支行，详细信息可通过【查询支行信息】接口查询获得
	branchIdV2Flag bool

	countryRegionId     string // 国家/地区 ID，详细信息可通过【查询国家/地区信息】接口查询获得
	countryRegionIdFlag bool

	bankAccountUsage     []*Enum // 银行卡用途，枚举值可通过文档【飞书人事枚举常量】银行卡用途（Bank Account Usage）枚举定义部分获得
	bankAccountUsageFlag bool

	bankAccountType     *Enum // 银行卡类型，枚举值可通过文档【飞书人事枚举常量】银行卡类型（Bank Account Type）枚举定义部分获得
	bankAccountTypeFlag bool

	paymentType     *Enum // 分配方式，枚举值可通过文档【飞书人事枚举常量】分配方式（Payment Type）枚举定义部分获得
	paymentTypeFlag bool

	paymentRate     string // 分配比例
	paymentRateFlag bool

	paymentAmount     string // 分配金额
	paymentAmountFlag bool

	priority     int // 分配优先级
	priorityFlag bool

	currencyId     string // 货币id
	currencyIdFlag bool

	iBAN     string // 国际银行账号
	iBANFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewBankAccountBuilder() *BankAccountBuilder {
	builder := &BankAccountBuilder{}
	return builder
}

// 银行名称
//
// 示例值：中国农业银行
func (builder *BankAccountBuilder) BankName(bankName string) *BankAccountBuilder {
	builder.bankName = bankName
	builder.bankNameFlag = true
	return builder
}

// 银行账号
//
// 示例值：6231200000001223
func (builder *BankAccountBuilder) BankAccountNumber(bankAccountNumber string) *BankAccountBuilder {
	builder.bankAccountNumber = bankAccountNumber
	builder.bankAccountNumberFlag = true
	return builder
}

// 开户人姓名
//
// 示例值：孟十五
func (builder *BankAccountBuilder) AccountHolder(accountHolder string) *BankAccountBuilder {
	builder.accountHolder = accountHolder
	builder.accountHolderFlag = true
	return builder
}

// 银行枚举（该字段待作废，请勿使用）
//
// 示例值：
func (builder *BankAccountBuilder) Bank(bank *Enum) *BankAccountBuilder {
	builder.bank = bank
	builder.bankFlag = true
	return builder
}

// 银行识别码（该字段待作废，请勿使用）
//
// 示例值：1234
func (builder *BankAccountBuilder) BankIdentificationCode(bankIdentificationCode string) *BankAccountBuilder {
	builder.bankIdentificationCode = bankIdentificationCode
	builder.bankIdentificationCodeFlag = true
	return builder
}

// 支行名称
//
// 示例值：中国农业银行支行
func (builder *BankAccountBuilder) BranchName(branchName string) *BankAccountBuilder {
	builder.branchName = branchName
	builder.branchNameFlag = true
	return builder
}

// 银行 ID（该字段待作废，请勿使用）
//
// 示例值：8
func (builder *BankAccountBuilder) BankId(bankId string) *BankAccountBuilder {
	builder.bankId = bankId
	builder.bankIdFlag = true
	return builder
}

// 支行 ID（该字段待作废，请勿使用）
//
// 示例值：12
func (builder *BankAccountBuilder) BranchId(branchId string) *BankAccountBuilder {
	builder.branchId = branchId
	builder.branchIdFlag = true
	return builder
}

// 银行 ID，详细信息可通过【查询银行信息】接口查询获得
//
// 示例值：MDBH00000001
func (builder *BankAccountBuilder) BankIdV2(bankIdV2 string) *BankAccountBuilder {
	builder.bankIdV2 = bankIdV2
	builder.bankIdV2Flag = true
	return builder
}

// 支行 ID，要求必须为填入银行的支行，详细信息可通过【查询支行信息】接口查询获得
//
// 示例值：MDBK00000017
func (builder *BankAccountBuilder) BranchIdV2(branchIdV2 string) *BankAccountBuilder {
	builder.branchIdV2 = branchIdV2
	builder.branchIdV2Flag = true
	return builder
}

// 国家/地区 ID，详细信息可通过【查询国家/地区信息】接口查询获得
//
// 示例值：12
func (builder *BankAccountBuilder) CountryRegionId(countryRegionId string) *BankAccountBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 银行卡用途，枚举值可通过文档【飞书人事枚举常量】银行卡用途（Bank Account Usage）枚举定义部分获得
//
// 示例值：
func (builder *BankAccountBuilder) BankAccountUsage(bankAccountUsage []*Enum) *BankAccountBuilder {
	builder.bankAccountUsage = bankAccountUsage
	builder.bankAccountUsageFlag = true
	return builder
}

// 银行卡类型，枚举值可通过文档【飞书人事枚举常量】银行卡类型（Bank Account Type）枚举定义部分获得
//
// 示例值：
func (builder *BankAccountBuilder) BankAccountType(bankAccountType *Enum) *BankAccountBuilder {
	builder.bankAccountType = bankAccountType
	builder.bankAccountTypeFlag = true
	return builder
}

// 分配方式，枚举值可通过文档【飞书人事枚举常量】分配方式（Payment Type）枚举定义部分获得
//
// 示例值：balance
func (builder *BankAccountBuilder) PaymentType(paymentType *Enum) *BankAccountBuilder {
	builder.paymentType = paymentType
	builder.paymentTypeFlag = true
	return builder
}

// 分配比例
//
// 示例值：70.21
func (builder *BankAccountBuilder) PaymentRate(paymentRate string) *BankAccountBuilder {
	builder.paymentRate = paymentRate
	builder.paymentRateFlag = true
	return builder
}

// 分配金额
//
// 示例值：5000
func (builder *BankAccountBuilder) PaymentAmount(paymentAmount string) *BankAccountBuilder {
	builder.paymentAmount = paymentAmount
	builder.paymentAmountFlag = true
	return builder
}

// 分配优先级
//
// 示例值：1
func (builder *BankAccountBuilder) Priority(priority int) *BankAccountBuilder {
	builder.priority = priority
	builder.priorityFlag = true
	return builder
}

// 货币id
//
// 示例值：12
func (builder *BankAccountBuilder) CurrencyId(currencyId string) *BankAccountBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 国际银行账号
//
// 示例值：CH56 0483 5012 3456 7800 9
func (builder *BankAccountBuilder) IBAN(iBAN string) *BankAccountBuilder {
	builder.iBAN = iBAN
	builder.iBANFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *BankAccountBuilder) CustomFields(customFields []*CustomFieldData) *BankAccountBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *BankAccountBuilder) Build() *BankAccount {
	req := &BankAccount{}
	if builder.bankNameFlag {
		req.BankName = &builder.bankName

	}
	if builder.bankAccountNumberFlag {
		req.BankAccountNumber = &builder.bankAccountNumber

	}
	if builder.accountHolderFlag {
		req.AccountHolder = &builder.accountHolder

	}
	if builder.bankFlag {
		req.Bank = builder.bank
	}
	if builder.bankIdentificationCodeFlag {
		req.BankIdentificationCode = &builder.bankIdentificationCode

	}
	if builder.branchNameFlag {
		req.BranchName = &builder.branchName

	}
	if builder.bankIdFlag {
		req.BankId = &builder.bankId

	}
	if builder.branchIdFlag {
		req.BranchId = &builder.branchId

	}
	if builder.bankIdV2Flag {
		req.BankIdV2 = &builder.bankIdV2

	}
	if builder.branchIdV2Flag {
		req.BranchIdV2 = &builder.branchIdV2

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.bankAccountUsageFlag {
		req.BankAccountUsage = builder.bankAccountUsage
	}
	if builder.bankAccountTypeFlag {
		req.BankAccountType = builder.bankAccountType
	}
	if builder.paymentTypeFlag {
		req.PaymentType = builder.paymentType
	}
	if builder.paymentRateFlag {
		req.PaymentRate = &builder.paymentRate

	}
	if builder.paymentAmountFlag {
		req.PaymentAmount = &builder.paymentAmount

	}
	if builder.priorityFlag {
		req.Priority = &builder.priority

	}
	if builder.currencyIdFlag {
		req.CurrencyId = &builder.currencyId

	}
	if builder.iBANFlag {
		req.IBAN = &builder.iBAN

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type BankAccountForUpdate struct {
	BankName *string `json:"bank_name,omitempty"` // 银行名称：- 当填入 bank_id 时，自动填入 bank 的名称 - 未填入 bank_id ，取传入的银行名称

	BranchName *string `json:"branch_name,omitempty"` // 支行名称，仅当支行为手动输入时该字段才需要填入

	BankAccountNumber *string `json:"bank_account_number,omitempty"` // 银行账号

	AccountHolder *string `json:"account_holder,omitempty"` // 开户人姓名

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家/地区 ID，详细信息可通过【查询国家/地区信息】接口查询获得

	BankAccountUsages []string `json:"bank_account_usages,omitempty"` // 银行卡用途，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "bank_account" - custom_api_name = "bank_account_usage"

	BankAccountType *string `json:"bank_account_type,omitempty"` // 银行卡类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "bank_account" - custom_api_name = "bank_account_type"

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type BankAccountForUpdateBuilder struct {
	bankName     string // 银行名称：- 当填入 bank_id 时，自动填入 bank 的名称 - 未填入 bank_id ，取传入的银行名称
	bankNameFlag bool

	branchName     string // 支行名称，仅当支行为手动输入时该字段才需要填入
	branchNameFlag bool

	bankAccountNumber     string // 银行账号
	bankAccountNumberFlag bool

	accountHolder     string // 开户人姓名
	accountHolderFlag bool

	countryRegionId     string // 国家/地区 ID，详细信息可通过【查询国家/地区信息】接口查询获得
	countryRegionIdFlag bool

	bankAccountUsages     []string // 银行卡用途，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "bank_account" - custom_api_name = "bank_account_usage"
	bankAccountUsagesFlag bool

	bankAccountType     string // 银行卡类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "bank_account" - custom_api_name = "bank_account_type"
	bankAccountTypeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewBankAccountForUpdateBuilder() *BankAccountForUpdateBuilder {
	builder := &BankAccountForUpdateBuilder{}
	return builder
}

// 银行名称：- 当填入 bank_id 时，自动填入 bank 的名称 - 未填入 bank_id ，取传入的银行名称
//
// 示例值：中国农业银行
func (builder *BankAccountForUpdateBuilder) BankName(bankName string) *BankAccountForUpdateBuilder {
	builder.bankName = bankName
	builder.bankNameFlag = true
	return builder
}

// 支行名称，仅当支行为手动输入时该字段才需要填入
//
// 示例值：中国农业银行支行
func (builder *BankAccountForUpdateBuilder) BranchName(branchName string) *BankAccountForUpdateBuilder {
	builder.branchName = branchName
	builder.branchNameFlag = true
	return builder
}

// 银行账号
//
// 示例值：6231200000001223
func (builder *BankAccountForUpdateBuilder) BankAccountNumber(bankAccountNumber string) *BankAccountForUpdateBuilder {
	builder.bankAccountNumber = bankAccountNumber
	builder.bankAccountNumberFlag = true
	return builder
}

// 开户人姓名
//
// 示例值：孟十五
func (builder *BankAccountForUpdateBuilder) AccountHolder(accountHolder string) *BankAccountForUpdateBuilder {
	builder.accountHolder = accountHolder
	builder.accountHolderFlag = true
	return builder
}

// 国家/地区 ID，详细信息可通过【查询国家/地区信息】接口查询获得
//
// 示例值：6862995745889322510
func (builder *BankAccountForUpdateBuilder) CountryRegionId(countryRegionId string) *BankAccountForUpdateBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 银行卡用途，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "bank_account" - custom_api_name = "bank_account_usage"
//
// 示例值：
func (builder *BankAccountForUpdateBuilder) BankAccountUsages(bankAccountUsages []string) *BankAccountForUpdateBuilder {
	builder.bankAccountUsages = bankAccountUsages
	builder.bankAccountUsagesFlag = true
	return builder
}

// 银行卡类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "bank_account" - custom_api_name = "bank_account_type"
//
// 示例值：checking
func (builder *BankAccountForUpdateBuilder) BankAccountType(bankAccountType string) *BankAccountForUpdateBuilder {
	builder.bankAccountType = bankAccountType
	builder.bankAccountTypeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *BankAccountForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *BankAccountForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *BankAccountForUpdateBuilder) Build() *BankAccountForUpdate {
	req := &BankAccountForUpdate{}
	if builder.bankNameFlag {
		req.BankName = &builder.bankName

	}
	if builder.branchNameFlag {
		req.BranchName = &builder.branchName

	}
	if builder.bankAccountNumberFlag {
		req.BankAccountNumber = &builder.bankAccountNumber

	}
	if builder.accountHolderFlag {
		req.AccountHolder = &builder.accountHolder

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.bankAccountUsagesFlag {
		req.BankAccountUsages = builder.bankAccountUsages
	}
	if builder.bankAccountTypeFlag {
		req.BankAccountType = &builder.bankAccountType

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type BankBranch struct {
	BankBranchId *string `json:"bank_branch_id,omitempty"` // 支行 ID

	BankBranchName []*I18n `json:"bank_branch_name,omitempty"` // 支行名称

	BankId *string `json:"bank_id,omitempty"` // 所属银行 ID，可通过[查询银行信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-bank/search)接口查询

	Code *string `json:"code,omitempty"` // 金融分支机构编码（联行号）

	SwiftCode *string `json:"swift_code,omitempty"` // SWIFT 银行代码（ISO 9362）

	Status *int `json:"status,omitempty"` // 状态

	BankBranchCode *string `json:"bank_branch_code,omitempty"` // Bank Branch Code（特定国家地区汇款使用的编码，如美国银行的 ABA Number、澳大利亚银行的 BSB Code、英国银行的 Sort Code）

	RegisterPlace *string `json:"register_place,omitempty"` // 注册地址

	BankAddress *string `json:"bank_address,omitempty"` // 银行地址

	CreateTime *string `json:"create_time,omitempty"` // 创建时间

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间
}

type BankBranchBuilder struct {
	bankBranchId     string // 支行 ID
	bankBranchIdFlag bool

	bankBranchName     []*I18n // 支行名称
	bankBranchNameFlag bool

	bankId     string // 所属银行 ID，可通过[查询银行信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-bank/search)接口查询
	bankIdFlag bool

	code     string // 金融分支机构编码（联行号）
	codeFlag bool

	swiftCode     string // SWIFT 银行代码（ISO 9362）
	swiftCodeFlag bool

	status     int // 状态
	statusFlag bool

	bankBranchCode     string // Bank Branch Code（特定国家地区汇款使用的编码，如美国银行的 ABA Number、澳大利亚银行的 BSB Code、英国银行的 Sort Code）
	bankBranchCodeFlag bool

	registerPlace     string // 注册地址
	registerPlaceFlag bool

	bankAddress     string // 银行地址
	bankAddressFlag bool

	createTime     string // 创建时间
	createTimeFlag bool

	updateTime     string // 更新时间
	updateTimeFlag bool
}

func NewBankBranchBuilder() *BankBranchBuilder {
	builder := &BankBranchBuilder{}
	return builder
}

// 支行 ID
//
// 示例值：MDBK00061194
func (builder *BankBranchBuilder) BankBranchId(bankBranchId string) *BankBranchBuilder {
	builder.bankBranchId = bankBranchId
	builder.bankBranchIdFlag = true
	return builder
}

// 支行名称
//
// 示例值：
func (builder *BankBranchBuilder) BankBranchName(bankBranchName []*I18n) *BankBranchBuilder {
	builder.bankBranchName = bankBranchName
	builder.bankBranchNameFlag = true
	return builder
}

// 所属银行 ID，可通过[查询银行信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-bank/search)接口查询
//
// 示例值：MDBH00000080
func (builder *BankBranchBuilder) BankId(bankId string) *BankBranchBuilder {
	builder.bankId = bankId
	builder.bankIdFlag = true
	return builder
}

// 金融分支机构编码（联行号）
//
// 示例值：308100005019
func (builder *BankBranchBuilder) Code(code string) *BankBranchBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// SWIFT 银行代码（ISO 9362）
//
// 示例值：CMBCCNBS201
func (builder *BankBranchBuilder) SwiftCode(swiftCode string) *BankBranchBuilder {
	builder.swiftCode = swiftCode
	builder.swiftCodeFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *BankBranchBuilder) Status(status int) *BankBranchBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// Bank Branch Code（特定国家地区汇款使用的编码，如美国银行的 ABA Number、澳大利亚银行的 BSB Code、英国银行的 Sort Code）
//
// 示例值：B04
func (builder *BankBranchBuilder) BankBranchCode(bankBranchCode string) *BankBranchBuilder {
	builder.bankBranchCode = bankBranchCode
	builder.bankBranchCodeFlag = true
	return builder
}

// 注册地址
//
// 示例值：北京市朝阳区
func (builder *BankBranchBuilder) RegisterPlace(registerPlace string) *BankBranchBuilder {
	builder.registerPlace = registerPlace
	builder.registerPlaceFlag = true
	return builder
}

// 银行地址
//
// 示例值：北京市朝阳区
func (builder *BankBranchBuilder) BankAddress(bankAddress string) *BankBranchBuilder {
	builder.bankAddress = bankAddress
	builder.bankAddressFlag = true
	return builder
}

// 创建时间
//
// 示例值：2020-01-01 00:00:00
func (builder *BankBranchBuilder) CreateTime(createTime string) *BankBranchBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2024-01-01 00:00:00
func (builder *BankBranchBuilder) UpdateTime(updateTime string) *BankBranchBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

func (builder *BankBranchBuilder) Build() *BankBranch {
	req := &BankBranch{}
	if builder.bankBranchIdFlag {
		req.BankBranchId = &builder.bankBranchId

	}
	if builder.bankBranchNameFlag {
		req.BankBranchName = builder.bankBranchName
	}
	if builder.bankIdFlag {
		req.BankId = &builder.bankId

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.swiftCodeFlag {
		req.SwiftCode = &builder.swiftCode

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.bankBranchCodeFlag {
		req.BankBranchCode = &builder.bankBranchCode

	}
	if builder.registerPlaceFlag {
		req.RegisterPlace = &builder.registerPlace

	}
	if builder.bankAddressFlag {
		req.BankAddress = &builder.bankAddress

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	return req
}

type BasicDepartment struct {
	Id *string `json:"id,omitempty"` // 部门 ID;- 类型与 department_id_type 一致，转换失败时返回空值;- 请使用 id_v2

	IdV2 *string `json:"id_v2,omitempty"` // 部门 ID;- 类型与 department_id_type 一致，转换失败时返回空值

	DepartmentName []*I18n `json:"department_name,omitempty"` // 部门名称
}

type BasicDepartmentBuilder struct {
	id     string // 部门 ID;- 类型与 department_id_type 一致，转换失败时返回空值;- 请使用 id_v2
	idFlag bool

	idV2     string // 部门 ID;- 类型与 department_id_type 一致，转换失败时返回空值
	idV2Flag bool

	departmentName     []*I18n // 部门名称
	departmentNameFlag bool
}

func NewBasicDepartmentBuilder() *BasicDepartmentBuilder {
	builder := &BasicDepartmentBuilder{}
	return builder
}

// 部门 ID;- 类型与 department_id_type 一致，转换失败时返回空值;- 请使用 id_v2
//
// 示例值：4719456877659520852
func (builder *BasicDepartmentBuilder) Id(id string) *BasicDepartmentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 部门 ID;- 类型与 department_id_type 一致，转换失败时返回空值
//
// 示例值：4719456877659520852
func (builder *BasicDepartmentBuilder) IdV2(idV2 string) *BasicDepartmentBuilder {
	builder.idV2 = idV2
	builder.idV2Flag = true
	return builder
}

// 部门名称
//
// 示例值：
func (builder *BasicDepartmentBuilder) DepartmentName(departmentName []*I18n) *BasicDepartmentBuilder {
	builder.departmentName = departmentName
	builder.departmentNameFlag = true
	return builder
}

func (builder *BasicDepartmentBuilder) Build() *BasicDepartment {
	req := &BasicDepartment{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.idV2Flag {
		req.IdV2 = &builder.idV2

	}
	if builder.departmentNameFlag {
		req.DepartmentName = builder.departmentName
	}
	return req
}

type BasicEmployee struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID;- 类型与 user_id_type 一致;- 请使用 employment_id_v2

	EmploymentIdV2 *string `json:"employment_id_v2,omitempty"` // 雇佣 ID;- 类型与 user_id_type 一致，转换失败时返回空值

	EmployeeNumber *string `json:"employee_number,omitempty"` // 工号

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱地址

	PersonInfo *BasicPersonInfo `json:"person_info,omitempty"` // 基本个人信息
}

type BasicEmployeeBuilder struct {
	employmentId     string // 雇佣 ID;- 类型与 user_id_type 一致;- 请使用 employment_id_v2
	employmentIdFlag bool

	employmentIdV2     string // 雇佣 ID;- 类型与 user_id_type 一致，转换失败时返回空值
	employmentIdV2Flag bool

	employeeNumber     string // 工号
	employeeNumberFlag bool

	emailAddress     string // 邮箱地址
	emailAddressFlag bool

	personInfo     *BasicPersonInfo // 基本个人信息
	personInfoFlag bool
}

func NewBasicEmployeeBuilder() *BasicEmployeeBuilder {
	builder := &BasicEmployeeBuilder{}
	return builder
}

// 雇佣 ID;- 类型与 user_id_type 一致;- 请使用 employment_id_v2
//
// 示例值：6893014062142064135
func (builder *BasicEmployeeBuilder) EmploymentId(employmentId string) *BasicEmployeeBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 雇佣 ID;- 类型与 user_id_type 一致，转换失败时返回空值
//
// 示例值：6893014062142064135
func (builder *BasicEmployeeBuilder) EmploymentIdV2(employmentIdV2 string) *BasicEmployeeBuilder {
	builder.employmentIdV2 = employmentIdV2
	builder.employmentIdV2Flag = true
	return builder
}

// 工号
//
// 示例值：1000000
func (builder *BasicEmployeeBuilder) EmployeeNumber(employeeNumber string) *BasicEmployeeBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 邮箱地址
//
// 示例值：test@163.com
func (builder *BasicEmployeeBuilder) EmailAddress(emailAddress string) *BasicEmployeeBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 基本个人信息
//
// 示例值：
func (builder *BasicEmployeeBuilder) PersonInfo(personInfo *BasicPersonInfo) *BasicEmployeeBuilder {
	builder.personInfo = personInfo
	builder.personInfoFlag = true
	return builder
}

func (builder *BasicEmployeeBuilder) Build() *BasicEmployee {
	req := &BasicEmployee{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.employmentIdV2Flag {
		req.EmploymentIdV2 = &builder.employmentIdV2

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.personInfoFlag {
		req.PersonInfo = builder.personInfo
	}
	return req
}

type BasicInfo struct {
	Name *Name `json:"name,omitempty"` // 描述

	PhoneNumber *string `json:"phone_number,omitempty"` // 手机号

	InternationalAreaCode *string `json:"international_area_code,omitempty"` // 区号

	Email *string `json:"email,omitempty"` // 个人邮箱

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 生日

	PersonalIdNumber *string `json:"personal_id_number,omitempty"` // 证件号

	PersonalIdType *string `json:"personal_id_type,omitempty"` // 证件类型

	DateEnteredWorkforce *string `json:"date_entered_workforce,omitempty"` // 参加工作日期

	GenderId *string `json:"gender_id,omitempty"` // 性别

	NationalityId *string `json:"nationality_id,omitempty"` // 国籍

	NationalityV2Id *string `json:"nationality_v2_id,omitempty"` // 国籍（新）

	AdditionalNationalityIdList []string `json:"additional_nationality_id_list,omitempty"` // 其他国籍

	CitizenshipStatusIdList []string `json:"citizenship_status_id_list,omitempty"` // 公民身份

	HomeAddress *string `json:"home_address,omitempty"` // 家庭地址

	WorkerId *string `json:"worker_id,omitempty"` // 人员编号

	UserGeo *string `json:"user_geo,omitempty"` // 数据驻留地

	LegalName *Name `json:"legal_name,omitempty"` // 法定姓名

	AdditionalName *Name `json:"additional_name,omitempty"` // 别名

	ResidentTaxList []*ResidentTaxForUpdate `json:"resident_tax_list,omitempty"` // 纳税身份信息

	BornCountryRegion *string `json:"born_country_region,omitempty"` // 出生国家/地区

	IsDisabled *bool `json:"is_disabled,omitempty"` // 是否残疾

	DisableCardNumber *string `json:"disable_card_number,omitempty"` // 残疾证号

	IsOldAlone *bool `json:"is_old_alone,omitempty"` // 是否孤老

	IsMartyrFamily *bool `json:"is_martyr_family,omitempty"` // 是否烈属

	MartyrCardNumber *string `json:"martyr_card_number,omitempty"` // 烈属证号

	DependentList []*DependentForUpdate `json:"dependent_list,omitempty"` // 家庭成员

	Religion *string `json:"religion,omitempty"` // 宗教信仰

	BankAccountList []*BankAccountForUpdate `json:"bank_account_list,omitempty"` // 银行账号

	NationalIdList []*NationalIdForUpdate `json:"national_id_list,omitempty"` // 证件账号

	PersonalProfileList []*PersonalProfileForUpdate `json:"personal_profile_list,omitempty"` // 个人资料

	EmergencyContactList []*EmergencyContactForUpdate `json:"emergency_contact_list,omitempty"` // 紧急联系人

	AddressList []*AddressForUpdate `json:"address_list,omitempty"` // 联系地址

	MaritalStatus *string `json:"marital_status,omitempty"` // 婚姻状况

	EthnicityRace *string `json:"ethnicity_race,omitempty"` // 民族 / 种族

	NativeRegion *string `json:"native_region,omitempty"` // 籍贯

	HukouType *string `json:"hukou_type,omitempty"` // 户口类型

	HukouLocation *string `json:"hukou_location,omitempty"` // 户口所在地

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	ExpectedGraduateDate *string `json:"expected_graduate_date,omitempty"` // 预计毕业日期
}

type BasicInfoBuilder struct {
	name     *Name // 描述
	nameFlag bool

	phoneNumber     string // 手机号
	phoneNumberFlag bool

	internationalAreaCode     string // 区号
	internationalAreaCodeFlag bool

	email     string // 个人邮箱
	emailFlag bool

	dateOfBirth     string // 生日
	dateOfBirthFlag bool

	personalIdNumber     string // 证件号
	personalIdNumberFlag bool

	personalIdType     string // 证件类型
	personalIdTypeFlag bool

	dateEnteredWorkforce     string // 参加工作日期
	dateEnteredWorkforceFlag bool

	genderId     string // 性别
	genderIdFlag bool

	nationalityId     string // 国籍
	nationalityIdFlag bool

	nationalityV2Id     string // 国籍（新）
	nationalityV2IdFlag bool

	additionalNationalityIdList     []string // 其他国籍
	additionalNationalityIdListFlag bool

	citizenshipStatusIdList     []string // 公民身份
	citizenshipStatusIdListFlag bool

	homeAddress     string // 家庭地址
	homeAddressFlag bool

	workerId     string // 人员编号
	workerIdFlag bool

	userGeo     string // 数据驻留地
	userGeoFlag bool

	legalName     *Name // 法定姓名
	legalNameFlag bool

	additionalName     *Name // 别名
	additionalNameFlag bool

	residentTaxList     []*ResidentTaxForUpdate // 纳税身份信息
	residentTaxListFlag bool

	bornCountryRegion     string // 出生国家/地区
	bornCountryRegionFlag bool

	isDisabled     bool // 是否残疾
	isDisabledFlag bool

	disableCardNumber     string // 残疾证号
	disableCardNumberFlag bool

	isOldAlone     bool // 是否孤老
	isOldAloneFlag bool

	isMartyrFamily     bool // 是否烈属
	isMartyrFamilyFlag bool

	martyrCardNumber     string // 烈属证号
	martyrCardNumberFlag bool

	dependentList     []*DependentForUpdate // 家庭成员
	dependentListFlag bool

	religion     string // 宗教信仰
	religionFlag bool

	bankAccountList     []*BankAccountForUpdate // 银行账号
	bankAccountListFlag bool

	nationalIdList     []*NationalIdForUpdate // 证件账号
	nationalIdListFlag bool

	personalProfileList     []*PersonalProfileForUpdate // 个人资料
	personalProfileListFlag bool

	emergencyContactList     []*EmergencyContactForUpdate // 紧急联系人
	emergencyContactListFlag bool

	addressList     []*AddressForUpdate // 联系地址
	addressListFlag bool

	maritalStatus     string // 婚姻状况
	maritalStatusFlag bool

	ethnicityRace     string // 民族 / 种族
	ethnicityRaceFlag bool

	nativeRegion     string // 籍贯
	nativeRegionFlag bool

	hukouType     string // 户口类型
	hukouTypeFlag bool

	hukouLocation     string // 户口所在地
	hukouLocationFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	expectedGraduateDate     string // 预计毕业日期
	expectedGraduateDateFlag bool
}

func NewBasicInfoBuilder() *BasicInfoBuilder {
	builder := &BasicInfoBuilder{}
	return builder
}

// 描述
//
// 示例值：
func (builder *BasicInfoBuilder) Name(name *Name) *BasicInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 手机号
//
// 示例值：31123127
func (builder *BasicInfoBuilder) PhoneNumber(phoneNumber string) *BasicInfoBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 区号
//
// 示例值：86_china
func (builder *BasicInfoBuilder) InternationalAreaCode(internationalAreaCode string) *BasicInfoBuilder {
	builder.internationalAreaCode = internationalAreaCode
	builder.internationalAreaCodeFlag = true
	return builder
}

// 个人邮箱
//
// 示例值：xx@xx.com
func (builder *BasicInfoBuilder) Email(email string) *BasicInfoBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 生日
//
// 示例值：2011-99-99
func (builder *BasicInfoBuilder) DateOfBirth(dateOfBirth string) *BasicInfoBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 证件号
//
// 示例值：31123127
func (builder *BasicInfoBuilder) PersonalIdNumber(personalIdNumber string) *BasicInfoBuilder {
	builder.personalIdNumber = personalIdNumber
	builder.personalIdNumberFlag = true
	return builder
}

// 证件类型
//
// 示例值：6862995757234914823
func (builder *BasicInfoBuilder) PersonalIdType(personalIdType string) *BasicInfoBuilder {
	builder.personalIdType = personalIdType
	builder.personalIdTypeFlag = true
	return builder
}

// 参加工作日期
//
// 示例值：2100-09-09
func (builder *BasicInfoBuilder) DateEnteredWorkforce(dateEnteredWorkforce string) *BasicInfoBuilder {
	builder.dateEnteredWorkforce = dateEnteredWorkforce
	builder.dateEnteredWorkforceFlag = true
	return builder
}

// 性别
//
// 示例值：male
func (builder *BasicInfoBuilder) GenderId(genderId string) *BasicInfoBuilder {
	builder.genderId = genderId
	builder.genderIdFlag = true
	return builder
}

// 国籍
//
// 示例值：6862995757234914824
func (builder *BasicInfoBuilder) NationalityId(nationalityId string) *BasicInfoBuilder {
	builder.nationalityId = nationalityId
	builder.nationalityIdFlag = true
	return builder
}

// 国籍（新）
//
// 示例值：6862995757234914824
func (builder *BasicInfoBuilder) NationalityV2Id(nationalityV2Id string) *BasicInfoBuilder {
	builder.nationalityV2Id = nationalityV2Id
	builder.nationalityV2IdFlag = true
	return builder
}

// 其他国籍
//
// 示例值：[6862995757234914824]
func (builder *BasicInfoBuilder) AdditionalNationalityIdList(additionalNationalityIdList []string) *BasicInfoBuilder {
	builder.additionalNationalityIdList = additionalNationalityIdList
	builder.additionalNationalityIdListFlag = true
	return builder
}

// 公民身份
//
// 示例值：[6862995757234914824]
func (builder *BasicInfoBuilder) CitizenshipStatusIdList(citizenshipStatusIdList []string) *BasicInfoBuilder {
	builder.citizenshipStatusIdList = citizenshipStatusIdList
	builder.citizenshipStatusIdListFlag = true
	return builder
}

// 家庭地址
//
// 示例值：home addr
func (builder *BasicInfoBuilder) HomeAddress(homeAddress string) *BasicInfoBuilder {
	builder.homeAddress = homeAddress
	builder.homeAddressFlag = true
	return builder
}

// 人员编号
//
// 示例值：6862995757234914824
func (builder *BasicInfoBuilder) WorkerId(workerId string) *BasicInfoBuilder {
	builder.workerId = workerId
	builder.workerIdFlag = true
	return builder
}

// 数据驻留地
//
// 示例值：cn
func (builder *BasicInfoBuilder) UserGeo(userGeo string) *BasicInfoBuilder {
	builder.userGeo = userGeo
	builder.userGeoFlag = true
	return builder
}

// 法定姓名
//
// 示例值：
func (builder *BasicInfoBuilder) LegalName(legalName *Name) *BasicInfoBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 别名
//
// 示例值：
func (builder *BasicInfoBuilder) AdditionalName(additionalName *Name) *BasicInfoBuilder {
	builder.additionalName = additionalName
	builder.additionalNameFlag = true
	return builder
}

// 纳税身份信息
//
// 示例值：
func (builder *BasicInfoBuilder) ResidentTaxList(residentTaxList []*ResidentTaxForUpdate) *BasicInfoBuilder {
	builder.residentTaxList = residentTaxList
	builder.residentTaxListFlag = true
	return builder
}

// 出生国家/地区
//
// 示例值：cn
func (builder *BasicInfoBuilder) BornCountryRegion(bornCountryRegion string) *BasicInfoBuilder {
	builder.bornCountryRegion = bornCountryRegion
	builder.bornCountryRegionFlag = true
	return builder
}

// 是否残疾
//
// 示例值：true
func (builder *BasicInfoBuilder) IsDisabled(isDisabled bool) *BasicInfoBuilder {
	builder.isDisabled = isDisabled
	builder.isDisabledFlag = true
	return builder
}

// 残疾证号
//
// 示例值：xxx
func (builder *BasicInfoBuilder) DisableCardNumber(disableCardNumber string) *BasicInfoBuilder {
	builder.disableCardNumber = disableCardNumber
	builder.disableCardNumberFlag = true
	return builder
}

// 是否孤老
//
// 示例值：true
func (builder *BasicInfoBuilder) IsOldAlone(isOldAlone bool) *BasicInfoBuilder {
	builder.isOldAlone = isOldAlone
	builder.isOldAloneFlag = true
	return builder
}

// 是否烈属
//
// 示例值：true
func (builder *BasicInfoBuilder) IsMartyrFamily(isMartyrFamily bool) *BasicInfoBuilder {
	builder.isMartyrFamily = isMartyrFamily
	builder.isMartyrFamilyFlag = true
	return builder
}

// 烈属证号
//
// 示例值：xxx
func (builder *BasicInfoBuilder) MartyrCardNumber(martyrCardNumber string) *BasicInfoBuilder {
	builder.martyrCardNumber = martyrCardNumber
	builder.martyrCardNumberFlag = true
	return builder
}

// 家庭成员
//
// 示例值：
func (builder *BasicInfoBuilder) DependentList(dependentList []*DependentForUpdate) *BasicInfoBuilder {
	builder.dependentList = dependentList
	builder.dependentListFlag = true
	return builder
}

// 宗教信仰
//
// 示例值：xxx
func (builder *BasicInfoBuilder) Religion(religion string) *BasicInfoBuilder {
	builder.religion = religion
	builder.religionFlag = true
	return builder
}

// 银行账号
//
// 示例值：
func (builder *BasicInfoBuilder) BankAccountList(bankAccountList []*BankAccountForUpdate) *BasicInfoBuilder {
	builder.bankAccountList = bankAccountList
	builder.bankAccountListFlag = true
	return builder
}

// 证件账号
//
// 示例值：
func (builder *BasicInfoBuilder) NationalIdList(nationalIdList []*NationalIdForUpdate) *BasicInfoBuilder {
	builder.nationalIdList = nationalIdList
	builder.nationalIdListFlag = true
	return builder
}

// 个人资料
//
// 示例值：
func (builder *BasicInfoBuilder) PersonalProfileList(personalProfileList []*PersonalProfileForUpdate) *BasicInfoBuilder {
	builder.personalProfileList = personalProfileList
	builder.personalProfileListFlag = true
	return builder
}

// 紧急联系人
//
// 示例值：
func (builder *BasicInfoBuilder) EmergencyContactList(emergencyContactList []*EmergencyContactForUpdate) *BasicInfoBuilder {
	builder.emergencyContactList = emergencyContactList
	builder.emergencyContactListFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *BasicInfoBuilder) AddressList(addressList []*AddressForUpdate) *BasicInfoBuilder {
	builder.addressList = addressList
	builder.addressListFlag = true
	return builder
}

// 婚姻状况
//
// 示例值：xxx
func (builder *BasicInfoBuilder) MaritalStatus(maritalStatus string) *BasicInfoBuilder {
	builder.maritalStatus = maritalStatus
	builder.maritalStatusFlag = true
	return builder
}

// 民族 / 种族
//
// 示例值：xxx
func (builder *BasicInfoBuilder) EthnicityRace(ethnicityRace string) *BasicInfoBuilder {
	builder.ethnicityRace = ethnicityRace
	builder.ethnicityRaceFlag = true
	return builder
}

// 籍贯
//
// 示例值：xxx
func (builder *BasicInfoBuilder) NativeRegion(nativeRegion string) *BasicInfoBuilder {
	builder.nativeRegion = nativeRegion
	builder.nativeRegionFlag = true
	return builder
}

// 户口类型
//
// 示例值：xxx
func (builder *BasicInfoBuilder) HukouType(hukouType string) *BasicInfoBuilder {
	builder.hukouType = hukouType
	builder.hukouTypeFlag = true
	return builder
}

// 户口所在地
//
// 示例值：xxx
func (builder *BasicInfoBuilder) HukouLocation(hukouLocation string) *BasicInfoBuilder {
	builder.hukouLocation = hukouLocation
	builder.hukouLocationFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *BasicInfoBuilder) CustomFields(customFields []*ObjectFieldData) *BasicInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 预计毕业日期
//
// 示例值：2023-01-10
func (builder *BasicInfoBuilder) ExpectedGraduateDate(expectedGraduateDate string) *BasicInfoBuilder {
	builder.expectedGraduateDate = expectedGraduateDate
	builder.expectedGraduateDateFlag = true
	return builder
}

func (builder *BasicInfoBuilder) Build() *BasicInfo {
	req := &BasicInfo{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	if builder.internationalAreaCodeFlag {
		req.InternationalAreaCode = &builder.internationalAreaCode

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.personalIdNumberFlag {
		req.PersonalIdNumber = &builder.personalIdNumber

	}
	if builder.personalIdTypeFlag {
		req.PersonalIdType = &builder.personalIdType

	}
	if builder.dateEnteredWorkforceFlag {
		req.DateEnteredWorkforce = &builder.dateEnteredWorkforce

	}
	if builder.genderIdFlag {
		req.GenderId = &builder.genderId

	}
	if builder.nationalityIdFlag {
		req.NationalityId = &builder.nationalityId

	}
	if builder.nationalityV2IdFlag {
		req.NationalityV2Id = &builder.nationalityV2Id

	}
	if builder.additionalNationalityIdListFlag {
		req.AdditionalNationalityIdList = builder.additionalNationalityIdList
	}
	if builder.citizenshipStatusIdListFlag {
		req.CitizenshipStatusIdList = builder.citizenshipStatusIdList
	}
	if builder.homeAddressFlag {
		req.HomeAddress = &builder.homeAddress

	}
	if builder.workerIdFlag {
		req.WorkerId = &builder.workerId

	}
	if builder.userGeoFlag {
		req.UserGeo = &builder.userGeo

	}
	if builder.legalNameFlag {
		req.LegalName = builder.legalName
	}
	if builder.additionalNameFlag {
		req.AdditionalName = builder.additionalName
	}
	if builder.residentTaxListFlag {
		req.ResidentTaxList = builder.residentTaxList
	}
	if builder.bornCountryRegionFlag {
		req.BornCountryRegion = &builder.bornCountryRegion

	}
	if builder.isDisabledFlag {
		req.IsDisabled = &builder.isDisabled

	}
	if builder.disableCardNumberFlag {
		req.DisableCardNumber = &builder.disableCardNumber

	}
	if builder.isOldAloneFlag {
		req.IsOldAlone = &builder.isOldAlone

	}
	if builder.isMartyrFamilyFlag {
		req.IsMartyrFamily = &builder.isMartyrFamily

	}
	if builder.martyrCardNumberFlag {
		req.MartyrCardNumber = &builder.martyrCardNumber

	}
	if builder.dependentListFlag {
		req.DependentList = builder.dependentList
	}
	if builder.religionFlag {
		req.Religion = &builder.religion

	}
	if builder.bankAccountListFlag {
		req.BankAccountList = builder.bankAccountList
	}
	if builder.nationalIdListFlag {
		req.NationalIdList = builder.nationalIdList
	}
	if builder.personalProfileListFlag {
		req.PersonalProfileList = builder.personalProfileList
	}
	if builder.emergencyContactListFlag {
		req.EmergencyContactList = builder.emergencyContactList
	}
	if builder.addressListFlag {
		req.AddressList = builder.addressList
	}
	if builder.maritalStatusFlag {
		req.MaritalStatus = &builder.maritalStatus

	}
	if builder.ethnicityRaceFlag {
		req.EthnicityRace = &builder.ethnicityRace

	}
	if builder.nativeRegionFlag {
		req.NativeRegion = &builder.nativeRegion

	}
	if builder.hukouTypeFlag {
		req.HukouType = &builder.hukouType

	}
	if builder.hukouLocationFlag {
		req.HukouLocation = &builder.hukouLocation

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.expectedGraduateDateFlag {
		req.ExpectedGraduateDate = &builder.expectedGraduateDate

	}
	return req
}

type BasicInfoUpdate struct {
	Names []*NameForUpdate `json:"names,omitempty"` // 姓名,该值是一个list，会全量更新

	Phones []*PhoneForUpdate `json:"phones,omitempty"` // 电话,该值是一个list，会全量更新

	Emails []*EmailForUpdate `json:"emails,omitempty"` // 邮箱,该值是一个list，会全量更新

	NationalityV2Id *string `json:"nationality_v2_id,omitempty"` // 国籍

	AdditionalNationalityIdList []string `json:"additional_nationality_id_list,omitempty"` // 其他国籍

	ResidentTaxList []*ResidentTaxForUpdate `json:"resident_tax_list,omitempty"` // 纳税身份信息,该值是一个list，会全量更新

	BornCountryRegion *string `json:"born_country_region,omitempty"` // 出生国家/地区

	IsDisabled *bool `json:"is_disabled,omitempty"` // 是否残疾

	DisableCardNumber *string `json:"disable_card_number,omitempty"` // 残疾证号

	IsOldAlone *bool `json:"is_old_alone,omitempty"` // 是否孤老

	IsMartyrFamily *bool `json:"is_martyr_family,omitempty"` // 是否烈属

	MartyrCardNumber *string `json:"martyr_card_number,omitempty"` // 烈属证号

	DependentList []*DependentForUpdate `json:"dependent_list,omitempty"` // 家庭成员

	Religion *string `json:"religion,omitempty"` // 宗教信仰

	BankAccountList []*BankAccountForUpdate `json:"bank_account_list,omitempty"` // 银行账号

	NationalIdList []*NationalIdForUpdate `json:"national_id_list,omitempty"` // 证件账号

	PersonalProfileList []*PersonalProfileForUpdate `json:"personal_profile_list,omitempty"` // 个人资料

	EmergencyContactList []*EmergencyContactForUpdate `json:"emergency_contact_list,omitempty"` // 紧急联系人

	AddressList []*AddressForUpdate `json:"address_list,omitempty"` // 联系地址

	MaritalStatus *string `json:"marital_status,omitempty"` // 婚姻状况

	EthnicityRace *string `json:"ethnicity_race,omitempty"` // 民族 / 种族

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	NativeRegion *string `json:"native_region,omitempty"` // 籍贯

	HukouType *string `json:"hukou_type,omitempty"` // 户口类型

	HukouLocation *string `json:"hukou_location,omitempty"` // 户口所在地

	GenderId *string `json:"gender_id,omitempty"` // 性别

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 生日

	DateEnteredWorkforce *string `json:"date_entered_workforce,omitempty"` // 参加工作日期

	ExpectedGraduateDate *string `json:"expected_graduate_date,omitempty"` // 预计毕业日期

	CitizenshipStatusIdList []string `json:"citizenship_status_id_list,omitempty"` // 公民身份

	WorkExperience []*WorkExperienceForUpdate `json:"work_experience,omitempty"` // 工作履历

	EducationInfo []*EducationInfoForUpdate `json:"education_info,omitempty"` // 教育经历
}

type BasicInfoUpdateBuilder struct {
	names     []*NameForUpdate // 姓名,该值是一个list，会全量更新
	namesFlag bool

	phones     []*PhoneForUpdate // 电话,该值是一个list，会全量更新
	phonesFlag bool

	emails     []*EmailForUpdate // 邮箱,该值是一个list，会全量更新
	emailsFlag bool

	nationalityV2Id     string // 国籍
	nationalityV2IdFlag bool

	additionalNationalityIdList     []string // 其他国籍
	additionalNationalityIdListFlag bool

	residentTaxList     []*ResidentTaxForUpdate // 纳税身份信息,该值是一个list，会全量更新
	residentTaxListFlag bool

	bornCountryRegion     string // 出生国家/地区
	bornCountryRegionFlag bool

	isDisabled     bool // 是否残疾
	isDisabledFlag bool

	disableCardNumber     string // 残疾证号
	disableCardNumberFlag bool

	isOldAlone     bool // 是否孤老
	isOldAloneFlag bool

	isMartyrFamily     bool // 是否烈属
	isMartyrFamilyFlag bool

	martyrCardNumber     string // 烈属证号
	martyrCardNumberFlag bool

	dependentList     []*DependentForUpdate // 家庭成员
	dependentListFlag bool

	religion     string // 宗教信仰
	religionFlag bool

	bankAccountList     []*BankAccountForUpdate // 银行账号
	bankAccountListFlag bool

	nationalIdList     []*NationalIdForUpdate // 证件账号
	nationalIdListFlag bool

	personalProfileList     []*PersonalProfileForUpdate // 个人资料
	personalProfileListFlag bool

	emergencyContactList     []*EmergencyContactForUpdate // 紧急联系人
	emergencyContactListFlag bool

	addressList     []*AddressForUpdate // 联系地址
	addressListFlag bool

	maritalStatus     string // 婚姻状况
	maritalStatusFlag bool

	ethnicityRace     string // 民族 / 种族
	ethnicityRaceFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	nativeRegion     string // 籍贯
	nativeRegionFlag bool

	hukouType     string // 户口类型
	hukouTypeFlag bool

	hukouLocation     string // 户口所在地
	hukouLocationFlag bool

	genderId     string // 性别
	genderIdFlag bool

	dateOfBirth     string // 生日
	dateOfBirthFlag bool

	dateEnteredWorkforce     string // 参加工作日期
	dateEnteredWorkforceFlag bool

	expectedGraduateDate     string // 预计毕业日期
	expectedGraduateDateFlag bool

	citizenshipStatusIdList     []string // 公民身份
	citizenshipStatusIdListFlag bool

	workExperience     []*WorkExperienceForUpdate // 工作履历
	workExperienceFlag bool

	educationInfo     []*EducationInfoForUpdate // 教育经历
	educationInfoFlag bool
}

func NewBasicInfoUpdateBuilder() *BasicInfoUpdateBuilder {
	builder := &BasicInfoUpdateBuilder{}
	return builder
}

// 姓名,该值是一个list，会全量更新
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) Names(names []*NameForUpdate) *BasicInfoUpdateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 电话,该值是一个list，会全量更新
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) Phones(phones []*PhoneForUpdate) *BasicInfoUpdateBuilder {
	builder.phones = phones
	builder.phonesFlag = true
	return builder
}

// 邮箱,该值是一个list，会全量更新
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) Emails(emails []*EmailForUpdate) *BasicInfoUpdateBuilder {
	builder.emails = emails
	builder.emailsFlag = true
	return builder
}

// 国籍
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) NationalityV2Id(nationalityV2Id string) *BasicInfoUpdateBuilder {
	builder.nationalityV2Id = nationalityV2Id
	builder.nationalityV2IdFlag = true
	return builder
}

// 其他国籍
//
// 示例值：[6862995757234914824]
func (builder *BasicInfoUpdateBuilder) AdditionalNationalityIdList(additionalNationalityIdList []string) *BasicInfoUpdateBuilder {
	builder.additionalNationalityIdList = additionalNationalityIdList
	builder.additionalNationalityIdListFlag = true
	return builder
}

// 纳税身份信息,该值是一个list，会全量更新
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) ResidentTaxList(residentTaxList []*ResidentTaxForUpdate) *BasicInfoUpdateBuilder {
	builder.residentTaxList = residentTaxList
	builder.residentTaxListFlag = true
	return builder
}

// 出生国家/地区
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) BornCountryRegion(bornCountryRegion string) *BasicInfoUpdateBuilder {
	builder.bornCountryRegion = bornCountryRegion
	builder.bornCountryRegionFlag = true
	return builder
}

// 是否残疾
//
// 示例值：true
func (builder *BasicInfoUpdateBuilder) IsDisabled(isDisabled bool) *BasicInfoUpdateBuilder {
	builder.isDisabled = isDisabled
	builder.isDisabledFlag = true
	return builder
}

// 残疾证号
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) DisableCardNumber(disableCardNumber string) *BasicInfoUpdateBuilder {
	builder.disableCardNumber = disableCardNumber
	builder.disableCardNumberFlag = true
	return builder
}

// 是否孤老
//
// 示例值：true
func (builder *BasicInfoUpdateBuilder) IsOldAlone(isOldAlone bool) *BasicInfoUpdateBuilder {
	builder.isOldAlone = isOldAlone
	builder.isOldAloneFlag = true
	return builder
}

// 是否烈属
//
// 示例值：true
func (builder *BasicInfoUpdateBuilder) IsMartyrFamily(isMartyrFamily bool) *BasicInfoUpdateBuilder {
	builder.isMartyrFamily = isMartyrFamily
	builder.isMartyrFamilyFlag = true
	return builder
}

// 烈属证号
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) MartyrCardNumber(martyrCardNumber string) *BasicInfoUpdateBuilder {
	builder.martyrCardNumber = martyrCardNumber
	builder.martyrCardNumberFlag = true
	return builder
}

// 家庭成员
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) DependentList(dependentList []*DependentForUpdate) *BasicInfoUpdateBuilder {
	builder.dependentList = dependentList
	builder.dependentListFlag = true
	return builder
}

// 宗教信仰
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) Religion(religion string) *BasicInfoUpdateBuilder {
	builder.religion = religion
	builder.religionFlag = true
	return builder
}

// 银行账号
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) BankAccountList(bankAccountList []*BankAccountForUpdate) *BasicInfoUpdateBuilder {
	builder.bankAccountList = bankAccountList
	builder.bankAccountListFlag = true
	return builder
}

// 证件账号
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) NationalIdList(nationalIdList []*NationalIdForUpdate) *BasicInfoUpdateBuilder {
	builder.nationalIdList = nationalIdList
	builder.nationalIdListFlag = true
	return builder
}

// 个人资料
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) PersonalProfileList(personalProfileList []*PersonalProfileForUpdate) *BasicInfoUpdateBuilder {
	builder.personalProfileList = personalProfileList
	builder.personalProfileListFlag = true
	return builder
}

// 紧急联系人
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) EmergencyContactList(emergencyContactList []*EmergencyContactForUpdate) *BasicInfoUpdateBuilder {
	builder.emergencyContactList = emergencyContactList
	builder.emergencyContactListFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) AddressList(addressList []*AddressForUpdate) *BasicInfoUpdateBuilder {
	builder.addressList = addressList
	builder.addressListFlag = true
	return builder
}

// 婚姻状况
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) MaritalStatus(maritalStatus string) *BasicInfoUpdateBuilder {
	builder.maritalStatus = maritalStatus
	builder.maritalStatusFlag = true
	return builder
}

// 民族 / 种族
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) EthnicityRace(ethnicityRace string) *BasicInfoUpdateBuilder {
	builder.ethnicityRace = ethnicityRace
	builder.ethnicityRaceFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *BasicInfoUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 籍贯
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) NativeRegion(nativeRegion string) *BasicInfoUpdateBuilder {
	builder.nativeRegion = nativeRegion
	builder.nativeRegionFlag = true
	return builder
}

// 户口类型
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) HukouType(hukouType string) *BasicInfoUpdateBuilder {
	builder.hukouType = hukouType
	builder.hukouTypeFlag = true
	return builder
}

// 户口所在地
//
// 示例值：6862995757234914824
func (builder *BasicInfoUpdateBuilder) HukouLocation(hukouLocation string) *BasicInfoUpdateBuilder {
	builder.hukouLocation = hukouLocation
	builder.hukouLocationFlag = true
	return builder
}

// 性别
//
// 示例值：male
func (builder *BasicInfoUpdateBuilder) GenderId(genderId string) *BasicInfoUpdateBuilder {
	builder.genderId = genderId
	builder.genderIdFlag = true
	return builder
}

// 生日
//
// 示例值：2011-99-99
func (builder *BasicInfoUpdateBuilder) DateOfBirth(dateOfBirth string) *BasicInfoUpdateBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 参加工作日期
//
// 示例值：2100-09-09
func (builder *BasicInfoUpdateBuilder) DateEnteredWorkforce(dateEnteredWorkforce string) *BasicInfoUpdateBuilder {
	builder.dateEnteredWorkforce = dateEnteredWorkforce
	builder.dateEnteredWorkforceFlag = true
	return builder
}

// 预计毕业日期
//
// 示例值：2023-01-10
func (builder *BasicInfoUpdateBuilder) ExpectedGraduateDate(expectedGraduateDate string) *BasicInfoUpdateBuilder {
	builder.expectedGraduateDate = expectedGraduateDate
	builder.expectedGraduateDateFlag = true
	return builder
}

// 公民身份
//
// 示例值：[6862995757234914824]
func (builder *BasicInfoUpdateBuilder) CitizenshipStatusIdList(citizenshipStatusIdList []string) *BasicInfoUpdateBuilder {
	builder.citizenshipStatusIdList = citizenshipStatusIdList
	builder.citizenshipStatusIdListFlag = true
	return builder
}

// 工作履历
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) WorkExperience(workExperience []*WorkExperienceForUpdate) *BasicInfoUpdateBuilder {
	builder.workExperience = workExperience
	builder.workExperienceFlag = true
	return builder
}

// 教育经历
//
// 示例值：
func (builder *BasicInfoUpdateBuilder) EducationInfo(educationInfo []*EducationInfoForUpdate) *BasicInfoUpdateBuilder {
	builder.educationInfo = educationInfo
	builder.educationInfoFlag = true
	return builder
}

func (builder *BasicInfoUpdateBuilder) Build() *BasicInfoUpdate {
	req := &BasicInfoUpdate{}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.phonesFlag {
		req.Phones = builder.phones
	}
	if builder.emailsFlag {
		req.Emails = builder.emails
	}
	if builder.nationalityV2IdFlag {
		req.NationalityV2Id = &builder.nationalityV2Id

	}
	if builder.additionalNationalityIdListFlag {
		req.AdditionalNationalityIdList = builder.additionalNationalityIdList
	}
	if builder.residentTaxListFlag {
		req.ResidentTaxList = builder.residentTaxList
	}
	if builder.bornCountryRegionFlag {
		req.BornCountryRegion = &builder.bornCountryRegion

	}
	if builder.isDisabledFlag {
		req.IsDisabled = &builder.isDisabled

	}
	if builder.disableCardNumberFlag {
		req.DisableCardNumber = &builder.disableCardNumber

	}
	if builder.isOldAloneFlag {
		req.IsOldAlone = &builder.isOldAlone

	}
	if builder.isMartyrFamilyFlag {
		req.IsMartyrFamily = &builder.isMartyrFamily

	}
	if builder.martyrCardNumberFlag {
		req.MartyrCardNumber = &builder.martyrCardNumber

	}
	if builder.dependentListFlag {
		req.DependentList = builder.dependentList
	}
	if builder.religionFlag {
		req.Religion = &builder.religion

	}
	if builder.bankAccountListFlag {
		req.BankAccountList = builder.bankAccountList
	}
	if builder.nationalIdListFlag {
		req.NationalIdList = builder.nationalIdList
	}
	if builder.personalProfileListFlag {
		req.PersonalProfileList = builder.personalProfileList
	}
	if builder.emergencyContactListFlag {
		req.EmergencyContactList = builder.emergencyContactList
	}
	if builder.addressListFlag {
		req.AddressList = builder.addressList
	}
	if builder.maritalStatusFlag {
		req.MaritalStatus = &builder.maritalStatus

	}
	if builder.ethnicityRaceFlag {
		req.EthnicityRace = &builder.ethnicityRace

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.nativeRegionFlag {
		req.NativeRegion = &builder.nativeRegion

	}
	if builder.hukouTypeFlag {
		req.HukouType = &builder.hukouType

	}
	if builder.hukouLocationFlag {
		req.HukouLocation = &builder.hukouLocation

	}
	if builder.genderIdFlag {
		req.GenderId = &builder.genderId

	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.dateEnteredWorkforceFlag {
		req.DateEnteredWorkforce = &builder.dateEnteredWorkforce

	}
	if builder.expectedGraduateDateFlag {
		req.ExpectedGraduateDate = &builder.expectedGraduateDate

	}
	if builder.citizenshipStatusIdListFlag {
		req.CitizenshipStatusIdList = builder.citizenshipStatusIdList
	}
	if builder.workExperienceFlag {
		req.WorkExperience = builder.workExperience
	}
	if builder.educationInfoFlag {
		req.EducationInfo = builder.educationInfo
	}
	return req
}

type BasicJobData struct {
	JobDataId *string `json:"job_data_id,omitempty"` // 任职信息 ID

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID
}

type BasicJobDataBuilder struct {
	jobDataId     string // 任职信息 ID
	jobDataIdFlag bool

	employmentId     string // 雇佣 ID
	employmentIdFlag bool
}

func NewBasicJobDataBuilder() *BasicJobDataBuilder {
	builder := &BasicJobDataBuilder{}
	return builder
}

// 任职信息 ID
//
// 示例值：1000000
func (builder *BasicJobDataBuilder) JobDataId(jobDataId string) *BasicJobDataBuilder {
	builder.jobDataId = jobDataId
	builder.jobDataIdFlag = true
	return builder
}

// 雇佣 ID
//
// 示例值：6893014062142064135
func (builder *BasicJobDataBuilder) EmploymentId(employmentId string) *BasicJobDataBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

func (builder *BasicJobDataBuilder) Build() *BasicJobData {
	req := &BasicJobData{}
	if builder.jobDataIdFlag {
		req.JobDataId = &builder.jobDataId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	return req
}

type BasicPersonInfo struct {
	PersonId *string `json:"person_id,omitempty"` // 个人信息 ID

	PreferredName *string `json:"preferred_name,omitempty"` // 常用名

	PreferredLocalFullName *string `json:"preferred_local_full_name,omitempty"` // 常用本地全名

	PreferredEnglishFullName *string `json:"preferred_english_full_name,omitempty"` // 常用英文全名
}

type BasicPersonInfoBuilder struct {
	personId     string // 个人信息 ID
	personIdFlag bool

	preferredName     string // 常用名
	preferredNameFlag bool

	preferredLocalFullName     string // 常用本地全名
	preferredLocalFullNameFlag bool

	preferredEnglishFullName     string // 常用英文全名
	preferredEnglishFullNameFlag bool
}

func NewBasicPersonInfoBuilder() *BasicPersonInfoBuilder {
	builder := &BasicPersonInfoBuilder{}
	return builder
}

// 个人信息 ID
//
// 示例值：6919733936050406926
func (builder *BasicPersonInfoBuilder) PersonId(personId string) *BasicPersonInfoBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 常用名
//
// 示例值：刘梓新
func (builder *BasicPersonInfoBuilder) PreferredName(preferredName string) *BasicPersonInfoBuilder {
	builder.preferredName = preferredName
	builder.preferredNameFlag = true
	return builder
}

// 常用本地全名
//
// 示例值：刘梓新
func (builder *BasicPersonInfoBuilder) PreferredLocalFullName(preferredLocalFullName string) *BasicPersonInfoBuilder {
	builder.preferredLocalFullName = preferredLocalFullName
	builder.preferredLocalFullNameFlag = true
	return builder
}

// 常用英文全名
//
// 示例值：Henry
func (builder *BasicPersonInfoBuilder) PreferredEnglishFullName(preferredEnglishFullName string) *BasicPersonInfoBuilder {
	builder.preferredEnglishFullName = preferredEnglishFullName
	builder.preferredEnglishFullNameFlag = true
	return builder
}

func (builder *BasicPersonInfoBuilder) Build() *BasicPersonInfo {
	req := &BasicPersonInfo{}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.preferredNameFlag {
		req.PreferredName = &builder.preferredName

	}
	if builder.preferredLocalFullNameFlag {
		req.PreferredLocalFullName = &builder.preferredLocalFullName

	}
	if builder.preferredEnglishFullNameFlag {
		req.PreferredEnglishFullName = &builder.preferredEnglishFullName

	}
	return req
}

type Bp struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	HrbpId *string `json:"hrbp_id,omitempty"` // BP 的雇佣 ID
}

type BpBuilder struct {
	departmentId     string // 部门 ID
	departmentIdFlag bool

	hrbpId     string // BP 的雇佣 ID
	hrbpIdFlag bool
}

func NewBpBuilder() *BpBuilder {
	builder := &BpBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：4719456877659520852
func (builder *BpBuilder) DepartmentId(departmentId string) *BpBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// BP 的雇佣 ID
//
// 示例值：4719456877659520852
func (builder *BpBuilder) HrbpId(hrbpId string) *BpBuilder {
	builder.hrbpId = hrbpId
	builder.hrbpIdFlag = true
	return builder
}

func (builder *BpBuilder) Build() *Bp {
	req := &Bp{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.hrbpIdFlag {
		req.HrbpId = &builder.hrbpId

	}
	return req
}

type BpmDataengineI18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // （注json key是zh-CN，不是zh_cn）i18n类型字段，中文值

	EnUs *string `json:"en_us,omitempty"` // （注json key是en-US，不是en_us）i18n类型字段，英文值
}

type BpmDataengineI18nBuilder struct {
	zhCn     string // （注json key是zh-CN，不是zh_cn）i18n类型字段，中文值
	zhCnFlag bool

	enUs     string // （注json key是en-US，不是en_us）i18n类型字段，英文值
	enUsFlag bool
}

func NewBpmDataengineI18nBuilder() *BpmDataengineI18nBuilder {
	builder := &BpmDataengineI18nBuilder{}
	return builder
}

// （注json key是zh-CN，不是zh_cn）i18n类型字段，中文值
//
// 示例值：北京
func (builder *BpmDataengineI18nBuilder) ZhCn(zhCn string) *BpmDataengineI18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// （注json key是en-US，不是en_us）i18n类型字段，英文值
//
// 示例值：Beijing
func (builder *BpmDataengineI18nBuilder) EnUs(enUs string) *BpmDataengineI18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *BpmDataengineI18nBuilder) Build() *BpmDataengineI18n {
	req := &BpmDataengineI18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type BpmFlowInfo struct {
	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义ID

	FlowDefinitionName *DataengineI18n `json:"flow_definition_name,omitempty"` // 流程定义名称

	Description *DataengineI18n `json:"description,omitempty"` // 描述

	BizType *string `json:"biz_type,omitempty"` // 业务类型

	BizTypeName *DataengineI18n `json:"biz_type_name,omitempty"` // 业务类型名称

	Status *int `json:"status,omitempty"` // 启用状态

	CreatorId *string `json:"creator_id,omitempty"` // 创建人id

	CreatorName *DataengineI18n `json:"creator_name,omitempty"` // 创建人姓名

	CreateTime *string `json:"create_time,omitempty"` // 创建时间，Unix毫秒时间戳

	LastEditorId *string `json:"last_editor_id,omitempty"` // 最近更新人ID

	LastEditorName *DataengineI18n `json:"last_editor_name,omitempty"` // 最近更新人姓名

	LastEditTime *string `json:"last_edit_time,omitempty"` // 最近更新时间，Unix毫秒时间戳

	LastActiveTime *string `json:"last_active_time,omitempty"` // 上次启用时间，Unix毫秒时间戳
}

type BpmFlowInfoBuilder struct {
	flowDefinitionId     string // 流程定义ID
	flowDefinitionIdFlag bool

	flowDefinitionName     *DataengineI18n // 流程定义名称
	flowDefinitionNameFlag bool

	description     *DataengineI18n // 描述
	descriptionFlag bool

	bizType     string // 业务类型
	bizTypeFlag bool

	bizTypeName     *DataengineI18n // 业务类型名称
	bizTypeNameFlag bool

	status     int // 启用状态
	statusFlag bool

	creatorId     string // 创建人id
	creatorIdFlag bool

	creatorName     *DataengineI18n // 创建人姓名
	creatorNameFlag bool

	createTime     string // 创建时间，Unix毫秒时间戳
	createTimeFlag bool

	lastEditorId     string // 最近更新人ID
	lastEditorIdFlag bool

	lastEditorName     *DataengineI18n // 最近更新人姓名
	lastEditorNameFlag bool

	lastEditTime     string // 最近更新时间，Unix毫秒时间戳
	lastEditTimeFlag bool

	lastActiveTime     string // 上次启用时间，Unix毫秒时间戳
	lastActiveTimeFlag bool
}

func NewBpmFlowInfoBuilder() *BpmFlowInfoBuilder {
	builder := &BpmFlowInfoBuilder{}
	return builder
}

// 流程定义ID
//
// 示例值：people_7023711013443944467_7415503483711229740
func (builder *BpmFlowInfoBuilder) FlowDefinitionId(flowDefinitionId string) *BpmFlowInfoBuilder {
	builder.flowDefinitionId = flowDefinitionId
	builder.flowDefinitionIdFlag = true
	return builder
}

// 流程定义名称
//
// 示例值：
func (builder *BpmFlowInfoBuilder) FlowDefinitionName(flowDefinitionName *DataengineI18n) *BpmFlowInfoBuilder {
	builder.flowDefinitionName = flowDefinitionName
	builder.flowDefinitionNameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *BpmFlowInfoBuilder) Description(description *DataengineI18n) *BpmFlowInfoBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 业务类型
//
// 示例值：job_change
func (builder *BpmFlowInfoBuilder) BizType(bizType string) *BpmFlowInfoBuilder {
	builder.bizType = bizType
	builder.bizTypeFlag = true
	return builder
}

// 业务类型名称
//
// 示例值：
func (builder *BpmFlowInfoBuilder) BizTypeName(bizTypeName *DataengineI18n) *BpmFlowInfoBuilder {
	builder.bizTypeName = bizTypeName
	builder.bizTypeNameFlag = true
	return builder
}

// 启用状态
//
// 示例值：1
func (builder *BpmFlowInfoBuilder) Status(status int) *BpmFlowInfoBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 创建人id
//
// 示例值：7355397217231831060
func (builder *BpmFlowInfoBuilder) CreatorId(creatorId string) *BpmFlowInfoBuilder {
	builder.creatorId = creatorId
	builder.creatorIdFlag = true
	return builder
}

// 创建人姓名
//
// 示例值：
func (builder *BpmFlowInfoBuilder) CreatorName(creatorName *DataengineI18n) *BpmFlowInfoBuilder {
	builder.creatorName = creatorName
	builder.creatorNameFlag = true
	return builder
}

// 创建时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *BpmFlowInfoBuilder) CreateTime(createTime string) *BpmFlowInfoBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 最近更新人ID
//
// 示例值：7355397217231831060
func (builder *BpmFlowInfoBuilder) LastEditorId(lastEditorId string) *BpmFlowInfoBuilder {
	builder.lastEditorId = lastEditorId
	builder.lastEditorIdFlag = true
	return builder
}

// 最近更新人姓名
//
// 示例值：
func (builder *BpmFlowInfoBuilder) LastEditorName(lastEditorName *DataengineI18n) *BpmFlowInfoBuilder {
	builder.lastEditorName = lastEditorName
	builder.lastEditorNameFlag = true
	return builder
}

// 最近更新时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *BpmFlowInfoBuilder) LastEditTime(lastEditTime string) *BpmFlowInfoBuilder {
	builder.lastEditTime = lastEditTime
	builder.lastEditTimeFlag = true
	return builder
}

// 上次启用时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *BpmFlowInfoBuilder) LastActiveTime(lastActiveTime string) *BpmFlowInfoBuilder {
	builder.lastActiveTime = lastActiveTime
	builder.lastActiveTimeFlag = true
	return builder
}

func (builder *BpmFlowInfoBuilder) Build() *BpmFlowInfo {
	req := &BpmFlowInfo{}
	if builder.flowDefinitionIdFlag {
		req.FlowDefinitionId = &builder.flowDefinitionId

	}
	if builder.flowDefinitionNameFlag {
		req.FlowDefinitionName = builder.flowDefinitionName
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.bizTypeFlag {
		req.BizType = &builder.bizType

	}
	if builder.bizTypeNameFlag {
		req.BizTypeName = builder.bizTypeName
	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.creatorIdFlag {
		req.CreatorId = &builder.creatorId

	}
	if builder.creatorNameFlag {
		req.CreatorName = builder.creatorName
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.lastEditorIdFlag {
		req.LastEditorId = &builder.lastEditorId

	}
	if builder.lastEditorNameFlag {
		req.LastEditorName = builder.lastEditorName
	}
	if builder.lastEditTimeFlag {
		req.LastEditTime = &builder.lastEditTime

	}
	if builder.lastActiveTimeFlag {
		req.LastActiveTime = &builder.lastActiveTime

	}
	return req
}

type CalculateParam struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID

	SocialSecurityCityId *string `json:"social_security_city_id,omitempty"` // 社保公积金缴纳地 ID

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID

	JobId *string `json:"job_id,omitempty"` // 职务 ID

	MatchingRuleDimension []*DimensionValue `json:"matching_rule_dimension,omitempty"` // 人员自定义字段
}

type CalculateParamBuilder struct {
	departmentId     string // 部门 ID
	departmentIdFlag bool

	employeeTypeId     string // 人员类型 ID
	employeeTypeIdFlag bool

	workLocationId     string // 工作地点 ID
	workLocationIdFlag bool

	socialSecurityCityId     string // 社保公积金缴纳地 ID
	socialSecurityCityIdFlag bool

	jobFamilyId     string // 序列 ID
	jobFamilyIdFlag bool

	jobLevelId     string // 职级 ID
	jobLevelIdFlag bool

	jobId     string // 职务 ID
	jobIdFlag bool

	matchingRuleDimension     []*DimensionValue // 人员自定义字段
	matchingRuleDimensionFlag bool
}

func NewCalculateParamBuilder() *CalculateParamBuilder {
	builder := &CalculateParamBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：slnkdnaklsnda
func (builder *CalculateParamBuilder) DepartmentId(departmentId string) *CalculateParamBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 人员类型 ID
//
// 示例值：kajsdnjasdn
func (builder *CalculateParamBuilder) EmployeeTypeId(employeeTypeId string) *CalculateParamBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 工作地点 ID
//
// 示例值：asbjldasnjdlwa
func (builder *CalculateParamBuilder) WorkLocationId(workLocationId string) *CalculateParamBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 社保公积金缴纳地 ID
//
// 示例值：dsalndlnasl
func (builder *CalculateParamBuilder) SocialSecurityCityId(socialSecurityCityId string) *CalculateParamBuilder {
	builder.socialSecurityCityId = socialSecurityCityId
	builder.socialSecurityCityIdFlag = true
	return builder
}

// 序列 ID
//
// 示例值：bjlsadnas
func (builder *CalculateParamBuilder) JobFamilyId(jobFamilyId string) *CalculateParamBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职级 ID
//
// 示例值：dsadamkdq
func (builder *CalculateParamBuilder) JobLevelId(jobLevelId string) *CalculateParamBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职务 ID
//
// 示例值：dsandkjanjnda
func (builder *CalculateParamBuilder) JobId(jobId string) *CalculateParamBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 人员自定义字段
//
// 示例值：
func (builder *CalculateParamBuilder) MatchingRuleDimension(matchingRuleDimension []*DimensionValue) *CalculateParamBuilder {
	builder.matchingRuleDimension = matchingRuleDimension
	builder.matchingRuleDimensionFlag = true
	return builder
}

func (builder *CalculateParamBuilder) Build() *CalculateParam {
	req := &CalculateParam{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.socialSecurityCityIdFlag {
		req.SocialSecurityCityId = &builder.socialSecurityCityId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.matchingRuleDimensionFlag {
		req.MatchingRuleDimension = builder.matchingRuleDimension
	}
	return req
}

type ChangeFieldPair struct {
	OriginValue *CustomFieldData `json:"origin_value,omitempty"` // 调整前

	TargetValue *CustomFieldData `json:"target_value,omitempty"` // 调整后
}

type ChangeFieldPairBuilder struct {
	originValue     *CustomFieldData // 调整前
	originValueFlag bool

	targetValue     *CustomFieldData // 调整后
	targetValueFlag bool
}

func NewChangeFieldPairBuilder() *ChangeFieldPairBuilder {
	builder := &ChangeFieldPairBuilder{}
	return builder
}

// 调整前
//
// 示例值：
func (builder *ChangeFieldPairBuilder) OriginValue(originValue *CustomFieldData) *ChangeFieldPairBuilder {
	builder.originValue = originValue
	builder.originValueFlag = true
	return builder
}

// 调整后
//
// 示例值：
func (builder *ChangeFieldPairBuilder) TargetValue(targetValue *CustomFieldData) *ChangeFieldPairBuilder {
	builder.targetValue = targetValue
	builder.targetValueFlag = true
	return builder
}

func (builder *ChangeFieldPairBuilder) Build() *ChangeFieldPair {
	req := &ChangeFieldPair{}
	if builder.originValueFlag {
		req.OriginValue = builder.originValue
	}
	if builder.targetValueFlag {
		req.TargetValue = builder.targetValue
	}
	return req
}

type CitizenshipStatus struct {
	Id *string `json:"id,omitempty"` // 公民身份id

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家/地区id

	Active *bool `json:"active,omitempty"` // 是否启用

	Name []*I18n `json:"name,omitempty"` // 名称

	CitizenshipStatus []*I18n `json:"citizenship_status,omitempty"` // 公民身份

	ViewOrder *string `json:"view_order,omitempty"` // 排序
}

type CitizenshipStatusBuilder struct {
	id     string // 公民身份id
	idFlag bool

	countryRegionId     string // 国家/地区id
	countryRegionIdFlag bool

	active     bool // 是否启用
	activeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	citizenshipStatus     []*I18n // 公民身份
	citizenshipStatusFlag bool

	viewOrder     string // 排序
	viewOrderFlag bool
}

func NewCitizenshipStatusBuilder() *CitizenshipStatusBuilder {
	builder := &CitizenshipStatusBuilder{}
	return builder
}

// 公民身份id
//
// 示例值：6891251722631890445
func (builder *CitizenshipStatusBuilder) Id(id string) *CitizenshipStatusBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 国家/地区id
//
// 示例值：6891251722631890445
func (builder *CitizenshipStatusBuilder) CountryRegionId(countryRegionId string) *CitizenshipStatusBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *CitizenshipStatusBuilder) Active(active bool) *CitizenshipStatusBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *CitizenshipStatusBuilder) Name(name []*I18n) *CitizenshipStatusBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 公民身份
//
// 示例值：
func (builder *CitizenshipStatusBuilder) CitizenshipStatus(citizenshipStatus []*I18n) *CitizenshipStatusBuilder {
	builder.citizenshipStatus = citizenshipStatus
	builder.citizenshipStatusFlag = true
	return builder
}

// 排序
//
// 示例值：1
func (builder *CitizenshipStatusBuilder) ViewOrder(viewOrder string) *CitizenshipStatusBuilder {
	builder.viewOrder = viewOrder
	builder.viewOrderFlag = true
	return builder
}

func (builder *CitizenshipStatusBuilder) Build() *CitizenshipStatus {
	req := &CitizenshipStatus{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.citizenshipStatusFlag {
		req.CitizenshipStatus = builder.citizenshipStatus
	}
	if builder.viewOrderFlag {
		req.ViewOrder = &builder.viewOrder

	}
	return req
}

type City struct {
	CityId *string `json:"city_id,omitempty"` // 城市 ID

	Name []*I18n `json:"name,omitempty"` // 城市名称

	CountryRegionSubdivisionId *string `json:"country_region_subdivision_id,omitempty"` // 所属省份/主要行政区 ID，详细信息可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)接口获得

	Code *string `json:"code,omitempty"` // 城市三位字母代码

	SubregionCode *string `json:"subregion_code,omitempty"` // 行政区划代码

	Status *int `json:"status,omitempty"` // 状态
}

type CityBuilder struct {
	cityId     string // 城市 ID
	cityIdFlag bool

	name     []*I18n // 城市名称
	nameFlag bool

	countryRegionSubdivisionId     string // 所属省份/主要行政区 ID，详细信息可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)接口获得
	countryRegionSubdivisionIdFlag bool

	code     string // 城市三位字母代码
	codeFlag bool

	subregionCode     string // 行政区划代码
	subregionCodeFlag bool

	status     int // 状态
	statusFlag bool
}

func NewCityBuilder() *CityBuilder {
	builder := &CityBuilder{}
	return builder
}

// 城市 ID
//
// 示例值：6863333352603125255
func (builder *CityBuilder) CityId(cityId string) *CityBuilder {
	builder.cityId = cityId
	builder.cityIdFlag = true
	return builder
}

// 城市名称
//
// 示例值：
func (builder *CityBuilder) Name(name []*I18n) *CityBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 所属省份/主要行政区 ID，详细信息可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)接口获得
//
// 示例值：6863326262757164551
func (builder *CityBuilder) CountryRegionSubdivisionId(countryRegionSubdivisionId string) *CityBuilder {
	builder.countryRegionSubdivisionId = countryRegionSubdivisionId
	builder.countryRegionSubdivisionIdFlag = true
	return builder
}

// 城市三位字母代码
//
// 示例值：HRB
func (builder *CityBuilder) Code(code string) *CityBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 行政区划代码
//
// 示例值：230100
func (builder *CityBuilder) SubregionCode(subregionCode string) *CityBuilder {
	builder.subregionCode = subregionCode
	builder.subregionCodeFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *CityBuilder) Status(status int) *CityBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *CityBuilder) Build() *City {
	req := &City{}
	if builder.cityIdFlag {
		req.CityId = &builder.cityId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.countryRegionSubdivisionIdFlag {
		req.CountryRegionSubdivisionId = &builder.countryRegionSubdivisionId

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.subregionCodeFlag {
		req.SubregionCode = &builder.subregionCode

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type Company struct {
	CompanyId *string `json:"company_id,omitempty"` // 公司 ID

	HiberarchyCommon *HiberarchyCommon `json:"hiberarchy_common,omitempty"` // 公司基本信息

	Type *Enum `json:"type,omitempty"` // 性质

	IndustryList []*Enum `json:"industry_list,omitempty"` // 行业

	LegalRepresentative []*I18n `json:"legal_representative,omitempty"` // 法定代表人

	PostCode *string `json:"post_code,omitempty"` // 邮编

	TaxPayerId *string `json:"tax_payer_id,omitempty"` // 纳税人识别号

	Confidential *bool `json:"confidential,omitempty"` // confidential

	SubTypeList []*Enum `json:"sub_type_list,omitempty"` // 主体类型

	BranchCompany *bool `json:"branch_company,omitempty"` // 是否为分公司

	PrimaryManager []*I18n `json:"primary_manager,omitempty"` // 主要负责人

	Currency *Currency `json:"currency,omitempty"` // 默认币种

	Phone *PhoneNumberAndAreaCode `json:"phone,omitempty"` // 电话

	Fax *PhoneNumberAndAreaCode `json:"fax,omitempty"` // 传真

	RegisteredOfficeAddress []*I18n `json:"registered_office_address,omitempty"` // 完整注册地址

	OfficeAddress []*I18n `json:"office_address,omitempty"` // 完整办公地址

	RegisteredOfficeAddressInfo *Address `json:"registered_office_address_info,omitempty"` // 注册地址

	OfficeAddressInfo *Address `json:"office_address_info,omitempty"` // 办公地址

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type CompanyBuilder struct {
	companyId     string // 公司 ID
	companyIdFlag bool

	hiberarchyCommon     *HiberarchyCommon // 公司基本信息
	hiberarchyCommonFlag bool

	type_    *Enum // 性质
	typeFlag bool

	industryList     []*Enum // 行业
	industryListFlag bool

	legalRepresentative     []*I18n // 法定代表人
	legalRepresentativeFlag bool

	postCode     string // 邮编
	postCodeFlag bool

	taxPayerId     string // 纳税人识别号
	taxPayerIdFlag bool

	confidential     bool // confidential
	confidentialFlag bool

	subTypeList     []*Enum // 主体类型
	subTypeListFlag bool

	branchCompany     bool // 是否为分公司
	branchCompanyFlag bool

	primaryManager     []*I18n // 主要负责人
	primaryManagerFlag bool

	currency     *Currency // 默认币种
	currencyFlag bool

	phone     *PhoneNumberAndAreaCode // 电话
	phoneFlag bool

	fax     *PhoneNumberAndAreaCode // 传真
	faxFlag bool

	registeredOfficeAddress     []*I18n // 完整注册地址
	registeredOfficeAddressFlag bool

	officeAddress     []*I18n // 完整办公地址
	officeAddressFlag bool

	registeredOfficeAddressInfo     *Address // 注册地址
	registeredOfficeAddressInfoFlag bool

	officeAddressInfo     *Address // 办公地址
	officeAddressInfoFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewCompanyBuilder() *CompanyBuilder {
	builder := &CompanyBuilder{}
	return builder
}

// 公司 ID
//
// 示例值：4692472714243080020
func (builder *CompanyBuilder) CompanyId(companyId string) *CompanyBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 公司基本信息
//
// 示例值：
func (builder *CompanyBuilder) HiberarchyCommon(hiberarchyCommon *HiberarchyCommon) *CompanyBuilder {
	builder.hiberarchyCommon = hiberarchyCommon
	builder.hiberarchyCommonFlag = true
	return builder
}

// 性质
//
// 示例值：
func (builder *CompanyBuilder) Type(type_ *Enum) *CompanyBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 行业
//
// 示例值：
func (builder *CompanyBuilder) IndustryList(industryList []*Enum) *CompanyBuilder {
	builder.industryList = industryList
	builder.industryListFlag = true
	return builder
}

// 法定代表人
//
// 示例值：
func (builder *CompanyBuilder) LegalRepresentative(legalRepresentative []*I18n) *CompanyBuilder {
	builder.legalRepresentative = legalRepresentative
	builder.legalRepresentativeFlag = true
	return builder
}

// 邮编
//
// 示例值：邮编
func (builder *CompanyBuilder) PostCode(postCode string) *CompanyBuilder {
	builder.postCode = postCode
	builder.postCodeFlag = true
	return builder
}

// 纳税人识别号
//
// 示例值：123456840
func (builder *CompanyBuilder) TaxPayerId(taxPayerId string) *CompanyBuilder {
	builder.taxPayerId = taxPayerId
	builder.taxPayerIdFlag = true
	return builder
}

// confidential
//
// 示例值：true
func (builder *CompanyBuilder) Confidential(confidential bool) *CompanyBuilder {
	builder.confidential = confidential
	builder.confidentialFlag = true
	return builder
}

// 主体类型
//
// 示例值：
func (builder *CompanyBuilder) SubTypeList(subTypeList []*Enum) *CompanyBuilder {
	builder.subTypeList = subTypeList
	builder.subTypeListFlag = true
	return builder
}

// 是否为分公司
//
// 示例值：true
func (builder *CompanyBuilder) BranchCompany(branchCompany bool) *CompanyBuilder {
	builder.branchCompany = branchCompany
	builder.branchCompanyFlag = true
	return builder
}

// 主要负责人
//
// 示例值：
func (builder *CompanyBuilder) PrimaryManager(primaryManager []*I18n) *CompanyBuilder {
	builder.primaryManager = primaryManager
	builder.primaryManagerFlag = true
	return builder
}

// 默认币种
//
// 示例值：
func (builder *CompanyBuilder) Currency(currency *Currency) *CompanyBuilder {
	builder.currency = currency
	builder.currencyFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *CompanyBuilder) Phone(phone *PhoneNumberAndAreaCode) *CompanyBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 传真
//
// 示例值：
func (builder *CompanyBuilder) Fax(fax *PhoneNumberAndAreaCode) *CompanyBuilder {
	builder.fax = fax
	builder.faxFlag = true
	return builder
}

// 完整注册地址
//
// 示例值：
func (builder *CompanyBuilder) RegisteredOfficeAddress(registeredOfficeAddress []*I18n) *CompanyBuilder {
	builder.registeredOfficeAddress = registeredOfficeAddress
	builder.registeredOfficeAddressFlag = true
	return builder
}

// 完整办公地址
//
// 示例值：
func (builder *CompanyBuilder) OfficeAddress(officeAddress []*I18n) *CompanyBuilder {
	builder.officeAddress = officeAddress
	builder.officeAddressFlag = true
	return builder
}

// 注册地址
//
// 示例值：
func (builder *CompanyBuilder) RegisteredOfficeAddressInfo(registeredOfficeAddressInfo *Address) *CompanyBuilder {
	builder.registeredOfficeAddressInfo = registeredOfficeAddressInfo
	builder.registeredOfficeAddressInfoFlag = true
	return builder
}

// 办公地址
//
// 示例值：
func (builder *CompanyBuilder) OfficeAddressInfo(officeAddressInfo *Address) *CompanyBuilder {
	builder.officeAddressInfo = officeAddressInfo
	builder.officeAddressInfoFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CompanyBuilder) CustomFields(customFields []*CustomFieldData) *CompanyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *CompanyBuilder) Build() *Company {
	req := &Company{}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.hiberarchyCommonFlag {
		req.HiberarchyCommon = builder.hiberarchyCommon
	}
	if builder.typeFlag {
		req.Type = builder.type_
	}
	if builder.industryListFlag {
		req.IndustryList = builder.industryList
	}
	if builder.legalRepresentativeFlag {
		req.LegalRepresentative = builder.legalRepresentative
	}
	if builder.postCodeFlag {
		req.PostCode = &builder.postCode

	}
	if builder.taxPayerIdFlag {
		req.TaxPayerId = &builder.taxPayerId

	}
	if builder.confidentialFlag {
		req.Confidential = &builder.confidential

	}
	if builder.subTypeListFlag {
		req.SubTypeList = builder.subTypeList
	}
	if builder.branchCompanyFlag {
		req.BranchCompany = &builder.branchCompany

	}
	if builder.primaryManagerFlag {
		req.PrimaryManager = builder.primaryManager
	}
	if builder.currencyFlag {
		req.Currency = builder.currency
	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.faxFlag {
		req.Fax = builder.fax
	}
	if builder.registeredOfficeAddressFlag {
		req.RegisteredOfficeAddress = builder.registeredOfficeAddress
	}
	if builder.officeAddressFlag {
		req.OfficeAddress = builder.officeAddress
	}
	if builder.registeredOfficeAddressInfoFlag {
		req.RegisteredOfficeAddressInfo = builder.registeredOfficeAddressInfo
	}
	if builder.officeAddressInfoFlag {
		req.OfficeAddressInfo = builder.officeAddressInfo
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type CompanyIdAndName struct {
	CompanyId *string `json:"company_id,omitempty"` // 所属公司的 ID

	CompanyName []*I18n `json:"company_name,omitempty"` // 所属公司的名称
}

type CompanyIdAndNameBuilder struct {
	companyId     string // 所属公司的 ID
	companyIdFlag bool

	companyName     []*I18n // 所属公司的名称
	companyNameFlag bool
}

func NewCompanyIdAndNameBuilder() *CompanyIdAndNameBuilder {
	builder := &CompanyIdAndNameBuilder{}
	return builder
}

// 所属公司的 ID
//
// 示例值：sadasdasda
func (builder *CompanyIdAndNameBuilder) CompanyId(companyId string) *CompanyIdAndNameBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 所属公司的名称
//
// 示例值：
func (builder *CompanyIdAndNameBuilder) CompanyName(companyName []*I18n) *CompanyIdAndNameBuilder {
	builder.companyName = companyName
	builder.companyNameFlag = true
	return builder
}

func (builder *CompanyIdAndNameBuilder) Build() *CompanyIdAndName {
	req := &CompanyIdAndName{}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.companyNameFlag {
		req.CompanyName = builder.companyName
	}
	return req
}

type CompanyTimeline struct {
	CompanyVersionData []*CompanyVersionData `json:"company_version_data,omitempty"` // 公司版本信息

	Type *Enum `json:"type,omitempty"` // 性质

	IndustryList []*Enum `json:"industry_list,omitempty"` // 行业

	LegalRepresentative []*I18n `json:"legal_representative,omitempty"` // 法定代表人

	PostCode *string `json:"post_code,omitempty"` // 邮编

	TaxPayerId *string `json:"tax_payer_id,omitempty"` // 纳税人识别号

	Confidential *bool `json:"confidential,omitempty"` // 是否保密

	SubTypeList []*Enum `json:"sub_type_list,omitempty"` // 主体类型

	BranchCompany *bool `json:"branch_company,omitempty"` // 是否为分公司

	PrimaryManager []*I18n `json:"primary_manager,omitempty"` // 主要负责人

	Currency *Currency `json:"currency,omitempty"` // 默认币种

	Phone *PhoneNumberAndAreaCode `json:"phone,omitempty"` // 电话

	Fax *PhoneNumberAndAreaCode `json:"fax,omitempty"` // 传真

	RegisteredOfficeAddress []*I18n `json:"registered_office_address,omitempty"` // 完整注册地址

	OfficeAddress []*I18n `json:"office_address,omitempty"` // 完整办公地址

	RegisteredOfficeAddressInfo *Address `json:"registered_office_address_info,omitempty"` // 注册地址

	OfficeAddressInfo *Address `json:"office_address_info,omitempty"` // 办公地址
}

type CompanyTimelineBuilder struct {
	companyVersionData     []*CompanyVersionData // 公司版本信息
	companyVersionDataFlag bool

	type_    *Enum // 性质
	typeFlag bool

	industryList     []*Enum // 行业
	industryListFlag bool

	legalRepresentative     []*I18n // 法定代表人
	legalRepresentativeFlag bool

	postCode     string // 邮编
	postCodeFlag bool

	taxPayerId     string // 纳税人识别号
	taxPayerIdFlag bool

	confidential     bool // 是否保密
	confidentialFlag bool

	subTypeList     []*Enum // 主体类型
	subTypeListFlag bool

	branchCompany     bool // 是否为分公司
	branchCompanyFlag bool

	primaryManager     []*I18n // 主要负责人
	primaryManagerFlag bool

	currency     *Currency // 默认币种
	currencyFlag bool

	phone     *PhoneNumberAndAreaCode // 电话
	phoneFlag bool

	fax     *PhoneNumberAndAreaCode // 传真
	faxFlag bool

	registeredOfficeAddress     []*I18n // 完整注册地址
	registeredOfficeAddressFlag bool

	officeAddress     []*I18n // 完整办公地址
	officeAddressFlag bool

	registeredOfficeAddressInfo     *Address // 注册地址
	registeredOfficeAddressInfoFlag bool

	officeAddressInfo     *Address // 办公地址
	officeAddressInfoFlag bool
}

func NewCompanyTimelineBuilder() *CompanyTimelineBuilder {
	builder := &CompanyTimelineBuilder{}
	return builder
}

// 公司版本信息
//
// 示例值：
func (builder *CompanyTimelineBuilder) CompanyVersionData(companyVersionData []*CompanyVersionData) *CompanyTimelineBuilder {
	builder.companyVersionData = companyVersionData
	builder.companyVersionDataFlag = true
	return builder
}

// 性质
//
// 示例值：
func (builder *CompanyTimelineBuilder) Type(type_ *Enum) *CompanyTimelineBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 行业
//
// 示例值：
func (builder *CompanyTimelineBuilder) IndustryList(industryList []*Enum) *CompanyTimelineBuilder {
	builder.industryList = industryList
	builder.industryListFlag = true
	return builder
}

// 法定代表人
//
// 示例值：
func (builder *CompanyTimelineBuilder) LegalRepresentative(legalRepresentative []*I18n) *CompanyTimelineBuilder {
	builder.legalRepresentative = legalRepresentative
	builder.legalRepresentativeFlag = true
	return builder
}

// 邮编
//
// 示例值：645623412342
func (builder *CompanyTimelineBuilder) PostCode(postCode string) *CompanyTimelineBuilder {
	builder.postCode = postCode
	builder.postCodeFlag = true
	return builder
}

// 纳税人识别号
//
// 示例值：341244646234
func (builder *CompanyTimelineBuilder) TaxPayerId(taxPayerId string) *CompanyTimelineBuilder {
	builder.taxPayerId = taxPayerId
	builder.taxPayerIdFlag = true
	return builder
}

// 是否保密
//
// 示例值：true
func (builder *CompanyTimelineBuilder) Confidential(confidential bool) *CompanyTimelineBuilder {
	builder.confidential = confidential
	builder.confidentialFlag = true
	return builder
}

// 主体类型
//
// 示例值：
func (builder *CompanyTimelineBuilder) SubTypeList(subTypeList []*Enum) *CompanyTimelineBuilder {
	builder.subTypeList = subTypeList
	builder.subTypeListFlag = true
	return builder
}

// 是否为分公司
//
// 示例值：true
func (builder *CompanyTimelineBuilder) BranchCompany(branchCompany bool) *CompanyTimelineBuilder {
	builder.branchCompany = branchCompany
	builder.branchCompanyFlag = true
	return builder
}

// 主要负责人
//
// 示例值：
func (builder *CompanyTimelineBuilder) PrimaryManager(primaryManager []*I18n) *CompanyTimelineBuilder {
	builder.primaryManager = primaryManager
	builder.primaryManagerFlag = true
	return builder
}

// 默认币种
//
// 示例值：
func (builder *CompanyTimelineBuilder) Currency(currency *Currency) *CompanyTimelineBuilder {
	builder.currency = currency
	builder.currencyFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *CompanyTimelineBuilder) Phone(phone *PhoneNumberAndAreaCode) *CompanyTimelineBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 传真
//
// 示例值：
func (builder *CompanyTimelineBuilder) Fax(fax *PhoneNumberAndAreaCode) *CompanyTimelineBuilder {
	builder.fax = fax
	builder.faxFlag = true
	return builder
}

// 完整注册地址
//
// 示例值：
func (builder *CompanyTimelineBuilder) RegisteredOfficeAddress(registeredOfficeAddress []*I18n) *CompanyTimelineBuilder {
	builder.registeredOfficeAddress = registeredOfficeAddress
	builder.registeredOfficeAddressFlag = true
	return builder
}

// 完整办公地址
//
// 示例值：
func (builder *CompanyTimelineBuilder) OfficeAddress(officeAddress []*I18n) *CompanyTimelineBuilder {
	builder.officeAddress = officeAddress
	builder.officeAddressFlag = true
	return builder
}

// 注册地址
//
// 示例值：
func (builder *CompanyTimelineBuilder) RegisteredOfficeAddressInfo(registeredOfficeAddressInfo *Address) *CompanyTimelineBuilder {
	builder.registeredOfficeAddressInfo = registeredOfficeAddressInfo
	builder.registeredOfficeAddressInfoFlag = true
	return builder
}

// 办公地址
//
// 示例值：
func (builder *CompanyTimelineBuilder) OfficeAddressInfo(officeAddressInfo *Address) *CompanyTimelineBuilder {
	builder.officeAddressInfo = officeAddressInfo
	builder.officeAddressInfoFlag = true
	return builder
}

func (builder *CompanyTimelineBuilder) Build() *CompanyTimeline {
	req := &CompanyTimeline{}
	if builder.companyVersionDataFlag {
		req.CompanyVersionData = builder.companyVersionData
	}
	if builder.typeFlag {
		req.Type = builder.type_
	}
	if builder.industryListFlag {
		req.IndustryList = builder.industryList
	}
	if builder.legalRepresentativeFlag {
		req.LegalRepresentative = builder.legalRepresentative
	}
	if builder.postCodeFlag {
		req.PostCode = &builder.postCode

	}
	if builder.taxPayerIdFlag {
		req.TaxPayerId = &builder.taxPayerId

	}
	if builder.confidentialFlag {
		req.Confidential = &builder.confidential

	}
	if builder.subTypeListFlag {
		req.SubTypeList = builder.subTypeList
	}
	if builder.branchCompanyFlag {
		req.BranchCompany = &builder.branchCompany

	}
	if builder.primaryManagerFlag {
		req.PrimaryManager = builder.primaryManager
	}
	if builder.currencyFlag {
		req.Currency = builder.currency
	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.faxFlag {
		req.Fax = builder.fax
	}
	if builder.registeredOfficeAddressFlag {
		req.RegisteredOfficeAddress = builder.registeredOfficeAddress
	}
	if builder.officeAddressFlag {
		req.OfficeAddress = builder.officeAddress
	}
	if builder.registeredOfficeAddressInfoFlag {
		req.RegisteredOfficeAddressInfo = builder.registeredOfficeAddressInfo
	}
	if builder.officeAddressInfoFlag {
		req.OfficeAddressInfo = builder.officeAddressInfo
	}
	return req
}

type CompanyVersionData struct {
	CompanyId *string `json:"company_id,omitempty"` // 公司 ID

	CompanyVersionId *string `json:"company_version_id,omitempty"` // 公司版本 ID

	CompanyNames []*I18n `json:"company_names,omitempty"` // 公司名称

	ParentCompanyId *string `json:"parent_company_id,omitempty"` // 上级公司 ID

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效日期

	Active *bool `json:"active,omitempty"` // 是否启用

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Code *string `json:"code,omitempty"` // 编码
}

type CompanyVersionDataBuilder struct {
	companyId     string // 公司 ID
	companyIdFlag bool

	companyVersionId     string // 公司版本 ID
	companyVersionIdFlag bool

	companyNames     []*I18n // 公司名称
	companyNamesFlag bool

	parentCompanyId     string // 上级公司 ID
	parentCompanyIdFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	expirationDate     string // 失效日期
	expirationDateFlag bool

	active     bool // 是否启用
	activeFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	code     string // 编码
	codeFlag bool
}

func NewCompanyVersionDataBuilder() *CompanyVersionDataBuilder {
	builder := &CompanyVersionDataBuilder{}
	return builder
}

// 公司 ID
//
// 示例值：4719456877659520852
func (builder *CompanyVersionDataBuilder) CompanyId(companyId string) *CompanyVersionDataBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 公司版本 ID
//
// 示例值：7238516215202170412
func (builder *CompanyVersionDataBuilder) CompanyVersionId(companyVersionId string) *CompanyVersionDataBuilder {
	builder.companyVersionId = companyVersionId
	builder.companyVersionIdFlag = true
	return builder
}

// 公司名称
//
// 示例值：
func (builder *CompanyVersionDataBuilder) CompanyNames(companyNames []*I18n) *CompanyVersionDataBuilder {
	builder.companyNames = companyNames
	builder.companyNamesFlag = true
	return builder
}

// 上级公司 ID
//
// 示例值：4719456877659520852
func (builder *CompanyVersionDataBuilder) ParentCompanyId(parentCompanyId string) *CompanyVersionDataBuilder {
	builder.parentCompanyId = parentCompanyId
	builder.parentCompanyIdFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *CompanyVersionDataBuilder) EffectiveDate(effectiveDate string) *CompanyVersionDataBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效日期
//
// 示例值：2020-05-02
func (builder *CompanyVersionDataBuilder) ExpirationDate(expirationDate string) *CompanyVersionDataBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *CompanyVersionDataBuilder) Active(active bool) *CompanyVersionDataBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *CompanyVersionDataBuilder) Descriptions(descriptions []*I18n) *CompanyVersionDataBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 编码
//
// 示例值：FJK387
func (builder *CompanyVersionDataBuilder) Code(code string) *CompanyVersionDataBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

func (builder *CompanyVersionDataBuilder) Build() *CompanyVersionData {
	req := &CompanyVersionData{}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.companyVersionIdFlag {
		req.CompanyVersionId = &builder.companyVersionId

	}
	if builder.companyNamesFlag {
		req.CompanyNames = builder.companyNames
	}
	if builder.parentCompanyIdFlag {
		req.ParentCompanyId = &builder.parentCompanyId

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	return req
}

type Contract struct {
	Id *string `json:"id,omitempty"` // 合同ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 合同开始日期

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 合同结束日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 实际结束日期

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID

	ContractType *Enum `json:"contract_type,omitempty"` // 合同类型，枚举值可通过文档【飞书人事枚举常量】合同类型（contract_type）枚举定义部分获得

	FirstPartyCompanyId *string `json:"first_party_company_id,omitempty"` // 合同主体, 引用Company的ID，枚举值及详细信息可通过【批量查询公司】接口查询获得

	PersonId *string `json:"person_id,omitempty"` // Person ID，枚举值及详细信息可通过【批量查询个人信息】接口查询获得

	DurationType *Enum `json:"duration_type,omitempty"` // 期限类型，枚举值可通过文档【飞书人事枚举常量】合同期限类型（duration_type）枚举定义部分获得

	ContractNumber *string `json:"contract_number,omitempty"` // 合同编号

	SigningType *Enum `json:"signing_type,omitempty"` // 签订类型，枚举值可通过文档【飞书人事枚举常量】签订类型（signing_type）枚举定义部分获得

	ContractStatus *Enum `json:"contract_status,omitempty"` // 合同协议状态，枚举值可通过文档【飞书人事枚举常量】合同协议状态（contract_status）枚举定义部分获得

	RenewalStatus *Enum `json:"renewal_status,omitempty"` // 续签状态，枚举值可通过文档【飞书人事枚举常量】续签状态（renewal_status）枚举定义部分获得

	SigningTimes *int `json:"signing_times,omitempty"` // 第几次签署

	OriginalContract *string `json:"original_contract,omitempty"` // 原合同ID
}

type ContractBuilder struct {
	id     string // 合同ID
	idFlag bool

	effectiveTime     string // 合同开始日期
	effectiveTimeFlag bool

	contractEndDate     string // 合同结束日期
	contractEndDateFlag bool

	expirationTime     string // 实际结束日期
	expirationTimeFlag bool

	employmentId     string // 雇佣 ID
	employmentIdFlag bool

	contractType     *Enum // 合同类型，枚举值可通过文档【飞书人事枚举常量】合同类型（contract_type）枚举定义部分获得
	contractTypeFlag bool

	firstPartyCompanyId     string // 合同主体, 引用Company的ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
	firstPartyCompanyIdFlag bool

	personId     string // Person ID，枚举值及详细信息可通过【批量查询个人信息】接口查询获得
	personIdFlag bool

	durationType     *Enum // 期限类型，枚举值可通过文档【飞书人事枚举常量】合同期限类型（duration_type）枚举定义部分获得
	durationTypeFlag bool

	contractNumber     string // 合同编号
	contractNumberFlag bool

	signingType     *Enum // 签订类型，枚举值可通过文档【飞书人事枚举常量】签订类型（signing_type）枚举定义部分获得
	signingTypeFlag bool

	contractStatus     *Enum // 合同协议状态，枚举值可通过文档【飞书人事枚举常量】合同协议状态（contract_status）枚举定义部分获得
	contractStatusFlag bool

	renewalStatus     *Enum // 续签状态，枚举值可通过文档【飞书人事枚举常量】续签状态（renewal_status）枚举定义部分获得
	renewalStatusFlag bool

	signingTimes     int // 第几次签署
	signingTimesFlag bool

	originalContract     string // 原合同ID
	originalContractFlag bool
}

func NewContractBuilder() *ContractBuilder {
	builder := &ContractBuilder{}
	return builder
}

// 合同ID
//
// 示例值：7147527056140813828
func (builder *ContractBuilder) Id(id string) *ContractBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 合同开始日期
//
// 示例值：2023-01-01 00:00:00
func (builder *ContractBuilder) EffectiveTime(effectiveTime string) *ContractBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 合同结束日期
//
// 示例值：2024-01-01
func (builder *ContractBuilder) ContractEndDate(contractEndDate string) *ContractBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

// 实际结束日期
//
// 示例值：2023-11-01 00:00:00
func (builder *ContractBuilder) ExpirationTime(expirationTime string) *ContractBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 雇佣 ID
//
// 示例值：6893014062142064135
func (builder *ContractBuilder) EmploymentId(employmentId string) *ContractBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 合同类型，枚举值可通过文档【飞书人事枚举常量】合同类型（contract_type）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) ContractType(contractType *Enum) *ContractBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// 合同主体, 引用Company的ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
//
// 示例值：7091599096804394540
func (builder *ContractBuilder) FirstPartyCompanyId(firstPartyCompanyId string) *ContractBuilder {
	builder.firstPartyCompanyId = firstPartyCompanyId
	builder.firstPartyCompanyIdFlag = true
	return builder
}

// Person ID，枚举值及详细信息可通过【批量查询个人信息】接口查询获得
//
// 示例值：7088589447189022252
func (builder *ContractBuilder) PersonId(personId string) *ContractBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 期限类型，枚举值可通过文档【飞书人事枚举常量】合同期限类型（duration_type）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) DurationType(durationType *Enum) *ContractBuilder {
	builder.durationType = durationType
	builder.durationTypeFlag = true
	return builder
}

// 合同编号
//
// 示例值：0000011
func (builder *ContractBuilder) ContractNumber(contractNumber string) *ContractBuilder {
	builder.contractNumber = contractNumber
	builder.contractNumberFlag = true
	return builder
}

// 签订类型，枚举值可通过文档【飞书人事枚举常量】签订类型（signing_type）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) SigningType(signingType *Enum) *ContractBuilder {
	builder.signingType = signingType
	builder.signingTypeFlag = true
	return builder
}

// 合同协议状态，枚举值可通过文档【飞书人事枚举常量】合同协议状态（contract_status）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) ContractStatus(contractStatus *Enum) *ContractBuilder {
	builder.contractStatus = contractStatus
	builder.contractStatusFlag = true
	return builder
}

// 续签状态，枚举值可通过文档【飞书人事枚举常量】续签状态（renewal_status）枚举定义部分获得
//
// 示例值：
func (builder *ContractBuilder) RenewalStatus(renewalStatus *Enum) *ContractBuilder {
	builder.renewalStatus = renewalStatus
	builder.renewalStatusFlag = true
	return builder
}

// 第几次签署
//
// 示例值：1
func (builder *ContractBuilder) SigningTimes(signingTimes int) *ContractBuilder {
	builder.signingTimes = signingTimes
	builder.signingTimesFlag = true
	return builder
}

// 原合同ID
//
// 示例值：7147527056140813828
func (builder *ContractBuilder) OriginalContract(originalContract string) *ContractBuilder {
	builder.originalContract = originalContract
	builder.originalContractFlag = true
	return builder
}

func (builder *ContractBuilder) Build() *Contract {
	req := &Contract{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.contractTypeFlag {
		req.ContractType = builder.contractType
	}
	if builder.firstPartyCompanyIdFlag {
		req.FirstPartyCompanyId = &builder.firstPartyCompanyId

	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.durationTypeFlag {
		req.DurationType = builder.durationType
	}
	if builder.contractNumberFlag {
		req.ContractNumber = &builder.contractNumber

	}
	if builder.signingTypeFlag {
		req.SigningType = builder.signingType
	}
	if builder.contractStatusFlag {
		req.ContractStatus = builder.contractStatus
	}
	if builder.renewalStatusFlag {
		req.RenewalStatus = builder.renewalStatus
	}
	if builder.signingTimesFlag {
		req.SigningTimes = &builder.signingTimes

	}
	if builder.originalContractFlag {
		req.OriginalContract = &builder.originalContract

	}
	return req
}

type CostAllocation struct {
	EffectiveTime *string `json:"effective_time,omitempty"` // 分摊生效日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 分摊失效日期

	CostCenterRates []*JobDataCostCenter `json:"cost_center_rates,omitempty"` // 成本分摊信息
}

type CostAllocationBuilder struct {
	effectiveTime     string // 分摊生效日期
	effectiveTimeFlag bool

	expirationTime     string // 分摊失效日期
	expirationTimeFlag bool

	costCenterRates     []*JobDataCostCenter // 成本分摊信息
	costCenterRatesFlag bool
}

func NewCostAllocationBuilder() *CostAllocationBuilder {
	builder := &CostAllocationBuilder{}
	return builder
}

// 分摊生效日期
//
// 示例值：2025-01-01
func (builder *CostAllocationBuilder) EffectiveTime(effectiveTime string) *CostAllocationBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 分摊失效日期
//
// 示例值：2025-02-01
func (builder *CostAllocationBuilder) ExpirationTime(expirationTime string) *CostAllocationBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 成本分摊信息
//
// 示例值：
func (builder *CostAllocationBuilder) CostCenterRates(costCenterRates []*JobDataCostCenter) *CostAllocationBuilder {
	builder.costCenterRates = costCenterRates
	builder.costCenterRatesFlag = true
	return builder
}

func (builder *CostAllocationBuilder) Build() *CostAllocation {
	req := &CostAllocation{}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.costCenterRatesFlag {
		req.CostCenterRates = builder.costCenterRates
	}
	return req
}

type CostCenter struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心ID

	CostCenterVersionId *string `json:"cost_center_version_id,omitempty"` // 成本中心版本ID

	Name []*I18n `json:"name,omitempty"` // 成本中心名称

	Code *string `json:"code,omitempty"` // 编码

	ParentCostCenterId *string `json:"parent_cost_center_id,omitempty"` // 上级成本中心ID

	Managers []string `json:"managers,omitempty"` // 成本中心负责人ID 列表，可通过雇佣信息接口查询获得

	Description []*I18n `json:"description,omitempty"` // 成本中心描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 过期时间

	Active *bool `json:"active,omitempty"` // 当前实体是否启用

	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type CostCenterBuilder struct {
	costCenterId     string // 成本中心ID
	costCenterIdFlag bool

	costCenterVersionId     string // 成本中心版本ID
	costCenterVersionIdFlag bool

	name     []*I18n // 成本中心名称
	nameFlag bool

	code     string // 编码
	codeFlag bool

	parentCostCenterId     string // 上级成本中心ID
	parentCostCenterIdFlag bool

	managers     []string // 成本中心负责人ID 列表，可通过雇佣信息接口查询获得
	managersFlag bool

	description     []*I18n // 成本中心描述
	descriptionFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 过期时间
	expirationTimeFlag bool

	active     bool // 当前实体是否启用
	activeFlag bool

	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewCostCenterBuilder() *CostCenterBuilder {
	builder := &CostCenterBuilder{}
	return builder
}

// 成本中心ID
//
// 示例值：6969828847121885087
func (builder *CostCenterBuilder) CostCenterId(costCenterId string) *CostCenterBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 成本中心版本ID
//
// 示例值：6969828847121885087
func (builder *CostCenterBuilder) CostCenterVersionId(costCenterVersionId string) *CostCenterBuilder {
	builder.costCenterVersionId = costCenterVersionId
	builder.costCenterVersionIdFlag = true
	return builder
}

// 成本中心名称
//
// 示例值：
func (builder *CostCenterBuilder) Name(name []*I18n) *CostCenterBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 编码
//
// 示例值：MDPD00000023
func (builder *CostCenterBuilder) Code(code string) *CostCenterBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级成本中心ID
//
// 示例值：6862995757234914824
func (builder *CostCenterBuilder) ParentCostCenterId(parentCostCenterId string) *CostCenterBuilder {
	builder.parentCostCenterId = parentCostCenterId
	builder.parentCostCenterIdFlag = true
	return builder
}

// 成本中心负责人ID 列表，可通过雇佣信息接口查询获得
//
// 示例值：
func (builder *CostCenterBuilder) Managers(managers []string) *CostCenterBuilder {
	builder.managers = managers
	builder.managersFlag = true
	return builder
}

// 成本中心描述
//
// 示例值：
func (builder *CostCenterBuilder) Description(description []*I18n) *CostCenterBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *CostCenterBuilder) EffectiveTime(effectiveTime string) *CostCenterBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 过期时间
//
// 示例值：2020-01-01
func (builder *CostCenterBuilder) ExpirationTime(expirationTime string) *CostCenterBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 当前实体是否启用
//
// 示例值：2020-01-01
func (builder *CostCenterBuilder) Active(active bool) *CostCenterBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
// 示例值：过期作废
func (builder *CostCenterBuilder) OperationReason(operationReason string) *CostCenterBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *CostCenterBuilder) Build() *CostCenter {
	req := &CostCenter{}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.costCenterVersionIdFlag {
		req.CostCenterVersionId = &builder.costCenterVersionId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.parentCostCenterIdFlag {
		req.ParentCostCenterId = &builder.parentCostCenterId

	}
	if builder.managersFlag {
		req.Managers = builder.managers
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason

	}
	return req
}

type CostCenterVersion struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心ID

	VersionId *string `json:"version_id,omitempty"` // 成本中心版本ID

	Name []*I18n `json:"name,omitempty"` // 成本中心名称

	Code *string `json:"code,omitempty"` // 编码

	ParentCostCenterId *string `json:"parent_cost_center_id,omitempty"` // 上级成本中心ID

	Managers []string `json:"managers,omitempty"` // 成本中心负责人ID 列表，可通过雇佣信息接口查询获得

	Description []*I18n `json:"description,omitempty"` // 成本中心描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 过期时间

	Active *bool `json:"active,omitempty"` // 当前实体是否启用

	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type CostCenterVersionBuilder struct {
	costCenterId     string // 成本中心ID
	costCenterIdFlag bool

	versionId     string // 成本中心版本ID
	versionIdFlag bool

	name     []*I18n // 成本中心名称
	nameFlag bool

	code     string // 编码
	codeFlag bool

	parentCostCenterId     string // 上级成本中心ID
	parentCostCenterIdFlag bool

	managers     []string // 成本中心负责人ID 列表，可通过雇佣信息接口查询获得
	managersFlag bool

	description     []*I18n // 成本中心描述
	descriptionFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 过期时间
	expirationTimeFlag bool

	active     bool // 当前实体是否启用
	activeFlag bool

	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewCostCenterVersionBuilder() *CostCenterVersionBuilder {
	builder := &CostCenterVersionBuilder{}
	return builder
}

// 成本中心ID
//
// 示例值：6969828847121885087
func (builder *CostCenterVersionBuilder) CostCenterId(costCenterId string) *CostCenterVersionBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 成本中心版本ID
//
// 示例值：6969828847121885087
func (builder *CostCenterVersionBuilder) VersionId(versionId string) *CostCenterVersionBuilder {
	builder.versionId = versionId
	builder.versionIdFlag = true
	return builder
}

// 成本中心名称
//
// 示例值：
func (builder *CostCenterVersionBuilder) Name(name []*I18n) *CostCenterVersionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 编码
//
// 示例值：MDPD00000023
func (builder *CostCenterVersionBuilder) Code(code string) *CostCenterVersionBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级成本中心ID
//
// 示例值：6862995757234914824
func (builder *CostCenterVersionBuilder) ParentCostCenterId(parentCostCenterId string) *CostCenterVersionBuilder {
	builder.parentCostCenterId = parentCostCenterId
	builder.parentCostCenterIdFlag = true
	return builder
}

// 成本中心负责人ID 列表，可通过雇佣信息接口查询获得
//
// 示例值：
func (builder *CostCenterVersionBuilder) Managers(managers []string) *CostCenterVersionBuilder {
	builder.managers = managers
	builder.managersFlag = true
	return builder
}

// 成本中心描述
//
// 示例值：
func (builder *CostCenterVersionBuilder) Description(description []*I18n) *CostCenterVersionBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *CostCenterVersionBuilder) EffectiveTime(effectiveTime string) *CostCenterVersionBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 过期时间
//
// 示例值：2020-01-01
func (builder *CostCenterVersionBuilder) ExpirationTime(expirationTime string) *CostCenterVersionBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 当前实体是否启用
//
// 示例值：2020-01-01
func (builder *CostCenterVersionBuilder) Active(active bool) *CostCenterVersionBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
// 示例值：过期作废
func (builder *CostCenterVersionBuilder) OperationReason(operationReason string) *CostCenterVersionBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *CostCenterVersionBuilder) Build() *CostCenterVersion {
	req := &CostCenterVersion{}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.versionIdFlag {
		req.VersionId = &builder.versionId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.parentCostCenterIdFlag {
		req.ParentCostCenterId = &builder.parentCostCenterId

	}
	if builder.managersFlag {
		req.Managers = builder.managers
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason

	}
	return req
}

type CostCenterId struct {
	WkId *string `json:"wk_id,omitempty"` // 成本中心
}

type CostCenterIdBuilder struct {
	wkId     string // 成本中心
	wkIdFlag bool
}

func NewCostCenterIdBuilder() *CostCenterIdBuilder {
	builder := &CostCenterIdBuilder{}
	return builder
}

// 成本中心
//
// 示例值：7382048365313261588
func (builder *CostCenterIdBuilder) WkId(wkId string) *CostCenterIdBuilder {
	builder.wkId = wkId
	builder.wkIdFlag = true
	return builder
}

func (builder *CostCenterIdBuilder) Build() *CostCenterId {
	req := &CostCenterId{}
	if builder.wkIdFlag {
		req.WkId = &builder.wkId

	}
	return req
}

type CountryRegion struct {
	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家/地区 ID

	Name []*I18n `json:"name,omitempty"` // 国家/地区名称

	FullName []*I18n `json:"full_name,omitempty"` // 国家/地区全称

	Alpha2Code *string `json:"alpha_2_code,omitempty"` // 国家/地区两位字母编码（ISO 3166-1）

	Alpha3Code *string `json:"alpha_3_code,omitempty"` // 国家/地区三位字母编码（ISO 3166-1）

	GlobalCode *string `json:"global_code,omitempty"` // 国际电话区号

	Status *int `json:"status,omitempty"` // 状态
}

type CountryRegionBuilder struct {
	countryRegionId     string // 国家/地区 ID
	countryRegionIdFlag bool

	name     []*I18n // 国家/地区名称
	nameFlag bool

	fullName     []*I18n // 国家/地区全称
	fullNameFlag bool

	alpha2Code     string // 国家/地区两位字母编码（ISO 3166-1）
	alpha2CodeFlag bool

	alpha3Code     string // 国家/地区三位字母编码（ISO 3166-1）
	alpha3CodeFlag bool

	globalCode     string // 国际电话区号
	globalCodeFlag bool

	status     int // 状态
	statusFlag bool
}

func NewCountryRegionBuilder() *CountryRegionBuilder {
	builder := &CountryRegionBuilder{}
	return builder
}

// 国家/地区 ID
//
// 示例值：6862995757234914824
func (builder *CountryRegionBuilder) CountryRegionId(countryRegionId string) *CountryRegionBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 国家/地区名称
//
// 示例值：
func (builder *CountryRegionBuilder) Name(name []*I18n) *CountryRegionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 国家/地区全称
//
// 示例值：
func (builder *CountryRegionBuilder) FullName(fullName []*I18n) *CountryRegionBuilder {
	builder.fullName = fullName
	builder.fullNameFlag = true
	return builder
}

// 国家/地区两位字母编码（ISO 3166-1）
//
// 示例值：CN
func (builder *CountryRegionBuilder) Alpha2Code(alpha2Code string) *CountryRegionBuilder {
	builder.alpha2Code = alpha2Code
	builder.alpha2CodeFlag = true
	return builder
}

// 国家/地区三位字母编码（ISO 3166-1）
//
// 示例值：CHN
func (builder *CountryRegionBuilder) Alpha3Code(alpha3Code string) *CountryRegionBuilder {
	builder.alpha3Code = alpha3Code
	builder.alpha3CodeFlag = true
	return builder
}

// 国际电话区号
//
// 示例值：+86
func (builder *CountryRegionBuilder) GlobalCode(globalCode string) *CountryRegionBuilder {
	builder.globalCode = globalCode
	builder.globalCodeFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *CountryRegionBuilder) Status(status int) *CountryRegionBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *CountryRegionBuilder) Build() *CountryRegion {
	req := &CountryRegion{}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.fullNameFlag {
		req.FullName = builder.fullName
	}
	if builder.alpha2CodeFlag {
		req.Alpha2Code = &builder.alpha2Code

	}
	if builder.alpha3CodeFlag {
		req.Alpha3Code = &builder.alpha3Code

	}
	if builder.globalCodeFlag {
		req.GlobalCode = &builder.globalCode

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type CountryRegionSubdivision struct {
	CountryRegionSubdivisionId *string `json:"country_region_subdivision_id,omitempty"` // 省份/主要行政区 ID

	Name []*I18n `json:"name,omitempty"` // 省份/主要行政区名称

	CountryRegionId *string `json:"country_region_id,omitempty"` // 所属国家/地区 ID，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得

	SubdivisionType *Enum `json:"subdivision_type,omitempty"` // 行政区类型，枚举值可通过飞书人事[枚举常量介绍](https://open.feishu.cn/document/server-docs/corehr-v1/feishu-people-enum-constant#402ea9a0)文档中行政区类型（subdivision_type）定义部分获得

	IsoCode *string `json:"iso_code,omitempty"` // 省份/主要行政区编码（ISO 3166-2）

	Status *int `json:"status,omitempty"` // 状态
}

type CountryRegionSubdivisionBuilder struct {
	countryRegionSubdivisionId     string // 省份/主要行政区 ID
	countryRegionSubdivisionIdFlag bool

	name     []*I18n // 省份/主要行政区名称
	nameFlag bool

	countryRegionId     string // 所属国家/地区 ID，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
	countryRegionIdFlag bool

	subdivisionType     *Enum // 行政区类型，枚举值可通过飞书人事[枚举常量介绍](https://open.feishu.cn/document/server-docs/corehr-v1/feishu-people-enum-constant#402ea9a0)文档中行政区类型（subdivision_type）定义部分获得
	subdivisionTypeFlag bool

	isoCode     string // 省份/主要行政区编码（ISO 3166-2）
	isoCodeFlag bool

	status     int // 状态
	statusFlag bool
}

func NewCountryRegionSubdivisionBuilder() *CountryRegionSubdivisionBuilder {
	builder := &CountryRegionSubdivisionBuilder{}
	return builder
}

// 省份/主要行政区 ID
//
// 示例值：6863326571462133262
func (builder *CountryRegionSubdivisionBuilder) CountryRegionSubdivisionId(countryRegionSubdivisionId string) *CountryRegionSubdivisionBuilder {
	builder.countryRegionSubdivisionId = countryRegionSubdivisionId
	builder.countryRegionSubdivisionIdFlag = true
	return builder
}

// 省份/主要行政区名称
//
// 示例值：
func (builder *CountryRegionSubdivisionBuilder) Name(name []*I18n) *CountryRegionSubdivisionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 所属国家/地区 ID，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
//
// 示例值：6862995791674344967
func (builder *CountryRegionSubdivisionBuilder) CountryRegionId(countryRegionId string) *CountryRegionSubdivisionBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 行政区类型，枚举值可通过飞书人事[枚举常量介绍](https://open.feishu.cn/document/server-docs/corehr-v1/feishu-people-enum-constant#402ea9a0)文档中行政区类型（subdivision_type）定义部分获得
//
// 示例值：
func (builder *CountryRegionSubdivisionBuilder) SubdivisionType(subdivisionType *Enum) *CountryRegionSubdivisionBuilder {
	builder.subdivisionType = subdivisionType
	builder.subdivisionTypeFlag = true
	return builder
}

// 省份/主要行政区编码（ISO 3166-2）
//
// 示例值：PSE-GZA
func (builder *CountryRegionSubdivisionBuilder) IsoCode(isoCode string) *CountryRegionSubdivisionBuilder {
	builder.isoCode = isoCode
	builder.isoCodeFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *CountryRegionSubdivisionBuilder) Status(status int) *CountryRegionSubdivisionBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *CountryRegionSubdivisionBuilder) Build() *CountryRegionSubdivision {
	req := &CountryRegionSubdivision{}
	if builder.countryRegionSubdivisionIdFlag {
		req.CountryRegionSubdivisionId = &builder.countryRegionSubdivisionId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.subdivisionTypeFlag {
		req.SubdivisionType = builder.subdivisionType
	}
	if builder.isoCodeFlag {
		req.IsoCode = &builder.isoCode

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type CreateEmpCustomOrg struct {
	Id *string `json:"id,omitempty"` // 自定义组织ID

	Rate *float64 `json:"rate,omitempty"` // 比例 如果是非比例的可不填写
}

type CreateEmpCustomOrgBuilder struct {
	id     string // 自定义组织ID
	idFlag bool

	rate     float64 // 比例 如果是非比例的可不填写
	rateFlag bool
}

func NewCreateEmpCustomOrgBuilder() *CreateEmpCustomOrgBuilder {
	builder := &CreateEmpCustomOrgBuilder{}
	return builder
}

// 自定义组织ID
//
// 示例值：7260357352426782739
func (builder *CreateEmpCustomOrgBuilder) Id(id string) *CreateEmpCustomOrgBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 比例 如果是非比例的可不填写
//
// 示例值：50.1
func (builder *CreateEmpCustomOrgBuilder) Rate(rate float64) *CreateEmpCustomOrgBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

func (builder *CreateEmpCustomOrgBuilder) Build() *CreateEmpCustomOrg {
	req := &CreateEmpCustomOrg{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	return req
}

type CreateTransferInfo struct {
	Remark *string `json:"remark,omitempty"` // 备注

	OfferInfo *string `json:"offer_info,omitempty"` // offer信息

	TargetDottedManagerClean *bool `json:"target_dotted_manager_clean,omitempty"` // 是否撤销虚线上级

	ProbationExist *bool `json:"probation_exist,omitempty"` // 是否有试用期

	TargetDepartment *string `json:"target_department,omitempty"` // 新部门

	TargetWorkLocation *string `json:"target_work_location,omitempty"` // 新工作地点

	TargetDirectManager *string `json:"target_direct_manager,omitempty"` // 新直属上级

	TargetDottedManager *string `json:"target_dotted_manager,omitempty"` // 新虚线上级

	TargetJob *string `json:"target_job,omitempty"` // 新职务

	TargetJobFamily *string `json:"target_job_family,omitempty"` // 新序列

	TargetJobLevel *string `json:"target_job_level,omitempty"` // 新级别

	TargetWorkforceType *string `json:"target_workforce_type,omitempty"` // 新人员类型

	TargetEmployeeSubtype *string `json:"target_employee_subtype,omitempty"` // 新人员子类型

	TargetCompany *string `json:"target_company,omitempty"` // 新公司

	TargetContractNumber *string `json:"target_contract_number,omitempty"` // 新合同编号

	TargetContractType *string `json:"target_contract_type,omitempty"` // 新合同类型

	TargetDurationType *string `json:"target_duration_type,omitempty"` // 新期限类型

	TargetSigningType *string `json:"target_signing_type,omitempty"` // 新签订类型

	TargetContractStartDate *string `json:"target_contract_start_date,omitempty"` // 新合同开始日期

	TargetContractEndDate *string `json:"target_contract_end_date,omitempty"` // 新合同结束日期

	TargetWorkingHoursType *string `json:"target_working_hours_type,omitempty"` // 新工时制度

	TargetWorkingCalendar *string `json:"target_working_calendar,omitempty"` // 新工作日历

	TargetProbationEndDate *string `json:"target_probation_end_date,omitempty"` // 新试用期预计结束日期

	TargetWeeklyWorkingHours *string `json:"target_weekly_working_hours,omitempty"` // 新周工作时长

	TargetWorkShift *string `json:"target_work_shift,omitempty"` // 新排班

	TargetCostCenterRates []*JobDataCostCenter `json:"target_cost_center_rates,omitempty"` // 新成本中心分摊方式

	TargetEmploymentChange *TranferEmploymentInfo `json:"target_employment_change,omitempty"` // 新工作信息

	TargetJobGrade *string `json:"target_job_grade,omitempty"` // 新职等

	TargetCompensationType *string `json:"target_compensation_type,omitempty"` // 新薪资类型

	TargetServiceCompany *string `json:"target_service_company,omitempty"` // 新任职公司

	TargetPosition *string `json:"target_position,omitempty"` // 新岗位

	TargetSocialSecurityCity *string `json:"target_social_security_city,omitempty"` // 新社保城市

	IsTransferWithWorkforce *bool `json:"is_transfer_with_workforce,omitempty"` // 编制随人员一起调整

	TargetPathway *string `json:"target_pathway,omitempty"` // 新通道

	TargetAllocationEffectiveTime *string `json:"target_allocation_effective_time,omitempty"` // 新分摊生效时间

	TargetAllocationExpirationTime *string `json:"target_allocation_expiration_time,omitempty"` // 新分摊失效时间

	TargetDefaultCostCenter *string `json:"target_default_cost_center,omitempty"` // 新默认成本中心

	TargetIsDefaultCostCenterInherited *bool `json:"target_is_default_cost_center_inherited,omitempty"` // 新默认成本中心是否继承
}

type CreateTransferInfoBuilder struct {
	remark     string // 备注
	remarkFlag bool

	offerInfo     string // offer信息
	offerInfoFlag bool

	targetDottedManagerClean     bool // 是否撤销虚线上级
	targetDottedManagerCleanFlag bool

	probationExist     bool // 是否有试用期
	probationExistFlag bool

	targetDepartment     string // 新部门
	targetDepartmentFlag bool

	targetWorkLocation     string // 新工作地点
	targetWorkLocationFlag bool

	targetDirectManager     string // 新直属上级
	targetDirectManagerFlag bool

	targetDottedManager     string // 新虚线上级
	targetDottedManagerFlag bool

	targetJob     string // 新职务
	targetJobFlag bool

	targetJobFamily     string // 新序列
	targetJobFamilyFlag bool

	targetJobLevel     string // 新级别
	targetJobLevelFlag bool

	targetWorkforceType     string // 新人员类型
	targetWorkforceTypeFlag bool

	targetEmployeeSubtype     string // 新人员子类型
	targetEmployeeSubtypeFlag bool

	targetCompany     string // 新公司
	targetCompanyFlag bool

	targetContractNumber     string // 新合同编号
	targetContractNumberFlag bool

	targetContractType     string // 新合同类型
	targetContractTypeFlag bool

	targetDurationType     string // 新期限类型
	targetDurationTypeFlag bool

	targetSigningType     string // 新签订类型
	targetSigningTypeFlag bool

	targetContractStartDate     string // 新合同开始日期
	targetContractStartDateFlag bool

	targetContractEndDate     string // 新合同结束日期
	targetContractEndDateFlag bool

	targetWorkingHoursType     string // 新工时制度
	targetWorkingHoursTypeFlag bool

	targetWorkingCalendar     string // 新工作日历
	targetWorkingCalendarFlag bool

	targetProbationEndDate     string // 新试用期预计结束日期
	targetProbationEndDateFlag bool

	targetWeeklyWorkingHours     string // 新周工作时长
	targetWeeklyWorkingHoursFlag bool

	targetWorkShift     string // 新排班
	targetWorkShiftFlag bool

	targetCostCenterRates     []*JobDataCostCenter // 新成本中心分摊方式
	targetCostCenterRatesFlag bool

	targetEmploymentChange     *TranferEmploymentInfo // 新工作信息
	targetEmploymentChangeFlag bool

	targetJobGrade     string // 新职等
	targetJobGradeFlag bool

	targetCompensationType     string // 新薪资类型
	targetCompensationTypeFlag bool

	targetServiceCompany     string // 新任职公司
	targetServiceCompanyFlag bool

	targetPosition     string // 新岗位
	targetPositionFlag bool

	targetSocialSecurityCity     string // 新社保城市
	targetSocialSecurityCityFlag bool

	isTransferWithWorkforce     bool // 编制随人员一起调整
	isTransferWithWorkforceFlag bool

	targetPathway     string // 新通道
	targetPathwayFlag bool

	targetAllocationEffectiveTime     string // 新分摊生效时间
	targetAllocationEffectiveTimeFlag bool

	targetAllocationExpirationTime     string // 新分摊失效时间
	targetAllocationExpirationTimeFlag bool

	targetDefaultCostCenter     string // 新默认成本中心
	targetDefaultCostCenterFlag bool

	targetIsDefaultCostCenterInherited     bool // 新默认成本中心是否继承
	targetIsDefaultCostCenterInheritedFlag bool
}

func NewCreateTransferInfoBuilder() *CreateTransferInfoBuilder {
	builder := &CreateTransferInfoBuilder{}
	return builder
}

// 备注
//
// 示例值：异动详情
func (builder *CreateTransferInfoBuilder) Remark(remark string) *CreateTransferInfoBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// offer信息
//
// 示例值：优质人才，加急处理
func (builder *CreateTransferInfoBuilder) OfferInfo(offerInfo string) *CreateTransferInfoBuilder {
	builder.offerInfo = offerInfo
	builder.offerInfoFlag = true
	return builder
}

// 是否撤销虚线上级
//
// 示例值：true
func (builder *CreateTransferInfoBuilder) TargetDottedManagerClean(targetDottedManagerClean bool) *CreateTransferInfoBuilder {
	builder.targetDottedManagerClean = targetDottedManagerClean
	builder.targetDottedManagerCleanFlag = true
	return builder
}

// 是否有试用期
//
// 示例值：false
func (builder *CreateTransferInfoBuilder) ProbationExist(probationExist bool) *CreateTransferInfoBuilder {
	builder.probationExist = probationExist
	builder.probationExistFlag = true
	return builder
}

// 新部门
//
// 示例值：6966236933198579208
func (builder *CreateTransferInfoBuilder) TargetDepartment(targetDepartment string) *CreateTransferInfoBuilder {
	builder.targetDepartment = targetDepartment
	builder.targetDepartmentFlag = true
	return builder
}

// 新工作地点
//
// 示例值：6967271100992587295
func (builder *CreateTransferInfoBuilder) TargetWorkLocation(targetWorkLocation string) *CreateTransferInfoBuilder {
	builder.targetWorkLocation = targetWorkLocation
	builder.targetWorkLocationFlag = true
	return builder
}

// 新直属上级
//
// 示例值：7013619729281713671
func (builder *CreateTransferInfoBuilder) TargetDirectManager(targetDirectManager string) *CreateTransferInfoBuilder {
	builder.targetDirectManager = targetDirectManager
	builder.targetDirectManagerFlag = true
	return builder
}

// 新虚线上级
//
// 示例值：7013328578351842852
func (builder *CreateTransferInfoBuilder) TargetDottedManager(targetDottedManager string) *CreateTransferInfoBuilder {
	builder.targetDottedManager = targetDottedManager
	builder.targetDottedManagerFlag = true
	return builder
}

// 新职务
//
// 示例值：6969469557836760606
func (builder *CreateTransferInfoBuilder) TargetJob(targetJob string) *CreateTransferInfoBuilder {
	builder.targetJob = targetJob
	builder.targetJobFlag = true
	return builder
}

// 新序列
//
// 示例值：6967287547462419975
func (builder *CreateTransferInfoBuilder) TargetJobFamily(targetJobFamily string) *CreateTransferInfoBuilder {
	builder.targetJobFamily = targetJobFamily
	builder.targetJobFamilyFlag = true
	return builder
}

// 新级别
//
// 示例值：6972085707674355214
func (builder *CreateTransferInfoBuilder) TargetJobLevel(targetJobLevel string) *CreateTransferInfoBuilder {
	builder.targetJobLevel = targetJobLevel
	builder.targetJobLevelFlag = true
	return builder
}

// 新人员类型
//
// 示例值：7036268995372303885
func (builder *CreateTransferInfoBuilder) TargetWorkforceType(targetWorkforceType string) *CreateTransferInfoBuilder {
	builder.targetWorkforceType = targetWorkforceType
	builder.targetWorkforceTypeFlag = true
	return builder
}

// 新人员子类型
//
// 示例值：7036268995372303885
func (builder *CreateTransferInfoBuilder) TargetEmployeeSubtype(targetEmployeeSubtype string) *CreateTransferInfoBuilder {
	builder.targetEmployeeSubtype = targetEmployeeSubtype
	builder.targetEmployeeSubtypeFlag = true
	return builder
}

// 新公司
//
// 示例值：6974659700705068581
func (builder *CreateTransferInfoBuilder) TargetCompany(targetCompany string) *CreateTransferInfoBuilder {
	builder.targetCompany = targetCompany
	builder.targetCompanyFlag = true
	return builder
}

// 新合同编号
//
// 示例值：55333
func (builder *CreateTransferInfoBuilder) TargetContractNumber(targetContractNumber string) *CreateTransferInfoBuilder {
	builder.targetContractNumber = targetContractNumber
	builder.targetContractNumberFlag = true
	return builder
}

// 新合同类型
//
// 示例值：labor_contract
func (builder *CreateTransferInfoBuilder) TargetContractType(targetContractType string) *CreateTransferInfoBuilder {
	builder.targetContractType = targetContractType
	builder.targetContractTypeFlag = true
	return builder
}

// 新期限类型
//
// 示例值：fixed_term
func (builder *CreateTransferInfoBuilder) TargetDurationType(targetDurationType string) *CreateTransferInfoBuilder {
	builder.targetDurationType = targetDurationType
	builder.targetDurationTypeFlag = true
	return builder
}

// 新签订类型
//
// 示例值：new
func (builder *CreateTransferInfoBuilder) TargetSigningType(targetSigningType string) *CreateTransferInfoBuilder {
	builder.targetSigningType = targetSigningType
	builder.targetSigningTypeFlag = true
	return builder
}

// 新合同开始日期
//
// 示例值：2021-07-01
func (builder *CreateTransferInfoBuilder) TargetContractStartDate(targetContractStartDate string) *CreateTransferInfoBuilder {
	builder.targetContractStartDate = targetContractStartDate
	builder.targetContractStartDateFlag = true
	return builder
}

// 新合同结束日期
//
// 示例值：2024-07-01
func (builder *CreateTransferInfoBuilder) TargetContractEndDate(targetContractEndDate string) *CreateTransferInfoBuilder {
	builder.targetContractEndDate = targetContractEndDate
	builder.targetContractEndDateFlag = true
	return builder
}

// 新工时制度
//
// 示例值：6969087376740206087
func (builder *CreateTransferInfoBuilder) TargetWorkingHoursType(targetWorkingHoursType string) *CreateTransferInfoBuilder {
	builder.targetWorkingHoursType = targetWorkingHoursType
	builder.targetWorkingHoursTypeFlag = true
	return builder
}

// 新工作日历
//
// 示例值：6969087376740236087
func (builder *CreateTransferInfoBuilder) TargetWorkingCalendar(targetWorkingCalendar string) *CreateTransferInfoBuilder {
	builder.targetWorkingCalendar = targetWorkingCalendar
	builder.targetWorkingCalendarFlag = true
	return builder
}

// 新试用期预计结束日期
//
// 示例值：2021-11-17
func (builder *CreateTransferInfoBuilder) TargetProbationEndDate(targetProbationEndDate string) *CreateTransferInfoBuilder {
	builder.targetProbationEndDate = targetProbationEndDate
	builder.targetProbationEndDateFlag = true
	return builder
}

// 新周工作时长
//
// 示例值：160
func (builder *CreateTransferInfoBuilder) TargetWeeklyWorkingHours(targetWeeklyWorkingHours string) *CreateTransferInfoBuilder {
	builder.targetWeeklyWorkingHours = targetWeeklyWorkingHours
	builder.targetWeeklyWorkingHoursFlag = true
	return builder
}

// 新排班
//
// 示例值：non_work_shift
func (builder *CreateTransferInfoBuilder) TargetWorkShift(targetWorkShift string) *CreateTransferInfoBuilder {
	builder.targetWorkShift = targetWorkShift
	builder.targetWorkShiftFlag = true
	return builder
}

// 新成本中心分摊方式
//
// 示例值：
func (builder *CreateTransferInfoBuilder) TargetCostCenterRates(targetCostCenterRates []*JobDataCostCenter) *CreateTransferInfoBuilder {
	builder.targetCostCenterRates = targetCostCenterRates
	builder.targetCostCenterRatesFlag = true
	return builder
}

// 新工作信息
//
// 示例值：
func (builder *CreateTransferInfoBuilder) TargetEmploymentChange(targetEmploymentChange *TranferEmploymentInfo) *CreateTransferInfoBuilder {
	builder.targetEmploymentChange = targetEmploymentChange
	builder.targetEmploymentChangeFlag = true
	return builder
}

// 新职等
//
// 示例值：7289005963599693366
func (builder *CreateTransferInfoBuilder) TargetJobGrade(targetJobGrade string) *CreateTransferInfoBuilder {
	builder.targetJobGrade = targetJobGrade
	builder.targetJobGradeFlag = true
	return builder
}

// 新薪资类型
//
// 示例值：salary
func (builder *CreateTransferInfoBuilder) TargetCompensationType(targetCompensationType string) *CreateTransferInfoBuilder {
	builder.targetCompensationType = targetCompensationType
	builder.targetCompensationTypeFlag = true
	return builder
}

// 新任职公司
//
// 示例值：7289005963599693368
func (builder *CreateTransferInfoBuilder) TargetServiceCompany(targetServiceCompany string) *CreateTransferInfoBuilder {
	builder.targetServiceCompany = targetServiceCompany
	builder.targetServiceCompanyFlag = true
	return builder
}

// 新岗位
//
// 示例值：7289005963599693367
func (builder *CreateTransferInfoBuilder) TargetPosition(targetPosition string) *CreateTransferInfoBuilder {
	builder.targetPosition = targetPosition
	builder.targetPositionFlag = true
	return builder
}

// 新社保城市
//
// 示例值：7289005963599693367
func (builder *CreateTransferInfoBuilder) TargetSocialSecurityCity(targetSocialSecurityCity string) *CreateTransferInfoBuilder {
	builder.targetSocialSecurityCity = targetSocialSecurityCity
	builder.targetSocialSecurityCityFlag = true
	return builder
}

// 编制随人员一起调整
//
// 示例值：false
func (builder *CreateTransferInfoBuilder) IsTransferWithWorkforce(isTransferWithWorkforce bool) *CreateTransferInfoBuilder {
	builder.isTransferWithWorkforce = isTransferWithWorkforce
	builder.isTransferWithWorkforceFlag = true
	return builder
}

// 新通道
//
// 示例值：7289005963599693368
func (builder *CreateTransferInfoBuilder) TargetPathway(targetPathway string) *CreateTransferInfoBuilder {
	builder.targetPathway = targetPathway
	builder.targetPathwayFlag = true
	return builder
}

// 新分摊生效时间
//
// 示例值：2022-03-01
func (builder *CreateTransferInfoBuilder) TargetAllocationEffectiveTime(targetAllocationEffectiveTime string) *CreateTransferInfoBuilder {
	builder.targetAllocationEffectiveTime = targetAllocationEffectiveTime
	builder.targetAllocationEffectiveTimeFlag = true
	return builder
}

// 新分摊失效时间
//
// 示例值：2022-03-01
func (builder *CreateTransferInfoBuilder) TargetAllocationExpirationTime(targetAllocationExpirationTime string) *CreateTransferInfoBuilder {
	builder.targetAllocationExpirationTime = targetAllocationExpirationTime
	builder.targetAllocationExpirationTimeFlag = true
	return builder
}

// 新默认成本中心
//
// 示例值：7380264299728602661
func (builder *CreateTransferInfoBuilder) TargetDefaultCostCenter(targetDefaultCostCenter string) *CreateTransferInfoBuilder {
	builder.targetDefaultCostCenter = targetDefaultCostCenter
	builder.targetDefaultCostCenterFlag = true
	return builder
}

// 新默认成本中心是否继承
//
// 示例值：
func (builder *CreateTransferInfoBuilder) TargetIsDefaultCostCenterInherited(targetIsDefaultCostCenterInherited bool) *CreateTransferInfoBuilder {
	builder.targetIsDefaultCostCenterInherited = targetIsDefaultCostCenterInherited
	builder.targetIsDefaultCostCenterInheritedFlag = true
	return builder
}

func (builder *CreateTransferInfoBuilder) Build() *CreateTransferInfo {
	req := &CreateTransferInfo{}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.offerInfoFlag {
		req.OfferInfo = &builder.offerInfo

	}
	if builder.targetDottedManagerCleanFlag {
		req.TargetDottedManagerClean = &builder.targetDottedManagerClean

	}
	if builder.probationExistFlag {
		req.ProbationExist = &builder.probationExist

	}
	if builder.targetDepartmentFlag {
		req.TargetDepartment = &builder.targetDepartment

	}
	if builder.targetWorkLocationFlag {
		req.TargetWorkLocation = &builder.targetWorkLocation

	}
	if builder.targetDirectManagerFlag {
		req.TargetDirectManager = &builder.targetDirectManager

	}
	if builder.targetDottedManagerFlag {
		req.TargetDottedManager = &builder.targetDottedManager

	}
	if builder.targetJobFlag {
		req.TargetJob = &builder.targetJob

	}
	if builder.targetJobFamilyFlag {
		req.TargetJobFamily = &builder.targetJobFamily

	}
	if builder.targetJobLevelFlag {
		req.TargetJobLevel = &builder.targetJobLevel

	}
	if builder.targetWorkforceTypeFlag {
		req.TargetWorkforceType = &builder.targetWorkforceType

	}
	if builder.targetEmployeeSubtypeFlag {
		req.TargetEmployeeSubtype = &builder.targetEmployeeSubtype

	}
	if builder.targetCompanyFlag {
		req.TargetCompany = &builder.targetCompany

	}
	if builder.targetContractNumberFlag {
		req.TargetContractNumber = &builder.targetContractNumber

	}
	if builder.targetContractTypeFlag {
		req.TargetContractType = &builder.targetContractType

	}
	if builder.targetDurationTypeFlag {
		req.TargetDurationType = &builder.targetDurationType

	}
	if builder.targetSigningTypeFlag {
		req.TargetSigningType = &builder.targetSigningType

	}
	if builder.targetContractStartDateFlag {
		req.TargetContractStartDate = &builder.targetContractStartDate

	}
	if builder.targetContractEndDateFlag {
		req.TargetContractEndDate = &builder.targetContractEndDate

	}
	if builder.targetWorkingHoursTypeFlag {
		req.TargetWorkingHoursType = &builder.targetWorkingHoursType

	}
	if builder.targetWorkingCalendarFlag {
		req.TargetWorkingCalendar = &builder.targetWorkingCalendar

	}
	if builder.targetProbationEndDateFlag {
		req.TargetProbationEndDate = &builder.targetProbationEndDate

	}
	if builder.targetWeeklyWorkingHoursFlag {
		req.TargetWeeklyWorkingHours = &builder.targetWeeklyWorkingHours

	}
	if builder.targetWorkShiftFlag {
		req.TargetWorkShift = &builder.targetWorkShift

	}
	if builder.targetCostCenterRatesFlag {
		req.TargetCostCenterRates = builder.targetCostCenterRates
	}
	if builder.targetEmploymentChangeFlag {
		req.TargetEmploymentChange = builder.targetEmploymentChange
	}
	if builder.targetJobGradeFlag {
		req.TargetJobGrade = &builder.targetJobGrade

	}
	if builder.targetCompensationTypeFlag {
		req.TargetCompensationType = &builder.targetCompensationType

	}
	if builder.targetServiceCompanyFlag {
		req.TargetServiceCompany = &builder.targetServiceCompany

	}
	if builder.targetPositionFlag {
		req.TargetPosition = &builder.targetPosition

	}
	if builder.targetSocialSecurityCityFlag {
		req.TargetSocialSecurityCity = &builder.targetSocialSecurityCity

	}
	if builder.isTransferWithWorkforceFlag {
		req.IsTransferWithWorkforce = &builder.isTransferWithWorkforce

	}
	if builder.targetPathwayFlag {
		req.TargetPathway = &builder.targetPathway

	}
	if builder.targetAllocationEffectiveTimeFlag {
		req.TargetAllocationEffectiveTime = &builder.targetAllocationEffectiveTime

	}
	if builder.targetAllocationExpirationTimeFlag {
		req.TargetAllocationExpirationTime = &builder.targetAllocationExpirationTime

	}
	if builder.targetDefaultCostCenterFlag {
		req.TargetDefaultCostCenter = &builder.targetDefaultCostCenter

	}
	if builder.targetIsDefaultCostCenterInheritedFlag {
		req.TargetIsDefaultCostCenterInherited = &builder.targetIsDefaultCostCenterInherited

	}
	return req
}

type Currency struct {
	CurrencyId *string `json:"currency_id,omitempty"` // 货币 ID

	CountryRegionIdList []string `json:"country_region_id_list,omitempty"` // 货币所属国家/地区 ID 列表，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得

	CurrencyName []*I18n `json:"currency_name,omitempty"` // 货币名称

	NumericCode *int `json:"numeric_code,omitempty"` // 数字代码（ISO 4217）

	CurrencyAlpha3Code *string `json:"currency_alpha_3_code,omitempty"` // 三位字母代码（ISO 4217）

	Status *int `json:"status,omitempty"` // 状态
}

type CurrencyBuilder struct {
	currencyId     string // 货币 ID
	currencyIdFlag bool

	countryRegionIdList     []string // 货币所属国家/地区 ID 列表，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
	countryRegionIdListFlag bool

	currencyName     []*I18n // 货币名称
	currencyNameFlag bool

	numericCode     int // 数字代码（ISO 4217）
	numericCodeFlag bool

	currencyAlpha3Code     string // 三位字母代码（ISO 4217）
	currencyAlpha3CodeFlag bool

	status     int // 状态
	statusFlag bool
}

func NewCurrencyBuilder() *CurrencyBuilder {
	builder := &CurrencyBuilder{}
	return builder
}

// 货币 ID
//
// 示例值：6863329932261459464
func (builder *CurrencyBuilder) CurrencyId(currencyId string) *CurrencyBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 货币所属国家/地区 ID 列表，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
//
// 示例值：
func (builder *CurrencyBuilder) CountryRegionIdList(countryRegionIdList []string) *CurrencyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 货币名称
//
// 示例值：
func (builder *CurrencyBuilder) CurrencyName(currencyName []*I18n) *CurrencyBuilder {
	builder.currencyName = currencyName
	builder.currencyNameFlag = true
	return builder
}

// 数字代码（ISO 4217）
//
// 示例值：156
func (builder *CurrencyBuilder) NumericCode(numericCode int) *CurrencyBuilder {
	builder.numericCode = numericCode
	builder.numericCodeFlag = true
	return builder
}

// 三位字母代码（ISO 4217）
//
// 示例值：CNY
func (builder *CurrencyBuilder) CurrencyAlpha3Code(currencyAlpha3Code string) *CurrencyBuilder {
	builder.currencyAlpha3Code = currencyAlpha3Code
	builder.currencyAlpha3CodeFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *CurrencyBuilder) Status(status int) *CurrencyBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *CurrencyBuilder) Build() *Currency {
	req := &Currency{}
	if builder.currencyIdFlag {
		req.CurrencyId = &builder.currencyId

	}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.currencyNameFlag {
		req.CurrencyName = builder.currencyName
	}
	if builder.numericCodeFlag {
		req.NumericCode = &builder.numericCode

	}
	if builder.currencyAlpha3CodeFlag {
		req.CurrencyAlpha3Code = &builder.currencyAlpha3Code

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type CustomFieldData struct {
	CustomApiName *string `json:"custom_api_name,omitempty"` // 自定义字段 apiname，即自定义字段的唯一标识

	Name *CustomName `json:"name,omitempty"` // 自定义字段名称

	Type *int `json:"type,omitempty"` // 自定义字段类型

	Value *string `json:"value,omitempty"` // 字段值，是 json 转义后的字符串，根据元数据定义不同，字段格式不同（如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05"）
}

type CustomFieldDataBuilder struct {
	customApiName     string // 自定义字段 apiname，即自定义字段的唯一标识
	customApiNameFlag bool

	name     *CustomName // 自定义字段名称
	nameFlag bool

	type_    int // 自定义字段类型
	typeFlag bool

	value     string // 字段值，是 json 转义后的字符串，根据元数据定义不同，字段格式不同（如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05"）
	valueFlag bool
}

func NewCustomFieldDataBuilder() *CustomFieldDataBuilder {
	builder := &CustomFieldDataBuilder{}
	return builder
}

// 自定义字段 apiname，即自定义字段的唯一标识
//
// 示例值：name
func (builder *CustomFieldDataBuilder) CustomApiName(customApiName string) *CustomFieldDataBuilder {
	builder.customApiName = customApiName
	builder.customApiNameFlag = true
	return builder
}

// 自定义字段名称
//
// 示例值：
func (builder *CustomFieldDataBuilder) Name(name *CustomName) *CustomFieldDataBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 自定义字段类型
//
// 示例值：1
func (builder *CustomFieldDataBuilder) Type(type_ int) *CustomFieldDataBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 字段值，是 json 转义后的字符串，根据元数据定义不同，字段格式不同（如 123, 123.23, "true", ["id1","id2"], "2006-01-02 15:04:05"）
//
// 示例值：\"231\"
func (builder *CustomFieldDataBuilder) Value(value string) *CustomFieldDataBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *CustomFieldDataBuilder) Build() *CustomFieldData {
	req := &CustomFieldData{}
	if builder.customApiNameFlag {
		req.CustomApiName = &builder.customApiName

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type CustomName struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文

	EnUs *string `json:"en_us,omitempty"` // 英文
}

type CustomNameBuilder struct {
	zhCn     string // 中文
	zhCnFlag bool

	enUs     string // 英文
	enUsFlag bool
}

func NewCustomNameBuilder() *CustomNameBuilder {
	builder := &CustomNameBuilder{}
	return builder
}

// 中文
//
// 示例值：自定义姓名
func (builder *CustomNameBuilder) ZhCn(zhCn string) *CustomNameBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文
//
// 示例值：Custom Name
func (builder *CustomNameBuilder) EnUs(enUs string) *CustomNameBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *CustomNameBuilder) Build() *CustomName {
	req := &CustomName{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type CustomOrg struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 组织类型编码

	Names []*I18n `json:"names,omitempty"` // 组织名称

	Code *string `json:"code,omitempty"` // 编码

	ParentId *string `json:"parent_id,omitempty"` // 上级组织 ID

	ManagerIds []string `json:"manager_ids,omitempty"` // 负责人ID 列表

	Description []*I18n `json:"description,omitempty"` // 描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	OrgRoles []*OrgRole `json:"org_roles,omitempty"` // 组织角色

	MatchRuleGroups []*MatchRules `json:"match_rule_groups,omitempty"` // 匹配规则组，组间并集

	Active *bool `json:"active,omitempty"` // 是否启用

	OrgId *string `json:"org_id,omitempty"` // 组织ID

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type CustomOrgBuilder struct {
	objectApiName     string // 组织类型编码
	objectApiNameFlag bool

	names     []*I18n // 组织名称
	namesFlag bool

	code     string // 编码
	codeFlag bool

	parentId     string // 上级组织 ID
	parentIdFlag bool

	managerIds     []string // 负责人ID 列表
	managerIdsFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	orgRoles     []*OrgRole // 组织角色
	orgRolesFlag bool

	matchRuleGroups     []*MatchRules // 匹配规则组，组间并集
	matchRuleGroupsFlag bool

	active     bool // 是否启用
	activeFlag bool

	orgId     string // 组织ID
	orgIdFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewCustomOrgBuilder() *CustomOrgBuilder {
	builder := &CustomOrgBuilder{}
	return builder
}

// 组织类型编码
//
// 示例值：apiname__c
func (builder *CustomOrgBuilder) ObjectApiName(objectApiName string) *CustomOrgBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 组织名称
//
// 示例值：
func (builder *CustomOrgBuilder) Names(names []*I18n) *CustomOrgBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 编码
//
// 示例值：MDPD00000023
func (builder *CustomOrgBuilder) Code(code string) *CustomOrgBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级组织 ID
//
// 示例值：6862995757234914824
func (builder *CustomOrgBuilder) ParentId(parentId string) *CustomOrgBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 负责人ID 列表
//
// 示例值：
func (builder *CustomOrgBuilder) ManagerIds(managerIds []string) *CustomOrgBuilder {
	builder.managerIds = managerIds
	builder.managerIdsFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *CustomOrgBuilder) Description(description []*I18n) *CustomOrgBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *CustomOrgBuilder) EffectiveTime(effectiveTime string) *CustomOrgBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 组织角色
//
// 示例值：
func (builder *CustomOrgBuilder) OrgRoles(orgRoles []*OrgRole) *CustomOrgBuilder {
	builder.orgRoles = orgRoles
	builder.orgRolesFlag = true
	return builder
}

// 匹配规则组，组间并集
//
// 示例值：
func (builder *CustomOrgBuilder) MatchRuleGroups(matchRuleGroups []*MatchRules) *CustomOrgBuilder {
	builder.matchRuleGroups = matchRuleGroups
	builder.matchRuleGroupsFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *CustomOrgBuilder) Active(active bool) *CustomOrgBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 组织ID
//
// 示例值：6862995757234914824
func (builder *CustomOrgBuilder) OrgId(orgId string) *CustomOrgBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CustomOrgBuilder) CustomFields(customFields []*CustomFieldData) *CustomOrgBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *CustomOrgBuilder) Build() *CustomOrg {
	req := &CustomOrg{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.managerIdsFlag {
		req.ManagerIds = builder.managerIds
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.orgRolesFlag {
		req.OrgRoles = builder.orgRoles
	}
	if builder.matchRuleGroupsFlag {
		req.MatchRuleGroups = builder.matchRuleGroups
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type CustomOrgCreate struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 组织类型编码

	Names []*I18n `json:"names,omitempty"` // 组织名称

	Code *string `json:"code,omitempty"` // 编码

	ParentId *string `json:"parent_id,omitempty"` // 上级组织 ID

	ManagerIds []string `json:"manager_ids,omitempty"` // 负责人ID 列表

	Description []*I18n `json:"description,omitempty"` // 描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	OrgRoles []*OrgRoleUpdate `json:"org_roles,omitempty"` // 组织角色

	MatchRuleGroups []*MatchRules `json:"match_rule_groups,omitempty"` // 匹配规则组 ，组间并集

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type CustomOrgCreateBuilder struct {
	objectApiName     string // 组织类型编码
	objectApiNameFlag bool

	names     []*I18n // 组织名称
	namesFlag bool

	code     string // 编码
	codeFlag bool

	parentId     string // 上级组织 ID
	parentIdFlag bool

	managerIds     []string // 负责人ID 列表
	managerIdsFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	orgRoles     []*OrgRoleUpdate // 组织角色
	orgRolesFlag bool

	matchRuleGroups     []*MatchRules // 匹配规则组 ，组间并集
	matchRuleGroupsFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewCustomOrgCreateBuilder() *CustomOrgCreateBuilder {
	builder := &CustomOrgCreateBuilder{}
	return builder
}

// 组织类型编码
//
// 示例值：apiname__c
func (builder *CustomOrgCreateBuilder) ObjectApiName(objectApiName string) *CustomOrgCreateBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 组织名称
//
// 示例值：
func (builder *CustomOrgCreateBuilder) Names(names []*I18n) *CustomOrgCreateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 编码
//
// 示例值：MDPD00000023
func (builder *CustomOrgCreateBuilder) Code(code string) *CustomOrgCreateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级组织 ID
//
// 示例值：6862995757234914824
func (builder *CustomOrgCreateBuilder) ParentId(parentId string) *CustomOrgCreateBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 负责人ID 列表
//
// 示例值：
func (builder *CustomOrgCreateBuilder) ManagerIds(managerIds []string) *CustomOrgCreateBuilder {
	builder.managerIds = managerIds
	builder.managerIdsFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *CustomOrgCreateBuilder) Description(description []*I18n) *CustomOrgCreateBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *CustomOrgCreateBuilder) EffectiveTime(effectiveTime string) *CustomOrgCreateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 组织角色
//
// 示例值：
func (builder *CustomOrgCreateBuilder) OrgRoles(orgRoles []*OrgRoleUpdate) *CustomOrgCreateBuilder {
	builder.orgRoles = orgRoles
	builder.orgRolesFlag = true
	return builder
}

// 匹配规则组 ，组间并集
//
// 示例值：
func (builder *CustomOrgCreateBuilder) MatchRuleGroups(matchRuleGroups []*MatchRules) *CustomOrgCreateBuilder {
	builder.matchRuleGroups = matchRuleGroups
	builder.matchRuleGroupsFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CustomOrgCreateBuilder) CustomFields(customFields []*CustomFieldData) *CustomOrgCreateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *CustomOrgCreateBuilder) Build() *CustomOrgCreate {
	req := &CustomOrgCreate{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.managerIdsFlag {
		req.ManagerIds = builder.managerIds
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.orgRolesFlag {
		req.OrgRoles = builder.orgRoles
	}
	if builder.matchRuleGroupsFlag {
		req.MatchRuleGroups = builder.matchRuleGroups
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type CustomOrgFilter struct {
	ApiName *string `json:"api_name,omitempty"` // 自定义组织api name

	Ids []string `json:"ids,omitempty"` // id list
}

type CustomOrgFilterBuilder struct {
	apiName     string // 自定义组织api name
	apiNameFlag bool

	ids     []string // id list
	idsFlag bool
}

func NewCustomOrgFilterBuilder() *CustomOrgFilterBuilder {
	builder := &CustomOrgFilterBuilder{}
	return builder
}

// 自定义组织api name
//
// 示例值：custom_org_04__c
func (builder *CustomOrgFilterBuilder) ApiName(apiName string) *CustomOrgFilterBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// id list
//
// 示例值：
func (builder *CustomOrgFilterBuilder) Ids(ids []string) *CustomOrgFilterBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

func (builder *CustomOrgFilterBuilder) Build() *CustomOrgFilter {
	req := &CustomOrgFilter{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	return req
}

type CustomOrgList struct {
	CustomOrgName *I18nV2 `json:"custom_org_name,omitempty"` // 自定义组织名称

	CustomOrgId *string `json:"custom_org_id,omitempty"` // 自定义组织ID

	Rate *string `json:"rate,omitempty"` // 比例
}

type CustomOrgListBuilder struct {
	customOrgName     *I18nV2 // 自定义组织名称
	customOrgNameFlag bool

	customOrgId     string // 自定义组织ID
	customOrgIdFlag bool

	rate     string // 比例
	rateFlag bool
}

func NewCustomOrgListBuilder() *CustomOrgListBuilder {
	builder := &CustomOrgListBuilder{}
	return builder
}

// 自定义组织名称
//
// 示例值：编制单元
func (builder *CustomOrgListBuilder) CustomOrgName(customOrgName *I18nV2) *CustomOrgListBuilder {
	builder.customOrgName = customOrgName
	builder.customOrgNameFlag = true
	return builder
}

// 自定义组织ID
//
// 示例值：7293641346149138452
func (builder *CustomOrgListBuilder) CustomOrgId(customOrgId string) *CustomOrgListBuilder {
	builder.customOrgId = customOrgId
	builder.customOrgIdFlag = true
	return builder
}

// 比例
//
// 示例值：42.98
func (builder *CustomOrgListBuilder) Rate(rate string) *CustomOrgListBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

func (builder *CustomOrgListBuilder) Build() *CustomOrgList {
	req := &CustomOrgList{}
	if builder.customOrgNameFlag {
		req.CustomOrgName = builder.customOrgName
	}
	if builder.customOrgIdFlag {
		req.CustomOrgId = &builder.customOrgId

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	return req
}

type CustomOrgUpdate struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 组织类型编码

	Names []*I18n `json:"names,omitempty"` // 组织名称

	Code *string `json:"code,omitempty"` // 组织编码

	ParentId *string `json:"parent_id,omitempty"` // 上级组织 ID

	ManagerIds []string `json:"manager_ids,omitempty"` // 负责人ID 列表

	Description []*I18n `json:"description,omitempty"` // 描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	OrgRoles []*OrgRoleUpdate `json:"org_roles,omitempty"` // 组织角色

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type CustomOrgUpdateBuilder struct {
	objectApiName     string // 组织类型编码
	objectApiNameFlag bool

	names     []*I18n // 组织名称
	namesFlag bool

	code     string // 组织编码
	codeFlag bool

	parentId     string // 上级组织 ID
	parentIdFlag bool

	managerIds     []string // 负责人ID 列表
	managerIdsFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	orgRoles     []*OrgRoleUpdate // 组织角色
	orgRolesFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewCustomOrgUpdateBuilder() *CustomOrgUpdateBuilder {
	builder := &CustomOrgUpdateBuilder{}
	return builder
}

// 组织类型编码
//
// 示例值：apiname__c
func (builder *CustomOrgUpdateBuilder) ObjectApiName(objectApiName string) *CustomOrgUpdateBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 组织名称
//
// 示例值：
func (builder *CustomOrgUpdateBuilder) Names(names []*I18n) *CustomOrgUpdateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 组织编码
//
// 示例值：MDPD00000023
func (builder *CustomOrgUpdateBuilder) Code(code string) *CustomOrgUpdateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级组织 ID
//
// 示例值：6862995757234914824
func (builder *CustomOrgUpdateBuilder) ParentId(parentId string) *CustomOrgUpdateBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 负责人ID 列表
//
// 示例值：
func (builder *CustomOrgUpdateBuilder) ManagerIds(managerIds []string) *CustomOrgUpdateBuilder {
	builder.managerIds = managerIds
	builder.managerIdsFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *CustomOrgUpdateBuilder) Description(description []*I18n) *CustomOrgUpdateBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *CustomOrgUpdateBuilder) EffectiveTime(effectiveTime string) *CustomOrgUpdateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 组织角色
//
// 示例值：
func (builder *CustomOrgUpdateBuilder) OrgRoles(orgRoles []*OrgRoleUpdate) *CustomOrgUpdateBuilder {
	builder.orgRoles = orgRoles
	builder.orgRolesFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *CustomOrgUpdateBuilder) CustomFields(customFields []*CustomFieldData) *CustomOrgUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *CustomOrgUpdateBuilder) Build() *CustomOrgUpdate {
	req := &CustomOrgUpdate{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.managerIdsFlag {
		req.ManagerIds = builder.managerIds
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.orgRolesFlag {
		req.OrgRoles = builder.orgRoles
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type CustomOrgWithRate struct {
	Id *string `json:"id,omitempty"` // 自定义组织id

	Rate *string `json:"rate,omitempty"` // 比例
}

type CustomOrgWithRateBuilder struct {
	id     string // 自定义组织id
	idFlag bool

	rate     string // 比例
	rateFlag bool
}

func NewCustomOrgWithRateBuilder() *CustomOrgWithRateBuilder {
	builder := &CustomOrgWithRateBuilder{}
	return builder
}

// 自定义组织id
//
// 示例值：7382048365313261588
func (builder *CustomOrgWithRateBuilder) Id(id string) *CustomOrgWithRateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 比例
//
// 示例值：50.01
func (builder *CustomOrgWithRateBuilder) Rate(rate string) *CustomOrgWithRateBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

func (builder *CustomOrgWithRateBuilder) Build() *CustomOrgWithRate {
	req := &CustomOrgWithRate{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	return req
}

type CustomValue struct {
	ValueBoolean *bool `json:"value_boolean,omitempty"` // 布尔类型的字段值

	ValueEnumId *string `json:"value_enum_id,omitempty"` // 枚举类型的字段的枚举值 ID
}

type CustomValueBuilder struct {
	valueBoolean     bool // 布尔类型的字段值
	valueBooleanFlag bool

	valueEnumId     string // 枚举类型的字段的枚举值 ID
	valueEnumIdFlag bool
}

func NewCustomValueBuilder() *CustomValueBuilder {
	builder := &CustomValueBuilder{}
	return builder
}

// 布尔类型的字段值
//
// 示例值：false
func (builder *CustomValueBuilder) ValueBoolean(valueBoolean bool) *CustomValueBuilder {
	builder.valueBoolean = valueBoolean
	builder.valueBooleanFlag = true
	return builder
}

// 枚举类型的字段的枚举值 ID
//
// 示例值：sadasdas
func (builder *CustomValueBuilder) ValueEnumId(valueEnumId string) *CustomValueBuilder {
	builder.valueEnumId = valueEnumId
	builder.valueEnumIdFlag = true
	return builder
}

func (builder *CustomValueBuilder) Build() *CustomValue {
	req := &CustomValue{}
	if builder.valueBooleanFlag {
		req.ValueBoolean = &builder.valueBoolean

	}
	if builder.valueEnumIdFlag {
		req.ValueEnumId = &builder.valueEnumId

	}
	return req
}

type DataengineI18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文值

	EnUs *string `json:"en_us,omitempty"` // 英文值
}

type DataengineI18nBuilder struct {
	zhCn     string // 中文值
	zhCnFlag bool

	enUs     string // 英文值
	enUsFlag bool
}

func NewDataengineI18nBuilder() *DataengineI18nBuilder {
	builder := &DataengineI18nBuilder{}
	return builder
}

// 中文值
//
// 示例值：中文
func (builder *DataengineI18nBuilder) ZhCn(zhCn string) *DataengineI18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文值
//
// 示例值：English
func (builder *DataengineI18nBuilder) EnUs(enUs string) *DataengineI18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *DataengineI18nBuilder) Build() *DataengineI18n {
	req := &DataengineI18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type DefaultCostCenter struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效日期

	IsHerit *bool `json:"is_herit,omitempty"` // 是否继承岗位/部门的默认成本中心

	InheritSource *string `json:"inherit_source,omitempty"` // 继承来源
}

type DefaultCostCenterBuilder struct {
	costCenterId     string // 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
	costCenterIdFlag bool

	effectiveTime     string // 生效日期
	effectiveTimeFlag bool

	isHerit     bool // 是否继承岗位/部门的默认成本中心
	isHeritFlag bool

	inheritSource     string // 继承来源
	inheritSourceFlag bool
}

func NewDefaultCostCenterBuilder() *DefaultCostCenterBuilder {
	builder := &DefaultCostCenterBuilder{}
	return builder
}

// 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
//
// 示例值：6950635856373745165
func (builder *DefaultCostCenterBuilder) CostCenterId(costCenterId string) *DefaultCostCenterBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 生效日期
//
// 示例值：2025-01-01
func (builder *DefaultCostCenterBuilder) EffectiveTime(effectiveTime string) *DefaultCostCenterBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 是否继承岗位/部门的默认成本中心
//
// 示例值：false
func (builder *DefaultCostCenterBuilder) IsHerit(isHerit bool) *DefaultCostCenterBuilder {
	builder.isHerit = isHerit
	builder.isHeritFlag = true
	return builder
}

// 继承来源
//
// 示例值：department
func (builder *DefaultCostCenterBuilder) InheritSource(inheritSource string) *DefaultCostCenterBuilder {
	builder.inheritSource = inheritSource
	builder.inheritSourceFlag = true
	return builder
}

func (builder *DefaultCostCenterBuilder) Build() *DefaultCostCenter {
	req := &DefaultCostCenter{}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.isHeritFlag {
		req.IsHerit = &builder.isHerit

	}
	if builder.inheritSourceFlag {
		req.InheritSource = &builder.inheritSource

	}
	return req
}

type DefaultCostCenterRecord struct {
	Reason *string `json:"reason,omitempty"` // 变更原因

	IsInherit *bool `json:"is_inherit,omitempty"` // 是否继承

	CostCenterId *CostCenterId `json:"cost_center_id,omitempty"` // 默认成本中心
}

type DefaultCostCenterRecordBuilder struct {
	reason     string // 变更原因
	reasonFlag bool

	isInherit     bool // 是否继承
	isInheritFlag bool

	costCenterId     *CostCenterId // 默认成本中心
	costCenterIdFlag bool
}

func NewDefaultCostCenterRecordBuilder() *DefaultCostCenterRecordBuilder {
	builder := &DefaultCostCenterRecordBuilder{}
	return builder
}

// 变更原因
//
// 示例值：默认成本中心变更
func (builder *DefaultCostCenterRecordBuilder) Reason(reason string) *DefaultCostCenterRecordBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 是否继承
//
// 示例值：true
func (builder *DefaultCostCenterRecordBuilder) IsInherit(isInherit bool) *DefaultCostCenterRecordBuilder {
	builder.isInherit = isInherit
	builder.isInheritFlag = true
	return builder
}

// 默认成本中心
//
// 示例值：
func (builder *DefaultCostCenterRecordBuilder) CostCenterId(costCenterId *CostCenterId) *DefaultCostCenterRecordBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

func (builder *DefaultCostCenterRecordBuilder) Build() *DefaultCostCenterRecord {
	req := &DefaultCostCenterRecord{}
	if builder.reasonFlag {
		req.Reason = &builder.reason

	}
	if builder.isInheritFlag {
		req.IsInherit = &builder.isInherit

	}
	if builder.costCenterIdFlag {
		req.CostCenterId = builder.costCenterId
	}
	return req
}

type Department struct {
	Id *string `json:"id,omitempty"` // 部门 ID

	VersionId *string `json:"version_id,omitempty"` // 部门记录版本 ID

	DepartmentName []*I18n `json:"department_name,omitempty"` // 部门名称

	SubType *Enum `json:"sub_type,omitempty"` // 部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得

	ParentDepartmentId *string `json:"parent_department_id,omitempty"` // 上级部门 ID

	Manager *string `json:"manager,omitempty"` // 部门负责人雇佣 ID，枚举值及详细信息可通过【查询员工信息】接口查询获得

	TreeOrder *string `json:"tree_order,omitempty"` // 树形排序，代表同层级的部门排序序号

	ListOrder *string `json:"list_order,omitempty"` // 列表排序，代表所有部门的混排序号

	Code *string `json:"code,omitempty"` // 编码

	IsRoot *bool `json:"is_root,omitempty"` // 是否根部门

	IsConfidential *bool `json:"is_confidential,omitempty"` // 是否保密

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效日期

	Active *bool `json:"active,omitempty"` // 是否启用

	Description []*I18n `json:"description,omitempty"` // 描述

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	StaffingModel *Enum `json:"staffing_model,omitempty"` // 是否使用职务

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心id

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间

	CreatedBy *string `json:"created_by,omitempty"` // 创建人

	UpdatedBy *string `json:"updated_by,omitempty"` // 更新人

	RecordCreatedTime *string `json:"record_created_time,omitempty"` // 记录创建时间

	RecordUpdatedTime *string `json:"record_updated_time,omitempty"` // 记录更新时间

	RecordCreatedBy *string `json:"record_created_by,omitempty"` // 记录创建人

	RecordUpdatedBy *string `json:"record_updated_by,omitempty"` // 记录更新人
}

type DepartmentBuilder struct {
	id     string // 部门 ID
	idFlag bool

	versionId     string // 部门记录版本 ID
	versionIdFlag bool

	departmentName     []*I18n // 部门名称
	departmentNameFlag bool

	subType     *Enum // 部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
	subTypeFlag bool

	parentDepartmentId     string // 上级部门 ID
	parentDepartmentIdFlag bool

	manager     string // 部门负责人雇佣 ID，枚举值及详细信息可通过【查询员工信息】接口查询获得
	managerFlag bool

	treeOrder     string // 树形排序，代表同层级的部门排序序号
	treeOrderFlag bool

	listOrder     string // 列表排序，代表所有部门的混排序号
	listOrderFlag bool

	code     string // 编码
	codeFlag bool

	isRoot     bool // 是否根部门
	isRootFlag bool

	isConfidential     bool // 是否保密
	isConfidentialFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	expirationDate     string // 失效日期
	expirationDateFlag bool

	active     bool // 是否启用
	activeFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	staffingModel     *Enum // 是否使用职务
	staffingModelFlag bool

	costCenterId     string // 成本中心id
	costCenterIdFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool

	createdBy     string // 创建人
	createdByFlag bool

	updatedBy     string // 更新人
	updatedByFlag bool

	recordCreatedTime     string // 记录创建时间
	recordCreatedTimeFlag bool

	recordUpdatedTime     string // 记录更新时间
	recordUpdatedTimeFlag bool

	recordCreatedBy     string // 记录创建人
	recordCreatedByFlag bool

	recordUpdatedBy     string // 记录更新人
	recordUpdatedByFlag bool
}

func NewDepartmentBuilder() *DepartmentBuilder {
	builder := &DepartmentBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：4719456877659520852
func (builder *DepartmentBuilder) Id(id string) *DepartmentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 部门记录版本 ID
//
// 示例值：6890452208593372611
func (builder *DepartmentBuilder) VersionId(versionId string) *DepartmentBuilder {
	builder.versionId = versionId
	builder.versionIdFlag = true
	return builder
}

// 部门名称
//
// 示例值：
func (builder *DepartmentBuilder) DepartmentName(departmentName []*I18n) *DepartmentBuilder {
	builder.departmentName = departmentName
	builder.departmentNameFlag = true
	return builder
}

// 部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
//
// 示例值：
func (builder *DepartmentBuilder) SubType(subType *Enum) *DepartmentBuilder {
	builder.subType = subType
	builder.subTypeFlag = true
	return builder
}

// 上级部门 ID
//
// 示例值：4719456877659520111
func (builder *DepartmentBuilder) ParentDepartmentId(parentDepartmentId string) *DepartmentBuilder {
	builder.parentDepartmentId = parentDepartmentId
	builder.parentDepartmentIdFlag = true
	return builder
}

// 部门负责人雇佣 ID，枚举值及详细信息可通过【查询员工信息】接口查询获得
//
// 示例值：6893013238632416777
func (builder *DepartmentBuilder) Manager(manager string) *DepartmentBuilder {
	builder.manager = manager
	builder.managerFlag = true
	return builder
}

// 树形排序，代表同层级的部门排序序号
//
// 示例值：001000
func (builder *DepartmentBuilder) TreeOrder(treeOrder string) *DepartmentBuilder {
	builder.treeOrder = treeOrder
	builder.treeOrderFlag = true
	return builder
}

// 列表排序，代表所有部门的混排序号
//
// 示例值：001000-001000
func (builder *DepartmentBuilder) ListOrder(listOrder string) *DepartmentBuilder {
	builder.listOrder = listOrder
	builder.listOrderFlag = true
	return builder
}

// 编码
//
// 示例值：D00000456
func (builder *DepartmentBuilder) Code(code string) *DepartmentBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 是否根部门
//
// 示例值：false
func (builder *DepartmentBuilder) IsRoot(isRoot bool) *DepartmentBuilder {
	builder.isRoot = isRoot
	builder.isRootFlag = true
	return builder
}

// 是否保密
//
// 示例值：false
func (builder *DepartmentBuilder) IsConfidential(isConfidential bool) *DepartmentBuilder {
	builder.isConfidential = isConfidential
	builder.isConfidentialFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *DepartmentBuilder) EffectiveDate(effectiveDate string) *DepartmentBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效日期
//
// 示例值：2020-05-02
func (builder *DepartmentBuilder) ExpirationDate(expirationDate string) *DepartmentBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *DepartmentBuilder) Active(active bool) *DepartmentBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *DepartmentBuilder) Description(description []*I18n) *DepartmentBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DepartmentBuilder) CustomFields(customFields []*CustomFieldData) *DepartmentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 是否使用职务
//
// 示例值：
func (builder *DepartmentBuilder) StaffingModel(staffingModel *Enum) *DepartmentBuilder {
	builder.staffingModel = staffingModel
	builder.staffingModelFlag = true
	return builder
}

// 成本中心id
//
// 示例值：7142384817131652652
func (builder *DepartmentBuilder) CostCenterId(costCenterId string) *DepartmentBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 创建时间
//
// 示例值：2020-05-01 00:00:00
func (builder *DepartmentBuilder) CreatedTime(createdTime string) *DepartmentBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2020-05-02 00:00:00
func (builder *DepartmentBuilder) UpdatedTime(updatedTime string) *DepartmentBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

// 创建人
//
// 示例值：6893013238632416777
func (builder *DepartmentBuilder) CreatedBy(createdBy string) *DepartmentBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 更新人
//
// 示例值：6893013238632416777
func (builder *DepartmentBuilder) UpdatedBy(updatedBy string) *DepartmentBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 记录创建时间
//
// 示例值：2020-05-01 00:00:00
func (builder *DepartmentBuilder) RecordCreatedTime(recordCreatedTime string) *DepartmentBuilder {
	builder.recordCreatedTime = recordCreatedTime
	builder.recordCreatedTimeFlag = true
	return builder
}

// 记录更新时间
//
// 示例值：2020-05-02 00:00:00
func (builder *DepartmentBuilder) RecordUpdatedTime(recordUpdatedTime string) *DepartmentBuilder {
	builder.recordUpdatedTime = recordUpdatedTime
	builder.recordUpdatedTimeFlag = true
	return builder
}

// 记录创建人
//
// 示例值：6893013238632416777
func (builder *DepartmentBuilder) RecordCreatedBy(recordCreatedBy string) *DepartmentBuilder {
	builder.recordCreatedBy = recordCreatedBy
	builder.recordCreatedByFlag = true
	return builder
}

// 记录更新人
//
// 示例值：6893013238632416777
func (builder *DepartmentBuilder) RecordUpdatedBy(recordUpdatedBy string) *DepartmentBuilder {
	builder.recordUpdatedBy = recordUpdatedBy
	builder.recordUpdatedByFlag = true
	return builder
}

func (builder *DepartmentBuilder) Build() *Department {
	req := &Department{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.versionIdFlag {
		req.VersionId = &builder.versionId

	}
	if builder.departmentNameFlag {
		req.DepartmentName = builder.departmentName
	}
	if builder.subTypeFlag {
		req.SubType = builder.subType
	}
	if builder.parentDepartmentIdFlag {
		req.ParentDepartmentId = &builder.parentDepartmentId

	}
	if builder.managerFlag {
		req.Manager = &builder.manager

	}
	if builder.treeOrderFlag {
		req.TreeOrder = &builder.treeOrder

	}
	if builder.listOrderFlag {
		req.ListOrder = &builder.listOrder

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.isRootFlag {
		req.IsRoot = &builder.isRoot

	}
	if builder.isConfidentialFlag {
		req.IsConfidential = &builder.isConfidential

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.staffingModelFlag {
		req.StaffingModel = builder.staffingModel
	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.recordCreatedTimeFlag {
		req.RecordCreatedTime = &builder.recordCreatedTime

	}
	if builder.recordUpdatedTimeFlag {
		req.RecordUpdatedTime = &builder.recordUpdatedTime

	}
	if builder.recordCreatedByFlag {
		req.RecordCreatedBy = &builder.recordCreatedBy

	}
	if builder.recordUpdatedByFlag {
		req.RecordUpdatedBy = &builder.recordUpdatedBy

	}
	return req
}

type DepartmentAdjustRecord struct {
	RecordId *string `json:"record_id,omitempty"` // 部门调整记录 ID

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	DraftDepartmentId *string `json:"draft_department_id,omitempty"` // 调整部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID

	DepartmentChangeType *string `json:"department_change_type,omitempty"` // 调整类型

	IsConflict *bool `json:"is_conflict,omitempty"` // 是否冲突

	ChangeReasons []string `json:"change_reasons,omitempty"` // 调整原因

	ReorganizationInfo *ReorganizationInfo `json:"reorganization_info,omitempty"` // 调整详细信息
}

type DepartmentAdjustRecordBuilder struct {
	recordId     string // 部门调整记录 ID
	recordIdFlag bool

	departmentId     string // 部门 ID
	departmentIdFlag bool

	draftDepartmentId     string // 调整部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID
	draftDepartmentIdFlag bool

	departmentChangeType     string // 调整类型
	departmentChangeTypeFlag bool

	isConflict     bool // 是否冲突
	isConflictFlag bool

	changeReasons     []string // 调整原因
	changeReasonsFlag bool

	reorganizationInfo     *ReorganizationInfo // 调整详细信息
	reorganizationInfoFlag bool
}

func NewDepartmentAdjustRecordBuilder() *DepartmentAdjustRecordBuilder {
	builder := &DepartmentAdjustRecordBuilder{}
	return builder
}

// 部门调整记录 ID
//
// 示例值：6991776076699549697
func (builder *DepartmentAdjustRecordBuilder) RecordId(recordId string) *DepartmentAdjustRecordBuilder {
	builder.recordId = recordId
	builder.recordIdFlag = true
	return builder
}

// 部门 ID
//
// 示例值：6966236933198579208
func (builder *DepartmentAdjustRecordBuilder) DepartmentId(departmentId string) *DepartmentAdjustRecordBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 调整部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID
//
// 示例值：6966236933198579208
func (builder *DepartmentAdjustRecordBuilder) DraftDepartmentId(draftDepartmentId string) *DepartmentAdjustRecordBuilder {
	builder.draftDepartmentId = draftDepartmentId
	builder.draftDepartmentIdFlag = true
	return builder
}

// 调整类型
//
// 示例值：Create
func (builder *DepartmentAdjustRecordBuilder) DepartmentChangeType(departmentChangeType string) *DepartmentAdjustRecordBuilder {
	builder.departmentChangeType = departmentChangeType
	builder.departmentChangeTypeFlag = true
	return builder
}

// 是否冲突
//
// 示例值：false
func (builder *DepartmentAdjustRecordBuilder) IsConflict(isConflict bool) *DepartmentAdjustRecordBuilder {
	builder.isConflict = isConflict
	builder.isConflictFlag = true
	return builder
}

// 调整原因
//
// 示例值：
func (builder *DepartmentAdjustRecordBuilder) ChangeReasons(changeReasons []string) *DepartmentAdjustRecordBuilder {
	builder.changeReasons = changeReasons
	builder.changeReasonsFlag = true
	return builder
}

// 调整详细信息
//
// 示例值：
func (builder *DepartmentAdjustRecordBuilder) ReorganizationInfo(reorganizationInfo *ReorganizationInfo) *DepartmentAdjustRecordBuilder {
	builder.reorganizationInfo = reorganizationInfo
	builder.reorganizationInfoFlag = true
	return builder
}

func (builder *DepartmentAdjustRecordBuilder) Build() *DepartmentAdjustRecord {
	req := &DepartmentAdjustRecord{}
	if builder.recordIdFlag {
		req.RecordId = &builder.recordId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.draftDepartmentIdFlag {
		req.DraftDepartmentId = &builder.draftDepartmentId

	}
	if builder.departmentChangeTypeFlag {
		req.DepartmentChangeType = &builder.departmentChangeType

	}
	if builder.isConflictFlag {
		req.IsConflict = &builder.isConflict

	}
	if builder.changeReasonsFlag {
		req.ChangeReasons = builder.changeReasons
	}
	if builder.reorganizationInfoFlag {
		req.ReorganizationInfo = builder.reorganizationInfo
	}
	return req
}

type DepartmentChange struct {
	DepartmentChangeId *string `json:"department_change_id,omitempty"` // 部门调整记录 ID

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	DraftDepartmentId *string `json:"draft_department_id,omitempty"` // 调整部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID

	DepartmentChangeType *string `json:"department_change_type,omitempty"` // 调整类型

	DepartmentChangeStatus *int `json:"department_change_status,omitempty"` // 调整状态

	ReorganizationInfo *ReorganizationInfo `json:"reorganization_info,omitempty"` // 调整详细信息
}

type DepartmentChangeBuilder struct {
	departmentChangeId     string // 部门调整记录 ID
	departmentChangeIdFlag bool

	departmentId     string // 部门 ID
	departmentIdFlag bool

	draftDepartmentId     string // 调整部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID
	draftDepartmentIdFlag bool

	departmentChangeType     string // 调整类型
	departmentChangeTypeFlag bool

	departmentChangeStatus     int // 调整状态
	departmentChangeStatusFlag bool

	reorganizationInfo     *ReorganizationInfo // 调整详细信息
	reorganizationInfoFlag bool
}

func NewDepartmentChangeBuilder() *DepartmentChangeBuilder {
	builder := &DepartmentChangeBuilder{}
	return builder
}

// 部门调整记录 ID
//
// 示例值：6991776076699549697
func (builder *DepartmentChangeBuilder) DepartmentChangeId(departmentChangeId string) *DepartmentChangeBuilder {
	builder.departmentChangeId = departmentChangeId
	builder.departmentChangeIdFlag = true
	return builder
}

// 部门 ID
//
// 示例值：6966236933198579208
func (builder *DepartmentChangeBuilder) DepartmentId(departmentId string) *DepartmentChangeBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 调整部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID
//
// 示例值：6966236933198579208
func (builder *DepartmentChangeBuilder) DraftDepartmentId(draftDepartmentId string) *DepartmentChangeBuilder {
	builder.draftDepartmentId = draftDepartmentId
	builder.draftDepartmentIdFlag = true
	return builder
}

// 调整类型
//
// 示例值：Create
func (builder *DepartmentChangeBuilder) DepartmentChangeType(departmentChangeType string) *DepartmentChangeBuilder {
	builder.departmentChangeType = departmentChangeType
	builder.departmentChangeTypeFlag = true
	return builder
}

// 调整状态
//
// 示例值：0
func (builder *DepartmentChangeBuilder) DepartmentChangeStatus(departmentChangeStatus int) *DepartmentChangeBuilder {
	builder.departmentChangeStatus = departmentChangeStatus
	builder.departmentChangeStatusFlag = true
	return builder
}

// 调整详细信息
//
// 示例值：
func (builder *DepartmentChangeBuilder) ReorganizationInfo(reorganizationInfo *ReorganizationInfo) *DepartmentChangeBuilder {
	builder.reorganizationInfo = reorganizationInfo
	builder.reorganizationInfoFlag = true
	return builder
}

func (builder *DepartmentChangeBuilder) Build() *DepartmentChange {
	req := &DepartmentChange{}
	if builder.departmentChangeIdFlag {
		req.DepartmentChangeId = &builder.departmentChangeId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.draftDepartmentIdFlag {
		req.DraftDepartmentId = &builder.draftDepartmentId

	}
	if builder.departmentChangeTypeFlag {
		req.DepartmentChangeType = &builder.departmentChangeType

	}
	if builder.departmentChangeStatusFlag {
		req.DepartmentChangeStatus = &builder.departmentChangeStatus

	}
	if builder.reorganizationInfoFlag {
		req.ReorganizationInfo = builder.reorganizationInfo
	}
	return req
}

type DepartmentForPatch struct {
	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	SubType *Enum `json:"sub_type,omitempty"` // 子类型

	Manager *string `json:"manager,omitempty"` // 部门负责人

	IsConfidential *bool `json:"is_confidential,omitempty"` // 是否保密

	HiberarchyCommon *HiberarchyCommon `json:"hiberarchy_common,omitempty"` // 层级关系，内层字段见实体

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心id

	StaffingModel *Enum `json:"staffing_model,omitempty"` // 是否使用职务
}

type DepartmentForPatchBuilder struct {
	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	subType     *Enum // 子类型
	subTypeFlag bool

	manager     string // 部门负责人
	managerFlag bool

	isConfidential     bool // 是否保密
	isConfidentialFlag bool

	hiberarchyCommon     *HiberarchyCommon // 层级关系，内层字段见实体
	hiberarchyCommonFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	costCenterId     string // 成本中心id
	costCenterIdFlag bool

	staffingModel     *Enum // 是否使用职务
	staffingModelFlag bool
}

func NewDepartmentForPatchBuilder() *DepartmentForPatchBuilder {
	builder := &DepartmentForPatchBuilder{}
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：4719456877659520852
func (builder *DepartmentForPatchBuilder) Id(id string) *DepartmentForPatchBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 子类型
//
// 示例值：
func (builder *DepartmentForPatchBuilder) SubType(subType *Enum) *DepartmentForPatchBuilder {
	builder.subType = subType
	builder.subTypeFlag = true
	return builder
}

// 部门负责人
//
// 示例值：6893013238632416776
func (builder *DepartmentForPatchBuilder) Manager(manager string) *DepartmentForPatchBuilder {
	builder.manager = manager
	builder.managerFlag = true
	return builder
}

// 是否保密
//
// 示例值：true
func (builder *DepartmentForPatchBuilder) IsConfidential(isConfidential bool) *DepartmentForPatchBuilder {
	builder.isConfidential = isConfidential
	builder.isConfidentialFlag = true
	return builder
}

// 层级关系，内层字段见实体
//
// 示例值：
func (builder *DepartmentForPatchBuilder) HiberarchyCommon(hiberarchyCommon *HiberarchyCommon) *DepartmentForPatchBuilder {
	builder.hiberarchyCommon = hiberarchyCommon
	builder.hiberarchyCommonFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *DepartmentForPatchBuilder) EffectiveTime(effectiveTime string) *DepartmentForPatchBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DepartmentForPatchBuilder) CustomFields(customFields []*ObjectFieldData) *DepartmentForPatchBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 成本中心id
//
// 示例值：7142384817131652652
func (builder *DepartmentForPatchBuilder) CostCenterId(costCenterId string) *DepartmentForPatchBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 是否使用职务
//
// 示例值：
func (builder *DepartmentForPatchBuilder) StaffingModel(staffingModel *Enum) *DepartmentForPatchBuilder {
	builder.staffingModel = staffingModel
	builder.staffingModelFlag = true
	return builder
}

func (builder *DepartmentForPatchBuilder) Build() *DepartmentForPatch {
	req := &DepartmentForPatch{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.subTypeFlag {
		req.SubType = builder.subType
	}
	if builder.managerFlag {
		req.Manager = &builder.manager

	}
	if builder.isConfidentialFlag {
		req.IsConfidential = &builder.isConfidential

	}
	if builder.hiberarchyCommonFlag {
		req.HiberarchyCommon = builder.hiberarchyCommon
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.staffingModelFlag {
		req.StaffingModel = builder.staffingModel
	}
	return req
}

type DepartmentHrbp struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	HrbpIds []string `json:"hrbp_ids,omitempty"` // 部门 HRBP 雇佣 ID
}

type DepartmentHrbpBuilder struct {
	departmentId     string // 部门 ID
	departmentIdFlag bool

	hrbpIds     []string // 部门 HRBP 雇佣 ID
	hrbpIdsFlag bool
}

func NewDepartmentHrbpBuilder() *DepartmentHrbpBuilder {
	builder := &DepartmentHrbpBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：4719456877659520852
func (builder *DepartmentHrbpBuilder) DepartmentId(departmentId string) *DepartmentHrbpBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 部门 HRBP 雇佣 ID
//
// 示例值：
func (builder *DepartmentHrbpBuilder) HrbpIds(hrbpIds []string) *DepartmentHrbpBuilder {
	builder.hrbpIds = hrbpIds
	builder.hrbpIdsFlag = true
	return builder
}

func (builder *DepartmentHrbpBuilder) Build() *DepartmentHrbp {
	req := &DepartmentHrbp{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.hrbpIdsFlag {
		req.HrbpIds = builder.hrbpIds
	}
	return req
}

type DepartmentId struct {
	DepartmentId *string `json:"department_id,omitempty"` //

	OpenDepartmentId *string `json:"open_department_id,omitempty"` //
}

type DepartmentIdBuilder struct {
	departmentId     string //
	departmentIdFlag bool

	openDepartmentId     string //
	openDepartmentIdFlag bool
}

func NewDepartmentIdBuilder() *DepartmentIdBuilder {
	builder := &DepartmentIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) DepartmentId(departmentId string) *DepartmentIdBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) OpenDepartmentId(openDepartmentId string) *DepartmentIdBuilder {
	builder.openDepartmentId = openDepartmentId
	builder.openDepartmentIdFlag = true
	return builder
}

func (builder *DepartmentIdBuilder) Build() *DepartmentId {
	req := &DepartmentId{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.openDepartmentIdFlag {
		req.OpenDepartmentId = &builder.openDepartmentId

	}
	return req
}

type DepartmentParentInfo struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	DepartmentName []*I18n `json:"department_name,omitempty"` // 部门名称

	ParentDepartmentId *string `json:"parent_department_id,omitempty"` // 上级部门 ID

	Active *bool `json:"active,omitempty"` // 是否启用

	IsRoot *bool `json:"is_root,omitempty"` // 是否根部门
}

type DepartmentParentInfoBuilder struct {
	departmentId     string // 部门 ID
	departmentIdFlag bool

	departmentName     []*I18n // 部门名称
	departmentNameFlag bool

	parentDepartmentId     string // 上级部门 ID
	parentDepartmentIdFlag bool

	active     bool // 是否启用
	activeFlag bool

	isRoot     bool // 是否根部门
	isRootFlag bool
}

func NewDepartmentParentInfoBuilder() *DepartmentParentInfoBuilder {
	builder := &DepartmentParentInfoBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：4719456877659520852
func (builder *DepartmentParentInfoBuilder) DepartmentId(departmentId string) *DepartmentParentInfoBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 部门名称
//
// 示例值：
func (builder *DepartmentParentInfoBuilder) DepartmentName(departmentName []*I18n) *DepartmentParentInfoBuilder {
	builder.departmentName = departmentName
	builder.departmentNameFlag = true
	return builder
}

// 上级部门 ID
//
// 示例值：4719456877659520111
func (builder *DepartmentParentInfoBuilder) ParentDepartmentId(parentDepartmentId string) *DepartmentParentInfoBuilder {
	builder.parentDepartmentId = parentDepartmentId
	builder.parentDepartmentIdFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *DepartmentParentInfoBuilder) Active(active bool) *DepartmentParentInfoBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 是否根部门
//
// 示例值：true
func (builder *DepartmentParentInfoBuilder) IsRoot(isRoot bool) *DepartmentParentInfoBuilder {
	builder.isRoot = isRoot
	builder.isRootFlag = true
	return builder
}

func (builder *DepartmentParentInfoBuilder) Build() *DepartmentParentInfo {
	req := &DepartmentParentInfo{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.departmentNameFlag {
		req.DepartmentName = builder.departmentName
	}
	if builder.parentDepartmentIdFlag {
		req.ParentDepartmentId = &builder.parentDepartmentId

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.isRootFlag {
		req.IsRoot = &builder.isRoot

	}
	return req
}

type DepartmentParents struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	ParentDepartmentList []*DepartmentParentInfo `json:"parent_department_list,omitempty"` // 父部门列表，部门按照至底向上的顺序返回
}

type DepartmentParentsBuilder struct {
	departmentId     string // 部门 ID
	departmentIdFlag bool

	parentDepartmentList     []*DepartmentParentInfo // 父部门列表，部门按照至底向上的顺序返回
	parentDepartmentListFlag bool
}

func NewDepartmentParentsBuilder() *DepartmentParentsBuilder {
	builder := &DepartmentParentsBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：6893014062142064111
func (builder *DepartmentParentsBuilder) DepartmentId(departmentId string) *DepartmentParentsBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 父部门列表，部门按照至底向上的顺序返回
//
// 示例值：
func (builder *DepartmentParentsBuilder) ParentDepartmentList(parentDepartmentList []*DepartmentParentInfo) *DepartmentParentsBuilder {
	builder.parentDepartmentList = parentDepartmentList
	builder.parentDepartmentListFlag = true
	return builder
}

func (builder *DepartmentParentsBuilder) Build() *DepartmentParents {
	req := &DepartmentParents{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.parentDepartmentListFlag {
		req.ParentDepartmentList = builder.parentDepartmentList
	}
	return req
}

type DepartmentTimeline struct {
	Id *string `json:"id,omitempty"` // 部门 ID

	VersionId *string `json:"version_id,omitempty"` // 部门版本 ID

	Names []*I18n `json:"names,omitempty"` // 部门名称

	SubType *Enum `json:"sub_type,omitempty"` // 部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得

	ParentDepartmentId *string `json:"parent_department_id,omitempty"` // 上级部门 ID

	Manager *string `json:"manager,omitempty"` // 部门负责人雇佣 ID，枚举值及详细信息可通过【查询员工信息】接口查询获得

	Code *string `json:"code,omitempty"` // 编码

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	Active *bool `json:"active,omitempty"` // 是否启用

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间
}

type DepartmentTimelineBuilder struct {
	id     string // 部门 ID
	idFlag bool

	versionId     string // 部门版本 ID
	versionIdFlag bool

	names     []*I18n // 部门名称
	namesFlag bool

	subType     *Enum // 部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
	subTypeFlag bool

	parentDepartmentId     string // 上级部门 ID
	parentDepartmentIdFlag bool

	manager     string // 部门负责人雇佣 ID，枚举值及详细信息可通过【查询员工信息】接口查询获得
	managerFlag bool

	code     string // 编码
	codeFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	active     bool // 是否启用
	activeFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	expirationDate     string // 失效时间
	expirationDateFlag bool
}

func NewDepartmentTimelineBuilder() *DepartmentTimelineBuilder {
	builder := &DepartmentTimelineBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：4719456877659520852
func (builder *DepartmentTimelineBuilder) Id(id string) *DepartmentTimelineBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 部门版本 ID
//
// 示例值：7238516215202170412
func (builder *DepartmentTimelineBuilder) VersionId(versionId string) *DepartmentTimelineBuilder {
	builder.versionId = versionId
	builder.versionIdFlag = true
	return builder
}

// 部门名称
//
// 示例值：
func (builder *DepartmentTimelineBuilder) Names(names []*I18n) *DepartmentTimelineBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
//
// 示例值：
func (builder *DepartmentTimelineBuilder) SubType(subType *Enum) *DepartmentTimelineBuilder {
	builder.subType = subType
	builder.subTypeFlag = true
	return builder
}

// 上级部门 ID
//
// 示例值：4719456877659520111
func (builder *DepartmentTimelineBuilder) ParentDepartmentId(parentDepartmentId string) *DepartmentTimelineBuilder {
	builder.parentDepartmentId = parentDepartmentId
	builder.parentDepartmentIdFlag = true
	return builder
}

// 部门负责人雇佣 ID，枚举值及详细信息可通过【查询员工信息】接口查询获得
//
// 示例值：6893013238632416777
func (builder *DepartmentTimelineBuilder) Manager(manager string) *DepartmentTimelineBuilder {
	builder.manager = manager
	builder.managerFlag = true
	return builder
}

// 编码
//
// 示例值：D00000456
func (builder *DepartmentTimelineBuilder) Code(code string) *DepartmentTimelineBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *DepartmentTimelineBuilder) EffectiveDate(effectiveDate string) *DepartmentTimelineBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *DepartmentTimelineBuilder) Active(active bool) *DepartmentTimelineBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *DepartmentTimelineBuilder) Descriptions(descriptions []*I18n) *DepartmentTimelineBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DepartmentTimelineBuilder) CustomFields(customFields []*CustomFieldData) *DepartmentTimelineBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02
func (builder *DepartmentTimelineBuilder) ExpirationDate(expirationDate string) *DepartmentTimelineBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

func (builder *DepartmentTimelineBuilder) Build() *DepartmentTimeline {
	req := &DepartmentTimeline{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.versionIdFlag {
		req.VersionId = &builder.versionId

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.subTypeFlag {
		req.SubType = builder.subType
	}
	if builder.parentDepartmentIdFlag {
		req.ParentDepartmentId = &builder.parentDepartmentId

	}
	if builder.managerFlag {
		req.Manager = &builder.manager

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	return req
}

type DepartmentTree struct {
	Id *string `json:"id,omitempty"` // 部门 ID

	Level *int `json:"level,omitempty"` // 部门层级

	Children []string `json:"children,omitempty"` // 下级部门 ID 列表
}

type DepartmentTreeBuilder struct {
	id     string // 部门 ID
	idFlag bool

	level     int // 部门层级
	levelFlag bool

	children     []string // 下级部门 ID 列表
	childrenFlag bool
}

func NewDepartmentTreeBuilder() *DepartmentTreeBuilder {
	builder := &DepartmentTreeBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：4719456877659520852
func (builder *DepartmentTreeBuilder) Id(id string) *DepartmentTreeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 部门层级
//
// 示例值：1
func (builder *DepartmentTreeBuilder) Level(level int) *DepartmentTreeBuilder {
	builder.level = level
	builder.levelFlag = true
	return builder
}

// 下级部门 ID 列表
//
// 示例值：
func (builder *DepartmentTreeBuilder) Children(children []string) *DepartmentTreeBuilder {
	builder.children = children
	builder.childrenFlag = true
	return builder
}

func (builder *DepartmentTreeBuilder) Build() *DepartmentTree {
	req := &DepartmentTree{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.levelFlag {
		req.Level = &builder.level

	}
	if builder.childrenFlag {
		req.Children = builder.children
	}
	return req
}

type Dependent struct {
	Id *string `json:"id,omitempty"` // ID

	Name *PersonName `json:"name,omitempty"` // 姓名

	Relationship *Enum `json:"relationship,omitempty"` // 关系

	Gender *Enum `json:"gender,omitempty"` // 性别

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 生日

	NationalityId *string `json:"nationality_id,omitempty"` // 国籍 ID（该字段待作废，请勿使用）

	NationalityIdV2 *string `json:"nationality_id_v2,omitempty"` // 国籍 ID，可通过【查询国籍信息】接口查询

	NationalIdList []*NationalId `json:"national_id_list,omitempty"` // 证件号码

	SpousesWorkingStatus *Enum `json:"spouses_working_status,omitempty"` // 配偶工作状态

	IsThisPersonCoveredByHealthInsurance *bool `json:"is_this_person_covered_by_health_insurance,omitempty"` // 包含家属医疗保险

	IsThisPersonAllowedForTaxDeduction *bool `json:"is_this_person_allowed_for_tax_deduction,omitempty"` // 允许家属抵扣税款

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	DependentName *string `json:"dependent_name,omitempty"` // 家庭成员姓名

	Employer *string `json:"employer,omitempty"` // 工作单位

	Job *string `json:"job,omitempty"` // 岗位

	Phone *Phone `json:"phone,omitempty"` // 电话

	Address *Address `json:"address,omitempty"` // 联系地址

	BirthCertificateOfChild []*File `json:"birth_certificate_of_child,omitempty"` // 出生证明
}

type DependentBuilder struct {
	id     string // ID
	idFlag bool

	name     *PersonName // 姓名
	nameFlag bool

	relationship     *Enum // 关系
	relationshipFlag bool

	gender     *Enum // 性别
	genderFlag bool

	dateOfBirth     string // 生日
	dateOfBirthFlag bool

	nationalityId     string // 国籍 ID（该字段待作废，请勿使用）
	nationalityIdFlag bool

	nationalityIdV2     string // 国籍 ID，可通过【查询国籍信息】接口查询
	nationalityIdV2Flag bool

	nationalIdList     []*NationalId // 证件号码
	nationalIdListFlag bool

	spousesWorkingStatus     *Enum // 配偶工作状态
	spousesWorkingStatusFlag bool

	isThisPersonCoveredByHealthInsurance     bool // 包含家属医疗保险
	isThisPersonCoveredByHealthInsuranceFlag bool

	isThisPersonAllowedForTaxDeduction     bool // 允许家属抵扣税款
	isThisPersonAllowedForTaxDeductionFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	dependentName     string // 家庭成员姓名
	dependentNameFlag bool

	employer     string // 工作单位
	employerFlag bool

	job     string // 岗位
	jobFlag bool

	phone     *Phone // 电话
	phoneFlag bool

	address     *Address // 联系地址
	addressFlag bool

	birthCertificateOfChild     []*File // 出生证明
	birthCertificateOfChildFlag bool
}

func NewDependentBuilder() *DependentBuilder {
	builder := &DependentBuilder{}
	return builder
}

// ID
//
// 示例值：123
func (builder *DependentBuilder) Id(id string) *DependentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 姓名
//
// 示例值：
func (builder *DependentBuilder) Name(name *PersonName) *DependentBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 关系
//
// 示例值：
func (builder *DependentBuilder) Relationship(relationship *Enum) *DependentBuilder {
	builder.relationship = relationship
	builder.relationshipFlag = true
	return builder
}

// 性别
//
// 示例值：
func (builder *DependentBuilder) Gender(gender *Enum) *DependentBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 生日
//
// 示例值：2020-01-01
func (builder *DependentBuilder) DateOfBirth(dateOfBirth string) *DependentBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 国籍 ID（该字段待作废，请勿使用）
//
// 示例值：6862995745046267400
func (builder *DependentBuilder) NationalityId(nationalityId string) *DependentBuilder {
	builder.nationalityId = nationalityId
	builder.nationalityIdFlag = true
	return builder
}

// 国籍 ID，可通过【查询国籍信息】接口查询
//
// 示例值：6862995745046267401
func (builder *DependentBuilder) NationalityIdV2(nationalityIdV2 string) *DependentBuilder {
	builder.nationalityIdV2 = nationalityIdV2
	builder.nationalityIdV2Flag = true
	return builder
}

// 证件号码
//
// 示例值：
func (builder *DependentBuilder) NationalIdList(nationalIdList []*NationalId) *DependentBuilder {
	builder.nationalIdList = nationalIdList
	builder.nationalIdListFlag = true
	return builder
}

// 配偶工作状态
//
// 示例值：
func (builder *DependentBuilder) SpousesWorkingStatus(spousesWorkingStatus *Enum) *DependentBuilder {
	builder.spousesWorkingStatus = spousesWorkingStatus
	builder.spousesWorkingStatusFlag = true
	return builder
}

// 包含家属医疗保险
//
// 示例值：true
func (builder *DependentBuilder) IsThisPersonCoveredByHealthInsurance(isThisPersonCoveredByHealthInsurance bool) *DependentBuilder {
	builder.isThisPersonCoveredByHealthInsurance = isThisPersonCoveredByHealthInsurance
	builder.isThisPersonCoveredByHealthInsuranceFlag = true
	return builder
}

// 允许家属抵扣税款
//
// 示例值：false
func (builder *DependentBuilder) IsThisPersonAllowedForTaxDeduction(isThisPersonAllowedForTaxDeduction bool) *DependentBuilder {
	builder.isThisPersonAllowedForTaxDeduction = isThisPersonAllowedForTaxDeduction
	builder.isThisPersonAllowedForTaxDeductionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DependentBuilder) CustomFields(customFields []*CustomFieldData) *DependentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 家庭成员姓名
//
// 示例值：张三
func (builder *DependentBuilder) DependentName(dependentName string) *DependentBuilder {
	builder.dependentName = dependentName
	builder.dependentNameFlag = true
	return builder
}

// 工作单位
//
// 示例值：海淀区交警大队
func (builder *DependentBuilder) Employer(employer string) *DependentBuilder {
	builder.employer = employer
	builder.employerFlag = true
	return builder
}

// 岗位
//
// 示例值：保安
func (builder *DependentBuilder) Job(job string) *DependentBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *DependentBuilder) Phone(phone *Phone) *DependentBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *DependentBuilder) Address(address *Address) *DependentBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 出生证明
//
// 示例值：
func (builder *DependentBuilder) BirthCertificateOfChild(birthCertificateOfChild []*File) *DependentBuilder {
	builder.birthCertificateOfChild = birthCertificateOfChild
	builder.birthCertificateOfChildFlag = true
	return builder
}

func (builder *DependentBuilder) Build() *Dependent {
	req := &Dependent{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.relationshipFlag {
		req.Relationship = builder.relationship
	}
	if builder.genderFlag {
		req.Gender = builder.gender
	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.nationalityIdFlag {
		req.NationalityId = &builder.nationalityId

	}
	if builder.nationalityIdV2Flag {
		req.NationalityIdV2 = &builder.nationalityIdV2

	}
	if builder.nationalIdListFlag {
		req.NationalIdList = builder.nationalIdList
	}
	if builder.spousesWorkingStatusFlag {
		req.SpousesWorkingStatus = builder.spousesWorkingStatus
	}
	if builder.isThisPersonCoveredByHealthInsuranceFlag {
		req.IsThisPersonCoveredByHealthInsurance = &builder.isThisPersonCoveredByHealthInsurance

	}
	if builder.isThisPersonAllowedForTaxDeductionFlag {
		req.IsThisPersonAllowedForTaxDeduction = &builder.isThisPersonAllowedForTaxDeduction

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.dependentNameFlag {
		req.DependentName = &builder.dependentName

	}
	if builder.employerFlag {
		req.Employer = &builder.employer

	}
	if builder.jobFlag {
		req.Job = &builder.job

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.birthCertificateOfChildFlag {
		req.BirthCertificateOfChild = builder.birthCertificateOfChild
	}
	return req
}

type DependentForUpdate struct {
	Relationship *string `json:"relationship,omitempty"` // 关系

	Gender *string `json:"gender,omitempty"` // 性别

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 生日

	NationalIds []*NationalIdForUpdate `json:"national_ids,omitempty"` // 证件号码

	SpousesWorkingStatus *string `json:"spouses_working_status,omitempty"` // 配偶工作状态

	IsThisPersonCoveredByHealthInsurance *bool `json:"is_this_person_covered_by_health_insurance,omitempty"` // 包含家属医疗保险

	IsThisPersonAllowedForTaxDeduction *bool `json:"is_this_person_allowed_for_tax_deduction,omitempty"` // 允许家属抵扣税款

	DependentName *string `json:"dependent_name,omitempty"` // 家庭成员姓名

	Employer *string `json:"employer,omitempty"` // 工作单位

	Job *string `json:"job,omitempty"` // 岗位

	Phone *PhoneForUpdate `json:"phone,omitempty"` // 电话

	Address *AddressForUpdate `json:"address,omitempty"` // 联系地址

	BirthCertificateOfChildren []*File `json:"birth_certificate_of_children,omitempty"` // 出生证明

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type DependentForUpdateBuilder struct {
	relationship     string // 关系
	relationshipFlag bool

	gender     string // 性别
	genderFlag bool

	dateOfBirth     string // 生日
	dateOfBirthFlag bool

	nationalIds     []*NationalIdForUpdate // 证件号码
	nationalIdsFlag bool

	spousesWorkingStatus     string // 配偶工作状态
	spousesWorkingStatusFlag bool

	isThisPersonCoveredByHealthInsurance     bool // 包含家属医疗保险
	isThisPersonCoveredByHealthInsuranceFlag bool

	isThisPersonAllowedForTaxDeduction     bool // 允许家属抵扣税款
	isThisPersonAllowedForTaxDeductionFlag bool

	dependentName     string // 家庭成员姓名
	dependentNameFlag bool

	employer     string // 工作单位
	employerFlag bool

	job     string // 岗位
	jobFlag bool

	phone     *PhoneForUpdate // 电话
	phoneFlag bool

	address     *AddressForUpdate // 联系地址
	addressFlag bool

	birthCertificateOfChildren     []*File // 出生证明
	birthCertificateOfChildrenFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewDependentForUpdateBuilder() *DependentForUpdateBuilder {
	builder := &DependentForUpdateBuilder{}
	return builder
}

// 关系
//
// 示例值：parent
func (builder *DependentForUpdateBuilder) Relationship(relationship string) *DependentForUpdateBuilder {
	builder.relationship = relationship
	builder.relationshipFlag = true
	return builder
}

// 性别
//
// 示例值：male
func (builder *DependentForUpdateBuilder) Gender(gender string) *DependentForUpdateBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 生日
//
// 示例值：2020-01-01
func (builder *DependentForUpdateBuilder) DateOfBirth(dateOfBirth string) *DependentForUpdateBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 证件号码
//
// 示例值：
func (builder *DependentForUpdateBuilder) NationalIds(nationalIds []*NationalIdForUpdate) *DependentForUpdateBuilder {
	builder.nationalIds = nationalIds
	builder.nationalIdsFlag = true
	return builder
}

// 配偶工作状态
//
// 示例值：working
func (builder *DependentForUpdateBuilder) SpousesWorkingStatus(spousesWorkingStatus string) *DependentForUpdateBuilder {
	builder.spousesWorkingStatus = spousesWorkingStatus
	builder.spousesWorkingStatusFlag = true
	return builder
}

// 包含家属医疗保险
//
// 示例值：true
func (builder *DependentForUpdateBuilder) IsThisPersonCoveredByHealthInsurance(isThisPersonCoveredByHealthInsurance bool) *DependentForUpdateBuilder {
	builder.isThisPersonCoveredByHealthInsurance = isThisPersonCoveredByHealthInsurance
	builder.isThisPersonCoveredByHealthInsuranceFlag = true
	return builder
}

// 允许家属抵扣税款
//
// 示例值：false
func (builder *DependentForUpdateBuilder) IsThisPersonAllowedForTaxDeduction(isThisPersonAllowedForTaxDeduction bool) *DependentForUpdateBuilder {
	builder.isThisPersonAllowedForTaxDeduction = isThisPersonAllowedForTaxDeduction
	builder.isThisPersonAllowedForTaxDeductionFlag = true
	return builder
}

// 家庭成员姓名
//
// 示例值：王冰
func (builder *DependentForUpdateBuilder) DependentName(dependentName string) *DependentForUpdateBuilder {
	builder.dependentName = dependentName
	builder.dependentNameFlag = true
	return builder
}

// 工作单位
//
// 示例值：海淀区交警大队
func (builder *DependentForUpdateBuilder) Employer(employer string) *DependentForUpdateBuilder {
	builder.employer = employer
	builder.employerFlag = true
	return builder
}

// 岗位
//
// 示例值：保安
func (builder *DependentForUpdateBuilder) Job(job string) *DependentForUpdateBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *DependentForUpdateBuilder) Phone(phone *PhoneForUpdate) *DependentForUpdateBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *DependentForUpdateBuilder) Address(address *AddressForUpdate) *DependentForUpdateBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 出生证明
//
// 示例值：
func (builder *DependentForUpdateBuilder) BirthCertificateOfChildren(birthCertificateOfChildren []*File) *DependentForUpdateBuilder {
	builder.birthCertificateOfChildren = birthCertificateOfChildren
	builder.birthCertificateOfChildrenFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *DependentForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *DependentForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *DependentForUpdateBuilder) Build() *DependentForUpdate {
	req := &DependentForUpdate{}
	if builder.relationshipFlag {
		req.Relationship = &builder.relationship

	}
	if builder.genderFlag {
		req.Gender = &builder.gender

	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.nationalIdsFlag {
		req.NationalIds = builder.nationalIds
	}
	if builder.spousesWorkingStatusFlag {
		req.SpousesWorkingStatus = &builder.spousesWorkingStatus

	}
	if builder.isThisPersonCoveredByHealthInsuranceFlag {
		req.IsThisPersonCoveredByHealthInsurance = &builder.isThisPersonCoveredByHealthInsurance

	}
	if builder.isThisPersonAllowedForTaxDeductionFlag {
		req.IsThisPersonAllowedForTaxDeduction = &builder.isThisPersonAllowedForTaxDeduction

	}
	if builder.dependentNameFlag {
		req.DependentName = &builder.dependentName

	}
	if builder.employerFlag {
		req.Employer = &builder.employer

	}
	if builder.jobFlag {
		req.Job = &builder.job

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.birthCertificateOfChildrenFlag {
		req.BirthCertificateOfChildren = builder.birthCertificateOfChildren
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type Dimension struct {
	Name []*I18n `json:"name,omitempty"` // 维度的名称

	ApiName *string `json:"api_name,omitempty"` // 维度的 api name

	FieldType *string `json:"field_type,omitempty"` // 维度的字段类型。enum 代表字段为枚举类型，lookup 代表字段为 lookup 类型，bool 代表字段为布尔类型

	Required *bool `json:"required,omitempty"` // 维度是否为必填

	EnumValue []*Enum `json:"enum_value,omitempty"` // 枚举类型的维度对应的枚举值列表
}

type DimensionBuilder struct {
	name     []*I18n // 维度的名称
	nameFlag bool

	apiName     string // 维度的 api name
	apiNameFlag bool

	fieldType     string // 维度的字段类型。enum 代表字段为枚举类型，lookup 代表字段为 lookup 类型，bool 代表字段为布尔类型
	fieldTypeFlag bool

	required     bool // 维度是否为必填
	requiredFlag bool

	enumValue     []*Enum // 枚举类型的维度对应的枚举值列表
	enumValueFlag bool
}

func NewDimensionBuilder() *DimensionBuilder {
	builder := &DimensionBuilder{}
	return builder
}

// 维度的名称
//
// 示例值：
func (builder *DimensionBuilder) Name(name []*I18n) *DimensionBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 维度的 api name
//
// 示例值：department
func (builder *DimensionBuilder) ApiName(apiName string) *DimensionBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 维度的字段类型。enum 代表字段为枚举类型，lookup 代表字段为 lookup 类型，bool 代表字段为布尔类型
//
// 示例值：enum
func (builder *DimensionBuilder) FieldType(fieldType string) *DimensionBuilder {
	builder.fieldType = fieldType
	builder.fieldTypeFlag = true
	return builder
}

// 维度是否为必填
//
// 示例值：true
func (builder *DimensionBuilder) Required(required bool) *DimensionBuilder {
	builder.required = required
	builder.requiredFlag = true
	return builder
}

// 枚举类型的维度对应的枚举值列表
//
// 示例值：
func (builder *DimensionBuilder) EnumValue(enumValue []*Enum) *DimensionBuilder {
	builder.enumValue = enumValue
	builder.enumValueFlag = true
	return builder
}

func (builder *DimensionBuilder) Build() *Dimension {
	req := &Dimension{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.fieldTypeFlag {
		req.FieldType = &builder.fieldType

	}
	if builder.requiredFlag {
		req.Required = &builder.required

	}
	if builder.enumValueFlag {
		req.EnumValue = builder.enumValue
	}
	return req
}

type DimensionEntity struct {
	DimensionKey *string `json:"dimension_key,omitempty"` // 维度key

	DimensionValue *string `json:"dimension_value,omitempty"` // 维度值
}

type DimensionEntityBuilder struct {
	dimensionKey     string // 维度key
	dimensionKeyFlag bool

	dimensionValue     string // 维度值
	dimensionValueFlag bool
}

func NewDimensionEntityBuilder() *DimensionEntityBuilder {
	builder := &DimensionEntityBuilder{}
	return builder
}

// 维度key
//
// 示例值：department
func (builder *DimensionEntityBuilder) DimensionKey(dimensionKey string) *DimensionEntityBuilder {
	builder.dimensionKey = dimensionKey
	builder.dimensionKeyFlag = true
	return builder
}

// 维度值
//
// 示例值：7322790168290739756
func (builder *DimensionEntityBuilder) DimensionValue(dimensionValue string) *DimensionEntityBuilder {
	builder.dimensionValue = dimensionValue
	builder.dimensionValueFlag = true
	return builder
}

func (builder *DimensionEntityBuilder) Build() *DimensionEntity {
	req := &DimensionEntity{}
	if builder.dimensionKeyFlag {
		req.DimensionKey = &builder.dimensionKey

	}
	if builder.dimensionValueFlag {
		req.DimensionValue = &builder.dimensionValue

	}
	return req
}

type DimensionIdInData struct {
	DimensionKey *string `json:"dimension_key,omitempty"` // 维度 key

	DimensionIds []string `json:"dimension_ids,omitempty"` // 维度 ids
}

type DimensionIdInDataBuilder struct {
	dimensionKey     string // 维度 key
	dimensionKeyFlag bool

	dimensionIds     []string // 维度 ids
	dimensionIdsFlag bool
}

func NewDimensionIdInDataBuilder() *DimensionIdInDataBuilder {
	builder := &DimensionIdInDataBuilder{}
	return builder
}

// 维度 key
//
// 示例值：department
func (builder *DimensionIdInDataBuilder) DimensionKey(dimensionKey string) *DimensionIdInDataBuilder {
	builder.dimensionKey = dimensionKey
	builder.dimensionKeyFlag = true
	return builder
}

// 维度 ids
//
// 示例值：
func (builder *DimensionIdInDataBuilder) DimensionIds(dimensionIds []string) *DimensionIdInDataBuilder {
	builder.dimensionIds = dimensionIds
	builder.dimensionIdsFlag = true
	return builder
}

func (builder *DimensionIdInDataBuilder) Build() *DimensionIdInData {
	req := &DimensionIdInData{}
	if builder.dimensionKeyFlag {
		req.DimensionKey = &builder.dimensionKey

	}
	if builder.dimensionIdsFlag {
		req.DimensionIds = builder.dimensionIds
	}
	return req
}

type DimensionInfo struct {
	Id *string `json:"id,omitempty"` // 维度id

	Name []*I18n `json:"name,omitempty"` // 维度名称
}

type DimensionInfoBuilder struct {
	id     string // 维度id
	idFlag bool

	name     []*I18n // 维度名称
	nameFlag bool
}

func NewDimensionInfoBuilder() *DimensionInfoBuilder {
	builder := &DimensionInfoBuilder{}
	return builder
}

// 维度id
//
// 示例值：“123456”
func (builder *DimensionInfoBuilder) Id(id string) *DimensionInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 维度名称
//
// 示例值：
func (builder *DimensionInfoBuilder) Name(name []*I18n) *DimensionInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *DimensionInfoBuilder) Build() *DimensionInfo {
	req := &DimensionInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type DimensionInfoData struct {
	DimensionKey *string `json:"dimension_key,omitempty"` // 维度 key

	DimensionInfo *DimensionInfo `json:"dimension_info,omitempty"` // 维度信息
}

type DimensionInfoDataBuilder struct {
	dimensionKey     string // 维度 key
	dimensionKeyFlag bool

	dimensionInfo     *DimensionInfo // 维度信息
	dimensionInfoFlag bool
}

func NewDimensionInfoDataBuilder() *DimensionInfoDataBuilder {
	builder := &DimensionInfoDataBuilder{}
	return builder
}

// 维度 key
//
// 示例值："department"
func (builder *DimensionInfoDataBuilder) DimensionKey(dimensionKey string) *DimensionInfoDataBuilder {
	builder.dimensionKey = dimensionKey
	builder.dimensionKeyFlag = true
	return builder
}

// 维度信息
//
// 示例值：
func (builder *DimensionInfoDataBuilder) DimensionInfo(dimensionInfo *DimensionInfo) *DimensionInfoDataBuilder {
	builder.dimensionInfo = dimensionInfo
	builder.dimensionInfoFlag = true
	return builder
}

func (builder *DimensionInfoDataBuilder) Build() *DimensionInfoData {
	req := &DimensionInfoData{}
	if builder.dimensionKeyFlag {
		req.DimensionKey = &builder.dimensionKey

	}
	if builder.dimensionInfoFlag {
		req.DimensionInfo = builder.dimensionInfo
	}
	return req
}

type DimensionValue struct {
	DimensionApiName *string `json:"dimension_api_name,omitempty"` // API name

	DimensionValue *CustomValue `json:"dimension_value,omitempty"` // 查询的维度值信息
}

type DimensionValueBuilder struct {
	dimensionApiName     string // API name
	dimensionApiNameFlag bool

	dimensionValue     *CustomValue // 查询的维度值信息
	dimensionValueFlag bool
}

func NewDimensionValueBuilder() *DimensionValueBuilder {
	builder := &DimensionValueBuilder{}
	return builder
}

// API name
//
// 示例值：asdasdsa
func (builder *DimensionValueBuilder) DimensionApiName(dimensionApiName string) *DimensionValueBuilder {
	builder.dimensionApiName = dimensionApiName
	builder.dimensionApiNameFlag = true
	return builder
}

// 查询的维度值信息
//
// 示例值：
func (builder *DimensionValueBuilder) DimensionValue(dimensionValue *CustomValue) *DimensionValueBuilder {
	builder.dimensionValue = dimensionValue
	builder.dimensionValueFlag = true
	return builder
}

func (builder *DimensionValueBuilder) Build() *DimensionValue {
	req := &DimensionValue{}
	if builder.dimensionApiNameFlag {
		req.DimensionApiName = &builder.dimensionApiName

	}
	if builder.dimensionValueFlag {
		req.DimensionValue = builder.dimensionValue
	}
	return req
}

type District struct {
	DistrictId *string `json:"district_id,omitempty"` // 区/县 ID

	Name []*I18n `json:"name,omitempty"` // 名称

	CityId *string `json:"city_id,omitempty"` // 所属城市 ID，详细信息可通过[查询城市信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-city/search)接口获得

	SubregionCode *string `json:"subregion_code,omitempty"` // 行政区划代码

	Status *int `json:"status,omitempty"` // 状态
}

type DistrictBuilder struct {
	districtId     string // 区/县 ID
	districtIdFlag bool

	name     []*I18n // 名称
	nameFlag bool

	cityId     string // 所属城市 ID，详细信息可通过[查询城市信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-city/search)接口获得
	cityIdFlag bool

	subregionCode     string // 行政区划代码
	subregionCodeFlag bool

	status     int // 状态
	statusFlag bool
}

func NewDistrictBuilder() *DistrictBuilder {
	builder := &DistrictBuilder{}
	return builder
}

// 区/县 ID
//
// 示例值：6863333353496512007
func (builder *DistrictBuilder) DistrictId(districtId string) *DistrictBuilder {
	builder.districtId = districtId
	builder.districtIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *DistrictBuilder) Name(name []*I18n) *DistrictBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 所属城市 ID，详细信息可通过[查询城市信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-city/search)接口获得
//
// 示例值：6863333352603125255
func (builder *DistrictBuilder) CityId(cityId string) *DistrictBuilder {
	builder.cityId = cityId
	builder.cityIdFlag = true
	return builder
}

// 行政区划代码
//
// 示例值：230110
func (builder *DistrictBuilder) SubregionCode(subregionCode string) *DistrictBuilder {
	builder.subregionCode = subregionCode
	builder.subregionCodeFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *DistrictBuilder) Status(status int) *DistrictBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *DistrictBuilder) Build() *District {
	req := &District{}
	if builder.districtIdFlag {
		req.DistrictId = &builder.districtId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.cityIdFlag {
		req.CityId = &builder.cityId

	}
	if builder.subregionCodeFlag {
		req.SubregionCode = &builder.subregionCode

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type DraftInfo struct {
	DraftId *string `json:"draft_id,omitempty"` // 组织架构调整草稿 ID

	Topic *string `json:"topic,omitempty"` // 调整主题

	AdjustReason *string `json:"adjust_reason,omitempty"` // 调整原因

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	DepartmentAdjustRecordIds []string `json:"department_adjust_record_ids,omitempty"` // 关联的部门调整记录 ID 列表

	JobChangeAdjustRecordIds []string `json:"job_change_adjust_record_ids,omitempty"` // 关联的人员调整记录 ID 列表

	PositionAdjustRecordIds []string `json:"position_adjust_record_ids,omitempty"` // 关联的岗位调整记录 ID 列表
}

type DraftInfoBuilder struct {
	draftId     string // 组织架构调整草稿 ID
	draftIdFlag bool

	topic     string // 调整主题
	topicFlag bool

	adjustReason     string // 调整原因
	adjustReasonFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	departmentAdjustRecordIds     []string // 关联的部门调整记录 ID 列表
	departmentAdjustRecordIdsFlag bool

	jobChangeAdjustRecordIds     []string // 关联的人员调整记录 ID 列表
	jobChangeAdjustRecordIdsFlag bool

	positionAdjustRecordIds     []string // 关联的岗位调整记录 ID 列表
	positionAdjustRecordIdsFlag bool
}

func NewDraftInfoBuilder() *DraftInfoBuilder {
	builder := &DraftInfoBuilder{}
	return builder
}

// 组织架构调整草稿 ID
//
// 示例值：6991776076699549697
func (builder *DraftInfoBuilder) DraftId(draftId string) *DraftInfoBuilder {
	builder.draftId = draftId
	builder.draftIdFlag = true
	return builder
}

// 调整主题
//
// 示例值：测试组织架构调整
func (builder *DraftInfoBuilder) Topic(topic string) *DraftInfoBuilder {
	builder.topic = topic
	builder.topicFlag = true
	return builder
}

// 调整原因
//
// 示例值：测试
func (builder *DraftInfoBuilder) AdjustReason(adjustReason string) *DraftInfoBuilder {
	builder.adjustReason = adjustReason
	builder.adjustReasonFlag = true
	return builder
}

// 生效日期
//
// 示例值：2022-03-01
func (builder *DraftInfoBuilder) EffectiveDate(effectiveDate string) *DraftInfoBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 关联的部门调整记录 ID 列表
//
// 示例值：
func (builder *DraftInfoBuilder) DepartmentAdjustRecordIds(departmentAdjustRecordIds []string) *DraftInfoBuilder {
	builder.departmentAdjustRecordIds = departmentAdjustRecordIds
	builder.departmentAdjustRecordIdsFlag = true
	return builder
}

// 关联的人员调整记录 ID 列表
//
// 示例值：
func (builder *DraftInfoBuilder) JobChangeAdjustRecordIds(jobChangeAdjustRecordIds []string) *DraftInfoBuilder {
	builder.jobChangeAdjustRecordIds = jobChangeAdjustRecordIds
	builder.jobChangeAdjustRecordIdsFlag = true
	return builder
}

// 关联的岗位调整记录 ID 列表
//
// 示例值：
func (builder *DraftInfoBuilder) PositionAdjustRecordIds(positionAdjustRecordIds []string) *DraftInfoBuilder {
	builder.positionAdjustRecordIds = positionAdjustRecordIds
	builder.positionAdjustRecordIdsFlag = true
	return builder
}

func (builder *DraftInfoBuilder) Build() *DraftInfo {
	req := &DraftInfo{}
	if builder.draftIdFlag {
		req.DraftId = &builder.draftId

	}
	if builder.topicFlag {
		req.Topic = &builder.topic

	}
	if builder.adjustReasonFlag {
		req.AdjustReason = &builder.adjustReason

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.departmentAdjustRecordIdsFlag {
		req.DepartmentAdjustRecordIds = builder.departmentAdjustRecordIds
	}
	if builder.jobChangeAdjustRecordIdsFlag {
		req.JobChangeAdjustRecordIds = builder.jobChangeAdjustRecordIds
	}
	if builder.positionAdjustRecordIdsFlag {
		req.PositionAdjustRecordIds = builder.positionAdjustRecordIds
	}
	return req
}

type Education struct {
	School []*I18n `json:"school,omitempty"` // 学校

	LevelOfEducation *Enum `json:"level_of_education,omitempty"` // 学历

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	FieldOfStudy []*I18n `json:"field_of_study,omitempty"` // 专业

	Degree *Enum `json:"degree,omitempty"` // 学位

	SchoolName *Enum `json:"school_name,omitempty"` // 学校名称

	FieldOfStudyName *Enum `json:"field_of_study_name,omitempty"` // 专业名称

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家地区ID

	ExpectedEndDate *string `json:"expected_end_date,omitempty"` // 预期结束日期

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EducationBuilder struct {
	school     []*I18n // 学校
	schoolFlag bool

	levelOfEducation     *Enum // 学历
	levelOfEducationFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	fieldOfStudy     []*I18n // 专业
	fieldOfStudyFlag bool

	degree     *Enum // 学位
	degreeFlag bool

	schoolName     *Enum // 学校名称
	schoolNameFlag bool

	fieldOfStudyName     *Enum // 专业名称
	fieldOfStudyNameFlag bool

	countryRegionId     string // 国家地区ID
	countryRegionIdFlag bool

	expectedEndDate     string // 预期结束日期
	expectedEndDateFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEducationBuilder() *EducationBuilder {
	builder := &EducationBuilder{}
	return builder
}

// 学校
//
// 示例值：
func (builder *EducationBuilder) School(school []*I18n) *EducationBuilder {
	builder.school = school
	builder.schoolFlag = true
	return builder
}

// 学历
//
// 示例值：
func (builder *EducationBuilder) LevelOfEducation(levelOfEducation *Enum) *EducationBuilder {
	builder.levelOfEducation = levelOfEducation
	builder.levelOfEducationFlag = true
	return builder
}

// 开始日期
//
// 示例值：2011-09-01
func (builder *EducationBuilder) StartDate(startDate string) *EducationBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：2015-06-30
func (builder *EducationBuilder) EndDate(endDate string) *EducationBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 专业
//
// 示例值：
func (builder *EducationBuilder) FieldOfStudy(fieldOfStudy []*I18n) *EducationBuilder {
	builder.fieldOfStudy = fieldOfStudy
	builder.fieldOfStudyFlag = true
	return builder
}

// 学位
//
// 示例值：
func (builder *EducationBuilder) Degree(degree *Enum) *EducationBuilder {
	builder.degree = degree
	builder.degreeFlag = true
	return builder
}

// 学校名称
//
// 示例值：
func (builder *EducationBuilder) SchoolName(schoolName *Enum) *EducationBuilder {
	builder.schoolName = schoolName
	builder.schoolNameFlag = true
	return builder
}

// 专业名称
//
// 示例值：
func (builder *EducationBuilder) FieldOfStudyName(fieldOfStudyName *Enum) *EducationBuilder {
	builder.fieldOfStudyName = fieldOfStudyName
	builder.fieldOfStudyNameFlag = true
	return builder
}

// 国家地区ID
//
// 示例值：1
func (builder *EducationBuilder) CountryRegionId(countryRegionId string) *EducationBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 预期结束日期
//
// 示例值：2011-09-01
func (builder *EducationBuilder) ExpectedEndDate(expectedEndDate string) *EducationBuilder {
	builder.expectedEndDate = expectedEndDate
	builder.expectedEndDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EducationBuilder) CustomFields(customFields []*CustomFieldData) *EducationBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EducationBuilder) Build() *Education {
	req := &Education{}
	if builder.schoolFlag {
		req.School = builder.school
	}
	if builder.levelOfEducationFlag {
		req.LevelOfEducation = builder.levelOfEducation
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.fieldOfStudyFlag {
		req.FieldOfStudy = builder.fieldOfStudy
	}
	if builder.degreeFlag {
		req.Degree = builder.degree
	}
	if builder.schoolNameFlag {
		req.SchoolName = builder.schoolName
	}
	if builder.fieldOfStudyNameFlag {
		req.FieldOfStudyName = builder.fieldOfStudyName
	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.expectedEndDateFlag {
		req.ExpectedEndDate = &builder.expectedEndDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EducationInfo struct {
	SchoolName *string `json:"school_name,omitempty"` // 学校名称

	Education *string `json:"education,omitempty"` // 学历

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	FieldOfStudy *string `json:"field_of_study,omitempty"` // 专业

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EducationInfoBuilder struct {
	schoolName     string // 学校名称
	schoolNameFlag bool

	education     string // 学历
	educationFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	fieldOfStudy     string // 专业
	fieldOfStudyFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEducationInfoBuilder() *EducationInfoBuilder {
	builder := &EducationInfoBuilder{}
	return builder
}

// 学校名称
//
// 示例值：长安大学
func (builder *EducationInfoBuilder) SchoolName(schoolName string) *EducationInfoBuilder {
	builder.schoolName = schoolName
	builder.schoolNameFlag = true
	return builder
}

// 学历
//
// 示例值：phd
func (builder *EducationInfoBuilder) Education(education string) *EducationInfoBuilder {
	builder.education = education
	builder.educationFlag = true
	return builder
}

// 开始时间
//
// 示例值：2017-04-01
func (builder *EducationInfoBuilder) StartTime(startTime string) *EducationInfoBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间
//
// 示例值：2018-04-01
func (builder *EducationInfoBuilder) EndTime(endTime string) *EducationInfoBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 专业
//
// 示例值：医学影像技术
func (builder *EducationInfoBuilder) FieldOfStudy(fieldOfStudy string) *EducationInfoBuilder {
	builder.fieldOfStudy = fieldOfStudy
	builder.fieldOfStudyFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EducationInfoBuilder) CustomFields(customFields []*ObjectFieldData) *EducationInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EducationInfoBuilder) Build() *EducationInfo {
	req := &EducationInfo{}
	if builder.schoolNameFlag {
		req.SchoolName = &builder.schoolName

	}
	if builder.educationFlag {
		req.Education = &builder.education

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.fieldOfStudyFlag {
		req.FieldOfStudy = &builder.fieldOfStudy

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EducationInfoForUpdate struct {
	SchoolName *string `json:"school_name,omitempty"` // 学校名称

	Education *string `json:"education,omitempty"` // 学历

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	FieldOfStudy *string `json:"field_of_study,omitempty"` // 专业

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EducationInfoForUpdateBuilder struct {
	schoolName     string // 学校名称
	schoolNameFlag bool

	education     string // 学历
	educationFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	fieldOfStudy     string // 专业
	fieldOfStudyFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEducationInfoForUpdateBuilder() *EducationInfoForUpdateBuilder {
	builder := &EducationInfoForUpdateBuilder{}
	return builder
}

// 学校名称
//
// 示例值：长安大学
func (builder *EducationInfoForUpdateBuilder) SchoolName(schoolName string) *EducationInfoForUpdateBuilder {
	builder.schoolName = schoolName
	builder.schoolNameFlag = true
	return builder
}

// 学历
//
// 示例值：phd
func (builder *EducationInfoForUpdateBuilder) Education(education string) *EducationInfoForUpdateBuilder {
	builder.education = education
	builder.educationFlag = true
	return builder
}

// 开始时间
//
// 示例值：2017-04-01
func (builder *EducationInfoForUpdateBuilder) StartTime(startTime string) *EducationInfoForUpdateBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间
//
// 示例值：2018-04-01
func (builder *EducationInfoForUpdateBuilder) EndTime(endTime string) *EducationInfoForUpdateBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 专业
//
// 示例值：医学影像技术
func (builder *EducationInfoForUpdateBuilder) FieldOfStudy(fieldOfStudy string) *EducationInfoForUpdateBuilder {
	builder.fieldOfStudy = fieldOfStudy
	builder.fieldOfStudyFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EducationInfoForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *EducationInfoForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EducationInfoForUpdateBuilder) Build() *EducationInfoForUpdate {
	req := &EducationInfoForUpdate{}
	if builder.schoolNameFlag {
		req.SchoolName = &builder.schoolName

	}
	if builder.educationFlag {
		req.Education = &builder.education

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.fieldOfStudyFlag {
		req.FieldOfStudy = &builder.fieldOfStudy

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type Email struct {
	Email *string `json:"email,omitempty"` // 邮箱地址

	IsPrimary *bool `json:"is_primary,omitempty"` // 是否为主要邮箱

	IsPublic *bool `json:"is_public,omitempty"` // 是否为公开邮箱

	EmailUsage *Enum `json:"email_usage,omitempty"` // 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
}

type EmailBuilder struct {
	email     string // 邮箱地址
	emailFlag bool

	isPrimary     bool // 是否为主要邮箱
	isPrimaryFlag bool

	isPublic     bool // 是否为公开邮箱
	isPublicFlag bool

	emailUsage     *Enum // 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
	emailUsageFlag bool
}

func NewEmailBuilder() *EmailBuilder {
	builder := &EmailBuilder{}
	return builder
}

// 邮箱地址
//
// 示例值：1234567@bytedance.com
func (builder *EmailBuilder) Email(email string) *EmailBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 是否为主要邮箱
//
// 示例值：true
func (builder *EmailBuilder) IsPrimary(isPrimary bool) *EmailBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 是否为公开邮箱
//
// 示例值：true
func (builder *EmailBuilder) IsPublic(isPublic bool) *EmailBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

// 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
//
// 示例值：
func (builder *EmailBuilder) EmailUsage(emailUsage *Enum) *EmailBuilder {
	builder.emailUsage = emailUsage
	builder.emailUsageFlag = true
	return builder
}

func (builder *EmailBuilder) Build() *Email {
	req := &Email{}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	if builder.emailUsageFlag {
		req.EmailUsage = builder.emailUsage
	}
	return req
}

type EmailForUpdate struct {
	Email *string `json:"email,omitempty"` // 邮箱地址

	IsPrimary *bool `json:"is_primary,omitempty"` // 是否为主要邮箱,若有多个邮箱，只能有一个邮箱的「is_primary」为true

	IsPublic *bool `json:"is_public,omitempty"` // 是否为公开邮箱

	EmailUsage *string `json:"email_usage,omitempty"` // 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
}

type EmailForUpdateBuilder struct {
	email     string // 邮箱地址
	emailFlag bool

	isPrimary     bool // 是否为主要邮箱,若有多个邮箱，只能有一个邮箱的「is_primary」为true
	isPrimaryFlag bool

	isPublic     bool // 是否为公开邮箱
	isPublicFlag bool

	emailUsage     string // 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
	emailUsageFlag bool
}

func NewEmailForUpdateBuilder() *EmailForUpdateBuilder {
	builder := &EmailForUpdateBuilder{}
	return builder
}

// 邮箱地址
//
// 示例值：1234567@bytedance.com
func (builder *EmailForUpdateBuilder) Email(email string) *EmailForUpdateBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 是否为主要邮箱,若有多个邮箱，只能有一个邮箱的「is_primary」为true
//
// 示例值：true
func (builder *EmailForUpdateBuilder) IsPrimary(isPrimary bool) *EmailForUpdateBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 是否为公开邮箱
//
// 示例值：true
func (builder *EmailForUpdateBuilder) IsPublic(isPublic bool) *EmailForUpdateBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

// 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
//
// 示例值：work
func (builder *EmailForUpdateBuilder) EmailUsage(emailUsage string) *EmailForUpdateBuilder {
	builder.emailUsage = emailUsage
	builder.emailUsageFlag = true
	return builder
}

func (builder *EmailForUpdateBuilder) Build() *EmailForUpdate {
	req := &EmailForUpdate{}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	if builder.emailUsageFlag {
		req.EmailUsage = &builder.emailUsage

	}
	return req
}

type EmergencyContact struct {
	Id *string `json:"id,omitempty"` // ID

	Name *PersonName `json:"name,omitempty"` // 姓名

	Relationship *Enum `json:"relationship,omitempty"` // 关系

	PhoneIst []*Phone `json:"phone_ist,omitempty"` // 电话

	PhoneList []*Phone `json:"phone_list,omitempty"` // 电话

	LegalName *string `json:"legal_name,omitempty"` // 法定姓名

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	Address *Address `json:"address,omitempty"` // 联系地址

	Email *Email `json:"email,omitempty"` // 邮箱

	IsPrimary *bool `json:"is_primary,omitempty"` // 主要联系人,若有多个联系人，只能有一个联系人的「is_primary」为true
}

type EmergencyContactBuilder struct {
	id     string // ID
	idFlag bool

	name     *PersonName // 姓名
	nameFlag bool

	relationship     *Enum // 关系
	relationshipFlag bool

	phoneIst     []*Phone // 电话
	phoneIstFlag bool

	phoneList     []*Phone // 电话
	phoneListFlag bool

	legalName     string // 法定姓名
	legalNameFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	address     *Address // 联系地址
	addressFlag bool

	email     *Email // 邮箱
	emailFlag bool

	isPrimary     bool // 主要联系人,若有多个联系人，只能有一个联系人的「is_primary」为true
	isPrimaryFlag bool
}

func NewEmergencyContactBuilder() *EmergencyContactBuilder {
	builder := &EmergencyContactBuilder{}
	return builder
}

// ID
//
// 示例值：123
func (builder *EmergencyContactBuilder) Id(id string) *EmergencyContactBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 姓名
//
// 示例值：
func (builder *EmergencyContactBuilder) Name(name *PersonName) *EmergencyContactBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 关系
//
// 示例值：
func (builder *EmergencyContactBuilder) Relationship(relationship *Enum) *EmergencyContactBuilder {
	builder.relationship = relationship
	builder.relationshipFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *EmergencyContactBuilder) PhoneIst(phoneIst []*Phone) *EmergencyContactBuilder {
	builder.phoneIst = phoneIst
	builder.phoneIstFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *EmergencyContactBuilder) PhoneList(phoneList []*Phone) *EmergencyContactBuilder {
	builder.phoneList = phoneList
	builder.phoneListFlag = true
	return builder
}

// 法定姓名
//
// 示例值：张三
func (builder *EmergencyContactBuilder) LegalName(legalName string) *EmergencyContactBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmergencyContactBuilder) CustomFields(customFields []*CustomFieldData) *EmergencyContactBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *EmergencyContactBuilder) Address(address *Address) *EmergencyContactBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 邮箱
//
// 示例值：
func (builder *EmergencyContactBuilder) Email(email *Email) *EmergencyContactBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 主要联系人,若有多个联系人，只能有一个联系人的「is_primary」为true
//
// 示例值：true
func (builder *EmergencyContactBuilder) IsPrimary(isPrimary bool) *EmergencyContactBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

func (builder *EmergencyContactBuilder) Build() *EmergencyContact {
	req := &EmergencyContact{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.relationshipFlag {
		req.Relationship = builder.relationship
	}
	if builder.phoneIstFlag {
		req.PhoneIst = builder.phoneIst
	}
	if builder.phoneListFlag {
		req.PhoneList = builder.phoneList
	}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.emailFlag {
		req.Email = builder.email
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	return req
}

type EmergencyContactForUpdate struct {
	LegalName *string `json:"legal_name,omitempty"` // 紧急联系人姓名

	Relationship *string `json:"relationship,omitempty"` // 紧急联系人与本人亲属关系，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "emergency_contact" - custom_api_name = "relationship"

	Phones []*PhoneForUpdate `json:"phones,omitempty"` // 电话

	Address *AddressForUpdate `json:"address,omitempty"` // 地址

	Email *EmailForUpdate `json:"email,omitempty"` // 邮箱

	IsPrimary *bool `json:"is_primary,omitempty"` // 主要联系人,若有多个联系人，只能有一个联系人的「is_primary」为true

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EmergencyContactForUpdateBuilder struct {
	legalName     string // 紧急联系人姓名
	legalNameFlag bool

	relationship     string // 紧急联系人与本人亲属关系，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "emergency_contact" - custom_api_name = "relationship"
	relationshipFlag bool

	phones     []*PhoneForUpdate // 电话
	phonesFlag bool

	address     *AddressForUpdate // 地址
	addressFlag bool

	email     *EmailForUpdate // 邮箱
	emailFlag bool

	isPrimary     bool // 主要联系人,若有多个联系人，只能有一个联系人的「is_primary」为true
	isPrimaryFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEmergencyContactForUpdateBuilder() *EmergencyContactForUpdateBuilder {
	builder := &EmergencyContactForUpdateBuilder{}
	return builder
}

// 紧急联系人姓名
//
// 示例值：王冰
func (builder *EmergencyContactForUpdateBuilder) LegalName(legalName string) *EmergencyContactForUpdateBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 紧急联系人与本人亲属关系，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "emergency_contact" - custom_api_name = "relationship"
//
// 示例值：x
func (builder *EmergencyContactForUpdateBuilder) Relationship(relationship string) *EmergencyContactForUpdateBuilder {
	builder.relationship = relationship
	builder.relationshipFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *EmergencyContactForUpdateBuilder) Phones(phones []*PhoneForUpdate) *EmergencyContactForUpdateBuilder {
	builder.phones = phones
	builder.phonesFlag = true
	return builder
}

// 地址
//
// 示例值：
func (builder *EmergencyContactForUpdateBuilder) Address(address *AddressForUpdate) *EmergencyContactForUpdateBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 邮箱
//
// 示例值：
func (builder *EmergencyContactForUpdateBuilder) Email(email *EmailForUpdate) *EmergencyContactForUpdateBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 主要联系人,若有多个联系人，只能有一个联系人的「is_primary」为true
//
// 示例值：true
func (builder *EmergencyContactForUpdateBuilder) IsPrimary(isPrimary bool) *EmergencyContactForUpdateBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmergencyContactForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *EmergencyContactForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EmergencyContactForUpdateBuilder) Build() *EmergencyContactForUpdate {
	req := &EmergencyContactForUpdate{}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	if builder.relationshipFlag {
		req.Relationship = &builder.relationship

	}
	if builder.phonesFlag {
		req.Phones = builder.phones
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.emailFlag {
		req.Email = builder.email
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EmpCustomObjectInfo struct {
	SystemInfo *string `json:"system_info,omitempty"` // 人员档案所在位置

	IsTimeline *bool `json:"is_timeline,omitempty"` // 是否为时间轴对象

	IsActivate *bool `json:"is_activate,omitempty"` // 是否启用 true 启用 false 停用

	EmploymentCustomObjectRecords []*EmploymentCustomObjectRecord `json:"employment_custom_object_records,omitempty"` // 记录列表
}

type EmpCustomObjectInfoBuilder struct {
	systemInfo     string // 人员档案所在位置
	systemInfoFlag bool

	isTimeline     bool // 是否为时间轴对象
	isTimelineFlag bool

	isActivate     bool // 是否启用 true 启用 false 停用
	isActivateFlag bool

	employmentCustomObjectRecords     []*EmploymentCustomObjectRecord // 记录列表
	employmentCustomObjectRecordsFlag bool
}

func NewEmpCustomObjectInfoBuilder() *EmpCustomObjectInfoBuilder {
	builder := &EmpCustomObjectInfoBuilder{}
	return builder
}

// 人员档案所在位置
//
// 示例值：EmploymentInfo
func (builder *EmpCustomObjectInfoBuilder) SystemInfo(systemInfo string) *EmpCustomObjectInfoBuilder {
	builder.systemInfo = systemInfo
	builder.systemInfoFlag = true
	return builder
}

// 是否为时间轴对象
//
// 示例值：true
func (builder *EmpCustomObjectInfoBuilder) IsTimeline(isTimeline bool) *EmpCustomObjectInfoBuilder {
	builder.isTimeline = isTimeline
	builder.isTimelineFlag = true
	return builder
}

// 是否启用 true 启用 false 停用
//
// 示例值：true
func (builder *EmpCustomObjectInfoBuilder) IsActivate(isActivate bool) *EmpCustomObjectInfoBuilder {
	builder.isActivate = isActivate
	builder.isActivateFlag = true
	return builder
}

// 记录列表
//
// 示例值：
func (builder *EmpCustomObjectInfoBuilder) EmploymentCustomObjectRecords(employmentCustomObjectRecords []*EmploymentCustomObjectRecord) *EmpCustomObjectInfoBuilder {
	builder.employmentCustomObjectRecords = employmentCustomObjectRecords
	builder.employmentCustomObjectRecordsFlag = true
	return builder
}

func (builder *EmpCustomObjectInfoBuilder) Build() *EmpCustomObjectInfo {
	req := &EmpCustomObjectInfo{}
	if builder.systemInfoFlag {
		req.SystemInfo = &builder.systemInfo

	}
	if builder.isTimelineFlag {
		req.IsTimeline = &builder.isTimeline

	}
	if builder.isActivateFlag {
		req.IsActivate = &builder.isActivate

	}
	if builder.employmentCustomObjectRecordsFlag {
		req.EmploymentCustomObjectRecords = builder.employmentCustomObjectRecords
	}
	return req
}

type EmpCustomOrgList struct {
	CustomOrgList []*CustomOrgList `json:"custom_org_list,omitempty"` // 自定义组织列表

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	StartReason *string `json:"start_reason,omitempty"` // 变动原因

	JobDataCustomOrgId *string `json:"job_data_custom_org_id,omitempty"` // ID

	VersionId *string `json:"version_id,omitempty"` // 版本号

	ObjectApiName *string `json:"object_api_name,omitempty"` // 自定义组织类型

	UserId *string `json:"user_id,omitempty"` // 用户id
}

type EmpCustomOrgListBuilder struct {
	customOrgList     []*CustomOrgList // 自定义组织列表
	customOrgListFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	startReason     string // 变动原因
	startReasonFlag bool

	jobDataCustomOrgId     string // ID
	jobDataCustomOrgIdFlag bool

	versionId     string // 版本号
	versionIdFlag bool

	objectApiName     string // 自定义组织类型
	objectApiNameFlag bool

	userId     string // 用户id
	userIdFlag bool
}

func NewEmpCustomOrgListBuilder() *EmpCustomOrgListBuilder {
	builder := &EmpCustomOrgListBuilder{}
	return builder
}

// 自定义组织列表
//
// 示例值：
func (builder *EmpCustomOrgListBuilder) CustomOrgList(customOrgList []*CustomOrgList) *EmpCustomOrgListBuilder {
	builder.customOrgList = customOrgList
	builder.customOrgListFlag = true
	return builder
}

// 生效时间
//
// 示例值：2024-06-13 00:00:00
func (builder *EmpCustomOrgListBuilder) EffectiveTime(effectiveTime string) *EmpCustomOrgListBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 变动原因
//
// 示例值：自动打标
func (builder *EmpCustomOrgListBuilder) StartReason(startReason string) *EmpCustomOrgListBuilder {
	builder.startReason = startReason
	builder.startReasonFlag = true
	return builder
}

// ID
//
// 示例值：7260357352426782739
func (builder *EmpCustomOrgListBuilder) JobDataCustomOrgId(jobDataCustomOrgId string) *EmpCustomOrgListBuilder {
	builder.jobDataCustomOrgId = jobDataCustomOrgId
	builder.jobDataCustomOrgIdFlag = true
	return builder
}

// 版本号
//
// 示例值：7260357352426782749
func (builder *EmpCustomOrgListBuilder) VersionId(versionId string) *EmpCustomOrgListBuilder {
	builder.versionId = versionId
	builder.versionIdFlag = true
	return builder
}

// 自定义组织类型
//
// 示例值：custom_org_03
func (builder *EmpCustomOrgListBuilder) ObjectApiName(objectApiName string) *EmpCustomOrgListBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 用户id
//
// 示例值：7352797725202581036
func (builder *EmpCustomOrgListBuilder) UserId(userId string) *EmpCustomOrgListBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

func (builder *EmpCustomOrgListBuilder) Build() *EmpCustomOrgList {
	req := &EmpCustomOrgList{}
	if builder.customOrgListFlag {
		req.CustomOrgList = builder.customOrgList
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.startReasonFlag {
		req.StartReason = &builder.startReason

	}
	if builder.jobDataCustomOrgIdFlag {
		req.JobDataCustomOrgId = &builder.jobDataCustomOrgId

	}
	if builder.versionIdFlag {
		req.VersionId = &builder.versionId

	}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	return req
}

type Employee struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID;- 类型与 user_id_type 一致;- 请使用 employment_id_v2

	EmploymentIdV2 *string `json:"employment_id_v2,omitempty"` // 雇佣 ID;- 类型与 user_id_type 一致，转换失败时返回空值

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘投递 ID ，详细信息可以通过【获取投递信息】接口查询获得

	PrehireId *string `json:"prehire_id,omitempty"` // 待入职 ID

	EmployeeNumber *string `json:"employee_number,omitempty"` // 工号

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID，详细信息可通过【查询单个人员类型】接口获得

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID;- 可通过 [【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致;- 请使用 department_id_v2

	DepartmentIdV2 *string `json:"department_id_v2,omitempty"` // 部门 ID;- 可通过 [【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致，转换失败时返回空值

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，详细信息可通过【查询单个职务级别】接口获得

	JobLevel *EmployeeJobLevel `json:"job_level,omitempty"` // 职级

	PathwayId *string `json:"pathway_id,omitempty"` // 通道 ID

	Pathway *EmployeePathway `json:"pathway,omitempty"` // 通道

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，详细信息可通过【查询单个地点】接口获得

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID，详细信息可通过【查询单个职务序列】接口获得

	JobFamily *EmployeeJobFamily `json:"job_family,omitempty"` // 序列

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID，详细信息可通过【查询单个岗位】接口获得

	Position *Position `json:"position,omitempty"` // 岗位

	JobId *string `json:"job_id,omitempty"` // 职务 ID，详细信息可通过【查询单个职务】接口获得

	Job *Job `json:"job,omitempty"` // 职务

	CompanyId *string `json:"company_id,omitempty"` // 所属公司 ID，详细信息可通过【查询单个公司】接口获得

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，详细信息可通过【查询单个工时制度】接口获得

	Tenure *string `json:"tenure,omitempty"` // 司龄

	SeniorityDate *string `json:"seniority_date,omitempty"` // 资历起算日期

	EffectiveDate *string `json:"effective_date,omitempty"` // 当前雇佣记录的入职日期

	PrimaryEmployment *bool `json:"primary_employment,omitempty"` // 是否是主雇佣信息

	ProbationPeriod *int `json:"probation_period,omitempty"` // 试用期时长（月）

	OnProbation *bool `json:"on_probation,omitempty"` // 是否在试用期中

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期（实际结束日期）

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直接上级的雇佣 ID;- 类型与 user_id_type 一致;- 请使用 direct_manager_id_v2

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级的雇佣 ID; - 类型与 user_id_type 一致; - 请使用 dotted_line_manager_id_v2

	DirectManagerIdV2 *string `json:"direct_manager_id_v2,omitempty"` // 直接上级的雇佣 ID;- 类型与 user_id_type 一致，转换失败返回空值

	DottedLineManagerIdV2 *string `json:"dotted_line_manager_id_v2,omitempty"` // 虚线上级的雇佣 ID;- 类型与 user_id_type 一致，转换失败返回空值

	EmploymentType *Enum `json:"employment_type,omitempty"` // 雇佣类型，枚举值可通过文档【飞书人事枚举常量】雇佣类型（employment_type）枚举定义获得

	EmploymentStatus *Enum `json:"employment_status,omitempty"` // 雇佣状态，枚举值可通过文档【飞书人事枚举常量】雇员状态（employment_status）枚举定义获得

	ExpirationDate *string `json:"expiration_date,omitempty"` // 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”

	ReasonForOffboarding *Enum `json:"reason_for_offboarding,omitempty"` // 离职原因，枚举值可通过文档【飞书人事枚举常量】离职原因（reason_for_offboarding）枚举定义部分获得

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱地址

	UserName *string `json:"user_name,omitempty"` // 对应老People user_name字段，仅支持字节租户

	WorkEmailList []*WorkEmail `json:"work_email_list,omitempty"` // 工作邮箱列表，只有当邮箱满足下面所有条件时，才在个人信息页面可见

	CostCenterList []*JobDataCostCenter `json:"cost_center_list,omitempty"` // 成本中心列表

	Rehire *Enum `json:"rehire,omitempty"` // 是否离职重聘

	RehireEmploymentId *string `json:"rehire_employment_id,omitempty"` // 历史雇佣信息 ID，可以通过【查询单个雇佣信息】查询详细信息

	PersonInfo *PersonInfo `json:"person_info,omitempty"` // 基本个人信息

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	NoncompeteStatus *Enum `json:"noncompete_status,omitempty"` // 竞业状态，枚举值包括:1.竞业中；2.未竞业

	PastOffboarding *bool `json:"past_offboarding,omitempty"` // 是否历史离职人员

	RegularEmployeeStartDate *string `json:"regular_employee_start_date,omitempty"` // 转正式日期

	ExternalId *string `json:"external_id,omitempty"` // 外部系统 ID , 可存储租户系统中的员工 ID

	TimesEmployed *int `json:"times_employed,omitempty"` // 入职次数

	RecruitmentType *Enum `json:"recruitment_type,omitempty"` // 招聘来源，枚举值 api_name 可通过【获取自定义字段详情】接口查询

	AvatarUrl *string `json:"avatar_url,omitempty"` // 员工头像

	PrimaryContractId *string `json:"primary_contract_id,omitempty"` // 主合同 ID

	ContractStartDate *string `json:"contract_start_date,omitempty"` // 主合同开始日期

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 主合同到期日期

	ContractExpectedEndDate *string `json:"contract_expected_end_date,omitempty"` // 主合同预计到期日期

	PayGroupId *string `json:"pay_group_id,omitempty"` // 所属薪资组 ID

	AssignmentPayGroupId *string `json:"assignment_pay_group_id,omitempty"` // 所属外派薪资组 ID

	InternationalAssignment *bool `json:"international_assignment,omitempty"` // 是否外派

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历 ID

	Department *BasicDepartment `json:"department,omitempty"` // 部门基本信息

	DirectManager *BasicEmployee `json:"direct_manager,omitempty"` // 直接上级基本信息

	DottedLineManager *BasicEmployee `json:"dotted_line_manager,omitempty"` // 虚线上级基本信息

	TimeZone *string `json:"time_zone,omitempty"` // 时区

	PrimaryInternationalAssignment *InternationalAssignment `json:"primary_international_assignment,omitempty"` // 当前生效的外派记录

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型

	TalentPoolIdList []string `json:"talent_pool_id_list,omitempty"` // 所属人才池

	CustomOrg *string `json:"custom_org,omitempty"` // 自定义组织

	SeniorityAdjustInformationList []*SeniorityAdjustInformation `json:"seniority_adjust_information_list,omitempty"` // 司龄调整信息

	EmploymentDirectBps *EmploymentBp `json:"employment_direct_bps,omitempty"` // 员工直属 BP 信息，当员工所在部门、属地无 BP 时，会上钻找到最近的 BP

	EmploymentAllBps *EmploymentBp `json:"employment_all_bps,omitempty"` // 员工全部 BP 信息

	ContractType *Enum `json:"contract_type,omitempty"` // 当前所属合同类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type

	ArchiveCpstPlanId *string `json:"archive_cpst_plan_id,omitempty"` // 当前所属薪资方案 ID;- 可结合[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口使用

	AttendanceGroupId *string `json:"attendance_group_id,omitempty"` // 当前所在考勤组 ID;- 可通过[按 ID 查询考勤组](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/get)获取详情

	IndividualsWithHeadcountOrNot *Enum `json:"individuals_with_headcount_or_not,omitempty"` // 员工是否占用编制
}

type EmployeeBuilder struct {
	employmentId     string // 雇佣 ID;- 类型与 user_id_type 一致;- 请使用 employment_id_v2
	employmentIdFlag bool

	employmentIdV2     string // 雇佣 ID;- 类型与 user_id_type 一致，转换失败时返回空值
	employmentIdV2Flag bool

	atsApplicationId     string // 招聘投递 ID ，详细信息可以通过【获取投递信息】接口查询获得
	atsApplicationIdFlag bool

	prehireId     string // 待入职 ID
	prehireIdFlag bool

	employeeNumber     string // 工号
	employeeNumberFlag bool

	employeeTypeId     string // 人员类型 ID，详细信息可通过【查询单个人员类型】接口获得
	employeeTypeIdFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool

	departmentId     string // 部门 ID;- 可通过 [【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致;- 请使用 department_id_v2
	departmentIdFlag bool

	departmentIdV2     string // 部门 ID;- 可通过 [【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致，转换失败时返回空值
	departmentIdV2Flag bool

	jobLevelId     string // 职级 ID，详细信息可通过【查询单个职务级别】接口获得
	jobLevelIdFlag bool

	jobLevel     *EmployeeJobLevel // 职级
	jobLevelFlag bool

	pathwayId     string // 通道 ID
	pathwayIdFlag bool

	pathway     *EmployeePathway // 通道
	pathwayFlag bool

	jobGradeId     string // 职等 ID
	jobGradeIdFlag bool

	workLocationId     string // 工作地点 ID，详细信息可通过【查询单个地点】接口获得
	workLocationIdFlag bool

	jobFamilyId     string // 序列 ID，详细信息可通过【查询单个职务序列】接口获得
	jobFamilyIdFlag bool

	jobFamily     *EmployeeJobFamily // 序列
	jobFamilyFlag bool

	positionId     string // 岗位 ID，详细信息可通过【查询单个岗位】接口获得
	positionIdFlag bool

	position     *Position // 岗位
	positionFlag bool

	jobId     string // 职务 ID，详细信息可通过【查询单个职务】接口获得
	jobIdFlag bool

	job     *Job // 职务
	jobFlag bool

	companyId     string // 所属公司 ID，详细信息可通过【查询单个公司】接口获得
	companyIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，详细信息可通过【查询单个工时制度】接口获得
	workingHoursTypeIdFlag bool

	tenure     string // 司龄
	tenureFlag bool

	seniorityDate     string // 资历起算日期
	seniorityDateFlag bool

	effectiveDate     string // 当前雇佣记录的入职日期
	effectiveDateFlag bool

	primaryEmployment     bool // 是否是主雇佣信息
	primaryEmploymentFlag bool

	probationPeriod     int // 试用期时长（月）
	probationPeriodFlag bool

	onProbation     bool // 是否在试用期中
	onProbationFlag bool

	probationEndDate     string // 试用期结束日期（实际结束日期）
	probationEndDateFlag bool

	directManagerId     string // 直接上级的雇佣 ID;- 类型与 user_id_type 一致;- 请使用 direct_manager_id_v2
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级的雇佣 ID; - 类型与 user_id_type 一致; - 请使用 dotted_line_manager_id_v2
	dottedLineManagerIdFlag bool

	directManagerIdV2     string // 直接上级的雇佣 ID;- 类型与 user_id_type 一致，转换失败返回空值
	directManagerIdV2Flag bool

	dottedLineManagerIdV2     string // 虚线上级的雇佣 ID;- 类型与 user_id_type 一致，转换失败返回空值
	dottedLineManagerIdV2Flag bool

	employmentType     *Enum // 雇佣类型，枚举值可通过文档【飞书人事枚举常量】雇佣类型（employment_type）枚举定义获得
	employmentTypeFlag bool

	employmentStatus     *Enum // 雇佣状态，枚举值可通过文档【飞书人事枚举常量】雇员状态（employment_status）枚举定义获得
	employmentStatusFlag bool

	expirationDate     string // 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
	expirationDateFlag bool

	reasonForOffboarding     *Enum // 离职原因，枚举值可通过文档【飞书人事枚举常量】离职原因（reason_for_offboarding）枚举定义部分获得
	reasonForOffboardingFlag bool

	emailAddress     string // 邮箱地址
	emailAddressFlag bool

	userName     string // 对应老People user_name字段，仅支持字节租户
	userNameFlag bool

	workEmailList     []*WorkEmail // 工作邮箱列表，只有当邮箱满足下面所有条件时，才在个人信息页面可见
	workEmailListFlag bool

	costCenterList     []*JobDataCostCenter // 成本中心列表
	costCenterListFlag bool

	rehire     *Enum // 是否离职重聘
	rehireFlag bool

	rehireEmploymentId     string // 历史雇佣信息 ID，可以通过【查询单个雇佣信息】查询详细信息
	rehireEmploymentIdFlag bool

	personInfo     *PersonInfo // 基本个人信息
	personInfoFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	noncompeteStatus     *Enum // 竞业状态，枚举值包括:1.竞业中；2.未竞业
	noncompeteStatusFlag bool

	pastOffboarding     bool // 是否历史离职人员
	pastOffboardingFlag bool

	regularEmployeeStartDate     string // 转正式日期
	regularEmployeeStartDateFlag bool

	externalId     string // 外部系统 ID , 可存储租户系统中的员工 ID
	externalIdFlag bool

	timesEmployed     int // 入职次数
	timesEmployedFlag bool

	recruitmentType     *Enum // 招聘来源，枚举值 api_name 可通过【获取自定义字段详情】接口查询
	recruitmentTypeFlag bool

	avatarUrl     string // 员工头像
	avatarUrlFlag bool

	primaryContractId     string // 主合同 ID
	primaryContractIdFlag bool

	contractStartDate     string // 主合同开始日期
	contractStartDateFlag bool

	contractEndDate     string // 主合同到期日期
	contractEndDateFlag bool

	contractExpectedEndDate     string // 主合同预计到期日期
	contractExpectedEndDateFlag bool

	payGroupId     string // 所属薪资组 ID
	payGroupIdFlag bool

	assignmentPayGroupId     string // 所属外派薪资组 ID
	assignmentPayGroupIdFlag bool

	internationalAssignment     bool // 是否外派
	internationalAssignmentFlag bool

	workCalendarId     string // 工作日历 ID
	workCalendarIdFlag bool

	department     *BasicDepartment // 部门基本信息
	departmentFlag bool

	directManager     *BasicEmployee // 直接上级基本信息
	directManagerFlag bool

	dottedLineManager     *BasicEmployee // 虚线上级基本信息
	dottedLineManagerFlag bool

	timeZone     string // 时区
	timeZoneFlag bool

	primaryInternationalAssignment     *InternationalAssignment // 当前生效的外派记录
	primaryInternationalAssignmentFlag bool

	serviceCompany     string // 任职公司
	serviceCompanyFlag bool

	compensationType     *Enum // 薪资类型
	compensationTypeFlag bool

	workShift     *Enum // 排班类型
	workShiftFlag bool

	talentPoolIdList     []string // 所属人才池
	talentPoolIdListFlag bool

	customOrg     string // 自定义组织
	customOrgFlag bool

	seniorityAdjustInformationList     []*SeniorityAdjustInformation // 司龄调整信息
	seniorityAdjustInformationListFlag bool

	employmentDirectBps     *EmploymentBp // 员工直属 BP 信息，当员工所在部门、属地无 BP 时，会上钻找到最近的 BP
	employmentDirectBpsFlag bool

	employmentAllBps     *EmploymentBp // 员工全部 BP 信息
	employmentAllBpsFlag bool

	contractType     *Enum // 当前所属合同类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type
	contractTypeFlag bool

	archiveCpstPlanId     string // 当前所属薪资方案 ID;- 可结合[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口使用
	archiveCpstPlanIdFlag bool

	attendanceGroupId     string // 当前所在考勤组 ID;- 可通过[按 ID 查询考勤组](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/get)获取详情
	attendanceGroupIdFlag bool

	individualsWithHeadcountOrNot     *Enum // 员工是否占用编制
	individualsWithHeadcountOrNotFlag bool
}

func NewEmployeeBuilder() *EmployeeBuilder {
	builder := &EmployeeBuilder{}
	return builder
}

// 雇佣 ID;- 类型与 user_id_type 一致;- 请使用 employment_id_v2
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) EmploymentId(employmentId string) *EmployeeBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 雇佣 ID;- 类型与 user_id_type 一致，转换失败时返回空值
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) EmploymentIdV2(employmentIdV2 string) *EmployeeBuilder {
	builder.employmentIdV2 = employmentIdV2
	builder.employmentIdV2Flag = true
	return builder
}

// 招聘投递 ID ，详细信息可以通过【获取投递信息】接口查询获得
//
// 示例值：6838119494196871234
func (builder *EmployeeBuilder) AtsApplicationId(atsApplicationId string) *EmployeeBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 待入职 ID
//
// 示例值：7023239238976141133
func (builder *EmployeeBuilder) PrehireId(prehireId string) *EmployeeBuilder {
	builder.prehireId = prehireId
	builder.prehireIdFlag = true
	return builder
}

// 工号
//
// 示例值：1000000
func (builder *EmployeeBuilder) EmployeeNumber(employeeNumber string) *EmployeeBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 人员类型 ID，详细信息可通过【查询单个人员类型】接口获得
//
// 示例值：6971090097697521314
func (builder *EmployeeBuilder) EmployeeTypeId(employeeTypeId string) *EmployeeBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6971090097697521317
func (builder *EmployeeBuilder) EmployeeSubtypeId(employeeSubtypeId string) *EmployeeBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

// 部门 ID;- 可通过 [【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致;- 请使用 department_id_v2
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) DepartmentId(departmentId string) *EmployeeBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 部门 ID;- 可通过 [【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致，转换失败时返回空值
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) DepartmentIdV2(departmentIdV2 string) *EmployeeBuilder {
	builder.departmentIdV2 = departmentIdV2
	builder.departmentIdV2Flag = true
	return builder
}

// 职级 ID，详细信息可通过【查询单个职务级别】接口获得
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) JobLevelId(jobLevelId string) *EmployeeBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职级
//
// 示例值：
func (builder *EmployeeBuilder) JobLevel(jobLevel *EmployeeJobLevel) *EmployeeBuilder {
	builder.jobLevel = jobLevel
	builder.jobLevelFlag = true
	return builder
}

// 通道 ID
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) PathwayId(pathwayId string) *EmployeeBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 通道
//
// 示例值：
func (builder *EmployeeBuilder) Pathway(pathway *EmployeePathway) *EmployeeBuilder {
	builder.pathway = pathway
	builder.pathwayFlag = true
	return builder
}

// 职等 ID
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) JobGradeId(jobGradeId string) *EmployeeBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 工作地点 ID，详细信息可通过【查询单个地点】接口获得
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) WorkLocationId(workLocationId string) *EmployeeBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 序列 ID，详细信息可通过【查询单个职务序列】接口获得
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) JobFamilyId(jobFamilyId string) *EmployeeBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 序列
//
// 示例值：
func (builder *EmployeeBuilder) JobFamily(jobFamily *EmployeeJobFamily) *EmployeeBuilder {
	builder.jobFamily = jobFamily
	builder.jobFamilyFlag = true
	return builder
}

// 岗位 ID，详细信息可通过【查询单个岗位】接口获得
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) PositionId(positionId string) *EmployeeBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 岗位
//
// 示例值：
func (builder *EmployeeBuilder) Position(position *Position) *EmployeeBuilder {
	builder.position = position
	builder.positionFlag = true
	return builder
}

// 职务 ID，详细信息可通过【查询单个职务】接口获得
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) JobId(jobId string) *EmployeeBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职务
//
// 示例值：
func (builder *EmployeeBuilder) Job(job *Job) *EmployeeBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 所属公司 ID，详细信息可通过【查询单个公司】接口获得
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) CompanyId(companyId string) *EmployeeBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 工时制度 ID，详细信息可通过【查询单个工时制度】接口获得
//
// 示例值：6893014062142064135
func (builder *EmployeeBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeeBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 司龄
//
// 示例值：0.01
func (builder *EmployeeBuilder) Tenure(tenure string) *EmployeeBuilder {
	builder.tenure = tenure
	builder.tenureFlag = true
	return builder
}

// 资历起算日期
//
// 示例值：2021-03-16
func (builder *EmployeeBuilder) SeniorityDate(seniorityDate string) *EmployeeBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 当前雇佣记录的入职日期
//
// 示例值：2021-03-16
func (builder *EmployeeBuilder) EffectiveDate(effectiveDate string) *EmployeeBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 是否是主雇佣信息
//
// 示例值：true
func (builder *EmployeeBuilder) PrimaryEmployment(primaryEmployment bool) *EmployeeBuilder {
	builder.primaryEmployment = primaryEmployment
	builder.primaryEmploymentFlag = true
	return builder
}

// 试用期时长（月）
//
// 示例值：16
func (builder *EmployeeBuilder) ProbationPeriod(probationPeriod int) *EmployeeBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

// 是否在试用期中
//
// 示例值：true
func (builder *EmployeeBuilder) OnProbation(onProbation bool) *EmployeeBuilder {
	builder.onProbation = onProbation
	builder.onProbationFlag = true
	return builder
}

// 试用期结束日期（实际结束日期）
//
// 示例值：2022-08-01
func (builder *EmployeeBuilder) ProbationEndDate(probationEndDate string) *EmployeeBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 直接上级的雇佣 ID;- 类型与 user_id_type 一致;- 请使用 direct_manager_id_v2
//
// 示例值：7027024823985411287
func (builder *EmployeeBuilder) DirectManagerId(directManagerId string) *EmployeeBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级的雇佣 ID; - 类型与 user_id_type 一致; - 请使用 dotted_line_manager_id_v2
//
// 示例值：7027024823985411782
func (builder *EmployeeBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeeBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 直接上级的雇佣 ID;- 类型与 user_id_type 一致，转换失败返回空值
//
// 示例值：7027024823985411287
func (builder *EmployeeBuilder) DirectManagerIdV2(directManagerIdV2 string) *EmployeeBuilder {
	builder.directManagerIdV2 = directManagerIdV2
	builder.directManagerIdV2Flag = true
	return builder
}

// 虚线上级的雇佣 ID;- 类型与 user_id_type 一致，转换失败返回空值
//
// 示例值：7027024823985411782
func (builder *EmployeeBuilder) DottedLineManagerIdV2(dottedLineManagerIdV2 string) *EmployeeBuilder {
	builder.dottedLineManagerIdV2 = dottedLineManagerIdV2
	builder.dottedLineManagerIdV2Flag = true
	return builder
}

// 雇佣类型，枚举值可通过文档【飞书人事枚举常量】雇佣类型（employment_type）枚举定义获得
//
// 示例值：
func (builder *EmployeeBuilder) EmploymentType(employmentType *Enum) *EmployeeBuilder {
	builder.employmentType = employmentType
	builder.employmentTypeFlag = true
	return builder
}

// 雇佣状态，枚举值可通过文档【飞书人事枚举常量】雇员状态（employment_status）枚举定义获得
//
// 示例值：
func (builder *EmployeeBuilder) EmploymentStatus(employmentStatus *Enum) *EmployeeBuilder {
	builder.employmentStatus = employmentStatus
	builder.employmentStatusFlag = true
	return builder
}

// 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
//
// 示例值：2022-08-16
func (builder *EmployeeBuilder) ExpirationDate(expirationDate string) *EmployeeBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 离职原因，枚举值可通过文档【飞书人事枚举常量】离职原因（reason_for_offboarding）枚举定义部分获得
//
// 示例值：
func (builder *EmployeeBuilder) ReasonForOffboarding(reasonForOffboarding *Enum) *EmployeeBuilder {
	builder.reasonForOffboarding = reasonForOffboarding
	builder.reasonForOffboardingFlag = true
	return builder
}

// 邮箱地址
//
// 示例值：test@163.com
func (builder *EmployeeBuilder) EmailAddress(emailAddress string) *EmployeeBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 对应老People user_name字段，仅支持字节租户
//
// 示例值：test
func (builder *EmployeeBuilder) UserName(userName string) *EmployeeBuilder {
	builder.userName = userName
	builder.userNameFlag = true
	return builder
}

// 工作邮箱列表，只有当邮箱满足下面所有条件时，才在个人信息页面可见
//
// 示例值：
func (builder *EmployeeBuilder) WorkEmailList(workEmailList []*WorkEmail) *EmployeeBuilder {
	builder.workEmailList = workEmailList
	builder.workEmailListFlag = true
	return builder
}

// 成本中心列表
//
// 示例值：
func (builder *EmployeeBuilder) CostCenterList(costCenterList []*JobDataCostCenter) *EmployeeBuilder {
	builder.costCenterList = costCenterList
	builder.costCenterListFlag = true
	return builder
}

// 是否离职重聘
//
// 示例值：
func (builder *EmployeeBuilder) Rehire(rehire *Enum) *EmployeeBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// 历史雇佣信息 ID，可以通过【查询单个雇佣信息】查询详细信息
//
// 示例值：7164286667866966659
func (builder *EmployeeBuilder) RehireEmploymentId(rehireEmploymentId string) *EmployeeBuilder {
	builder.rehireEmploymentId = rehireEmploymentId
	builder.rehireEmploymentIdFlag = true
	return builder
}

// 基本个人信息
//
// 示例值：
func (builder *EmployeeBuilder) PersonInfo(personInfo *PersonInfo) *EmployeeBuilder {
	builder.personInfo = personInfo
	builder.personInfoFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmployeeBuilder) CustomFields(customFields []*CustomFieldData) *EmployeeBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 竞业状态，枚举值包括:1.竞业中；2.未竞业
//
// 示例值：
func (builder *EmployeeBuilder) NoncompeteStatus(noncompeteStatus *Enum) *EmployeeBuilder {
	builder.noncompeteStatus = noncompeteStatus
	builder.noncompeteStatusFlag = true
	return builder
}

// 是否历史离职人员
//
// 示例值：true
func (builder *EmployeeBuilder) PastOffboarding(pastOffboarding bool) *EmployeeBuilder {
	builder.pastOffboarding = pastOffboarding
	builder.pastOffboardingFlag = true
	return builder
}

// 转正式日期
//
// 示例值：2020-01-01
func (builder *EmployeeBuilder) RegularEmployeeStartDate(regularEmployeeStartDate string) *EmployeeBuilder {
	builder.regularEmployeeStartDate = regularEmployeeStartDate
	builder.regularEmployeeStartDateFlag = true
	return builder
}

// 外部系统 ID , 可存储租户系统中的员工 ID
//
// 示例值：10000000
func (builder *EmployeeBuilder) ExternalId(externalId string) *EmployeeBuilder {
	builder.externalId = externalId
	builder.externalIdFlag = true
	return builder
}

// 入职次数
//
// 示例值：16
func (builder *EmployeeBuilder) TimesEmployed(timesEmployed int) *EmployeeBuilder {
	builder.timesEmployed = timesEmployed
	builder.timesEmployedFlag = true
	return builder
}

// 招聘来源，枚举值 api_name 可通过【获取自定义字段详情】接口查询
//
// 示例值：
func (builder *EmployeeBuilder) RecruitmentType(recruitmentType *Enum) *EmployeeBuilder {
	builder.recruitmentType = recruitmentType
	builder.recruitmentTypeFlag = true
	return builder
}

// 员工头像
//
// 示例值：https://internal-api-lark-file.feishu-boe.cn/static-resource/v1/v2_a550d36b-28ef-48ad-9e50-58004beb386j~?image_size=noop&cut_type=&quality=&format=png&sticker_format=.webp
func (builder *EmployeeBuilder) AvatarUrl(avatarUrl string) *EmployeeBuilder {
	builder.avatarUrl = avatarUrl
	builder.avatarUrlFlag = true
	return builder
}

// 主合同 ID
//
// 示例值：7164286667866966659
func (builder *EmployeeBuilder) PrimaryContractId(primaryContractId string) *EmployeeBuilder {
	builder.primaryContractId = primaryContractId
	builder.primaryContractIdFlag = true
	return builder
}

// 主合同开始日期
//
// 示例值：2020-01-01
func (builder *EmployeeBuilder) ContractStartDate(contractStartDate string) *EmployeeBuilder {
	builder.contractStartDate = contractStartDate
	builder.contractStartDateFlag = true
	return builder
}

// 主合同到期日期
//
// 示例值：2020-01-01
func (builder *EmployeeBuilder) ContractEndDate(contractEndDate string) *EmployeeBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

// 主合同预计到期日期
//
// 示例值：2020-01-01
func (builder *EmployeeBuilder) ContractExpectedEndDate(contractExpectedEndDate string) *EmployeeBuilder {
	builder.contractExpectedEndDate = contractExpectedEndDate
	builder.contractExpectedEndDateFlag = true
	return builder
}

// 所属薪资组 ID
//
// 示例值：7164286667866966659
func (builder *EmployeeBuilder) PayGroupId(payGroupId string) *EmployeeBuilder {
	builder.payGroupId = payGroupId
	builder.payGroupIdFlag = true
	return builder
}

// 所属外派薪资组 ID
//
// 示例值：7164286667866966659
func (builder *EmployeeBuilder) AssignmentPayGroupId(assignmentPayGroupId string) *EmployeeBuilder {
	builder.assignmentPayGroupId = assignmentPayGroupId
	builder.assignmentPayGroupIdFlag = true
	return builder
}

// 是否外派
//
// 示例值：true
func (builder *EmployeeBuilder) InternationalAssignment(internationalAssignment bool) *EmployeeBuilder {
	builder.internationalAssignment = internationalAssignment
	builder.internationalAssignmentFlag = true
	return builder
}

// 工作日历 ID
//
// 示例值：7164286667866966659
func (builder *EmployeeBuilder) WorkCalendarId(workCalendarId string) *EmployeeBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 部门基本信息
//
// 示例值：
func (builder *EmployeeBuilder) Department(department *BasicDepartment) *EmployeeBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 直接上级基本信息
//
// 示例值：
func (builder *EmployeeBuilder) DirectManager(directManager *BasicEmployee) *EmployeeBuilder {
	builder.directManager = directManager
	builder.directManagerFlag = true
	return builder
}

// 虚线上级基本信息
//
// 示例值：
func (builder *EmployeeBuilder) DottedLineManager(dottedLineManager *BasicEmployee) *EmployeeBuilder {
	builder.dottedLineManager = dottedLineManager
	builder.dottedLineManagerFlag = true
	return builder
}

// 时区
//
// 示例值：Asia/Shanghai
func (builder *EmployeeBuilder) TimeZone(timeZone string) *EmployeeBuilder {
	builder.timeZone = timeZone
	builder.timeZoneFlag = true
	return builder
}

// 当前生效的外派记录
//
// 示例值：
func (builder *EmployeeBuilder) PrimaryInternationalAssignment(primaryInternationalAssignment *InternationalAssignment) *EmployeeBuilder {
	builder.primaryInternationalAssignment = primaryInternationalAssignment
	builder.primaryInternationalAssignmentFlag = true
	return builder
}

// 任职公司
//
// 示例值：7174374910734141112
func (builder *EmployeeBuilder) ServiceCompany(serviceCompany string) *EmployeeBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 薪资类型
//
// 示例值：
func (builder *EmployeeBuilder) CompensationType(compensationType *Enum) *EmployeeBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 排班类型
//
// 示例值：
func (builder *EmployeeBuilder) WorkShift(workShift *Enum) *EmployeeBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 所属人才池
//
// 示例值：
func (builder *EmployeeBuilder) TalentPoolIdList(talentPoolIdList []string) *EmployeeBuilder {
	builder.talentPoolIdList = talentPoolIdList
	builder.talentPoolIdListFlag = true
	return builder
}

// 自定义组织
//
// 示例值：{"custom_org_02":[{"id":"1","rate":"99"}]}
func (builder *EmployeeBuilder) CustomOrg(customOrg string) *EmployeeBuilder {
	builder.customOrg = customOrg
	builder.customOrgFlag = true
	return builder
}

// 司龄调整信息
//
// 示例值：
func (builder *EmployeeBuilder) SeniorityAdjustInformationList(seniorityAdjustInformationList []*SeniorityAdjustInformation) *EmployeeBuilder {
	builder.seniorityAdjustInformationList = seniorityAdjustInformationList
	builder.seniorityAdjustInformationListFlag = true
	return builder
}

// 员工直属 BP 信息，当员工所在部门、属地无 BP 时，会上钻找到最近的 BP
//
// 示例值：
func (builder *EmployeeBuilder) EmploymentDirectBps(employmentDirectBps *EmploymentBp) *EmployeeBuilder {
	builder.employmentDirectBps = employmentDirectBps
	builder.employmentDirectBpsFlag = true
	return builder
}

// 员工全部 BP 信息
//
// 示例值：
func (builder *EmployeeBuilder) EmploymentAllBps(employmentAllBps *EmploymentBp) *EmployeeBuilder {
	builder.employmentAllBps = employmentAllBps
	builder.employmentAllBpsFlag = true
	return builder
}

// 当前所属合同类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type
//
// 示例值：
func (builder *EmployeeBuilder) ContractType(contractType *Enum) *EmployeeBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// 当前所属薪资方案 ID;- 可结合[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口使用
//
// 示例值：123456789
func (builder *EmployeeBuilder) ArchiveCpstPlanId(archiveCpstPlanId string) *EmployeeBuilder {
	builder.archiveCpstPlanId = archiveCpstPlanId
	builder.archiveCpstPlanIdFlag = true
	return builder
}

// 当前所在考勤组 ID;- 可通过[按 ID 查询考勤组](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/get)获取详情
//
// 示例值：123456789
func (builder *EmployeeBuilder) AttendanceGroupId(attendanceGroupId string) *EmployeeBuilder {
	builder.attendanceGroupId = attendanceGroupId
	builder.attendanceGroupIdFlag = true
	return builder
}

// 员工是否占用编制
//
// 示例值：with_headcount
func (builder *EmployeeBuilder) IndividualsWithHeadcountOrNot(individualsWithHeadcountOrNot *Enum) *EmployeeBuilder {
	builder.individualsWithHeadcountOrNot = individualsWithHeadcountOrNot
	builder.individualsWithHeadcountOrNotFlag = true
	return builder
}

func (builder *EmployeeBuilder) Build() *Employee {
	req := &Employee{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.employmentIdV2Flag {
		req.EmploymentIdV2 = &builder.employmentIdV2

	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.prehireIdFlag {
		req.PrehireId = &builder.prehireId

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.departmentIdV2Flag {
		req.DepartmentIdV2 = &builder.departmentIdV2

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobLevelFlag {
		req.JobLevel = builder.jobLevel
	}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId

	}
	if builder.pathwayFlag {
		req.Pathway = builder.pathway
	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobFamilyFlag {
		req.JobFamily = builder.jobFamily
	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.positionFlag {
		req.Position = builder.position
	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobFlag {
		req.Job = builder.job
	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.tenureFlag {
		req.Tenure = &builder.tenure

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.primaryEmploymentFlag {
		req.PrimaryEmployment = &builder.primaryEmployment

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	if builder.onProbationFlag {
		req.OnProbation = &builder.onProbation

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.directManagerIdV2Flag {
		req.DirectManagerIdV2 = &builder.directManagerIdV2

	}
	if builder.dottedLineManagerIdV2Flag {
		req.DottedLineManagerIdV2 = &builder.dottedLineManagerIdV2

	}
	if builder.employmentTypeFlag {
		req.EmploymentType = builder.employmentType
	}
	if builder.employmentStatusFlag {
		req.EmploymentStatus = builder.employmentStatus
	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.reasonForOffboardingFlag {
		req.ReasonForOffboarding = builder.reasonForOffboarding
	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.userNameFlag {
		req.UserName = &builder.userName

	}
	if builder.workEmailListFlag {
		req.WorkEmailList = builder.workEmailList
	}
	if builder.costCenterListFlag {
		req.CostCenterList = builder.costCenterList
	}
	if builder.rehireFlag {
		req.Rehire = builder.rehire
	}
	if builder.rehireEmploymentIdFlag {
		req.RehireEmploymentId = &builder.rehireEmploymentId

	}
	if builder.personInfoFlag {
		req.PersonInfo = builder.personInfo
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.noncompeteStatusFlag {
		req.NoncompeteStatus = builder.noncompeteStatus
	}
	if builder.pastOffboardingFlag {
		req.PastOffboarding = &builder.pastOffboarding

	}
	if builder.regularEmployeeStartDateFlag {
		req.RegularEmployeeStartDate = &builder.regularEmployeeStartDate

	}
	if builder.externalIdFlag {
		req.ExternalId = &builder.externalId

	}
	if builder.timesEmployedFlag {
		req.TimesEmployed = &builder.timesEmployed

	}
	if builder.recruitmentTypeFlag {
		req.RecruitmentType = builder.recruitmentType
	}
	if builder.avatarUrlFlag {
		req.AvatarUrl = &builder.avatarUrl

	}
	if builder.primaryContractIdFlag {
		req.PrimaryContractId = &builder.primaryContractId

	}
	if builder.contractStartDateFlag {
		req.ContractStartDate = &builder.contractStartDate

	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	if builder.contractExpectedEndDateFlag {
		req.ContractExpectedEndDate = &builder.contractExpectedEndDate

	}
	if builder.payGroupIdFlag {
		req.PayGroupId = &builder.payGroupId

	}
	if builder.assignmentPayGroupIdFlag {
		req.AssignmentPayGroupId = &builder.assignmentPayGroupId

	}
	if builder.internationalAssignmentFlag {
		req.InternationalAssignment = &builder.internationalAssignment

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.departmentFlag {
		req.Department = builder.department
	}
	if builder.directManagerFlag {
		req.DirectManager = builder.directManager
	}
	if builder.dottedLineManagerFlag {
		req.DottedLineManager = builder.dottedLineManager
	}
	if builder.timeZoneFlag {
		req.TimeZone = &builder.timeZone

	}
	if builder.primaryInternationalAssignmentFlag {
		req.PrimaryInternationalAssignment = builder.primaryInternationalAssignment
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.talentPoolIdListFlag {
		req.TalentPoolIdList = builder.talentPoolIdList
	}
	if builder.customOrgFlag {
		req.CustomOrg = &builder.customOrg

	}
	if builder.seniorityAdjustInformationListFlag {
		req.SeniorityAdjustInformationList = builder.seniorityAdjustInformationList
	}
	if builder.employmentDirectBpsFlag {
		req.EmploymentDirectBps = builder.employmentDirectBps
	}
	if builder.employmentAllBpsFlag {
		req.EmploymentAllBps = builder.employmentAllBps
	}
	if builder.contractTypeFlag {
		req.ContractType = builder.contractType
	}
	if builder.archiveCpstPlanIdFlag {
		req.ArchiveCpstPlanId = &builder.archiveCpstPlanId

	}
	if builder.attendanceGroupIdFlag {
		req.AttendanceGroupId = &builder.attendanceGroupId

	}
	if builder.individualsWithHeadcountOrNotFlag {
		req.IndividualsWithHeadcountOrNot = builder.individualsWithHeadcountOrNot
	}
	return req
}

type EmployeeJobFamily struct {
	Id *string `json:"id,omitempty"` // 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息

	Name []*I18n `json:"name,omitempty"` // 名称

	Active *bool `json:"active,omitempty"` // 是否启用

	ParentId *string `json:"parent_id,omitempty"` // 上级序列，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	Code *string `json:"code,omitempty"` // 编码

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EmployeeJobFamilyBuilder struct {
	id     string // 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
	idFlag bool

	name     []*I18n // 名称
	nameFlag bool

	active     bool // 是否启用
	activeFlag bool

	parentId     string // 上级序列，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
	parentIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	code     string // 编码
	codeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEmployeeJobFamilyBuilder() *EmployeeJobFamilyBuilder {
	builder := &EmployeeJobFamilyBuilder{}
	return builder
}

// 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
//
// 示例值：4698019107896524633
func (builder *EmployeeJobFamilyBuilder) Id(id string) *EmployeeJobFamilyBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *EmployeeJobFamilyBuilder) Name(name []*I18n) *EmployeeJobFamilyBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *EmployeeJobFamilyBuilder) Active(active bool) *EmployeeJobFamilyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 上级序列，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
//
// 示例值：4698020757495316313
func (builder *EmployeeJobFamilyBuilder) ParentId(parentId string) *EmployeeJobFamilyBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *EmployeeJobFamilyBuilder) EffectiveTime(effectiveTime string) *EmployeeJobFamilyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *EmployeeJobFamilyBuilder) ExpirationTime(expirationTime string) *EmployeeJobFamilyBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 编码
//
// 示例值：123456
func (builder *EmployeeJobFamilyBuilder) Code(code string) *EmployeeJobFamilyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmployeeJobFamilyBuilder) CustomFields(customFields []*CustomFieldData) *EmployeeJobFamilyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EmployeeJobFamilyBuilder) Build() *EmployeeJobFamily {
	req := &EmployeeJobFamily{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EmployeeJobLevel struct {
	Id *string `json:"id,omitempty"` // 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息

	LevelOrder *int `json:"level_order,omitempty"` // 职级数值

	Code *string `json:"code,omitempty"` // 编码

	Name []*I18n `json:"name,omitempty"` // 名称

	Description []*I18n `json:"description,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 启用

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EmployeeJobLevelBuilder struct {
	id     string // 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
	idFlag bool

	levelOrder     int // 职级数值
	levelOrderFlag bool

	code     string // 编码
	codeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	active     bool // 启用
	activeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEmployeeJobLevelBuilder() *EmployeeJobLevelBuilder {
	builder := &EmployeeJobLevelBuilder{}
	return builder
}

// 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
//
// 示例值：4692446793125560154
func (builder *EmployeeJobLevelBuilder) Id(id string) *EmployeeJobLevelBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 职级数值
//
// 示例值：9999
func (builder *EmployeeJobLevelBuilder) LevelOrder(levelOrder int) *EmployeeJobLevelBuilder {
	builder.levelOrder = levelOrder
	builder.levelOrderFlag = true
	return builder
}

// 编码
//
// 示例值：VQzo/BSonp8l6PmcZ+VlDhkd2595LMkhyBAGX6HAlCY=
func (builder *EmployeeJobLevelBuilder) Code(code string) *EmployeeJobLevelBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *EmployeeJobLevelBuilder) Name(name []*I18n) *EmployeeJobLevelBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *EmployeeJobLevelBuilder) Description(description []*I18n) *EmployeeJobLevelBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *EmployeeJobLevelBuilder) Active(active bool) *EmployeeJobLevelBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmployeeJobLevelBuilder) CustomFields(customFields []*CustomFieldData) *EmployeeJobLevelBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EmployeeJobLevelBuilder) Build() *EmployeeJobLevel {
	req := &EmployeeJobLevel{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.levelOrderFlag {
		req.LevelOrder = &builder.levelOrder

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EmployeePathway struct {
	Id *string `json:"id,omitempty"` // 通道 ID

	Code *string `json:"code,omitempty"` // 编码

	Name []*I18n `json:"name,omitempty"` // 名称

	Description []*I18n `json:"description,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 启用

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EmployeePathwayBuilder struct {
	id     string // 通道 ID
	idFlag bool

	code     string // 编码
	codeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	active     bool // 启用
	activeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEmployeePathwayBuilder() *EmployeePathwayBuilder {
	builder := &EmployeePathwayBuilder{}
	return builder
}

// 通道 ID
//
// 示例值：4692446793125560154
func (builder *EmployeePathwayBuilder) Id(id string) *EmployeePathwayBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 编码
//
// 示例值：VQzo/BSonp8l6PmcZ+VlDhkd2595LMkhyBAGX6HAlCY=
func (builder *EmployeePathwayBuilder) Code(code string) *EmployeePathwayBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *EmployeePathwayBuilder) Name(name []*I18n) *EmployeePathwayBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *EmployeePathwayBuilder) Description(description []*I18n) *EmployeePathwayBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *EmployeePathwayBuilder) Active(active bool) *EmployeePathwayBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmployeePathwayBuilder) CustomFields(customFields []*CustomFieldData) *EmployeePathwayBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EmployeePathwayBuilder) Build() *EmployeePathway {
	req := &EmployeePathway{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EmployeeBt struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID;- 类型与 user_id_type 一致

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘投递 ID;- 可通过[获取投递信息](https://open.feishu.cn/document/ukTMukTMukTM/uMzM1YjLzMTN24yMzUjN/hire-v1/application/get)获取详情

	PrehireId *string `json:"prehire_id,omitempty"` // 待入职 ID;- 可通过[查询单个待入职](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/pre_hire/get)获取详情

	EmployeeNumber *string `json:"employee_number,omitempty"` // 工号

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID;- 可通过[查询单个人员类型](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详情

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID;- 可通过[批量查询部门V2](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get) 或者[搜索部门信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/search) 获取详情;- 类型与 department_id_type 一致

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID;- 可通过[查询单个职级](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详情

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID;- 可通过 [查询职等](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详情

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID;- 可通过[查询单个地点](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详情

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID;- 可通过[查询单个序列](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详情

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID;- 功能灰度中，有需要请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)

	JobId *string `json:"job_id,omitempty"` // 职务 ID;- 可通过[查询单个职务（V2）](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/get)获取详情

	CompanyId *string `json:"company_id,omitempty"` // 所属公司 ID;- 可通过[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详情

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID;- 可通过[查询单个工时制度](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详情

	Tenure *string `json:"tenure,omitempty"` // 司龄

	SeniorityDate *string `json:"seniority_date,omitempty"` // 司龄起算日期

	EffectiveDate *string `json:"effective_date,omitempty"` // 当前雇佣记录的入职日期

	PrimaryEmployment *bool `json:"primary_employment,omitempty"` // 是否是主雇佣信息

	ProbationPeriod *int `json:"probation_period,omitempty"` // 试用期时长（月）

	OnProbation *bool `json:"on_probation,omitempty"` // 是否在试用期中

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期（实际结束日期）

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直接上级的雇佣 ID;- 类型与 user_id_type 一致;- 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级的雇佣 ID; - 类型与 user_id_type 一致; - 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息

	EmploymentType *Enum `json:"employment_type,omitempty"` // 雇佣类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：employment_type

	EmploymentStatus *Enum `json:"employment_status,omitempty"` // 雇佣状态;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：employment_status

	ExpirationDate *string `json:"expiration_date,omitempty"` // 离职日期;- 即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”

	ReasonForOffboarding *Enum `json:"reason_for_offboarding,omitempty"` // 离职原因;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：reason_for_offboarding

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱地址

	UserName *string `json:"user_name,omitempty"` // 对应老People user_name字段，仅支持字节租户

	WorkEmailList []*WorkEmail `json:"work_email_list,omitempty"` // 工作邮箱列表

	CostCenterList []*JobDataCostCenter `json:"cost_center_list,omitempty"` // 成本中心列表

	Rehire *Enum `json:"rehire,omitempty"` // 是否离职重聘;- 枚举如下：;  - no：否;  - yes：是;  - to_be_confirmed：待确定

	RehireEmploymentId *string `json:"rehire_employment_id,omitempty"` // 历史雇佣信息 ID;- 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息;- 类型不跟随 user_id_type

	PersonInfo *PersonInfoBt `json:"person_info,omitempty"` // 基本个人信息

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段;- 请参考[自定义字段说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)

	NoncompeteStatus *Enum `json:"noncompete_status,omitempty"` // 竞业状态;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：noncompete_status

	PastOffboarding *bool `json:"past_offboarding,omitempty"` // 是否历史离职人员

	RegularEmployeeStartDate *string `json:"regular_employee_start_date,omitempty"` // 转正式日期

	ExternalId *string `json:"external_id,omitempty"` // 外部系统 ID , 可存储租户系统中的员工 ID

	TimesEmployed *int `json:"times_employed,omitempty"` // 入职次数

	RecruitmentType *Enum `json:"recruitment_type,omitempty"` // 招聘来源;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：recruitment_type

	AvatarUrl *string `json:"avatar_url,omitempty"` // 员工头像（即飞书头像）

	PrimaryContractId *string `json:"primary_contract_id,omitempty"` // 主合同 ID;- 可通过[查询单个合同](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/contract/get)获取详情

	ContractStartDate *string `json:"contract_start_date,omitempty"` // 主合同开始日期

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 主合同到期日期

	ContractExpectedEndDate *string `json:"contract_expected_end_date,omitempty"` // 主合同预计到期日期

	PayGroupId *string `json:"pay_group_id,omitempty"` // 所属薪资组 ID

	AssignmentPayGroupId *string `json:"assignment_pay_group_id,omitempty"` // 所属外派薪资组 ID

	InternationalAssignment *bool `json:"international_assignment,omitempty"` // 是否外派

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历 ID - 可通过[查询工作日历](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详情

	Department *BasicDepartment `json:"department,omitempty"` // 部门基本信息

	DirectManager *BasicEmployee `json:"direct_manager,omitempty"` // 直接上级基本信息

	DottedLineManager *BasicEmployee `json:"dotted_line_manager,omitempty"` // 虚线上级基本信息

	TimeZone *string `json:"time_zone,omitempty"` // 时区

	PrimaryInternationalAssignment *InternationalAssignment `json:"primary_international_assignment,omitempty"` // 当前生效的外派记录

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司;- 可通过[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详情

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift

	TalentPoolIdList []string `json:"talent_pool_id_list,omitempty"` // 所属人才池

	CustomOrg *string `json:"custom_org,omitempty"` // 自定义组织

	SeniorityAdjustInformationList []*SeniorityAdjustInformation `json:"seniority_adjust_information_list,omitempty"` // 司龄调整信息

	ContractType *Enum `json:"contract_type,omitempty"` // 当前所属的合同类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type

	ArchiveCpstPlanId *string `json:"archive_cpst_plan_id,omitempty"` // 当前所属薪资方案 ID;- 可结合[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口使用

	AttendanceGroupId *string `json:"attendance_group_id,omitempty"` // 当前所在考勤组 ID;- 可通过[按 ID 查询考勤组](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/get)获取详情

	WhetherReturnee *bool `json:"whether_returnee,omitempty"` // 是否回流

	IndividualsWithHeadcountOrNot *Enum `json:"individuals_with_headcount_or_not,omitempty"` // 员工是否占用编制

	Hrbp []string `json:"hrbp,omitempty"` // hrbp列表

	AllHrbp []string `json:"all_hrbp,omitempty"` // 全部hrbp

	HrbpInfo []*HrbpInfo `json:"hrbp_info,omitempty"` // hrbp详情
}

type EmployeeBtBuilder struct {
	employmentId     string // 雇佣 ID;- 类型与 user_id_type 一致
	employmentIdFlag bool

	atsApplicationId     string // 招聘投递 ID;- 可通过[获取投递信息](https://open.feishu.cn/document/ukTMukTMukTM/uMzM1YjLzMTN24yMzUjN/hire-v1/application/get)获取详情
	atsApplicationIdFlag bool

	prehireId     string // 待入职 ID;- 可通过[查询单个待入职](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/pre_hire/get)获取详情
	prehireIdFlag bool

	employeeNumber     string // 工号
	employeeNumberFlag bool

	employeeTypeId     string // 人员类型 ID;- 可通过[查询单个人员类型](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详情
	employeeTypeIdFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool

	departmentId     string // 部门 ID;- 可通过[批量查询部门V2](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get) 或者[搜索部门信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/search) 获取详情;- 类型与 department_id_type 一致
	departmentIdFlag bool

	jobLevelId     string // 职级 ID;- 可通过[查询单个职级](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详情
	jobLevelIdFlag bool

	jobGradeId     string // 职等 ID;- 可通过 [查询职等](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详情
	jobGradeIdFlag bool

	workLocationId     string // 工作地点 ID;- 可通过[查询单个地点](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详情
	workLocationIdFlag bool

	jobFamilyId     string // 序列 ID;- 可通过[查询单个序列](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详情
	jobFamilyIdFlag bool

	positionId     string // 岗位 ID;- 功能灰度中，有需要请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
	positionIdFlag bool

	jobId     string // 职务 ID;- 可通过[查询单个职务（V2）](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/get)获取详情
	jobIdFlag bool

	companyId     string // 所属公司 ID;- 可通过[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详情
	companyIdFlag bool

	workingHoursTypeId     string // 工时制度 ID;- 可通过[查询单个工时制度](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详情
	workingHoursTypeIdFlag bool

	tenure     string // 司龄
	tenureFlag bool

	seniorityDate     string // 司龄起算日期
	seniorityDateFlag bool

	effectiveDate     string // 当前雇佣记录的入职日期
	effectiveDateFlag bool

	primaryEmployment     bool // 是否是主雇佣信息
	primaryEmploymentFlag bool

	probationPeriod     int // 试用期时长（月）
	probationPeriodFlag bool

	onProbation     bool // 是否在试用期中
	onProbationFlag bool

	probationEndDate     string // 试用期结束日期（实际结束日期）
	probationEndDateFlag bool

	directManagerId     string // 直接上级的雇佣 ID;- 类型与 user_id_type 一致;- 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级的雇佣 ID; - 类型与 user_id_type 一致; - 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息
	dottedLineManagerIdFlag bool

	employmentType     *Enum // 雇佣类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：employment_type
	employmentTypeFlag bool

	employmentStatus     *Enum // 雇佣状态;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：employment_status
	employmentStatusFlag bool

	expirationDate     string // 离职日期;- 即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
	expirationDateFlag bool

	reasonForOffboarding     *Enum // 离职原因;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：reason_for_offboarding
	reasonForOffboardingFlag bool

	emailAddress     string // 邮箱地址
	emailAddressFlag bool

	userName     string // 对应老People user_name字段，仅支持字节租户
	userNameFlag bool

	workEmailList     []*WorkEmail // 工作邮箱列表
	workEmailListFlag bool

	costCenterList     []*JobDataCostCenter // 成本中心列表
	costCenterListFlag bool

	rehire     *Enum // 是否离职重聘;- 枚举如下：;  - no：否;  - yes：是;  - to_be_confirmed：待确定
	rehireFlag bool

	rehireEmploymentId     string // 历史雇佣信息 ID;- 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息;- 类型不跟随 user_id_type
	rehireEmploymentIdFlag bool

	personInfo     *PersonInfoBt // 基本个人信息
	personInfoFlag bool

	customFields     []*CustomFieldData // 自定义字段;- 请参考[自定义字段说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
	customFieldsFlag bool

	noncompeteStatus     *Enum // 竞业状态;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：noncompete_status
	noncompeteStatusFlag bool

	pastOffboarding     bool // 是否历史离职人员
	pastOffboardingFlag bool

	regularEmployeeStartDate     string // 转正式日期
	regularEmployeeStartDateFlag bool

	externalId     string // 外部系统 ID , 可存储租户系统中的员工 ID
	externalIdFlag bool

	timesEmployed     int // 入职次数
	timesEmployedFlag bool

	recruitmentType     *Enum // 招聘来源;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：recruitment_type
	recruitmentTypeFlag bool

	avatarUrl     string // 员工头像（即飞书头像）
	avatarUrlFlag bool

	primaryContractId     string // 主合同 ID;- 可通过[查询单个合同](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/contract/get)获取详情
	primaryContractIdFlag bool

	contractStartDate     string // 主合同开始日期
	contractStartDateFlag bool

	contractEndDate     string // 主合同到期日期
	contractEndDateFlag bool

	contractExpectedEndDate     string // 主合同预计到期日期
	contractExpectedEndDateFlag bool

	payGroupId     string // 所属薪资组 ID
	payGroupIdFlag bool

	assignmentPayGroupId     string // 所属外派薪资组 ID
	assignmentPayGroupIdFlag bool

	internationalAssignment     bool // 是否外派
	internationalAssignmentFlag bool

	workCalendarId     string // 工作日历 ID - 可通过[查询工作日历](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详情
	workCalendarIdFlag bool

	department     *BasicDepartment // 部门基本信息
	departmentFlag bool

	directManager     *BasicEmployee // 直接上级基本信息
	directManagerFlag bool

	dottedLineManager     *BasicEmployee // 虚线上级基本信息
	dottedLineManagerFlag bool

	timeZone     string // 时区
	timeZoneFlag bool

	primaryInternationalAssignment     *InternationalAssignment // 当前生效的外派记录
	primaryInternationalAssignmentFlag bool

	serviceCompany     string // 任职公司;- 可通过[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详情
	serviceCompanyFlag bool

	compensationType     *Enum // 薪资类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
	compensationTypeFlag bool

	workShift     *Enum // 排班类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
	workShiftFlag bool

	talentPoolIdList     []string // 所属人才池
	talentPoolIdListFlag bool

	customOrg     string // 自定义组织
	customOrgFlag bool

	seniorityAdjustInformationList     []*SeniorityAdjustInformation // 司龄调整信息
	seniorityAdjustInformationListFlag bool

	contractType     *Enum // 当前所属的合同类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type
	contractTypeFlag bool

	archiveCpstPlanId     string // 当前所属薪资方案 ID;- 可结合[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口使用
	archiveCpstPlanIdFlag bool

	attendanceGroupId     string // 当前所在考勤组 ID;- 可通过[按 ID 查询考勤组](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/get)获取详情
	attendanceGroupIdFlag bool

	whetherReturnee     bool // 是否回流
	whetherReturneeFlag bool

	individualsWithHeadcountOrNot     *Enum // 员工是否占用编制
	individualsWithHeadcountOrNotFlag bool

	hrbp     []string // hrbp列表
	hrbpFlag bool

	allHrbp     []string // 全部hrbp
	allHrbpFlag bool

	hrbpInfo     []*HrbpInfo // hrbp详情
	hrbpInfoFlag bool
}

func NewEmployeeBtBuilder() *EmployeeBtBuilder {
	builder := &EmployeeBtBuilder{}
	return builder
}

// 雇佣 ID;- 类型与 user_id_type 一致
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) EmploymentId(employmentId string) *EmployeeBtBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 招聘投递 ID;- 可通过[获取投递信息](https://open.feishu.cn/document/ukTMukTMukTM/uMzM1YjLzMTN24yMzUjN/hire-v1/application/get)获取详情
//
// 示例值：6838119494196871234
func (builder *EmployeeBtBuilder) AtsApplicationId(atsApplicationId string) *EmployeeBtBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 待入职 ID;- 可通过[查询单个待入职](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/pre_hire/get)获取详情
//
// 示例值：7023239238976141133
func (builder *EmployeeBtBuilder) PrehireId(prehireId string) *EmployeeBtBuilder {
	builder.prehireId = prehireId
	builder.prehireIdFlag = true
	return builder
}

// 工号
//
// 示例值：1000000
func (builder *EmployeeBtBuilder) EmployeeNumber(employeeNumber string) *EmployeeBtBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 人员类型 ID;- 可通过[查询单个人员类型](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详情
//
// 示例值：6971090097697521314
func (builder *EmployeeBtBuilder) EmployeeTypeId(employeeTypeId string) *EmployeeBtBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6971090097697521317
func (builder *EmployeeBtBuilder) EmployeeSubtypeId(employeeSubtypeId string) *EmployeeBtBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

// 部门 ID;- 可通过[批量查询部门V2](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get) 或者[搜索部门信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/search) 获取详情;- 类型与 department_id_type 一致
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) DepartmentId(departmentId string) *EmployeeBtBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职级 ID;- 可通过[查询单个职级](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详情
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) JobLevelId(jobLevelId string) *EmployeeBtBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等 ID;- 可通过 [查询职等](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详情
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) JobGradeId(jobGradeId string) *EmployeeBtBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 工作地点 ID;- 可通过[查询单个地点](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详情
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) WorkLocationId(workLocationId string) *EmployeeBtBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 序列 ID;- 可通过[查询单个序列](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详情
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) JobFamilyId(jobFamilyId string) *EmployeeBtBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 岗位 ID;- 功能灰度中，有需要请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) PositionId(positionId string) *EmployeeBtBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 职务 ID;- 可通过[查询单个职务（V2）](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/get)获取详情
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) JobId(jobId string) *EmployeeBtBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 所属公司 ID;- 可通过[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详情
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) CompanyId(companyId string) *EmployeeBtBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 工时制度 ID;- 可通过[查询单个工时制度](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详情
//
// 示例值：6893014062142064135
func (builder *EmployeeBtBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeeBtBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 司龄
//
// 示例值：0.01
func (builder *EmployeeBtBuilder) Tenure(tenure string) *EmployeeBtBuilder {
	builder.tenure = tenure
	builder.tenureFlag = true
	return builder
}

// 司龄起算日期
//
// 示例值：2021-03-16
func (builder *EmployeeBtBuilder) SeniorityDate(seniorityDate string) *EmployeeBtBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 当前雇佣记录的入职日期
//
// 示例值：2021-03-16
func (builder *EmployeeBtBuilder) EffectiveDate(effectiveDate string) *EmployeeBtBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 是否是主雇佣信息
//
// 示例值：true
func (builder *EmployeeBtBuilder) PrimaryEmployment(primaryEmployment bool) *EmployeeBtBuilder {
	builder.primaryEmployment = primaryEmployment
	builder.primaryEmploymentFlag = true
	return builder
}

// 试用期时长（月）
//
// 示例值：16
func (builder *EmployeeBtBuilder) ProbationPeriod(probationPeriod int) *EmployeeBtBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

// 是否在试用期中
//
// 示例值：true
func (builder *EmployeeBtBuilder) OnProbation(onProbation bool) *EmployeeBtBuilder {
	builder.onProbation = onProbation
	builder.onProbationFlag = true
	return builder
}

// 试用期结束日期（实际结束日期）
//
// 示例值：2022-08-01
func (builder *EmployeeBtBuilder) ProbationEndDate(probationEndDate string) *EmployeeBtBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 直接上级的雇佣 ID;- 类型与 user_id_type 一致;- 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息
//
// 示例值：7027024823985411287
func (builder *EmployeeBtBuilder) DirectManagerId(directManagerId string) *EmployeeBtBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级的雇佣 ID; - 类型与 user_id_type 一致; - 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息
//
// 示例值：7027024823985411782
func (builder *EmployeeBtBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeeBtBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 雇佣类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：employment_type
//
// 示例值：
func (builder *EmployeeBtBuilder) EmploymentType(employmentType *Enum) *EmployeeBtBuilder {
	builder.employmentType = employmentType
	builder.employmentTypeFlag = true
	return builder
}

// 雇佣状态;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：employment_status
//
// 示例值：
func (builder *EmployeeBtBuilder) EmploymentStatus(employmentStatus *Enum) *EmployeeBtBuilder {
	builder.employmentStatus = employmentStatus
	builder.employmentStatusFlag = true
	return builder
}

// 离职日期;- 即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
//
// 示例值：2022-08-16
func (builder *EmployeeBtBuilder) ExpirationDate(expirationDate string) *EmployeeBtBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 离职原因;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：reason_for_offboarding
//
// 示例值：
func (builder *EmployeeBtBuilder) ReasonForOffboarding(reasonForOffboarding *Enum) *EmployeeBtBuilder {
	builder.reasonForOffboarding = reasonForOffboarding
	builder.reasonForOffboardingFlag = true
	return builder
}

// 邮箱地址
//
// 示例值：test@163.com
func (builder *EmployeeBtBuilder) EmailAddress(emailAddress string) *EmployeeBtBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 对应老People user_name字段，仅支持字节租户
//
// 示例值：test
func (builder *EmployeeBtBuilder) UserName(userName string) *EmployeeBtBuilder {
	builder.userName = userName
	builder.userNameFlag = true
	return builder
}

// 工作邮箱列表
//
// 示例值：
func (builder *EmployeeBtBuilder) WorkEmailList(workEmailList []*WorkEmail) *EmployeeBtBuilder {
	builder.workEmailList = workEmailList
	builder.workEmailListFlag = true
	return builder
}

// 成本中心列表
//
// 示例值：
func (builder *EmployeeBtBuilder) CostCenterList(costCenterList []*JobDataCostCenter) *EmployeeBtBuilder {
	builder.costCenterList = costCenterList
	builder.costCenterListFlag = true
	return builder
}

// 是否离职重聘;- 枚举如下：;  - no：否;  - yes：是;  - to_be_confirmed：待确定
//
// 示例值：
func (builder *EmployeeBtBuilder) Rehire(rehire *Enum) *EmployeeBtBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// 历史雇佣信息 ID;- 可通过[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get) 或 [搜索员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/search)获取详细信息;- 类型不跟随 user_id_type
//
// 示例值：7164286667866966659
func (builder *EmployeeBtBuilder) RehireEmploymentId(rehireEmploymentId string) *EmployeeBtBuilder {
	builder.rehireEmploymentId = rehireEmploymentId
	builder.rehireEmploymentIdFlag = true
	return builder
}

// 基本个人信息
//
// 示例值：
func (builder *EmployeeBtBuilder) PersonInfo(personInfo *PersonInfoBt) *EmployeeBtBuilder {
	builder.personInfo = personInfo
	builder.personInfoFlag = true
	return builder
}

// 自定义字段;- 请参考[自定义字段说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
//
// 示例值：
func (builder *EmployeeBtBuilder) CustomFields(customFields []*CustomFieldData) *EmployeeBtBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 竞业状态;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：noncompete_status
//
// 示例值：
func (builder *EmployeeBtBuilder) NoncompeteStatus(noncompeteStatus *Enum) *EmployeeBtBuilder {
	builder.noncompeteStatus = noncompeteStatus
	builder.noncompeteStatusFlag = true
	return builder
}

// 是否历史离职人员
//
// 示例值：true
func (builder *EmployeeBtBuilder) PastOffboarding(pastOffboarding bool) *EmployeeBtBuilder {
	builder.pastOffboarding = pastOffboarding
	builder.pastOffboardingFlag = true
	return builder
}

// 转正式日期
//
// 示例值：2020-01-01
func (builder *EmployeeBtBuilder) RegularEmployeeStartDate(regularEmployeeStartDate string) *EmployeeBtBuilder {
	builder.regularEmployeeStartDate = regularEmployeeStartDate
	builder.regularEmployeeStartDateFlag = true
	return builder
}

// 外部系统 ID , 可存储租户系统中的员工 ID
//
// 示例值：10000000
func (builder *EmployeeBtBuilder) ExternalId(externalId string) *EmployeeBtBuilder {
	builder.externalId = externalId
	builder.externalIdFlag = true
	return builder
}

// 入职次数
//
// 示例值：16
func (builder *EmployeeBtBuilder) TimesEmployed(timesEmployed int) *EmployeeBtBuilder {
	builder.timesEmployed = timesEmployed
	builder.timesEmployedFlag = true
	return builder
}

// 招聘来源;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：recruitment_type
//
// 示例值：
func (builder *EmployeeBtBuilder) RecruitmentType(recruitmentType *Enum) *EmployeeBtBuilder {
	builder.recruitmentType = recruitmentType
	builder.recruitmentTypeFlag = true
	return builder
}

// 员工头像（即飞书头像）
//
// 示例值：https://internal-api-lark-file.feishu-boe.cn/static-resource/v1/v2_a550d36b-28ef-48ad-9e50-58004beb386j~?image_size=noop&cut_type=&quality=&format=png&sticker_format=.webp
func (builder *EmployeeBtBuilder) AvatarUrl(avatarUrl string) *EmployeeBtBuilder {
	builder.avatarUrl = avatarUrl
	builder.avatarUrlFlag = true
	return builder
}

// 主合同 ID;- 可通过[查询单个合同](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/contract/get)获取详情
//
// 示例值：7164286667866966659
func (builder *EmployeeBtBuilder) PrimaryContractId(primaryContractId string) *EmployeeBtBuilder {
	builder.primaryContractId = primaryContractId
	builder.primaryContractIdFlag = true
	return builder
}

// 主合同开始日期
//
// 示例值：2020-01-01
func (builder *EmployeeBtBuilder) ContractStartDate(contractStartDate string) *EmployeeBtBuilder {
	builder.contractStartDate = contractStartDate
	builder.contractStartDateFlag = true
	return builder
}

// 主合同到期日期
//
// 示例值：2020-01-01
func (builder *EmployeeBtBuilder) ContractEndDate(contractEndDate string) *EmployeeBtBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

// 主合同预计到期日期
//
// 示例值：2020-01-01
func (builder *EmployeeBtBuilder) ContractExpectedEndDate(contractExpectedEndDate string) *EmployeeBtBuilder {
	builder.contractExpectedEndDate = contractExpectedEndDate
	builder.contractExpectedEndDateFlag = true
	return builder
}

// 所属薪资组 ID
//
// 示例值：7164286667866966659
func (builder *EmployeeBtBuilder) PayGroupId(payGroupId string) *EmployeeBtBuilder {
	builder.payGroupId = payGroupId
	builder.payGroupIdFlag = true
	return builder
}

// 所属外派薪资组 ID
//
// 示例值：7164286667866966659
func (builder *EmployeeBtBuilder) AssignmentPayGroupId(assignmentPayGroupId string) *EmployeeBtBuilder {
	builder.assignmentPayGroupId = assignmentPayGroupId
	builder.assignmentPayGroupIdFlag = true
	return builder
}

// 是否外派
//
// 示例值：true
func (builder *EmployeeBtBuilder) InternationalAssignment(internationalAssignment bool) *EmployeeBtBuilder {
	builder.internationalAssignment = internationalAssignment
	builder.internationalAssignmentFlag = true
	return builder
}

// 工作日历 ID - 可通过[查询工作日历](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详情
//
// 示例值：7164286667866966659
func (builder *EmployeeBtBuilder) WorkCalendarId(workCalendarId string) *EmployeeBtBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 部门基本信息
//
// 示例值：
func (builder *EmployeeBtBuilder) Department(department *BasicDepartment) *EmployeeBtBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 直接上级基本信息
//
// 示例值：
func (builder *EmployeeBtBuilder) DirectManager(directManager *BasicEmployee) *EmployeeBtBuilder {
	builder.directManager = directManager
	builder.directManagerFlag = true
	return builder
}

// 虚线上级基本信息
//
// 示例值：
func (builder *EmployeeBtBuilder) DottedLineManager(dottedLineManager *BasicEmployee) *EmployeeBtBuilder {
	builder.dottedLineManager = dottedLineManager
	builder.dottedLineManagerFlag = true
	return builder
}

// 时区
//
// 示例值：Asia/Shanghai
func (builder *EmployeeBtBuilder) TimeZone(timeZone string) *EmployeeBtBuilder {
	builder.timeZone = timeZone
	builder.timeZoneFlag = true
	return builder
}

// 当前生效的外派记录
//
// 示例值：
func (builder *EmployeeBtBuilder) PrimaryInternationalAssignment(primaryInternationalAssignment *InternationalAssignment) *EmployeeBtBuilder {
	builder.primaryInternationalAssignment = primaryInternationalAssignment
	builder.primaryInternationalAssignmentFlag = true
	return builder
}

// 任职公司;- 可通过[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详情
//
// 示例值：7174374910734141112
func (builder *EmployeeBtBuilder) ServiceCompany(serviceCompany string) *EmployeeBtBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 薪资类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
//
// 示例值：
func (builder *EmployeeBtBuilder) CompensationType(compensationType *Enum) *EmployeeBtBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 排班类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
//
// 示例值：
func (builder *EmployeeBtBuilder) WorkShift(workShift *Enum) *EmployeeBtBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 所属人才池
//
// 示例值：
func (builder *EmployeeBtBuilder) TalentPoolIdList(talentPoolIdList []string) *EmployeeBtBuilder {
	builder.talentPoolIdList = talentPoolIdList
	builder.talentPoolIdListFlag = true
	return builder
}

// 自定义组织
//
// 示例值：{"custom_org_02":[{"id":"1","rate":"99"}]}
func (builder *EmployeeBtBuilder) CustomOrg(customOrg string) *EmployeeBtBuilder {
	builder.customOrg = customOrg
	builder.customOrgFlag = true
	return builder
}

// 司龄调整信息
//
// 示例值：
func (builder *EmployeeBtBuilder) SeniorityAdjustInformationList(seniorityAdjustInformationList []*SeniorityAdjustInformation) *EmployeeBtBuilder {
	builder.seniorityAdjustInformationList = seniorityAdjustInformationList
	builder.seniorityAdjustInformationListFlag = true
	return builder
}

// 当前所属的合同类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type
//
// 示例值：
func (builder *EmployeeBtBuilder) ContractType(contractType *Enum) *EmployeeBtBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// 当前所属薪资方案 ID;- 可结合[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口使用
//
// 示例值：123456789
func (builder *EmployeeBtBuilder) ArchiveCpstPlanId(archiveCpstPlanId string) *EmployeeBtBuilder {
	builder.archiveCpstPlanId = archiveCpstPlanId
	builder.archiveCpstPlanIdFlag = true
	return builder
}

// 当前所在考勤组 ID;- 可通过[按 ID 查询考勤组](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/get)获取详情
//
// 示例值：123456789
func (builder *EmployeeBtBuilder) AttendanceGroupId(attendanceGroupId string) *EmployeeBtBuilder {
	builder.attendanceGroupId = attendanceGroupId
	builder.attendanceGroupIdFlag = true
	return builder
}

// 是否回流
//
// 示例值：true
func (builder *EmployeeBtBuilder) WhetherReturnee(whetherReturnee bool) *EmployeeBtBuilder {
	builder.whetherReturnee = whetherReturnee
	builder.whetherReturneeFlag = true
	return builder
}

// 员工是否占用编制
//
// 示例值：with_headcount
func (builder *EmployeeBtBuilder) IndividualsWithHeadcountOrNot(individualsWithHeadcountOrNot *Enum) *EmployeeBtBuilder {
	builder.individualsWithHeadcountOrNot = individualsWithHeadcountOrNot
	builder.individualsWithHeadcountOrNotFlag = true
	return builder
}

// hrbp列表
//
// 示例值：
func (builder *EmployeeBtBuilder) Hrbp(hrbp []string) *EmployeeBtBuilder {
	builder.hrbp = hrbp
	builder.hrbpFlag = true
	return builder
}

// 全部hrbp
//
// 示例值：
func (builder *EmployeeBtBuilder) AllHrbp(allHrbp []string) *EmployeeBtBuilder {
	builder.allHrbp = allHrbp
	builder.allHrbpFlag = true
	return builder
}

// hrbp详情
//
// 示例值：
func (builder *EmployeeBtBuilder) HrbpInfo(hrbpInfo []*HrbpInfo) *EmployeeBtBuilder {
	builder.hrbpInfo = hrbpInfo
	builder.hrbpInfoFlag = true
	return builder
}

func (builder *EmployeeBtBuilder) Build() *EmployeeBt {
	req := &EmployeeBt{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.prehireIdFlag {
		req.PrehireId = &builder.prehireId

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.tenureFlag {
		req.Tenure = &builder.tenure

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.primaryEmploymentFlag {
		req.PrimaryEmployment = &builder.primaryEmployment

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	if builder.onProbationFlag {
		req.OnProbation = &builder.onProbation

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.employmentTypeFlag {
		req.EmploymentType = builder.employmentType
	}
	if builder.employmentStatusFlag {
		req.EmploymentStatus = builder.employmentStatus
	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.reasonForOffboardingFlag {
		req.ReasonForOffboarding = builder.reasonForOffboarding
	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.userNameFlag {
		req.UserName = &builder.userName

	}
	if builder.workEmailListFlag {
		req.WorkEmailList = builder.workEmailList
	}
	if builder.costCenterListFlag {
		req.CostCenterList = builder.costCenterList
	}
	if builder.rehireFlag {
		req.Rehire = builder.rehire
	}
	if builder.rehireEmploymentIdFlag {
		req.RehireEmploymentId = &builder.rehireEmploymentId

	}
	if builder.personInfoFlag {
		req.PersonInfo = builder.personInfo
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.noncompeteStatusFlag {
		req.NoncompeteStatus = builder.noncompeteStatus
	}
	if builder.pastOffboardingFlag {
		req.PastOffboarding = &builder.pastOffboarding

	}
	if builder.regularEmployeeStartDateFlag {
		req.RegularEmployeeStartDate = &builder.regularEmployeeStartDate

	}
	if builder.externalIdFlag {
		req.ExternalId = &builder.externalId

	}
	if builder.timesEmployedFlag {
		req.TimesEmployed = &builder.timesEmployed

	}
	if builder.recruitmentTypeFlag {
		req.RecruitmentType = builder.recruitmentType
	}
	if builder.avatarUrlFlag {
		req.AvatarUrl = &builder.avatarUrl

	}
	if builder.primaryContractIdFlag {
		req.PrimaryContractId = &builder.primaryContractId

	}
	if builder.contractStartDateFlag {
		req.ContractStartDate = &builder.contractStartDate

	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	if builder.contractExpectedEndDateFlag {
		req.ContractExpectedEndDate = &builder.contractExpectedEndDate

	}
	if builder.payGroupIdFlag {
		req.PayGroupId = &builder.payGroupId

	}
	if builder.assignmentPayGroupIdFlag {
		req.AssignmentPayGroupId = &builder.assignmentPayGroupId

	}
	if builder.internationalAssignmentFlag {
		req.InternationalAssignment = &builder.internationalAssignment

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.departmentFlag {
		req.Department = builder.department
	}
	if builder.directManagerFlag {
		req.DirectManager = builder.directManager
	}
	if builder.dottedLineManagerFlag {
		req.DottedLineManager = builder.dottedLineManager
	}
	if builder.timeZoneFlag {
		req.TimeZone = &builder.timeZone

	}
	if builder.primaryInternationalAssignmentFlag {
		req.PrimaryInternationalAssignment = builder.primaryInternationalAssignment
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.talentPoolIdListFlag {
		req.TalentPoolIdList = builder.talentPoolIdList
	}
	if builder.customOrgFlag {
		req.CustomOrg = &builder.customOrg

	}
	if builder.seniorityAdjustInformationListFlag {
		req.SeniorityAdjustInformationList = builder.seniorityAdjustInformationList
	}
	if builder.contractTypeFlag {
		req.ContractType = builder.contractType
	}
	if builder.archiveCpstPlanIdFlag {
		req.ArchiveCpstPlanId = &builder.archiveCpstPlanId

	}
	if builder.attendanceGroupIdFlag {
		req.AttendanceGroupId = &builder.attendanceGroupId

	}
	if builder.whetherReturneeFlag {
		req.WhetherReturnee = &builder.whetherReturnee

	}
	if builder.individualsWithHeadcountOrNotFlag {
		req.IndividualsWithHeadcountOrNot = builder.individualsWithHeadcountOrNot
	}
	if builder.hrbpFlag {
		req.Hrbp = builder.hrbp
	}
	if builder.allHrbpFlag {
		req.AllHrbp = builder.allHrbp
	}
	if builder.hrbpInfoFlag {
		req.HrbpInfo = builder.hrbpInfo
	}
	return req
}

type EmployeeCheckInfo struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	IsEligible *bool `json:"is_eligible,omitempty"` // 是否符合条件
}

type EmployeeCheckInfoBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	isEligible     bool // 是否符合条件
	isEligibleFlag bool
}

func NewEmployeeCheckInfoBuilder() *EmployeeCheckInfoBuilder {
	builder := &EmployeeCheckInfoBuilder{}
	return builder
}

// 员工ID
//
// 示例值：123
func (builder *EmployeeCheckInfoBuilder) EmploymentId(employmentId string) *EmployeeCheckInfoBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 是否符合条件
//
// 示例值：true
func (builder *EmployeeCheckInfoBuilder) IsEligible(isEligible bool) *EmployeeCheckInfoBuilder {
	builder.isEligible = isEligible
	builder.isEligibleFlag = true
	return builder
}

func (builder *EmployeeCheckInfoBuilder) Build() *EmployeeCheckInfo {
	req := &EmployeeCheckInfo{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.isEligibleFlag {
		req.IsEligible = &builder.isEligible

	}
	return req
}

type EmployeeCostAllocation struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工id

	CostAllocations []*EmploymentCostAllocation `json:"cost_allocations,omitempty"` // 成本分摊
}

type EmployeeCostAllocationBuilder struct {
	employmentId     string // 员工id
	employmentIdFlag bool

	costAllocations     []*EmploymentCostAllocation // 成本分摊
	costAllocationsFlag bool
}

func NewEmployeeCostAllocationBuilder() *EmployeeCostAllocationBuilder {
	builder := &EmployeeCostAllocationBuilder{}
	return builder
}

// 员工id
//
// 示例值：7475686493613920050
func (builder *EmployeeCostAllocationBuilder) EmploymentId(employmentId string) *EmployeeCostAllocationBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *EmployeeCostAllocationBuilder) CostAllocations(costAllocations []*EmploymentCostAllocation) *EmployeeCostAllocationBuilder {
	builder.costAllocations = costAllocations
	builder.costAllocationsFlag = true
	return builder
}

func (builder *EmployeeCostAllocationBuilder) Build() *EmployeeCostAllocation {
	req := &EmployeeCostAllocation{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.costAllocationsFlag {
		req.CostAllocations = builder.costAllocations
	}
	return req
}

type EmployeeDefaultCostCenter struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 用户id

	DefaultCostCenters []*EmploymentDefaultCostCenter `json:"default_cost_centers,omitempty"` // 默认成本中心
}

type EmployeeDefaultCostCenterBuilder struct {
	employmentId     string // 用户id
	employmentIdFlag bool

	defaultCostCenters     []*EmploymentDefaultCostCenter // 默认成本中心
	defaultCostCentersFlag bool
}

func NewEmployeeDefaultCostCenterBuilder() *EmployeeDefaultCostCenterBuilder {
	builder := &EmployeeDefaultCostCenterBuilder{}
	return builder
}

// 用户id
//
// 示例值：7475686493613920050
func (builder *EmployeeDefaultCostCenterBuilder) EmploymentId(employmentId string) *EmployeeDefaultCostCenterBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 默认成本中心
//
// 示例值：
func (builder *EmployeeDefaultCostCenterBuilder) DefaultCostCenters(defaultCostCenters []*EmploymentDefaultCostCenter) *EmployeeDefaultCostCenterBuilder {
	builder.defaultCostCenters = defaultCostCenters
	builder.defaultCostCentersFlag = true
	return builder
}

func (builder *EmployeeDefaultCostCenterBuilder) Build() *EmployeeDefaultCostCenter {
	req := &EmployeeDefaultCostCenter{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.defaultCostCentersFlag {
		req.DefaultCostCenters = builder.defaultCostCenters
	}
	return req
}

type EmployeeDomainEventData struct {
	Id *string `json:"id,omitempty"` // 变更实体的ID

	Entity *string `json:"entity,omitempty"` // 变更实体标识，ObjAPIName

	AggEntity *string `json:"agg_entity,omitempty"` // 聚合实体标识，父对象 ObjAPIName

	AggEntityId *string `json:"agg_entity_id,omitempty"` // 聚合实体ID 父对象ID

	OptType *int `json:"opt_type,omitempty"` // 操作类型

	Fields []string `json:"fields,omitempty"` // 字段标识，ApiName
}

type EmployeeDomainEventDataBuilder struct {
	id     string // 变更实体的ID
	idFlag bool

	entity     string // 变更实体标识，ObjAPIName
	entityFlag bool

	aggEntity     string // 聚合实体标识，父对象 ObjAPIName
	aggEntityFlag bool

	aggEntityId     string // 聚合实体ID 父对象ID
	aggEntityIdFlag bool

	optType     int // 操作类型
	optTypeFlag bool

	fields     []string // 字段标识，ApiName
	fieldsFlag bool
}

func NewEmployeeDomainEventDataBuilder() *EmployeeDomainEventDataBuilder {
	builder := &EmployeeDomainEventDataBuilder{}
	return builder
}

// 变更实体的ID
//
// 示例值：7291573441955235372
func (builder *EmployeeDomainEventDataBuilder) Id(id string) *EmployeeDomainEventDataBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 变更实体标识，ObjAPIName
//
// 示例值：email
func (builder *EmployeeDomainEventDataBuilder) Entity(entity string) *EmployeeDomainEventDataBuilder {
	builder.entity = entity
	builder.entityFlag = true
	return builder
}

// 聚合实体标识，父对象 ObjAPIName
//
// 示例值：person
func (builder *EmployeeDomainEventDataBuilder) AggEntity(aggEntity string) *EmployeeDomainEventDataBuilder {
	builder.aggEntity = aggEntity
	builder.aggEntityFlag = true
	return builder
}

// 聚合实体ID 父对象ID
//
// 示例值：7291273149417948716
func (builder *EmployeeDomainEventDataBuilder) AggEntityId(aggEntityId string) *EmployeeDomainEventDataBuilder {
	builder.aggEntityId = aggEntityId
	builder.aggEntityIdFlag = true
	return builder
}

// 操作类型
//
// 示例值：1
func (builder *EmployeeDomainEventDataBuilder) OptType(optType int) *EmployeeDomainEventDataBuilder {
	builder.optType = optType
	builder.optTypeFlag = true
	return builder
}

// 字段标识，ApiName
//
// 示例值：
func (builder *EmployeeDomainEventDataBuilder) Fields(fields []string) *EmployeeDomainEventDataBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *EmployeeDomainEventDataBuilder) Build() *EmployeeDomainEventData {
	req := &EmployeeDomainEventData{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.entityFlag {
		req.Entity = &builder.entity

	}
	if builder.aggEntityFlag {
		req.AggEntity = &builder.aggEntity

	}
	if builder.aggEntityIdFlag {
		req.AggEntityId = &builder.aggEntityId

	}
	if builder.optTypeFlag {
		req.OptType = &builder.optType

	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type EmployeeInternationalAssignment struct {
	EmploymentId *string `json:"employment_id,omitempty"` // Employment ID

	InternationalAssignments []*InternationalAssignmentV2 `json:"international_assignments,omitempty"` // 派驻信息列表
}

type EmployeeInternationalAssignmentBuilder struct {
	employmentId     string // Employment ID
	employmentIdFlag bool

	internationalAssignments     []*InternationalAssignmentV2 // 派驻信息列表
	internationalAssignmentsFlag bool
}

func NewEmployeeInternationalAssignmentBuilder() *EmployeeInternationalAssignmentBuilder {
	builder := &EmployeeInternationalAssignmentBuilder{}
	return builder
}

// Employment ID
//
// 示例值：6893014062142064135
func (builder *EmployeeInternationalAssignmentBuilder) EmploymentId(employmentId string) *EmployeeInternationalAssignmentBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 派驻信息列表
//
// 示例值：
func (builder *EmployeeInternationalAssignmentBuilder) InternationalAssignments(internationalAssignments []*InternationalAssignmentV2) *EmployeeInternationalAssignmentBuilder {
	builder.internationalAssignments = internationalAssignments
	builder.internationalAssignmentsFlag = true
	return builder
}

func (builder *EmployeeInternationalAssignmentBuilder) Build() *EmployeeInternationalAssignment {
	req := &EmployeeInternationalAssignment{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.internationalAssignmentsFlag {
		req.InternationalAssignments = builder.internationalAssignments
	}
	return req
}

type EmployeeJobData struct {
	EmploymentId *string `json:"employment_id,omitempty"` // Employment ID

	JobDatas []*JobData `json:"job_datas,omitempty"` // 实体在 CoreHR 内部的唯一键
}

type EmployeeJobDataBuilder struct {
	employmentId     string // Employment ID
	employmentIdFlag bool

	jobDatas     []*JobData // 实体在 CoreHR 内部的唯一键
	jobDatasFlag bool
}

func NewEmployeeJobDataBuilder() *EmployeeJobDataBuilder {
	builder := &EmployeeJobDataBuilder{}
	return builder
}

// Employment ID
//
// 示例值：6893014062142064135
func (builder *EmployeeJobDataBuilder) EmploymentId(employmentId string) *EmployeeJobDataBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 实体在 CoreHR 内部的唯一键
//
// 示例值：6890452208593372679
func (builder *EmployeeJobDataBuilder) JobDatas(jobDatas []*JobData) *EmployeeJobDataBuilder {
	builder.jobDatas = jobDatas
	builder.jobDatasFlag = true
	return builder
}

func (builder *EmployeeJobDataBuilder) Build() *EmployeeJobData {
	req := &EmployeeJobData{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.jobDatasFlag {
		req.JobDatas = builder.jobDatas
	}
	return req
}

type EmployeeUnionCityInfo struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	IsInUnionCity *bool `json:"is_in_union_city,omitempty"` // 是否在工会城市
}

type EmployeeUnionCityInfoBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	isInUnionCity     bool // 是否在工会城市
	isInUnionCityFlag bool
}

func NewEmployeeUnionCityInfoBuilder() *EmployeeUnionCityInfoBuilder {
	builder := &EmployeeUnionCityInfoBuilder{}
	return builder
}

// 员工ID
//
// 示例值：7109475834939434
func (builder *EmployeeUnionCityInfoBuilder) EmploymentId(employmentId string) *EmployeeUnionCityInfoBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 是否在工会城市
//
// 示例值：false
func (builder *EmployeeUnionCityInfoBuilder) IsInUnionCity(isInUnionCity bool) *EmployeeUnionCityInfoBuilder {
	builder.isInUnionCity = isInUnionCity
	builder.isInUnionCityFlag = true
	return builder
}

func (builder *EmployeeUnionCityInfoBuilder) Build() *EmployeeUnionCityInfo {
	req := &EmployeeUnionCityInfo{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.isInUnionCityFlag {
		req.IsInUnionCity = &builder.isInUnionCity

	}
	return req
}

type EmployeesAdditionalJob struct {
	Id *string `json:"id,omitempty"` // 兼职记录ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID，可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息；类型与department_id_type一致

	JobId *string `json:"job_id,omitempty"` // 职务 ID，可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	StartDate *string `json:"start_date,omitempty"` // 兼职开始日期

	EndDate *string `json:"end_date,omitempty"` // 兼职结束日期

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司，可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息

	WeeklyWorkingHours *string `json:"weekly_working_hours,omitempty"` // 周工作时长【0~168】

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID
}

type EmployeesAdditionalJobBuilder struct {
	id     string // 兼职记录ID
	idFlag bool

	employeeTypeId     string // 人员类型 ID，可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
	employeeTypeIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
	workingHoursTypeIdFlag bool

	workLocationId     string // 工作地点 ID，可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
	workLocationIdFlag bool

	departmentId     string // 部门 ID，可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息；类型与department_id_type一致
	departmentIdFlag bool

	jobId     string // 职务 ID，可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
	jobIdFlag bool

	jobLevelId     string // 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
	jobLevelIdFlag bool

	jobFamilyId     string // 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
	jobFamilyIdFlag bool

	employmentId     string // 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	employmentIdFlag bool

	startDate     string // 兼职开始日期
	startDateFlag bool

	endDate     string // 兼职结束日期
	endDateFlag bool

	directManagerId     string // 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	dottedLineManagerIdFlag bool

	workShift     *Enum // 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"
	workShiftFlag bool

	compensationType     *Enum // 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"
	compensationTypeFlag bool

	serviceCompany     string // 任职公司，可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
	serviceCompanyFlag bool

	weeklyWorkingHours     string // 周工作时长【0~168】
	weeklyWorkingHoursFlag bool

	workCalendarId     string // 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
	workCalendarIdFlag bool

	positionId     string // 岗位 ID
	positionIdFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool
}

func NewEmployeesAdditionalJobBuilder() *EmployeesAdditionalJobBuilder {
	builder := &EmployeesAdditionalJobBuilder{}
	return builder
}

// 兼职记录ID
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobBuilder) Id(id string) *EmployeesAdditionalJobBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 人员类型 ID，可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobBuilder) EmployeeTypeId(employeeTypeId string) *EmployeesAdditionalJobBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 工时制度 ID，可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeesAdditionalJobBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 工作地点 ID，可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobBuilder) WorkLocationId(workLocationId string) *EmployeesAdditionalJobBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 部门 ID，可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息；类型与department_id_type一致
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobBuilder) DepartmentId(departmentId string) *EmployeesAdditionalJobBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职务 ID，可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobBuilder) JobId(jobId string) *EmployeesAdditionalJobBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobBuilder) JobLevelId(jobLevelId string) *EmployeesAdditionalJobBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
//
// 示例值：1245678
func (builder *EmployeesAdditionalJobBuilder) JobFamilyId(jobFamilyId string) *EmployeesAdditionalJobBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6893014062142064135
func (builder *EmployeesAdditionalJobBuilder) EmploymentId(employmentId string) *EmployeesAdditionalJobBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 兼职开始日期
//
// 示例值：2020-05-01
func (builder *EmployeesAdditionalJobBuilder) StartDate(startDate string) *EmployeesAdditionalJobBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 兼职结束日期
//
// 示例值：2020-05-02
func (builder *EmployeesAdditionalJobBuilder) EndDate(endDate string) *EmployeesAdditionalJobBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobBuilder) DirectManagerId(directManagerId string) *EmployeesAdditionalJobBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeesAdditionalJobBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"
//
// 示例值：
func (builder *EmployeesAdditionalJobBuilder) WorkShift(workShift *Enum) *EmployeesAdditionalJobBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"
//
// 示例值：
func (builder *EmployeesAdditionalJobBuilder) CompensationType(compensationType *Enum) *EmployeesAdditionalJobBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 任职公司，可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobBuilder) ServiceCompany(serviceCompany string) *EmployeesAdditionalJobBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 周工作时长【0~168】
//
// 示例值：5
func (builder *EmployeesAdditionalJobBuilder) WeeklyWorkingHours(weeklyWorkingHours string) *EmployeesAdditionalJobBuilder {
	builder.weeklyWorkingHours = weeklyWorkingHours
	builder.weeklyWorkingHoursFlag = true
	return builder
}

// 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobBuilder) WorkCalendarId(workCalendarId string) *EmployeesAdditionalJobBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 岗位 ID
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobBuilder) PositionId(positionId string) *EmployeesAdditionalJobBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobBuilder) EmployeeSubtypeId(employeeSubtypeId string) *EmployeesAdditionalJobBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

func (builder *EmployeesAdditionalJobBuilder) Build() *EmployeesAdditionalJob {
	req := &EmployeesAdditionalJob{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.weeklyWorkingHoursFlag {
		req.WeeklyWorkingHours = &builder.weeklyWorkingHours

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	return req
}

type EmployeesAdditionalJobBatchReqDate struct {
	Start *string `json:"start,omitempty"` // 开始

	End *string `json:"end,omitempty"` // 结束
}

type EmployeesAdditionalJobBatchReqDateBuilder struct {
	start     string // 开始
	startFlag bool

	end     string // 结束
	endFlag bool
}

func NewEmployeesAdditionalJobBatchReqDateBuilder() *EmployeesAdditionalJobBatchReqDateBuilder {
	builder := &EmployeesAdditionalJobBatchReqDateBuilder{}
	return builder
}

// 开始
//
// 示例值：2024-01-01
func (builder *EmployeesAdditionalJobBatchReqDateBuilder) Start(start string) *EmployeesAdditionalJobBatchReqDateBuilder {
	builder.start = start
	builder.startFlag = true
	return builder
}

// 结束
//
// 示例值：2024-01-01
func (builder *EmployeesAdditionalJobBatchReqDateBuilder) End(end string) *EmployeesAdditionalJobBatchReqDateBuilder {
	builder.end = end
	builder.endFlag = true
	return builder
}

func (builder *EmployeesAdditionalJobBatchReqDateBuilder) Build() *EmployeesAdditionalJobBatchReqDate {
	req := &EmployeesAdditionalJobBatchReqDate{}
	if builder.startFlag {
		req.Start = &builder.start

	}
	if builder.endFlag {
		req.End = &builder.end

	}
	return req
}

type EmployeesAdditionalJobEdit struct {
	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID，可通过[【批量查询人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)获取

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取详细信息

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，可通过[【批量查询地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/list)获取详细信息

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，可通过[【批量查询部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取详细信息；类型与department_id_type一致

	JobId *string `json:"job_id,omitempty"` // 职务 ID，可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取详细信息

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，可通过[【批量查询职级】](https://open.feishu.cn/document//uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取详细信息

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID，可通过[【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取详细信息

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	StartDate *string `json:"start_date,omitempty"` // 兼职开始日期

	EndDate *string `json:"end_date,omitempty"` // 兼职结束日期，不可清空

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司，可通过[【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取详细信息

	WeeklyWorkingHours *string `json:"weekly_working_hours,omitempty"` // 周工作时长【0~168】

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID
}

type EmployeesAdditionalJobEditBuilder struct {
	employeeTypeId     string // 人员类型 ID，可通过[【批量查询人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)获取
	employeeTypeIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取详细信息
	workingHoursTypeIdFlag bool

	workLocationId     string // 工作地点 ID，可通过[【批量查询地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/list)获取详细信息
	workLocationIdFlag bool

	departmentId     string // 部门 ID，可通过[【批量查询部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取详细信息；类型与department_id_type一致
	departmentIdFlag bool

	jobId     string // 职务 ID，可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取详细信息
	jobIdFlag bool

	jobLevelId     string // 职级 ID，可通过[【批量查询职级】](https://open.feishu.cn/document//uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取详细信息
	jobLevelIdFlag bool

	jobFamilyId     string // 序列 ID，可通过[【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取详细信息
	jobFamilyIdFlag bool

	employmentId     string // 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	employmentIdFlag bool

	startDate     string // 兼职开始日期
	startDateFlag bool

	endDate     string // 兼职结束日期，不可清空
	endDateFlag bool

	directManagerId     string // 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	dottedLineManagerIdFlag bool

	workShift     *Enum // 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"
	workShiftFlag bool

	compensationType     *Enum // 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"
	compensationTypeFlag bool

	serviceCompany     string // 任职公司，可通过[【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取详细信息
	serviceCompanyFlag bool

	weeklyWorkingHours     string // 周工作时长【0~168】
	weeklyWorkingHoursFlag bool

	workCalendarId     string // 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
	workCalendarIdFlag bool

	positionId     string // 岗位 ID
	positionIdFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool
}

func NewEmployeesAdditionalJobEditBuilder() *EmployeesAdditionalJobEditBuilder {
	builder := &EmployeesAdditionalJobEditBuilder{}
	return builder
}

// 人员类型 ID，可通过[【批量查询人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)获取
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobEditBuilder) EmployeeTypeId(employeeTypeId string) *EmployeesAdditionalJobEditBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 工时制度 ID，可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobEditBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeesAdditionalJobEditBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 工作地点 ID，可通过[【批量查询地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/list)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobEditBuilder) WorkLocationId(workLocationId string) *EmployeesAdditionalJobEditBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 部门 ID，可通过[【批量查询部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取详细信息；类型与department_id_type一致
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobEditBuilder) DepartmentId(departmentId string) *EmployeesAdditionalJobEditBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职务 ID，可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobEditBuilder) JobId(jobId string) *EmployeesAdditionalJobEditBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职级 ID，可通过[【批量查询职级】](https://open.feishu.cn/document//uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobEditBuilder) JobLevelId(jobLevelId string) *EmployeesAdditionalJobEditBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 序列 ID，可通过[【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取详细信息
//
// 示例值：1245678
func (builder *EmployeesAdditionalJobEditBuilder) JobFamilyId(jobFamilyId string) *EmployeesAdditionalJobEditBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6893014062142064135
func (builder *EmployeesAdditionalJobEditBuilder) EmploymentId(employmentId string) *EmployeesAdditionalJobEditBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 兼职开始日期
//
// 示例值：2020-05-01
func (builder *EmployeesAdditionalJobEditBuilder) StartDate(startDate string) *EmployeesAdditionalJobEditBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 兼职结束日期，不可清空
//
// 示例值：2020-05-02
func (builder *EmployeesAdditionalJobEditBuilder) EndDate(endDate string) *EmployeesAdditionalJobEditBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobEditBuilder) DirectManagerId(directManagerId string) *EmployeesAdditionalJobEditBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobEditBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeesAdditionalJobEditBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"
//
// 示例值：
func (builder *EmployeesAdditionalJobEditBuilder) WorkShift(workShift *Enum) *EmployeesAdditionalJobEditBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"
//
// 示例值：
func (builder *EmployeesAdditionalJobEditBuilder) CompensationType(compensationType *Enum) *EmployeesAdditionalJobEditBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 任职公司，可通过[【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取详细信息
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobEditBuilder) ServiceCompany(serviceCompany string) *EmployeesAdditionalJobEditBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 周工作时长【0~168】
//
// 示例值：5
func (builder *EmployeesAdditionalJobEditBuilder) WeeklyWorkingHours(weeklyWorkingHours string) *EmployeesAdditionalJobEditBuilder {
	builder.weeklyWorkingHours = weeklyWorkingHours
	builder.weeklyWorkingHoursFlag = true
	return builder
}

// 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobEditBuilder) WorkCalendarId(workCalendarId string) *EmployeesAdditionalJobEditBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 岗位 ID
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobEditBuilder) PositionId(positionId string) *EmployeesAdditionalJobEditBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobEditBuilder) EmployeeSubtypeId(employeeSubtypeId string) *EmployeesAdditionalJobEditBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

func (builder *EmployeesAdditionalJobEditBuilder) Build() *EmployeesAdditionalJobEdit {
	req := &EmployeesAdditionalJobEdit{}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.weeklyWorkingHoursFlag {
		req.WeeklyWorkingHours = &builder.weeklyWorkingHours

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	return req
}

type EmployeesAdditionalJobWriteResp struct {
	Id *string `json:"id,omitempty"` // 兼职记录ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID，可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息；类型与department_id_type一致

	JobId *string `json:"job_id,omitempty"` // 职务 ID，可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	StartDate *string `json:"start_date,omitempty"` // 兼职开始日期

	EndDate *string `json:"end_date,omitempty"` // 兼职结束日期

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司，可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息

	WeeklyWorkingHours *string `json:"weekly_working_hours,omitempty"` // 周工作时长【0~168】

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID
}

type EmployeesAdditionalJobWriteRespBuilder struct {
	id     string // 兼职记录ID
	idFlag bool

	employeeTypeId     string // 人员类型 ID，可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
	employeeTypeIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
	workingHoursTypeIdFlag bool

	workLocationId     string // 工作地点 ID，可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
	workLocationIdFlag bool

	departmentId     string // 部门 ID，可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息；类型与department_id_type一致
	departmentIdFlag bool

	jobId     string // 职务 ID，可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
	jobIdFlag bool

	jobLevelId     string // 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
	jobLevelIdFlag bool

	jobFamilyId     string // 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
	jobFamilyIdFlag bool

	employmentId     string // 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	employmentIdFlag bool

	startDate     string // 兼职开始日期
	startDateFlag bool

	endDate     string // 兼职结束日期
	endDateFlag bool

	directManagerId     string // 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
	dottedLineManagerIdFlag bool

	workShift     *Enum // 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"
	workShiftFlag bool

	compensationType     *Enum // 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"
	compensationTypeFlag bool

	serviceCompany     string // 任职公司，可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
	serviceCompanyFlag bool

	weeklyWorkingHours     string // 周工作时长【0~168】
	weeklyWorkingHoursFlag bool

	workCalendarId     string // 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
	workCalendarIdFlag bool

	positionId     string // 岗位 ID
	positionIdFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool
}

func NewEmployeesAdditionalJobWriteRespBuilder() *EmployeesAdditionalJobWriteRespBuilder {
	builder := &EmployeesAdditionalJobWriteRespBuilder{}
	return builder
}

// 兼职记录ID
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobWriteRespBuilder) Id(id string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 人员类型 ID，可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobWriteRespBuilder) EmployeeTypeId(employeeTypeId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 工时制度 ID，可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobWriteRespBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 工作地点 ID，可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobWriteRespBuilder) WorkLocationId(workLocationId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 部门 ID，可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息；类型与department_id_type一致
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobWriteRespBuilder) DepartmentId(departmentId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职务 ID，可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobWriteRespBuilder) JobId(jobId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职级 ID，可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
//
// 示例值：6890452208593372679
func (builder *EmployeesAdditionalJobWriteRespBuilder) JobLevelId(jobLevelId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 序列 ID，可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
//
// 示例值：1245678
func (builder *EmployeesAdditionalJobWriteRespBuilder) JobFamilyId(jobFamilyId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 雇佣 ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6893014062142064135
func (builder *EmployeesAdditionalJobWriteRespBuilder) EmploymentId(employmentId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 兼职开始日期
//
// 示例值：2020-05-01
func (builder *EmployeesAdditionalJobWriteRespBuilder) StartDate(startDate string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 兼职结束日期
//
// 示例值：2020-05-02
func (builder *EmployeesAdditionalJobWriteRespBuilder) EndDate(endDate string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 直属上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobWriteRespBuilder) DirectManagerId(directManagerId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级的雇佣ID，可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息；类型与user_id_type一致
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobWriteRespBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 排班类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "work_shift"
//
// 示例值：
func (builder *EmployeesAdditionalJobWriteRespBuilder) WorkShift(workShift *Enum) *EmployeesAdditionalJobWriteRespBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 薪资类型，可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;- object_api_name = "job_data";- custom_api_name = "compensation_type"
//
// 示例值：
func (builder *EmployeesAdditionalJobWriteRespBuilder) CompensationType(compensationType *Enum) *EmployeesAdditionalJobWriteRespBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 任职公司，可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobWriteRespBuilder) ServiceCompany(serviceCompany string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 周工作时长【0~168】
//
// 示例值：5
func (builder *EmployeesAdditionalJobWriteRespBuilder) WeeklyWorkingHours(weeklyWorkingHours string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.weeklyWorkingHours = weeklyWorkingHours
	builder.weeklyWorkingHoursFlag = true
	return builder
}

// 工作日历ID，可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobWriteRespBuilder) WorkCalendarId(workCalendarId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 岗位 ID
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobWriteRespBuilder) PositionId(positionId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6890452208593372680
func (builder *EmployeesAdditionalJobWriteRespBuilder) EmployeeSubtypeId(employeeSubtypeId string) *EmployeesAdditionalJobWriteRespBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

func (builder *EmployeesAdditionalJobWriteRespBuilder) Build() *EmployeesAdditionalJobWriteResp {
	req := &EmployeesAdditionalJobWriteResp{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.weeklyWorkingHoursFlag {
		req.WeeklyWorkingHours = &builder.weeklyWorkingHours

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	return req
}

type EmployeesInternationalAssignment struct {
	WorkLocationId *string `json:"work_location_id,omitempty"` // 外派工作地点 ID;  - 可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息

	ServiceCompany *string `json:"service_company,omitempty"` // 外派任职公司 ID;- 可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度ID;-  可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型ID;- 可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息

	WeeklyWorkingHoursV2 *float64 `json:"weekly_working_hours_v2,omitempty"` // 周工作时长

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID;- 可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致

	JobId *string `json:"job_id,omitempty"` // 职务 ID;- 可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID;- 可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID;- 可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详细信息

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型; - 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)

	InternationalAssignmentReason *string `json:"international_assignment_reason,omitempty"` // 外派原因说明

	Description *string `json:"description,omitempty"` // 备注

	InternationalAssignmentExpectedEndDate *string `json:"international_assignment_expected_end_date,omitempty"` // 预计结束日期;- 格式：yyyy-mm-dd

	InternationalAssignmentStatus *Enum `json:"international_assignment_status,omitempty"` // 外派状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_status

	InternationalAssignmentType *Enum `json:"international_assignment_type,omitempty"` // 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type

	EffectiveTime *string `json:"effective_time,omitempty"` // 开始日期;- 格式：yyyy-mm-dd

	ExpirationTime *string `json:"expiration_time,omitempty"` // 结束日期;- 格式：yyyy-mm-dd;- 在外派未结束时，该值默认为 9999-12-31

	Id *string `json:"id,omitempty"` // 外派ID
}

type EmployeesInternationalAssignmentBuilder struct {
	workLocationId     string // 外派工作地点 ID;  - 可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
	workLocationIdFlag bool

	serviceCompany     string // 外派任职公司 ID;- 可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
	serviceCompanyFlag bool

	workShift     *Enum // 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
	workShiftFlag bool

	workingHoursTypeId     string // 工时制度ID;-  可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
	workingHoursTypeIdFlag bool

	employeeTypeId     string // 人员类型ID;- 可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
	employeeTypeIdFlag bool

	weeklyWorkingHoursV2     float64 // 周工作时长
	weeklyWorkingHoursV2Flag bool

	departmentId     string // 部门 ID;- 可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致
	departmentIdFlag bool

	jobId     string // 职务 ID;- 可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
	jobIdFlag bool

	jobFamilyId     string // 序列 ID;- 可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
	jobFamilyIdFlag bool

	jobLevelId     string // 职级 ID;- 可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
	jobLevelIdFlag bool

	jobGradeId     string // 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详细信息
	jobGradeIdFlag bool

	compensationType     *Enum // 薪资类型; - 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
	compensationTypeFlag bool

	directManagerId     string // 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
	dottedLineManagerIdFlag bool

	workCalendarId     string // 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
	workCalendarIdFlag bool

	positionId     string // 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
	positionIdFlag bool

	employmentId     string // 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
	employmentIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
	customFieldsFlag bool

	internationalAssignmentReason     string // 外派原因说明
	internationalAssignmentReasonFlag bool

	description     string // 备注
	descriptionFlag bool

	internationalAssignmentExpectedEndDate     string // 预计结束日期;- 格式：yyyy-mm-dd
	internationalAssignmentExpectedEndDateFlag bool

	internationalAssignmentStatus     *Enum // 外派状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_status
	internationalAssignmentStatusFlag bool

	internationalAssignmentType     *Enum // 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type
	internationalAssignmentTypeFlag bool

	effectiveTime     string // 开始日期;- 格式：yyyy-mm-dd
	effectiveTimeFlag bool

	expirationTime     string // 结束日期;- 格式：yyyy-mm-dd;- 在外派未结束时，该值默认为 9999-12-31
	expirationTimeFlag bool

	id     string // 外派ID
	idFlag bool
}

func NewEmployeesInternationalAssignmentBuilder() *EmployeesInternationalAssignmentBuilder {
	builder := &EmployeesInternationalAssignmentBuilder{}
	return builder
}

// 外派工作地点 ID;  - 可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) WorkLocationId(workLocationId string) *EmployeesInternationalAssignmentBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 外派任职公司 ID;- 可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) ServiceCompany(serviceCompany string) *EmployeesInternationalAssignmentBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
//
// 示例值：
func (builder *EmployeesInternationalAssignmentBuilder) WorkShift(workShift *Enum) *EmployeesInternationalAssignmentBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 工时制度ID;-  可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeesInternationalAssignmentBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 人员类型ID;- 可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) EmployeeTypeId(employeeTypeId string) *EmployeesInternationalAssignmentBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 周工作时长
//
// 示例值：8
func (builder *EmployeesInternationalAssignmentBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *EmployeesInternationalAssignmentBuilder {
	builder.weeklyWorkingHoursV2 = weeklyWorkingHoursV2
	builder.weeklyWorkingHoursV2Flag = true
	return builder
}

// 部门 ID;- 可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) DepartmentId(departmentId string) *EmployeesInternationalAssignmentBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职务 ID;- 可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) JobId(jobId string) *EmployeesInternationalAssignmentBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 序列 ID;- 可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) JobFamilyId(jobFamilyId string) *EmployeesInternationalAssignmentBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职级 ID;- 可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) JobLevelId(jobLevelId string) *EmployeesInternationalAssignmentBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) JobGradeId(jobGradeId string) *EmployeesInternationalAssignmentBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 薪资类型; - 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
//
// 示例值：
func (builder *EmployeesInternationalAssignmentBuilder) CompensationType(compensationType *Enum) *EmployeesInternationalAssignmentBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) DirectManagerId(directManagerId string) *EmployeesInternationalAssignmentBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeesInternationalAssignmentBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) WorkCalendarId(workCalendarId string) *EmployeesInternationalAssignmentBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) PositionId(positionId string) *EmployeesInternationalAssignmentBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) EmploymentId(employmentId string) *EmployeesInternationalAssignmentBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
//
// 示例值：
func (builder *EmployeesInternationalAssignmentBuilder) CustomFields(customFields []*ObjectFieldData) *EmployeesInternationalAssignmentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 外派原因说明
//
// 示例值：xxx 项目派遣
func (builder *EmployeesInternationalAssignmentBuilder) InternationalAssignmentReason(internationalAssignmentReason string) *EmployeesInternationalAssignmentBuilder {
	builder.internationalAssignmentReason = internationalAssignmentReason
	builder.internationalAssignmentReasonFlag = true
	return builder
}

// 备注
//
// 示例值：xxx 项目
func (builder *EmployeesInternationalAssignmentBuilder) Description(description string) *EmployeesInternationalAssignmentBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 预计结束日期;- 格式：yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentBuilder) InternationalAssignmentExpectedEndDate(internationalAssignmentExpectedEndDate string) *EmployeesInternationalAssignmentBuilder {
	builder.internationalAssignmentExpectedEndDate = internationalAssignmentExpectedEndDate
	builder.internationalAssignmentExpectedEndDateFlag = true
	return builder
}

// 外派状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_status
//
// 示例值：
func (builder *EmployeesInternationalAssignmentBuilder) InternationalAssignmentStatus(internationalAssignmentStatus *Enum) *EmployeesInternationalAssignmentBuilder {
	builder.internationalAssignmentStatus = internationalAssignmentStatus
	builder.internationalAssignmentStatusFlag = true
	return builder
}

// 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type
//
// 示例值：
func (builder *EmployeesInternationalAssignmentBuilder) InternationalAssignmentType(internationalAssignmentType *Enum) *EmployeesInternationalAssignmentBuilder {
	builder.internationalAssignmentType = internationalAssignmentType
	builder.internationalAssignmentTypeFlag = true
	return builder
}

// 开始日期;- 格式：yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentBuilder) EffectiveTime(effectiveTime string) *EmployeesInternationalAssignmentBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 结束日期;- 格式：yyyy-mm-dd;- 在外派未结束时，该值默认为 9999-12-31
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentBuilder) ExpirationTime(expirationTime string) *EmployeesInternationalAssignmentBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 外派ID
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentBuilder) Id(id string) *EmployeesInternationalAssignmentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *EmployeesInternationalAssignmentBuilder) Build() *EmployeesInternationalAssignment {
	req := &EmployeesInternationalAssignment{}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.weeklyWorkingHoursV2Flag {
		req.WeeklyWorkingHoursV2 = &builder.weeklyWorkingHoursV2

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.internationalAssignmentReasonFlag {
		req.InternationalAssignmentReason = &builder.internationalAssignmentReason

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.internationalAssignmentExpectedEndDateFlag {
		req.InternationalAssignmentExpectedEndDate = &builder.internationalAssignmentExpectedEndDate

	}
	if builder.internationalAssignmentStatusFlag {
		req.InternationalAssignmentStatus = builder.internationalAssignmentStatus
	}
	if builder.internationalAssignmentTypeFlag {
		req.InternationalAssignmentType = builder.internationalAssignmentType
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type EmployeesInternationalAssignmentReq struct {
	WorkLocationId *string `json:"work_location_id,omitempty"` // 外派工作地点 ID;  - 可通过[【批量查询地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/list)获取

	ServiceCompany *string `json:"service_company,omitempty"` // 外派任职公司 ID;- 可通过[【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取

	WorkShift *string `json:"work_shift,omitempty"` // 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift

	WeeklyWorkingHoursV2 *float64 `json:"weekly_working_hours_v2,omitempty"` // 周工作时长;- 限制两位小数

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度ID;-  可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型ID;- 可通过[【批量查询人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)获取

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID;- 可通过[【批量查询部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取;- 类型与 department_id_type 一致

	JobId *string `json:"job_id,omitempty"` // 职务 ID;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID;- 可通过[【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取

	CompensationType *string `json:"compensation_type,omitempty"` // 薪资类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)

	InternationalAssignmentReason *string `json:"international_assignment_reason,omitempty"` // 外派原因说明

	Description *string `json:"description,omitempty"` // 备注

	InternationalAssignmentExpectedEndDate *string `json:"international_assignment_expected_end_date,omitempty"` // 预计结束日期;- 格式：yyyy-mm-dd

	InternationalAssignmentType *string `json:"international_assignment_type,omitempty"` // 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type

	EffectiveTime *string `json:"effective_time,omitempty"` // 开始日期;- 格式：yyyy-mm-dd

	ExpirationTime *string `json:"expiration_time,omitempty"` // 结束日期;- 格式：yyyy-mm-dd

	InternationalAssignmentAllowance *bool `json:"international_assignment_allowance,omitempty"` // 是否享有派驻津贴

	Accommodation *bool `json:"accommodation,omitempty"` // 是否提供住宿
}

type EmployeesInternationalAssignmentReqBuilder struct {
	workLocationId     string // 外派工作地点 ID;  - 可通过[【批量查询地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/list)获取
	workLocationIdFlag bool

	serviceCompany     string // 外派任职公司 ID;- 可通过[【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
	serviceCompanyFlag bool

	workShift     string // 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
	workShiftFlag bool

	weeklyWorkingHoursV2     float64 // 周工作时长;- 限制两位小数
	weeklyWorkingHoursV2Flag bool

	workingHoursTypeId     string // 工时制度ID;-  可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取
	workingHoursTypeIdFlag bool

	employeeTypeId     string // 人员类型ID;- 可通过[【批量查询人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)获取
	employeeTypeIdFlag bool

	departmentId     string // 部门 ID;- 可通过[【批量查询部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取;- 类型与 department_id_type 一致
	departmentIdFlag bool

	jobId     string // 职务 ID;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取
	jobIdFlag bool

	jobFamilyId     string // 序列 ID;- 可通过[【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
	jobFamilyIdFlag bool

	jobLevelId     string // 职级 ID;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取
	jobLevelIdFlag bool

	jobGradeId     string // 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取
	jobGradeIdFlag bool

	compensationType     string // 薪资类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
	compensationTypeFlag bool

	directManagerId     string // 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
	dottedLineManagerIdFlag bool

	workCalendarId     string // 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取
	workCalendarIdFlag bool

	positionId     string // 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
	positionIdFlag bool

	employmentId     string // 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
	employmentIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
	customFieldsFlag bool

	internationalAssignmentReason     string // 外派原因说明
	internationalAssignmentReasonFlag bool

	description     string // 备注
	descriptionFlag bool

	internationalAssignmentExpectedEndDate     string // 预计结束日期;- 格式：yyyy-mm-dd
	internationalAssignmentExpectedEndDateFlag bool

	internationalAssignmentType     string // 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type
	internationalAssignmentTypeFlag bool

	effectiveTime     string // 开始日期;- 格式：yyyy-mm-dd
	effectiveTimeFlag bool

	expirationTime     string // 结束日期;- 格式：yyyy-mm-dd
	expirationTimeFlag bool

	internationalAssignmentAllowance     bool // 是否享有派驻津贴
	internationalAssignmentAllowanceFlag bool

	accommodation     bool // 是否提供住宿
	accommodationFlag bool
}

func NewEmployeesInternationalAssignmentReqBuilder() *EmployeesInternationalAssignmentReqBuilder {
	builder := &EmployeesInternationalAssignmentReqBuilder{}
	return builder
}

// 外派工作地点 ID;  - 可通过[【批量查询地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/list)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) WorkLocationId(workLocationId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 外派任职公司 ID;- 可通过[【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) ServiceCompany(serviceCompany string) *EmployeesInternationalAssignmentReqBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
//
// 示例值：work_shift
func (builder *EmployeesInternationalAssignmentReqBuilder) WorkShift(workShift string) *EmployeesInternationalAssignmentReqBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 周工作时长;- 限制两位小数
//
// 示例值：8
func (builder *EmployeesInternationalAssignmentReqBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *EmployeesInternationalAssignmentReqBuilder {
	builder.weeklyWorkingHoursV2 = weeklyWorkingHoursV2
	builder.weeklyWorkingHoursV2Flag = true
	return builder
}

// 工时制度ID;-  可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 人员类型ID;- 可通过[【批量查询人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) EmployeeTypeId(employeeTypeId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 部门 ID;- 可通过[【批量查询部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取;- 类型与 department_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) DepartmentId(departmentId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职务 ID;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) JobId(jobId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 序列 ID;- 可通过[【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) JobFamilyId(jobFamilyId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职级 ID;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) JobLevelId(jobLevelId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) JobGradeId(jobGradeId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 薪资类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
//
// 示例值：daily
func (builder *EmployeesInternationalAssignmentReqBuilder) CompensationType(compensationType string) *EmployeesInternationalAssignmentReqBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) DirectManagerId(directManagerId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) WorkCalendarId(workCalendarId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) PositionId(positionId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentReqBuilder) EmploymentId(employmentId string) *EmployeesInternationalAssignmentReqBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
//
// 示例值：
func (builder *EmployeesInternationalAssignmentReqBuilder) CustomFields(customFields []*ObjectFieldData) *EmployeesInternationalAssignmentReqBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 外派原因说明
//
// 示例值：xxx 项目派遣
func (builder *EmployeesInternationalAssignmentReqBuilder) InternationalAssignmentReason(internationalAssignmentReason string) *EmployeesInternationalAssignmentReqBuilder {
	builder.internationalAssignmentReason = internationalAssignmentReason
	builder.internationalAssignmentReasonFlag = true
	return builder
}

// 备注
//
// 示例值：xxx 项目
func (builder *EmployeesInternationalAssignmentReqBuilder) Description(description string) *EmployeesInternationalAssignmentReqBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 预计结束日期;- 格式：yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentReqBuilder) InternationalAssignmentExpectedEndDate(internationalAssignmentExpectedEndDate string) *EmployeesInternationalAssignmentReqBuilder {
	builder.internationalAssignmentExpectedEndDate = internationalAssignmentExpectedEndDate
	builder.internationalAssignmentExpectedEndDateFlag = true
	return builder
}

// 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type
//
// 示例值：global_assignment
func (builder *EmployeesInternationalAssignmentReqBuilder) InternationalAssignmentType(internationalAssignmentType string) *EmployeesInternationalAssignmentReqBuilder {
	builder.internationalAssignmentType = internationalAssignmentType
	builder.internationalAssignmentTypeFlag = true
	return builder
}

// 开始日期;- 格式：yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentReqBuilder) EffectiveTime(effectiveTime string) *EmployeesInternationalAssignmentReqBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 结束日期;- 格式：yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentReqBuilder) ExpirationTime(expirationTime string) *EmployeesInternationalAssignmentReqBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 是否享有派驻津贴
//
// 示例值：true
func (builder *EmployeesInternationalAssignmentReqBuilder) InternationalAssignmentAllowance(internationalAssignmentAllowance bool) *EmployeesInternationalAssignmentReqBuilder {
	builder.internationalAssignmentAllowance = internationalAssignmentAllowance
	builder.internationalAssignmentAllowanceFlag = true
	return builder
}

// 是否提供住宿
//
// 示例值：true
func (builder *EmployeesInternationalAssignmentReqBuilder) Accommodation(accommodation bool) *EmployeesInternationalAssignmentReqBuilder {
	builder.accommodation = accommodation
	builder.accommodationFlag = true
	return builder
}

func (builder *EmployeesInternationalAssignmentReqBuilder) Build() *EmployeesInternationalAssignmentReq {
	req := &EmployeesInternationalAssignmentReq{}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.workShiftFlag {
		req.WorkShift = &builder.workShift

	}
	if builder.weeklyWorkingHoursV2Flag {
		req.WeeklyWorkingHoursV2 = &builder.weeklyWorkingHoursV2

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.compensationTypeFlag {
		req.CompensationType = &builder.compensationType

	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.internationalAssignmentReasonFlag {
		req.InternationalAssignmentReason = &builder.internationalAssignmentReason

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.internationalAssignmentExpectedEndDateFlag {
		req.InternationalAssignmentExpectedEndDate = &builder.internationalAssignmentExpectedEndDate

	}
	if builder.internationalAssignmentTypeFlag {
		req.InternationalAssignmentType = &builder.internationalAssignmentType

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.internationalAssignmentAllowanceFlag {
		req.InternationalAssignmentAllowance = &builder.internationalAssignmentAllowance

	}
	if builder.accommodationFlag {
		req.Accommodation = &builder.accommodation

	}
	return req
}

type EmployeesInternationalAssignmentResp struct {
	WorkLocationId *string `json:"work_location_id,omitempty"` // 外派工作地点 ID;  - 可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息

	ServiceCompany *string `json:"service_company,omitempty"` // 外派任职公司 ID;- 可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度ID;-  可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型ID;- 可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息

	WeeklyWorkingHoursV2 *float64 `json:"weekly_working_hours_v2,omitempty"` // 周工作时长

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID;- 可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致

	JobId *string `json:"job_id,omitempty"` // 职务 ID;- 可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID;- 可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID;- 可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详细信息

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型; - 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type

	DirectManagerId *string `json:"direct_manager_id,omitempty"` // 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致

	WorkCalendarId *string `json:"work_calendar_id,omitempty"` // 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)

	InternationalAssignmentReason *string `json:"international_assignment_reason,omitempty"` // 外派原因说明

	Description *string `json:"description,omitempty"` // 备注

	InternationalAssignmentExpectedEndDate *string `json:"international_assignment_expected_end_date,omitempty"` // 预计结束日期;- 格式：yyyy-mm-dd

	InternationalAssignmentStatus *Enum `json:"international_assignment_status,omitempty"` // 外派状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_status

	InternationalAssignmentType *Enum `json:"international_assignment_type,omitempty"` // 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type

	EffectiveTime *string `json:"effective_time,omitempty"` // 开始日期;- 格式：yyyy-mm-dd

	ExpirationTime *string `json:"expiration_time,omitempty"` // 结束日期;- 格式：yyyy-mm-dd;- 在外派未结束时，该值默认为 9999-12-31

	Id *string `json:"id,omitempty"` // 外派ID

	Accommodation *bool `json:"accommodation,omitempty"` // 是否提供住宿

	InternationalAssignmentAllowance *bool `json:"international_assignment_allowance,omitempty"` // 是否享有派驻津贴
}

type EmployeesInternationalAssignmentRespBuilder struct {
	workLocationId     string // 外派工作地点 ID;  - 可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
	workLocationIdFlag bool

	serviceCompany     string // 外派任职公司 ID;- 可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
	serviceCompanyFlag bool

	workShift     *Enum // 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
	workShiftFlag bool

	workingHoursTypeId     string // 工时制度ID;-  可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
	workingHoursTypeIdFlag bool

	employeeTypeId     string // 人员类型ID;- 可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
	employeeTypeIdFlag bool

	weeklyWorkingHoursV2     float64 // 周工作时长
	weeklyWorkingHoursV2Flag bool

	departmentId     string // 部门 ID;- 可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致
	departmentIdFlag bool

	jobId     string // 职务 ID;- 可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
	jobIdFlag bool

	jobFamilyId     string // 序列 ID;- 可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
	jobFamilyIdFlag bool

	jobLevelId     string // 职级 ID;- 可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
	jobLevelIdFlag bool

	jobGradeId     string // 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详细信息
	jobGradeIdFlag bool

	compensationType     *Enum // 薪资类型; - 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
	compensationTypeFlag bool

	directManagerId     string // 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
	directManagerIdFlag bool

	dottedLineManagerId     string // 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
	dottedLineManagerIdFlag bool

	workCalendarId     string // 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
	workCalendarIdFlag bool

	positionId     string // 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
	positionIdFlag bool

	employmentId     string // 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
	employmentIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
	customFieldsFlag bool

	internationalAssignmentReason     string // 外派原因说明
	internationalAssignmentReasonFlag bool

	description     string // 备注
	descriptionFlag bool

	internationalAssignmentExpectedEndDate     string // 预计结束日期;- 格式：yyyy-mm-dd
	internationalAssignmentExpectedEndDateFlag bool

	internationalAssignmentStatus     *Enum // 外派状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_status
	internationalAssignmentStatusFlag bool

	internationalAssignmentType     *Enum // 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type
	internationalAssignmentTypeFlag bool

	effectiveTime     string // 开始日期;- 格式：yyyy-mm-dd
	effectiveTimeFlag bool

	expirationTime     string // 结束日期;- 格式：yyyy-mm-dd;- 在外派未结束时，该值默认为 9999-12-31
	expirationTimeFlag bool

	id     string // 外派ID
	idFlag bool

	accommodation     bool // 是否提供住宿
	accommodationFlag bool

	internationalAssignmentAllowance     bool // 是否享有派驻津贴
	internationalAssignmentAllowanceFlag bool
}

func NewEmployeesInternationalAssignmentRespBuilder() *EmployeesInternationalAssignmentRespBuilder {
	builder := &EmployeesInternationalAssignmentRespBuilder{}
	return builder
}

// 外派工作地点 ID;  - 可通过[【查询单个地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) WorkLocationId(workLocationId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 外派任职公司 ID;- 可通过[【查询单个公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) ServiceCompany(serviceCompany string) *EmployeesInternationalAssignmentRespBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：work_shift
//
// 示例值：
func (builder *EmployeesInternationalAssignmentRespBuilder) WorkShift(workShift *Enum) *EmployeesInternationalAssignmentRespBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 工时制度ID;-  可通过[【查询单个工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 人员类型ID;- 可通过[【查询单个人员类型】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) EmployeeTypeId(employeeTypeId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 周工作时长
//
// 示例值：8
func (builder *EmployeesInternationalAssignmentRespBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *EmployeesInternationalAssignmentRespBuilder {
	builder.weeklyWorkingHoursV2 = weeklyWorkingHoursV2
	builder.weeklyWorkingHoursV2Flag = true
	return builder
}

// 部门 ID;- 可通过[【查询单个部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/department/get)获取详细信息;- 类型与 department_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) DepartmentId(departmentId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职务 ID;- 可通过[【查询单个职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) JobId(jobId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 序列 ID;- 可通过[【查询单个序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) JobFamilyId(jobFamilyId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职级 ID;- 可通过[【查询单个职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) JobLevelId(jobLevelId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等 ID;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) JobGradeId(jobGradeId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 薪资类型; - 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type
//
// 示例值：
func (builder *EmployeesInternationalAssignmentRespBuilder) CompensationType(compensationType *Enum) *EmployeesInternationalAssignmentRespBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 直属上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) DirectManagerId(directManagerId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.directManagerId = directManagerId
	builder.directManagerIdFlag = true
	return builder
}

// 虚线上级雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) DottedLineManagerId(dottedLineManagerId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 工作日历 ID;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) WorkCalendarId(workCalendarId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.workCalendarId = workCalendarId
	builder.workCalendarIdFlag = true
	return builder
}

// 岗位 ID;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW)
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) PositionId(positionId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 雇佣 ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型与 user_id_type 一致
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) EmploymentId(employmentId string) *EmployeesInternationalAssignmentRespBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 自定义字段;- 请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
//
// 示例值：
func (builder *EmployeesInternationalAssignmentRespBuilder) CustomFields(customFields []*ObjectFieldData) *EmployeesInternationalAssignmentRespBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 外派原因说明
//
// 示例值：xxx 项目派遣
func (builder *EmployeesInternationalAssignmentRespBuilder) InternationalAssignmentReason(internationalAssignmentReason string) *EmployeesInternationalAssignmentRespBuilder {
	builder.internationalAssignmentReason = internationalAssignmentReason
	builder.internationalAssignmentReasonFlag = true
	return builder
}

// 备注
//
// 示例值：xxx 项目
func (builder *EmployeesInternationalAssignmentRespBuilder) Description(description string) *EmployeesInternationalAssignmentRespBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 预计结束日期;- 格式：yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentRespBuilder) InternationalAssignmentExpectedEndDate(internationalAssignmentExpectedEndDate string) *EmployeesInternationalAssignmentRespBuilder {
	builder.internationalAssignmentExpectedEndDate = internationalAssignmentExpectedEndDate
	builder.internationalAssignmentExpectedEndDateFlag = true
	return builder
}

// 外派状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_status
//
// 示例值：
func (builder *EmployeesInternationalAssignmentRespBuilder) InternationalAssignmentStatus(internationalAssignmentStatus *Enum) *EmployeesInternationalAssignmentRespBuilder {
	builder.internationalAssignmentStatus = internationalAssignmentStatus
	builder.internationalAssignmentStatusFlag = true
	return builder
}

// 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：international_assignment;  - custom_api_name：international_assignment_type
//
// 示例值：
func (builder *EmployeesInternationalAssignmentRespBuilder) InternationalAssignmentType(internationalAssignmentType *Enum) *EmployeesInternationalAssignmentRespBuilder {
	builder.internationalAssignmentType = internationalAssignmentType
	builder.internationalAssignmentTypeFlag = true
	return builder
}

// 开始日期;- 格式：yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentRespBuilder) EffectiveTime(effectiveTime string) *EmployeesInternationalAssignmentRespBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 结束日期;- 格式：yyyy-mm-dd;- 在外派未结束时，该值默认为 9999-12-31
//
// 示例值：2024-01-02
func (builder *EmployeesInternationalAssignmentRespBuilder) ExpirationTime(expirationTime string) *EmployeesInternationalAssignmentRespBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 外派ID
//
// 示例值：7127921432117937708
func (builder *EmployeesInternationalAssignmentRespBuilder) Id(id string) *EmployeesInternationalAssignmentRespBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 是否提供住宿
//
// 示例值：true
func (builder *EmployeesInternationalAssignmentRespBuilder) Accommodation(accommodation bool) *EmployeesInternationalAssignmentRespBuilder {
	builder.accommodation = accommodation
	builder.accommodationFlag = true
	return builder
}

// 是否享有派驻津贴
//
// 示例值：true
func (builder *EmployeesInternationalAssignmentRespBuilder) InternationalAssignmentAllowance(internationalAssignmentAllowance bool) *EmployeesInternationalAssignmentRespBuilder {
	builder.internationalAssignmentAllowance = internationalAssignmentAllowance
	builder.internationalAssignmentAllowanceFlag = true
	return builder
}

func (builder *EmployeesInternationalAssignmentRespBuilder) Build() *EmployeesInternationalAssignmentResp {
	req := &EmployeesInternationalAssignmentResp{}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.weeklyWorkingHoursV2Flag {
		req.WeeklyWorkingHoursV2 = &builder.weeklyWorkingHoursV2

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.directManagerIdFlag {
		req.DirectManagerId = &builder.directManagerId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.workCalendarIdFlag {
		req.WorkCalendarId = &builder.workCalendarId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.internationalAssignmentReasonFlag {
		req.InternationalAssignmentReason = &builder.internationalAssignmentReason

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.internationalAssignmentExpectedEndDateFlag {
		req.InternationalAssignmentExpectedEndDate = &builder.internationalAssignmentExpectedEndDate

	}
	if builder.internationalAssignmentStatusFlag {
		req.InternationalAssignmentStatus = builder.internationalAssignmentStatus
	}
	if builder.internationalAssignmentTypeFlag {
		req.InternationalAssignmentType = builder.internationalAssignmentType
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.accommodationFlag {
		req.Accommodation = &builder.accommodation

	}
	if builder.internationalAssignmentAllowanceFlag {
		req.InternationalAssignmentAllowance = &builder.internationalAssignmentAllowance

	}
	return req
}

type Employment struct {
	PrehireId *string `json:"prehire_id,omitempty"` // 待入职 ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型

	Tenure *string `json:"tenure,omitempty"` // 司龄

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得

	JobFamilyId *string `json:"job_family_id,omitempty"` // 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得

	JobId *string `json:"job_id,omitempty"` // 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得

	CompanyId *string `json:"company_id,omitempty"` // 法人主体 ID，枚举值及详细信息可通过【批量查询公司】接口查询获得

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得

	Id *string `json:"id,omitempty"` // 实体在飞书人事（企业版）内部的唯一键

	SeniorityDate *string `json:"seniority_date,omitempty"` // 资历起算日期

	EmployeeNumber *string `json:"employee_number,omitempty"` // 员工编号

	EffectiveDate *string `json:"effective_date,omitempty"` // 当前雇佣记录的入职日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”

	EmploymentType *Enum `json:"employment_type,omitempty"` // 雇佣类型

	PersonId *string `json:"person_id,omitempty"` // 人员信息，引用 Person 的 ID

	ProbationPeriod *int `json:"probation_period,omitempty"` // 试用期时长（月），试用期结束日期 - 试用期开始日期后取月数

	OnProbation *string `json:"on_probation,omitempty"` // 是否在试用期中

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期

	PrimaryEmployment *bool `json:"primary_employment,omitempty"` // 是否是主雇佣信息

	EmploymentStatus *Enum `json:"employment_status,omitempty"` // 雇员状态

	WorkEmailList []*Email `json:"work_email_list,omitempty"` // 工作邮箱列表

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱

	ReasonForOffboarding *Enum `json:"reason_for_offboarding,omitempty"` // 离职原因

	CostCenterList []*JobDataCostCenter `json:"cost_center_list,omitempty"` // 成本中心列表

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘应用 ID

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type EmploymentBuilder struct {
	prehireId     string // 待入职 ID
	prehireIdFlag bool

	employeeTypeId     string // 人员类型
	employeeTypeIdFlag bool

	tenure     string // 司龄
	tenureFlag bool

	departmentId     string // 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得
	departmentIdFlag bool

	jobLevelId     string // 职级 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
	jobLevelIdFlag bool

	workLocationId     string // 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得
	workLocationIdFlag bool

	jobFamilyId     string // 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
	jobFamilyIdFlag bool

	jobId     string // 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得
	jobIdFlag bool

	companyId     string // 法人主体 ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
	companyIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
	workingHoursTypeIdFlag bool

	id     string // 实体在飞书人事（企业版）内部的唯一键
	idFlag bool

	seniorityDate     string // 资历起算日期
	seniorityDateFlag bool

	employeeNumber     string // 员工编号
	employeeNumberFlag bool

	effectiveDate     string // 当前雇佣记录的入职日期
	effectiveDateFlag bool

	expirationDate     string // 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
	expirationDateFlag bool

	employmentType     *Enum // 雇佣类型
	employmentTypeFlag bool

	personId     string // 人员信息，引用 Person 的 ID
	personIdFlag bool

	probationPeriod     int // 试用期时长（月），试用期结束日期 - 试用期开始日期后取月数
	probationPeriodFlag bool

	onProbation     string // 是否在试用期中
	onProbationFlag bool

	probationEndDate     string // 试用期结束日期
	probationEndDateFlag bool

	primaryEmployment     bool // 是否是主雇佣信息
	primaryEmploymentFlag bool

	employmentStatus     *Enum // 雇员状态
	employmentStatusFlag bool

	workEmailList     []*Email // 工作邮箱列表
	workEmailListFlag bool

	emailAddress     string // 邮箱
	emailAddressFlag bool

	reasonForOffboarding     *Enum // 离职原因
	reasonForOffboardingFlag bool

	costCenterList     []*JobDataCostCenter // 成本中心列表
	costCenterListFlag bool

	atsApplicationId     string // 招聘应用 ID
	atsApplicationIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewEmploymentBuilder() *EmploymentBuilder {
	builder := &EmploymentBuilder{}
	return builder
}

// 待入职 ID
//
// 示例值：1
func (builder *EmploymentBuilder) PrehireId(prehireId string) *EmploymentBuilder {
	builder.prehireId = prehireId
	builder.prehireIdFlag = true
	return builder
}

// 人员类型
//
// 示例值：1
func (builder *EmploymentBuilder) EmployeeTypeId(employeeTypeId string) *EmploymentBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 司龄
//
// 示例值：1
func (builder *EmploymentBuilder) Tenure(tenure string) *EmploymentBuilder {
	builder.tenure = tenure
	builder.tenureFlag = true
	return builder
}

// 部门 ID，枚举值及详细信息可通过【批量查询部门】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) DepartmentId(departmentId string) *EmploymentBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 职级 ID，枚举值及详细信息可通过【批量查询职务级别】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) JobLevelId(jobLevelId string) *EmploymentBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 工作地点 ID，枚举值及详细信息可通过【批量查询地点】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) WorkLocationId(workLocationId string) *EmploymentBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 职务序列 ID，枚举值及详细信息可通过【批量查询职务序列】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) JobFamilyId(jobFamilyId string) *EmploymentBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职务 ID，枚举值及详细信息可通过【批量查询职务】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) JobId(jobId string) *EmploymentBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 法人主体 ID，枚举值及详细信息可通过【批量查询公司】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) CompanyId(companyId string) *EmploymentBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 工时制度 ID，枚举值及详细信息可通过【批量查询工时制度】接口查询获得
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) WorkingHoursTypeId(workingHoursTypeId string) *EmploymentBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 实体在飞书人事（企业版）内部的唯一键
//
// 示例值：6893014062142064135
func (builder *EmploymentBuilder) Id(id string) *EmploymentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 资历起算日期
//
// 示例值：2020-01-01
func (builder *EmploymentBuilder) SeniorityDate(seniorityDate string) *EmploymentBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 员工编号
//
// 示例值：1000000
func (builder *EmploymentBuilder) EmployeeNumber(employeeNumber string) *EmploymentBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 当前雇佣记录的入职日期
//
// 示例值：2020-01-01
func (builder *EmploymentBuilder) EffectiveDate(effectiveDate string) *EmploymentBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 离职日期，即员工的最后一个工作日，最后一个工作日时员工的雇佣状态仍为“在职”，次日凌晨将更改为“离职”
//
// 示例值：2021-01-01
func (builder *EmploymentBuilder) ExpirationDate(expirationDate string) *EmploymentBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 雇佣类型
//
// 示例值：
func (builder *EmploymentBuilder) EmploymentType(employmentType *Enum) *EmploymentBuilder {
	builder.employmentType = employmentType
	builder.employmentTypeFlag = true
	return builder
}

// 人员信息，引用 Person 的 ID
//
// 示例值：6919733936050406926
func (builder *EmploymentBuilder) PersonId(personId string) *EmploymentBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 试用期时长（月），试用期结束日期 - 试用期开始日期后取月数
//
// 示例值：9999
func (builder *EmploymentBuilder) ProbationPeriod(probationPeriod int) *EmploymentBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

// 是否在试用期中
//
// 示例值：true
func (builder *EmploymentBuilder) OnProbation(onProbation string) *EmploymentBuilder {
	builder.onProbation = onProbation
	builder.onProbationFlag = true
	return builder
}

// 试用期结束日期
//
// 示例值：2022-01-01
func (builder *EmploymentBuilder) ProbationEndDate(probationEndDate string) *EmploymentBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 是否是主雇佣信息
//
// 示例值：true
func (builder *EmploymentBuilder) PrimaryEmployment(primaryEmployment bool) *EmploymentBuilder {
	builder.primaryEmployment = primaryEmployment
	builder.primaryEmploymentFlag = true
	return builder
}

// 雇员状态
//
// 示例值：
func (builder *EmploymentBuilder) EmploymentStatus(employmentStatus *Enum) *EmploymentBuilder {
	builder.employmentStatus = employmentStatus
	builder.employmentStatusFlag = true
	return builder
}

// 工作邮箱列表
//
// 示例值：
func (builder *EmploymentBuilder) WorkEmailList(workEmailList []*Email) *EmploymentBuilder {
	builder.workEmailList = workEmailList
	builder.workEmailListFlag = true
	return builder
}

// 邮箱
//
// 示例值：test@163.com
func (builder *EmploymentBuilder) EmailAddress(emailAddress string) *EmploymentBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 离职原因
//
// 示例值：
func (builder *EmploymentBuilder) ReasonForOffboarding(reasonForOffboarding *Enum) *EmploymentBuilder {
	builder.reasonForOffboarding = reasonForOffboarding
	builder.reasonForOffboardingFlag = true
	return builder
}

// 成本中心列表
//
// 示例值：
func (builder *EmploymentBuilder) CostCenterList(costCenterList []*JobDataCostCenter) *EmploymentBuilder {
	builder.costCenterList = costCenterList
	builder.costCenterListFlag = true
	return builder
}

// 招聘应用 ID
//
// 示例值：6838119494196871234
func (builder *EmploymentBuilder) AtsApplicationId(atsApplicationId string) *EmploymentBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *EmploymentBuilder) CustomFields(customFields []*ObjectFieldData) *EmploymentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *EmploymentBuilder) Build() *Employment {
	req := &Employment{}
	if builder.prehireIdFlag {
		req.PrehireId = &builder.prehireId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.tenureFlag {
		req.Tenure = &builder.tenure

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.employmentTypeFlag {
		req.EmploymentType = builder.employmentType
	}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	if builder.onProbationFlag {
		req.OnProbation = &builder.onProbation

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.primaryEmploymentFlag {
		req.PrimaryEmployment = &builder.primaryEmployment

	}
	if builder.employmentStatusFlag {
		req.EmploymentStatus = builder.employmentStatus
	}
	if builder.workEmailListFlag {
		req.WorkEmailList = builder.workEmailList
	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.reasonForOffboardingFlag {
		req.ReasonForOffboarding = builder.reasonForOffboarding
	}
	if builder.costCenterListFlag {
		req.CostCenterList = builder.costCenterList
	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type EmploymentBp struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	HrbpIds []string `json:"hrbp_ids,omitempty"` // 部门 hrbp 雇佣 ID 列表

	LocationBpIds []string `json:"location_bp_ids,omitempty"` // 属地 bp 雇佣 ID 列表
}

type EmploymentBpBuilder struct {
	employmentId     string // 员工雇佣 ID
	employmentIdFlag bool

	hrbpIds     []string // 部门 hrbp 雇佣 ID 列表
	hrbpIdsFlag bool

	locationBpIds     []string // 属地 bp 雇佣 ID 列表
	locationBpIdsFlag bool
}

func NewEmploymentBpBuilder() *EmploymentBpBuilder {
	builder := &EmploymentBpBuilder{}
	return builder
}

// 员工雇佣 ID
//
// 示例值：6863326262618752123
func (builder *EmploymentBpBuilder) EmploymentId(employmentId string) *EmploymentBpBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 部门 hrbp 雇佣 ID 列表
//
// 示例值：
func (builder *EmploymentBpBuilder) HrbpIds(hrbpIds []string) *EmploymentBpBuilder {
	builder.hrbpIds = hrbpIds
	builder.hrbpIdsFlag = true
	return builder
}

// 属地 bp 雇佣 ID 列表
//
// 示例值：
func (builder *EmploymentBpBuilder) LocationBpIds(locationBpIds []string) *EmploymentBpBuilder {
	builder.locationBpIds = locationBpIds
	builder.locationBpIdsFlag = true
	return builder
}

func (builder *EmploymentBpBuilder) Build() *EmploymentBp {
	req := &EmploymentBp{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.hrbpIdsFlag {
		req.HrbpIds = builder.hrbpIds
	}
	if builder.locationBpIdsFlag {
		req.LocationBpIds = builder.locationBpIds
	}
	return req
}

type EmploymentCostAllocation struct {
	WkId *string `json:"wk_id,omitempty"` // id

	EffectiveTime *string `json:"effective_time,omitempty"` // 分摊生效日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 分摊失效日期

	JobDataCostCenterId []*JobDataCostCenter `json:"job_data_cost_center_id,omitempty"` // 成本分摊

	JobDataId *JobDataId `json:"job_data_id,omitempty"` // 任职id

	Reason *string `json:"reason,omitempty"` // 变更原因
}

type EmploymentCostAllocationBuilder struct {
	wkId     string // id
	wkIdFlag bool

	effectiveTime     string // 分摊生效日期
	effectiveTimeFlag bool

	expirationTime     string // 分摊失效日期
	expirationTimeFlag bool

	jobDataCostCenterId     []*JobDataCostCenter // 成本分摊
	jobDataCostCenterIdFlag bool

	jobDataId     *JobDataId // 任职id
	jobDataIdFlag bool

	reason     string // 变更原因
	reasonFlag bool
}

func NewEmploymentCostAllocationBuilder() *EmploymentCostAllocationBuilder {
	builder := &EmploymentCostAllocationBuilder{}
	return builder
}

// id
//
// 示例值：703912325303191204
func (builder *EmploymentCostAllocationBuilder) WkId(wkId string) *EmploymentCostAllocationBuilder {
	builder.wkId = wkId
	builder.wkIdFlag = true
	return builder
}

// 分摊生效日期
//
// 示例值：2024-12-01
func (builder *EmploymentCostAllocationBuilder) EffectiveTime(effectiveTime string) *EmploymentCostAllocationBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 分摊失效日期
//
// 示例值：2024-12-02
func (builder *EmploymentCostAllocationBuilder) ExpirationTime(expirationTime string) *EmploymentCostAllocationBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *EmploymentCostAllocationBuilder) JobDataCostCenterId(jobDataCostCenterId []*JobDataCostCenter) *EmploymentCostAllocationBuilder {
	builder.jobDataCostCenterId = jobDataCostCenterId
	builder.jobDataCostCenterIdFlag = true
	return builder
}

// 任职id
//
// 示例值：
func (builder *EmploymentCostAllocationBuilder) JobDataId(jobDataId *JobDataId) *EmploymentCostAllocationBuilder {
	builder.jobDataId = jobDataId
	builder.jobDataIdFlag = true
	return builder
}

// 变更原因
//
// 示例值：异动
func (builder *EmploymentCostAllocationBuilder) Reason(reason string) *EmploymentCostAllocationBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *EmploymentCostAllocationBuilder) Build() *EmploymentCostAllocation {
	req := &EmploymentCostAllocation{}
	if builder.wkIdFlag {
		req.WkId = &builder.wkId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.jobDataCostCenterIdFlag {
		req.JobDataCostCenterId = builder.jobDataCostCenterId
	}
	if builder.jobDataIdFlag {
		req.JobDataId = builder.jobDataId
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason

	}
	return req
}

type EmploymentCustomObjectRecord struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 用户ID

	RecordList *string `json:"record_list,omitempty"` // 记录列表
}

type EmploymentCustomObjectRecordBuilder struct {
	employmentId     string // 用户ID
	employmentIdFlag bool

	recordList     string // 记录列表
	recordListFlag bool
}

func NewEmploymentCustomObjectRecordBuilder() *EmploymentCustomObjectRecordBuilder {
	builder := &EmploymentCustomObjectRecordBuilder{}
	return builder
}

// 用户ID
//
// 示例值：7185135991475144236
func (builder *EmploymentCustomObjectRecordBuilder) EmploymentId(employmentId string) *EmploymentCustomObjectRecordBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 记录列表
//
// 示例值：json 序列化后的返回值
func (builder *EmploymentCustomObjectRecordBuilder) RecordList(recordList string) *EmploymentCustomObjectRecordBuilder {
	builder.recordList = recordList
	builder.recordListFlag = true
	return builder
}

func (builder *EmploymentCustomObjectRecordBuilder) Build() *EmploymentCustomObjectRecord {
	req := &EmploymentCustomObjectRecord{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.recordListFlag {
		req.RecordList = &builder.recordList

	}
	return req
}

type EmploymentDefaultCostCenter struct {
	WkId *string `json:"wk_id,omitempty"` // id

	WkTid *string `json:"wk_tid,omitempty"` // id

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效日期

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心id

	JobDataId *string `json:"job_data_id,omitempty"` // 任职id

	IsInherit *bool `json:"is_inherit,omitempty"` // 是否继承自岗位/部门的默认成本中心

	InheritSource *Enum `json:"inherit_source,omitempty"` // 继承来源

	Reason *string `json:"reason,omitempty"` // 变更原因

	WkCreatedAt *string `json:"wk_created_at,omitempty"` // 创建时间
}

type EmploymentDefaultCostCenterBuilder struct {
	wkId     string // id
	wkIdFlag bool

	wkTid     string // id
	wkTidFlag bool

	effectiveTime     string // 生效日期
	effectiveTimeFlag bool

	costCenterId     string // 成本中心id
	costCenterIdFlag bool

	jobDataId     string // 任职id
	jobDataIdFlag bool

	isInherit     bool // 是否继承自岗位/部门的默认成本中心
	isInheritFlag bool

	inheritSource     *Enum // 继承来源
	inheritSourceFlag bool

	reason     string // 变更原因
	reasonFlag bool

	wkCreatedAt     string // 创建时间
	wkCreatedAtFlag bool
}

func NewEmploymentDefaultCostCenterBuilder() *EmploymentDefaultCostCenterBuilder {
	builder := &EmploymentDefaultCostCenterBuilder{}
	return builder
}

// id
//
// 示例值：703912325303191204
func (builder *EmploymentDefaultCostCenterBuilder) WkId(wkId string) *EmploymentDefaultCostCenterBuilder {
	builder.wkId = wkId
	builder.wkIdFlag = true
	return builder
}

// id
//
// 示例值：703912321231239801
func (builder *EmploymentDefaultCostCenterBuilder) WkTid(wkTid string) *EmploymentDefaultCostCenterBuilder {
	builder.wkTid = wkTid
	builder.wkTidFlag = true
	return builder
}

// 生效日期
//
// 示例值：2024-12-01
func (builder *EmploymentDefaultCostCenterBuilder) EffectiveTime(effectiveTime string) *EmploymentDefaultCostCenterBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 成本中心id
//
// 示例值：7039123253031711012
func (builder *EmploymentDefaultCostCenterBuilder) CostCenterId(costCenterId string) *EmploymentDefaultCostCenterBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 任职id
//
// 示例值：7039123253031711012
func (builder *EmploymentDefaultCostCenterBuilder) JobDataId(jobDataId string) *EmploymentDefaultCostCenterBuilder {
	builder.jobDataId = jobDataId
	builder.jobDataIdFlag = true
	return builder
}

// 是否继承自岗位/部门的默认成本中心
//
// 示例值：
func (builder *EmploymentDefaultCostCenterBuilder) IsInherit(isInherit bool) *EmploymentDefaultCostCenterBuilder {
	builder.isInherit = isInherit
	builder.isInheritFlag = true
	return builder
}

// 继承来源
//
// 示例值：
func (builder *EmploymentDefaultCostCenterBuilder) InheritSource(inheritSource *Enum) *EmploymentDefaultCostCenterBuilder {
	builder.inheritSource = inheritSource
	builder.inheritSourceFlag = true
	return builder
}

// 变更原因
//
// 示例值：异动
func (builder *EmploymentDefaultCostCenterBuilder) Reason(reason string) *EmploymentDefaultCostCenterBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 创建时间
//
// 示例值：2024-12-01 00:00:00
func (builder *EmploymentDefaultCostCenterBuilder) WkCreatedAt(wkCreatedAt string) *EmploymentDefaultCostCenterBuilder {
	builder.wkCreatedAt = wkCreatedAt
	builder.wkCreatedAtFlag = true
	return builder
}

func (builder *EmploymentDefaultCostCenterBuilder) Build() *EmploymentDefaultCostCenter {
	req := &EmploymentDefaultCostCenter{}
	if builder.wkIdFlag {
		req.WkId = &builder.wkId

	}
	if builder.wkTidFlag {
		req.WkTid = &builder.wkTid

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.jobDataIdFlag {
		req.JobDataId = &builder.jobDataId

	}
	if builder.isInheritFlag {
		req.IsInherit = &builder.isInherit

	}
	if builder.inheritSourceFlag {
		req.InheritSource = builder.inheritSource
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason

	}
	if builder.wkCreatedAtFlag {
		req.WkCreatedAt = &builder.wkCreatedAt

	}
	return req
}

type EmploymentLeaveBalance struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣信息ID

	EmploymentName []*I18n `json:"employment_name,omitempty"` // 员工姓名

	AsOfDate *string `json:"as_of_date,omitempty"` // 余额查看日期

	LeaveBalanceList []*LeaveBalance `json:"leave_balance_list,omitempty"` // 假期余额列表
}

type EmploymentLeaveBalanceBuilder struct {
	employmentId     string // 雇佣信息ID
	employmentIdFlag bool

	employmentName     []*I18n // 员工姓名
	employmentNameFlag bool

	asOfDate     string // 余额查看日期
	asOfDateFlag bool

	leaveBalanceList     []*LeaveBalance // 假期余额列表
	leaveBalanceListFlag bool
}

func NewEmploymentLeaveBalanceBuilder() *EmploymentLeaveBalanceBuilder {
	builder := &EmploymentLeaveBalanceBuilder{}
	return builder
}

// 雇佣信息ID
//
// 示例值：4718803945687580505
func (builder *EmploymentLeaveBalanceBuilder) EmploymentId(employmentId string) *EmploymentLeaveBalanceBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 员工姓名
//
// 示例值：
func (builder *EmploymentLeaveBalanceBuilder) EmploymentName(employmentName []*I18n) *EmploymentLeaveBalanceBuilder {
	builder.employmentName = employmentName
	builder.employmentNameFlag = true
	return builder
}

// 余额查看日期
//
// 示例值：0
func (builder *EmploymentLeaveBalanceBuilder) AsOfDate(asOfDate string) *EmploymentLeaveBalanceBuilder {
	builder.asOfDate = asOfDate
	builder.asOfDateFlag = true
	return builder
}

// 假期余额列表
//
// 示例值：
func (builder *EmploymentLeaveBalanceBuilder) LeaveBalanceList(leaveBalanceList []*LeaveBalance) *EmploymentLeaveBalanceBuilder {
	builder.leaveBalanceList = leaveBalanceList
	builder.leaveBalanceListFlag = true
	return builder
}

func (builder *EmploymentLeaveBalanceBuilder) Build() *EmploymentLeaveBalance {
	req := &EmploymentLeaveBalance{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.employmentNameFlag {
		req.EmploymentName = builder.employmentName
	}
	if builder.asOfDateFlag {
		req.AsOfDate = &builder.asOfDate

	}
	if builder.leaveBalanceListFlag {
		req.LeaveBalanceList = builder.leaveBalanceList
	}
	return req
}

type Enum struct {
	EnumName *string `json:"enum_name,omitempty"` // 枚举值

	Display []*I18n `json:"display,omitempty"` // 枚举多语展示
}

type EnumBuilder struct {
	enumName     string // 枚举值
	enumNameFlag bool

	display     []*I18n // 枚举多语展示
	displayFlag bool
}

func NewEnumBuilder() *EnumBuilder {
	builder := &EnumBuilder{}
	return builder
}

// 枚举值
//
// 示例值：phone_type
func (builder *EnumBuilder) EnumName(enumName string) *EnumBuilder {
	builder.enumName = enumName
	builder.enumNameFlag = true
	return builder
}

// 枚举多语展示
//
// 示例值：
func (builder *EnumBuilder) Display(display []*I18n) *EnumBuilder {
	builder.display = display
	builder.displayFlag = true
	return builder
}

func (builder *EnumBuilder) Build() *Enum {
	req := &Enum{}
	if builder.enumNameFlag {
		req.EnumName = &builder.enumName

	}
	if builder.displayFlag {
		req.Display = builder.display
	}
	return req
}

type EnumField struct {
	ApiName *string `json:"api_name,omitempty"` // ApiName

	Name []*I18n `json:"name,omitempty"` // 枚举值名

	Description []*I18n `json:"description,omitempty"` // 枚举值描述

	EnumApiName *string `json:"enum_api_name,omitempty"` // 所属枚举常量ApiName

	Order *int `json:"order,omitempty"` // 顺序

	Status *int `json:"status,omitempty"` // 状态
}

type EnumFieldBuilder struct {
	apiName     string // ApiName
	apiNameFlag bool

	name     []*I18n // 枚举值名
	nameFlag bool

	description     []*I18n // 枚举值描述
	descriptionFlag bool

	enumApiName     string // 所属枚举常量ApiName
	enumApiNameFlag bool

	order     int // 顺序
	orderFlag bool

	status     int // 状态
	statusFlag bool
}

func NewEnumFieldBuilder() *EnumFieldBuilder {
	builder := &EnumFieldBuilder{}
	return builder
}

// ApiName
//
// 示例值：special_day
func (builder *EnumFieldBuilder) ApiName(apiName string) *EnumFieldBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 枚举值名
//
// 示例值：
func (builder *EnumFieldBuilder) Name(name []*I18n) *EnumFieldBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 枚举值描述
//
// 示例值：
func (builder *EnumFieldBuilder) Description(description []*I18n) *EnumFieldBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 所属枚举常量ApiName
//
// 示例值：overtime_date_type
func (builder *EnumFieldBuilder) EnumApiName(enumApiName string) *EnumFieldBuilder {
	builder.enumApiName = enumApiName
	builder.enumApiNameFlag = true
	return builder
}

// 顺序
//
// 示例值：1
func (builder *EnumFieldBuilder) Order(order int) *EnumFieldBuilder {
	builder.order = order
	builder.orderFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *EnumFieldBuilder) Status(status int) *EnumFieldBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *EnumFieldBuilder) Build() *EnumField {
	req := &EnumField{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.enumApiNameFlag {
		req.EnumApiName = &builder.enumApiName

	}
	if builder.orderFlag {
		req.Order = &builder.order

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type Enums struct {
	EnumApiname *string `json:"enum_apiname,omitempty"` // 枚举名称

	EnumItems []*EnumField `json:"enum_items,omitempty"` // 枚举值
}

type EnumsBuilder struct {
	enumApiname     string // 枚举名称
	enumApinameFlag bool

	enumItems     []*EnumField // 枚举值
	enumItemsFlag bool
}

func NewEnumsBuilder() *EnumsBuilder {
	builder := &EnumsBuilder{}
	return builder
}

// 枚举名称
//
// 示例值：overtime_date_type
func (builder *EnumsBuilder) EnumApiname(enumApiname string) *EnumsBuilder {
	builder.enumApiname = enumApiname
	builder.enumApinameFlag = true
	return builder
}

// 枚举值
//
// 示例值：
func (builder *EnumsBuilder) EnumItems(enumItems []*EnumField) *EnumsBuilder {
	builder.enumItems = enumItems
	builder.enumItemsFlag = true
	return builder
}

func (builder *EnumsBuilder) Build() *Enums {
	req := &Enums{}
	if builder.enumApinameFlag {
		req.EnumApiname = &builder.enumApiname

	}
	if builder.enumItemsFlag {
		req.EnumItems = builder.enumItems
	}
	return req
}

type ErrorInfo struct {
	ErrCode *int `json:"err_code,omitempty"` // 错误码

	ErrMsg *string `json:"err_msg,omitempty"` // 错误描述
}

type ErrorInfoBuilder struct {
	errCode     int // 错误码
	errCodeFlag bool

	errMsg     string // 错误描述
	errMsgFlag bool
}

func NewErrorInfoBuilder() *ErrorInfoBuilder {
	builder := &ErrorInfoBuilder{}
	return builder
}

// 错误码
//
// 示例值：30000001
func (builder *ErrorInfoBuilder) ErrCode(errCode int) *ErrorInfoBuilder {
	builder.errCode = errCode
	builder.errCodeFlag = true
	return builder
}

// 错误描述
//
// 示例值：示例错误信息
func (builder *ErrorInfoBuilder) ErrMsg(errMsg string) *ErrorInfoBuilder {
	builder.errMsg = errMsg
	builder.errMsgFlag = true
	return builder
}

func (builder *ErrorInfoBuilder) Build() *ErrorInfo {
	req := &ErrorInfo{}
	if builder.errCodeFlag {
		req.ErrCode = &builder.errCode

	}
	if builder.errMsgFlag {
		req.ErrMsg = &builder.errMsg

	}
	return req
}

type FieldVariableSubVlaue struct {
	Key *string `json:"key,omitempty"` // 用于关联list和record类型变量值中的key

	Value *FieldVariableValueTo `json:"value,omitempty"` // 变量值
}

type FieldVariableSubVlaueBuilder struct {
	key     string // 用于关联list和record类型变量值中的key
	keyFlag bool

	value     *FieldVariableValueTo // 变量值
	valueFlag bool
}

func NewFieldVariableSubVlaueBuilder() *FieldVariableSubVlaueBuilder {
	builder := &FieldVariableSubVlaueBuilder{}
	return builder
}

// 用于关联list和record类型变量值中的key
//
// 示例值：key1
func (builder *FieldVariableSubVlaueBuilder) Key(key string) *FieldVariableSubVlaueBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 变量值
//
// 示例值：
func (builder *FieldVariableSubVlaueBuilder) Value(value *FieldVariableValueTo) *FieldVariableSubVlaueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FieldVariableSubVlaueBuilder) Build() *FieldVariableSubVlaue {
	req := &FieldVariableSubVlaue{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type FieldVariableSubVlaueForReview struct {
	Key *string `json:"key,omitempty"` // 用于关联list和record类型变量值中的key

	Value *FieldVariableValueToForReview `json:"value,omitempty"` // 变量值
}

type FieldVariableSubVlaueForReviewBuilder struct {
	key     string // 用于关联list和record类型变量值中的key
	keyFlag bool

	value     *FieldVariableValueToForReview // 变量值
	valueFlag bool
}

func NewFieldVariableSubVlaueForReviewBuilder() *FieldVariableSubVlaueForReviewBuilder {
	builder := &FieldVariableSubVlaueForReviewBuilder{}
	return builder
}

// 用于关联list和record类型变量值中的key
//
// 示例值：key1
func (builder *FieldVariableSubVlaueForReviewBuilder) Key(key string) *FieldVariableSubVlaueForReviewBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 变量值
//
// 示例值：
func (builder *FieldVariableSubVlaueForReviewBuilder) Value(value *FieldVariableValueToForReview) *FieldVariableSubVlaueForReviewBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FieldVariableSubVlaueForReviewBuilder) Build() *FieldVariableSubVlaueForReview {
	req := &FieldVariableSubVlaueForReview{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type FieldVariableValue struct {
	VariableApiName *string `json:"variable_api_name,omitempty"` // 变量唯一标识

	VariableName *FieldVariableValueI18n `json:"variable_name,omitempty"` // 变量名称

	VariableValue *FieldVariableValueTo `json:"variable_value,omitempty"` // 变量值

	SubValues []*FieldVariableSubVlaue `json:"sub_values,omitempty"` // 在list_values和record_values中引用的变量
}

type FieldVariableValueBuilder struct {
	variableApiName     string // 变量唯一标识
	variableApiNameFlag bool

	variableName     *FieldVariableValueI18n // 变量名称
	variableNameFlag bool

	variableValue     *FieldVariableValueTo // 变量值
	variableValueFlag bool

	subValues     []*FieldVariableSubVlaue // 在list_values和record_values中引用的变量
	subValuesFlag bool
}

func NewFieldVariableValueBuilder() *FieldVariableValueBuilder {
	builder := &FieldVariableValueBuilder{}
	return builder
}

// 变量唯一标识
//
// 示例值：custom123
func (builder *FieldVariableValueBuilder) VariableApiName(variableApiName string) *FieldVariableValueBuilder {
	builder.variableApiName = variableApiName
	builder.variableApiNameFlag = true
	return builder
}

// 变量名称
//
// 示例值：日期
func (builder *FieldVariableValueBuilder) VariableName(variableName *FieldVariableValueI18n) *FieldVariableValueBuilder {
	builder.variableName = variableName
	builder.variableNameFlag = true
	return builder
}

// 变量值
//
// 示例值：aa
func (builder *FieldVariableValueBuilder) VariableValue(variableValue *FieldVariableValueTo) *FieldVariableValueBuilder {
	builder.variableValue = variableValue
	builder.variableValueFlag = true
	return builder
}

// 在list_values和record_values中引用的变量
//
// 示例值：
func (builder *FieldVariableValueBuilder) SubValues(subValues []*FieldVariableSubVlaue) *FieldVariableValueBuilder {
	builder.subValues = subValues
	builder.subValuesFlag = true
	return builder
}

func (builder *FieldVariableValueBuilder) Build() *FieldVariableValue {
	req := &FieldVariableValue{}
	if builder.variableApiNameFlag {
		req.VariableApiName = &builder.variableApiName

	}
	if builder.variableNameFlag {
		req.VariableName = builder.variableName
	}
	if builder.variableValueFlag {
		req.VariableValue = builder.variableValue
	}
	if builder.subValuesFlag {
		req.SubValues = builder.subValues
	}
	return req
}

type FieldVariableValueI18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文值

	EnUs *string `json:"en_us,omitempty"` // 英文值
}

type FieldVariableValueI18nBuilder struct {
	zhCn     string // 中文值
	zhCnFlag bool

	enUs     string // 英文值
	enUsFlag bool
}

func NewFieldVariableValueI18nBuilder() *FieldVariableValueI18nBuilder {
	builder := &FieldVariableValueI18nBuilder{}
	return builder
}

// 中文值
//
// 示例值：北京
func (builder *FieldVariableValueI18nBuilder) ZhCn(zhCn string) *FieldVariableValueI18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文值
//
// 示例值：Beijing
func (builder *FieldVariableValueI18nBuilder) EnUs(enUs string) *FieldVariableValueI18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *FieldVariableValueI18nBuilder) Build() *FieldVariableValueI18n {
	req := &FieldVariableValueI18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type FieldVariableValueTo struct {
	TextValue *string `json:"text_value,omitempty"` // 文本值

	BoolValue *bool `json:"bool_value,omitempty"` // 布尔值

	NumberValue *string `json:"number_value,omitempty"` // 数字值

	EnumValue *string `json:"enum_value,omitempty"` // 枚举值，这里是枚举的id

	DateValue *string `json:"date_value,omitempty"` // 从 1970 开始的天数

	DateTimeValue *string `json:"date_time_value,omitempty"` // 时间戳，毫秒

	I18nValue *FieldVariableValueI18n `json:"i18n_value,omitempty"` // 多语字段值

	ObjectValue *FieldVariableValueToObject `json:"object_value,omitempty"` // 对象值，包括对象id和对象类型

	UserValue *string `json:"user_value,omitempty"` // 用户id，根据user_type选择对应的用户id

	DepartmentValue *string `json:"department_value,omitempty"` // 部门id，根据入参选择对应的部门id

	RecordValues []*FieldVariableValueToRecord `json:"record_values,omitempty"` // 记录类型字段值

	EmploymentValue *string `json:"employment_value,omitempty"` // 员工类型字段值，为用户id，根据入参选择返回的用户id

	ListValues []string `json:"list_values,omitempty"` // 数组类型值，里面包含多个值，每个元素都对应subValues中的数组下标

	FileValue *FieldVariableValueToFile `json:"file_value,omitempty"` // 文件类型字段值，可通过主数据的文件下载Open API下载
}

type FieldVariableValueToBuilder struct {
	textValue     string // 文本值
	textValueFlag bool

	boolValue     bool // 布尔值
	boolValueFlag bool

	numberValue     string // 数字值
	numberValueFlag bool

	enumValue     string // 枚举值，这里是枚举的id
	enumValueFlag bool

	dateValue     string // 从 1970 开始的天数
	dateValueFlag bool

	dateTimeValue     string // 时间戳，毫秒
	dateTimeValueFlag bool

	i18nValue     *FieldVariableValueI18n // 多语字段值
	i18nValueFlag bool

	objectValue     *FieldVariableValueToObject // 对象值，包括对象id和对象类型
	objectValueFlag bool

	userValue     string // 用户id，根据user_type选择对应的用户id
	userValueFlag bool

	departmentValue     string // 部门id，根据入参选择对应的部门id
	departmentValueFlag bool

	recordValues     []*FieldVariableValueToRecord // 记录类型字段值
	recordValuesFlag bool

	employmentValue     string // 员工类型字段值，为用户id，根据入参选择返回的用户id
	employmentValueFlag bool

	listValues     []string // 数组类型值，里面包含多个值，每个元素都对应subValues中的数组下标
	listValuesFlag bool

	fileValue     *FieldVariableValueToFile // 文件类型字段值，可通过主数据的文件下载Open API下载
	fileValueFlag bool
}

func NewFieldVariableValueToBuilder() *FieldVariableValueToBuilder {
	builder := &FieldVariableValueToBuilder{}
	return builder
}

// 文本值
//
// 示例值：测试测试
func (builder *FieldVariableValueToBuilder) TextValue(textValue string) *FieldVariableValueToBuilder {
	builder.textValue = textValue
	builder.textValueFlag = true
	return builder
}

// 布尔值
//
// 示例值：true
func (builder *FieldVariableValueToBuilder) BoolValue(boolValue bool) *FieldVariableValueToBuilder {
	builder.boolValue = boolValue
	builder.boolValueFlag = true
	return builder
}

// 数字值
//
// 示例值：100
func (builder *FieldVariableValueToBuilder) NumberValue(numberValue string) *FieldVariableValueToBuilder {
	builder.numberValue = numberValue
	builder.numberValueFlag = true
	return builder
}

// 枚举值，这里是枚举的id
//
// 示例值：home_address
func (builder *FieldVariableValueToBuilder) EnumValue(enumValue string) *FieldVariableValueToBuilder {
	builder.enumValue = enumValue
	builder.enumValueFlag = true
	return builder
}

// 从 1970 开始的天数
//
// 示例值：19838
func (builder *FieldVariableValueToBuilder) DateValue(dateValue string) *FieldVariableValueToBuilder {
	builder.dateValue = dateValue
	builder.dateValueFlag = true
	return builder
}

// 时间戳，毫秒
//
// 示例值：1714013877512
func (builder *FieldVariableValueToBuilder) DateTimeValue(dateTimeValue string) *FieldVariableValueToBuilder {
	builder.dateTimeValue = dateTimeValue
	builder.dateTimeValueFlag = true
	return builder
}

// 多语字段值
//
// 示例值：
func (builder *FieldVariableValueToBuilder) I18nValue(i18nValue *FieldVariableValueI18n) *FieldVariableValueToBuilder {
	builder.i18nValue = i18nValue
	builder.i18nValueFlag = true
	return builder
}

// 对象值，包括对象id和对象类型
//
// 示例值：1
func (builder *FieldVariableValueToBuilder) ObjectValue(objectValue *FieldVariableValueToObject) *FieldVariableValueToBuilder {
	builder.objectValue = objectValue
	builder.objectValueFlag = true
	return builder
}

// 用户id，根据user_type选择对应的用户id
//
// 示例值：ou_c57053dad6eea0aea4696c48433d8562
func (builder *FieldVariableValueToBuilder) UserValue(userValue string) *FieldVariableValueToBuilder {
	builder.userValue = userValue
	builder.userValueFlag = true
	return builder
}

// 部门id，根据入参选择对应的部门id
//
// 示例值：od-a761814f6bc3f14bd3b00905ec1d7c6f
func (builder *FieldVariableValueToBuilder) DepartmentValue(departmentValue string) *FieldVariableValueToBuilder {
	builder.departmentValue = departmentValue
	builder.departmentValueFlag = true
	return builder
}

// 记录类型字段值
//
// 示例值：1
func (builder *FieldVariableValueToBuilder) RecordValues(recordValues []*FieldVariableValueToRecord) *FieldVariableValueToBuilder {
	builder.recordValues = recordValues
	builder.recordValuesFlag = true
	return builder
}

// 员工类型字段值，为用户id，根据入参选择返回的用户id
//
// 示例值：ou_c57053dad6eea0aea4696c48433d8562
func (builder *FieldVariableValueToBuilder) EmploymentValue(employmentValue string) *FieldVariableValueToBuilder {
	builder.employmentValue = employmentValue
	builder.employmentValueFlag = true
	return builder
}

// 数组类型值，里面包含多个值，每个元素都对应subValues中的数组下标
//
// 示例值：
func (builder *FieldVariableValueToBuilder) ListValues(listValues []string) *FieldVariableValueToBuilder {
	builder.listValues = listValues
	builder.listValuesFlag = true
	return builder
}

// 文件类型字段值，可通过主数据的文件下载Open API下载
//
// 示例值：
func (builder *FieldVariableValueToBuilder) FileValue(fileValue *FieldVariableValueToFile) *FieldVariableValueToBuilder {
	builder.fileValue = fileValue
	builder.fileValueFlag = true
	return builder
}

func (builder *FieldVariableValueToBuilder) Build() *FieldVariableValueTo {
	req := &FieldVariableValueTo{}
	if builder.textValueFlag {
		req.TextValue = &builder.textValue

	}
	if builder.boolValueFlag {
		req.BoolValue = &builder.boolValue

	}
	if builder.numberValueFlag {
		req.NumberValue = &builder.numberValue

	}
	if builder.enumValueFlag {
		req.EnumValue = &builder.enumValue

	}
	if builder.dateValueFlag {
		req.DateValue = &builder.dateValue

	}
	if builder.dateTimeValueFlag {
		req.DateTimeValue = &builder.dateTimeValue

	}
	if builder.i18nValueFlag {
		req.I18nValue = builder.i18nValue
	}
	if builder.objectValueFlag {
		req.ObjectValue = builder.objectValue
	}
	if builder.userValueFlag {
		req.UserValue = &builder.userValue

	}
	if builder.departmentValueFlag {
		req.DepartmentValue = &builder.departmentValue

	}
	if builder.recordValuesFlag {
		req.RecordValues = builder.recordValues
	}
	if builder.employmentValueFlag {
		req.EmploymentValue = &builder.employmentValue

	}
	if builder.listValuesFlag {
		req.ListValues = builder.listValues
	}
	if builder.fileValueFlag {
		req.FileValue = builder.fileValue
	}
	return req
}

type FieldVariableValueToEnum struct {
	Value *string `json:"value,omitempty"` // 枚举项唯一id

	Name *FieldVariableValueI18n `json:"name,omitempty"` // 枚举项名称
}

type FieldVariableValueToEnumBuilder struct {
	value     string // 枚举项唯一id
	valueFlag bool

	name     *FieldVariableValueI18n // 枚举项名称
	nameFlag bool
}

func NewFieldVariableValueToEnumBuilder() *FieldVariableValueToEnumBuilder {
	builder := &FieldVariableValueToEnumBuilder{}
	return builder
}

// 枚举项唯一id
//
// 示例值：home_address
func (builder *FieldVariableValueToEnumBuilder) Value(value string) *FieldVariableValueToEnumBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 枚举项名称
//
// 示例值：
func (builder *FieldVariableValueToEnumBuilder) Name(name *FieldVariableValueI18n) *FieldVariableValueToEnumBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *FieldVariableValueToEnumBuilder) Build() *FieldVariableValueToEnum {
	req := &FieldVariableValueToEnum{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type FieldVariableValueToFile struct {
	OpenFileId *string `json:"open_file_id,omitempty"` // 用于主数据文件下载接口的id

	FileName *string `json:"file_name,omitempty"` // 文件名称

	Length *int `json:"length,omitempty"` // 文件大小，单位：Byte

	MimeType *string `json:"mime_type,omitempty"` // 文件类型，如`application/pdf`
}

type FieldVariableValueToFileBuilder struct {
	openFileId     string // 用于主数据文件下载接口的id
	openFileIdFlag bool

	fileName     string // 文件名称
	fileNameFlag bool

	length     int // 文件大小，单位：Byte
	lengthFlag bool

	mimeType     string // 文件类型，如`application/pdf`
	mimeTypeFlag bool
}

func NewFieldVariableValueToFileBuilder() *FieldVariableValueToFileBuilder {
	builder := &FieldVariableValueToFileBuilder{}
	return builder
}

// 用于主数据文件下载接口的id
//
// 示例值：66867ed00740ddd4a0bad4a5_c99b5322dc744fe4b99b76426ffe5d53
func (builder *FieldVariableValueToFileBuilder) OpenFileId(openFileId string) *FieldVariableValueToFileBuilder {
	builder.openFileId = openFileId
	builder.openFileIdFlag = true
	return builder
}

// 文件名称
//
// 示例值：file_name
func (builder *FieldVariableValueToFileBuilder) FileName(fileName string) *FieldVariableValueToFileBuilder {
	builder.fileName = fileName
	builder.fileNameFlag = true
	return builder
}

// 文件大小，单位：Byte
//
// 示例值：65535
func (builder *FieldVariableValueToFileBuilder) Length(length int) *FieldVariableValueToFileBuilder {
	builder.length = length
	builder.lengthFlag = true
	return builder
}

// 文件类型，如`application/pdf`
//
// 示例值：application/pdf
func (builder *FieldVariableValueToFileBuilder) MimeType(mimeType string) *FieldVariableValueToFileBuilder {
	builder.mimeType = mimeType
	builder.mimeTypeFlag = true
	return builder
}

func (builder *FieldVariableValueToFileBuilder) Build() *FieldVariableValueToFile {
	req := &FieldVariableValueToFile{}
	if builder.openFileIdFlag {
		req.OpenFileId = &builder.openFileId

	}
	if builder.fileNameFlag {
		req.FileName = &builder.fileName

	}
	if builder.lengthFlag {
		req.Length = &builder.length

	}
	if builder.mimeTypeFlag {
		req.MimeType = &builder.mimeType

	}
	return req
}

type FieldVariableValueToFileForWrite struct {
	OpenFileId *string `json:"open_file_id,omitempty"` // 主数据的文件id

	FileName *string `json:"file_name,omitempty"` // 文件名称

	Length *int `json:"length,omitempty"` // 文件大小，单位：Byte
}

type FieldVariableValueToFileForWriteBuilder struct {
	openFileId     string // 主数据的文件id
	openFileIdFlag bool

	fileName     string // 文件名称
	fileNameFlag bool

	length     int // 文件大小，单位：Byte
	lengthFlag bool
}

func NewFieldVariableValueToFileForWriteBuilder() *FieldVariableValueToFileForWriteBuilder {
	builder := &FieldVariableValueToFileForWriteBuilder{}
	return builder
}

// 主数据的文件id
//
// 示例值：66867ed00740ddd4a0bad4a5_c99b5322dc744fe4b99b76426ffe5d53
func (builder *FieldVariableValueToFileForWriteBuilder) OpenFileId(openFileId string) *FieldVariableValueToFileForWriteBuilder {
	builder.openFileId = openFileId
	builder.openFileIdFlag = true
	return builder
}

// 文件名称
//
// 示例值：file_name
func (builder *FieldVariableValueToFileForWriteBuilder) FileName(fileName string) *FieldVariableValueToFileForWriteBuilder {
	builder.fileName = fileName
	builder.fileNameFlag = true
	return builder
}

// 文件大小，单位：Byte
//
// 示例值：65535
func (builder *FieldVariableValueToFileForWriteBuilder) Length(length int) *FieldVariableValueToFileForWriteBuilder {
	builder.length = length
	builder.lengthFlag = true
	return builder
}

func (builder *FieldVariableValueToFileForWriteBuilder) Build() *FieldVariableValueToFileForWrite {
	req := &FieldVariableValueToFileForWrite{}
	if builder.openFileIdFlag {
		req.OpenFileId = &builder.openFileId

	}
	if builder.fileNameFlag {
		req.FileName = &builder.fileName

	}
	if builder.lengthFlag {
		req.Length = &builder.length

	}
	return req
}

type FieldVariableValueToForReview struct {
	TextValue *string `json:"text_value,omitempty"` // 文本值

	BoolValue *bool `json:"bool_value,omitempty"` // 布尔值

	NumberValue *string `json:"number_value,omitempty"` // 数字值

	EnumValue *string `json:"enum_value,omitempty"` // 枚举值，这里是枚举的id

	DateValue *string `json:"date_value,omitempty"` // 从 1970 开始的天数

	DateTimeValue *string `json:"date_time_value,omitempty"` // 时间戳，毫秒

	I18nValue *FieldVariableValueI18n `json:"i18n_value,omitempty"` // 多语字段值

	ObjectValue *FieldVariableValueToObject `json:"object_value,omitempty"` // 对象值，包括对象id和对象类型

	DepartmentValue *string `json:"department_value,omitempty"` // 部门id，根据入参选择对应的部门id

	EmploymentValue *string `json:"employment_value,omitempty"` // 员工类型字段值，为用户id，根据入参选择返回的用户id

	ListValues []string `json:"list_values,omitempty"` // 数组类型值，里面包含多个值，每个元素都对应subValues中的key

	FileValue *FieldVariableValueToFileForWrite `json:"file_value,omitempty"` // 文件类型字段值

	RecordValues []*FieldVariableValueToRecord `json:"record_values,omitempty"` // record类型字段值
}

type FieldVariableValueToForReviewBuilder struct {
	textValue     string // 文本值
	textValueFlag bool

	boolValue     bool // 布尔值
	boolValueFlag bool

	numberValue     string // 数字值
	numberValueFlag bool

	enumValue     string // 枚举值，这里是枚举的id
	enumValueFlag bool

	dateValue     string // 从 1970 开始的天数
	dateValueFlag bool

	dateTimeValue     string // 时间戳，毫秒
	dateTimeValueFlag bool

	i18nValue     *FieldVariableValueI18n // 多语字段值
	i18nValueFlag bool

	objectValue     *FieldVariableValueToObject // 对象值，包括对象id和对象类型
	objectValueFlag bool

	departmentValue     string // 部门id，根据入参选择对应的部门id
	departmentValueFlag bool

	employmentValue     string // 员工类型字段值，为用户id，根据入参选择返回的用户id
	employmentValueFlag bool

	listValues     []string // 数组类型值，里面包含多个值，每个元素都对应subValues中的key
	listValuesFlag bool

	fileValue     *FieldVariableValueToFileForWrite // 文件类型字段值
	fileValueFlag bool

	recordValues     []*FieldVariableValueToRecord // record类型字段值
	recordValuesFlag bool
}

func NewFieldVariableValueToForReviewBuilder() *FieldVariableValueToForReviewBuilder {
	builder := &FieldVariableValueToForReviewBuilder{}
	return builder
}

// 文本值
//
// 示例值：测试测试
func (builder *FieldVariableValueToForReviewBuilder) TextValue(textValue string) *FieldVariableValueToForReviewBuilder {
	builder.textValue = textValue
	builder.textValueFlag = true
	return builder
}

// 布尔值
//
// 示例值：true
func (builder *FieldVariableValueToForReviewBuilder) BoolValue(boolValue bool) *FieldVariableValueToForReviewBuilder {
	builder.boolValue = boolValue
	builder.boolValueFlag = true
	return builder
}

// 数字值
//
// 示例值：100
func (builder *FieldVariableValueToForReviewBuilder) NumberValue(numberValue string) *FieldVariableValueToForReviewBuilder {
	builder.numberValue = numberValue
	builder.numberValueFlag = true
	return builder
}

// 枚举值，这里是枚举的id
//
// 示例值：home_address
func (builder *FieldVariableValueToForReviewBuilder) EnumValue(enumValue string) *FieldVariableValueToForReviewBuilder {
	builder.enumValue = enumValue
	builder.enumValueFlag = true
	return builder
}

// 从 1970 开始的天数
//
// 示例值：19838
func (builder *FieldVariableValueToForReviewBuilder) DateValue(dateValue string) *FieldVariableValueToForReviewBuilder {
	builder.dateValue = dateValue
	builder.dateValueFlag = true
	return builder
}

// 时间戳，毫秒
//
// 示例值：1714013877512
func (builder *FieldVariableValueToForReviewBuilder) DateTimeValue(dateTimeValue string) *FieldVariableValueToForReviewBuilder {
	builder.dateTimeValue = dateTimeValue
	builder.dateTimeValueFlag = true
	return builder
}

// 多语字段值
//
// 示例值：ou_c57053dad6eea0aea4696c48433d8562
func (builder *FieldVariableValueToForReviewBuilder) I18nValue(i18nValue *FieldVariableValueI18n) *FieldVariableValueToForReviewBuilder {
	builder.i18nValue = i18nValue
	builder.i18nValueFlag = true
	return builder
}

// 对象值，包括对象id和对象类型
//
// 示例值：od-a761814f6bc3f14bd3b00905ec1d7c6f
func (builder *FieldVariableValueToForReviewBuilder) ObjectValue(objectValue *FieldVariableValueToObject) *FieldVariableValueToForReviewBuilder {
	builder.objectValue = objectValue
	builder.objectValueFlag = true
	return builder
}

// 部门id，根据入参选择对应的部门id
//
// 示例值：od-a761814f6bc3f14bd3b00905ec1d7c6f
func (builder *FieldVariableValueToForReviewBuilder) DepartmentValue(departmentValue string) *FieldVariableValueToForReviewBuilder {
	builder.departmentValue = departmentValue
	builder.departmentValueFlag = true
	return builder
}

// 员工类型字段值，为用户id，根据入参选择返回的用户id
//
// 示例值：ou_c57053dad6eea0aea4696c48433d8562
func (builder *FieldVariableValueToForReviewBuilder) EmploymentValue(employmentValue string) *FieldVariableValueToForReviewBuilder {
	builder.employmentValue = employmentValue
	builder.employmentValueFlag = true
	return builder
}

// 数组类型值，里面包含多个值，每个元素都对应subValues中的key
//
// 示例值：
func (builder *FieldVariableValueToForReviewBuilder) ListValues(listValues []string) *FieldVariableValueToForReviewBuilder {
	builder.listValues = listValues
	builder.listValuesFlag = true
	return builder
}

// 文件类型字段值
//
// 示例值：
func (builder *FieldVariableValueToForReviewBuilder) FileValue(fileValue *FieldVariableValueToFileForWrite) *FieldVariableValueToForReviewBuilder {
	builder.fileValue = fileValue
	builder.fileValueFlag = true
	return builder
}

// record类型字段值
//
// 示例值：
func (builder *FieldVariableValueToForReviewBuilder) RecordValues(recordValues []*FieldVariableValueToRecord) *FieldVariableValueToForReviewBuilder {
	builder.recordValues = recordValues
	builder.recordValuesFlag = true
	return builder
}

func (builder *FieldVariableValueToForReviewBuilder) Build() *FieldVariableValueToForReview {
	req := &FieldVariableValueToForReview{}
	if builder.textValueFlag {
		req.TextValue = &builder.textValue

	}
	if builder.boolValueFlag {
		req.BoolValue = &builder.boolValue

	}
	if builder.numberValueFlag {
		req.NumberValue = &builder.numberValue

	}
	if builder.enumValueFlag {
		req.EnumValue = &builder.enumValue

	}
	if builder.dateValueFlag {
		req.DateValue = &builder.dateValue

	}
	if builder.dateTimeValueFlag {
		req.DateTimeValue = &builder.dateTimeValue

	}
	if builder.i18nValueFlag {
		req.I18nValue = builder.i18nValue
	}
	if builder.objectValueFlag {
		req.ObjectValue = builder.objectValue
	}
	if builder.departmentValueFlag {
		req.DepartmentValue = &builder.departmentValue

	}
	if builder.employmentValueFlag {
		req.EmploymentValue = &builder.employmentValue

	}
	if builder.listValuesFlag {
		req.ListValues = builder.listValues
	}
	if builder.fileValueFlag {
		req.FileValue = builder.fileValue
	}
	if builder.recordValuesFlag {
		req.RecordValues = builder.recordValues
	}
	return req
}

type FieldVariableValueToObject struct {
	WkId *string `json:"wk_id,omitempty"` // wukong的对象唯一标识

	WkApiName *string `json:"wk_api_name,omitempty"` // wukong的元数据唯一标识
}

type FieldVariableValueToObjectBuilder struct {
	wkId     string // wukong的对象唯一标识
	wkIdFlag bool

	wkApiName     string // wukong的元数据唯一标识
	wkApiNameFlag bool
}

func NewFieldVariableValueToObjectBuilder() *FieldVariableValueToObjectBuilder {
	builder := &FieldVariableValueToObjectBuilder{}
	return builder
}

// wukong的对象唯一标识
//
// 示例值：6863326263210149383
func (builder *FieldVariableValueToObjectBuilder) WkId(wkId string) *FieldVariableValueToObjectBuilder {
	builder.wkId = wkId
	builder.wkIdFlag = true
	return builder
}

// wukong的元数据唯一标识
//
// 示例值：country_region_subdivision
func (builder *FieldVariableValueToObjectBuilder) WkApiName(wkApiName string) *FieldVariableValueToObjectBuilder {
	builder.wkApiName = wkApiName
	builder.wkApiNameFlag = true
	return builder
}

func (builder *FieldVariableValueToObjectBuilder) Build() *FieldVariableValueToObject {
	req := &FieldVariableValueToObject{}
	if builder.wkIdFlag {
		req.WkId = &builder.wkId

	}
	if builder.wkApiNameFlag {
		req.WkApiName = &builder.wkApiName

	}
	return req
}

type FieldVariableValueToRecord struct {
	VariableApiName *string `json:"variable_api_name,omitempty"` // 变量唯一标识

	SubValueKey *string `json:"sub_value_key,omitempty"` // 变量值，对应subValues中的key

	RecordId *string `json:"record_id,omitempty"` // 记录唯一ID
}

type FieldVariableValueToRecordBuilder struct {
	variableApiName     string // 变量唯一标识
	variableApiNameFlag bool

	subValueKey     string // 变量值，对应subValues中的key
	subValueKeyFlag bool

	recordId     string // 记录唯一ID
	recordIdFlag bool
}

func NewFieldVariableValueToRecordBuilder() *FieldVariableValueToRecordBuilder {
	builder := &FieldVariableValueToRecordBuilder{}
	return builder
}

// 变量唯一标识
//
// 示例值：city_v2
func (builder *FieldVariableValueToRecordBuilder) VariableApiName(variableApiName string) *FieldVariableValueToRecordBuilder {
	builder.variableApiName = variableApiName
	builder.variableApiNameFlag = true
	return builder
}

// 变量值，对应subValues中的key
//
// 示例值：key1
func (builder *FieldVariableValueToRecordBuilder) SubValueKey(subValueKey string) *FieldVariableValueToRecordBuilder {
	builder.subValueKey = subValueKey
	builder.subValueKeyFlag = true
	return builder
}

// 记录唯一ID
//
// 示例值：6863326263210149383
func (builder *FieldVariableValueToRecordBuilder) RecordId(recordId string) *FieldVariableValueToRecordBuilder {
	builder.recordId = recordId
	builder.recordIdFlag = true
	return builder
}

func (builder *FieldVariableValueToRecordBuilder) Build() *FieldVariableValueToRecord {
	req := &FieldVariableValueToRecord{}
	if builder.variableApiNameFlag {
		req.VariableApiName = &builder.variableApiName

	}
	if builder.subValueKeyFlag {
		req.SubValueKey = &builder.subValueKey

	}
	if builder.recordIdFlag {
		req.RecordId = &builder.recordId

	}
	return req
}

type File struct {
	Id *string `json:"id,omitempty"` // 上传文件ID

	Name *string `json:"name,omitempty"` // 文件名
}

type FileBuilder struct {
	id     string // 上传文件ID
	idFlag bool

	name     string // 文件名
	nameFlag bool
}

func NewFileBuilder() *FileBuilder {
	builder := &FileBuilder{}
	return builder
}

// 上传文件ID
//
// 示例值：150018109586e8ea745e47ae8feb3722dbe1d03a181336393633393133303431393831343930373235150200
func (builder *FileBuilder) Id(id string) *FileBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 文件名
//
// 示例值：document.txt
func (builder *FileBuilder) Name(name string) *FileBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *FileBuilder) Build() *File {
	req := &File{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	return req
}

type FormFieldVariableBoolValue struct {
	Value *bool `json:"value,omitempty"` // 布尔变量的值
}

type FormFieldVariableBoolValueBuilder struct {
	value     bool // 布尔变量的值
	valueFlag bool
}

func NewFormFieldVariableBoolValueBuilder() *FormFieldVariableBoolValueBuilder {
	builder := &FormFieldVariableBoolValueBuilder{}
	return builder
}

// 布尔变量的值
//
// 示例值：true
func (builder *FormFieldVariableBoolValueBuilder) Value(value bool) *FormFieldVariableBoolValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableBoolValueBuilder) Build() *FormFieldVariableBoolValue {
	req := &FormFieldVariableBoolValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormFieldVariableI18nValue struct {
	Value *BpmDataengineI18n `json:"value,omitempty"` // 多语参数
}

type FormFieldVariableI18nValueBuilder struct {
	value     *BpmDataengineI18n // 多语参数
	valueFlag bool
}

func NewFormFieldVariableI18nValueBuilder() *FormFieldVariableI18nValueBuilder {
	builder := &FormFieldVariableI18nValueBuilder{}
	return builder
}

// 多语参数
//
// 示例值：
func (builder *FormFieldVariableI18nValueBuilder) Value(value *BpmDataengineI18n) *FormFieldVariableI18nValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableI18nValueBuilder) Build() *FormFieldVariableI18nValue {
	req := &FormFieldVariableI18nValue{}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type FormFieldVariableNullValue struct {
}

type FormFieldVariableNullValueBuilder struct {
}

func NewFormFieldVariableNullValueBuilder() *FormFieldVariableNullValueBuilder {
	builder := &FormFieldVariableNullValueBuilder{}
	return builder
}

func (builder *FormFieldVariableNullValueBuilder) Build() *FormFieldVariableNullValue {
	req := &FormFieldVariableNullValue{}
	return req
}

type FormFieldVariableNumberValue struct {
	Value *int `json:"value,omitempty"` // 数值类型变量的值
}

type FormFieldVariableNumberValueBuilder struct {
	value     int // 数值类型变量的值
	valueFlag bool
}

func NewFormFieldVariableNumberValueBuilder() *FormFieldVariableNumberValueBuilder {
	builder := &FormFieldVariableNumberValueBuilder{}
	return builder
}

// 数值类型变量的值
//
// 示例值：1
func (builder *FormFieldVariableNumberValueBuilder) Value(value int) *FormFieldVariableNumberValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableNumberValueBuilder) Build() *FormFieldVariableNumberValue {
	req := &FormFieldVariableNumberValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormFieldVariableStringValue struct {
	Value *string `json:"value,omitempty"` // 文本类型变量的值
}

type FormFieldVariableStringValueBuilder struct {
	value     string // 文本类型变量的值
	valueFlag bool
}

func NewFormFieldVariableStringValueBuilder() *FormFieldVariableStringValueBuilder {
	builder := &FormFieldVariableStringValueBuilder{}
	return builder
}

// 文本类型变量的值
//
// 示例值：字符串
func (builder *FormFieldVariableStringValueBuilder) Value(value string) *FormFieldVariableStringValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *FormFieldVariableStringValueBuilder) Build() *FormFieldVariableStringValue {
	req := &FormFieldVariableStringValue{}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type FormVariableValueInfo struct {
	TextValue *FormFieldVariableStringValue `json:"text_value,omitempty"` // 文本变量对象

	NumberValue *FormFieldVariableStringValue `json:"number_value,omitempty"` // 数值变量对象（这里的value必须传入一个合法的数字，常见非法值："" 和 null）

	DateValue *FormFieldVariableNumberValue `json:"date_value,omitempty"` // 日期变量对象（这里的value为从1970年1月1日（UTC/GMT的午夜）开始所经过的天数）

	EmploymentValue *FormFieldVariableStringValue `json:"employment_value,omitempty"` // 员工变量对象（值传入employmentID）

	DateTimeValue *FormFieldVariableNumberValue `json:"date_time_value,omitempty"` // 日期时间变量对象（从1970年1月1日（UTC/GMT的午夜）开始所经过的毫秒数。）

	EnumValue *FormFieldVariableStringValue `json:"enum_value,omitempty"` // 枚举变量对象（客户需要传入 枚举的枚举项key作为enum_value.value的值）

	NullValue *FormFieldVariableNullValue `json:"null_value,omitempty"` // 空变量对象

	BoolValue *FormFieldVariableBoolValue `json:"bool_value,omitempty"` // 布尔变量对象

	DepartmentValue *FormFieldVariableStringValue `json:"department_value,omitempty"` // 部门变量对象（值传入departmentID）

	I18nValue *FormFieldVariableI18nValue `json:"i18n_value,omitempty"` // i18n变量对象（中英文为可选，但不能出现中英文均为空的数据。）

	ObjectValue *FormFieldVariableStringValue `json:"object_value,omitempty"` // 对象变量（对于所有引用wukong数据的Value，object_value.value中传入wukong中的wkID。）
}

type FormVariableValueInfoBuilder struct {
	textValue     *FormFieldVariableStringValue // 文本变量对象
	textValueFlag bool

	numberValue     *FormFieldVariableStringValue // 数值变量对象（这里的value必须传入一个合法的数字，常见非法值："" 和 null）
	numberValueFlag bool

	dateValue     *FormFieldVariableNumberValue // 日期变量对象（这里的value为从1970年1月1日（UTC/GMT的午夜）开始所经过的天数）
	dateValueFlag bool

	employmentValue     *FormFieldVariableStringValue // 员工变量对象（值传入employmentID）
	employmentValueFlag bool

	dateTimeValue     *FormFieldVariableNumberValue // 日期时间变量对象（从1970年1月1日（UTC/GMT的午夜）开始所经过的毫秒数。）
	dateTimeValueFlag bool

	enumValue     *FormFieldVariableStringValue // 枚举变量对象（客户需要传入 枚举的枚举项key作为enum_value.value的值）
	enumValueFlag bool

	nullValue     *FormFieldVariableNullValue // 空变量对象
	nullValueFlag bool

	boolValue     *FormFieldVariableBoolValue // 布尔变量对象
	boolValueFlag bool

	departmentValue     *FormFieldVariableStringValue // 部门变量对象（值传入departmentID）
	departmentValueFlag bool

	i18nValue     *FormFieldVariableI18nValue // i18n变量对象（中英文为可选，但不能出现中英文均为空的数据。）
	i18nValueFlag bool

	objectValue     *FormFieldVariableStringValue // 对象变量（对于所有引用wukong数据的Value，object_value.value中传入wukong中的wkID。）
	objectValueFlag bool
}

func NewFormVariableValueInfoBuilder() *FormVariableValueInfoBuilder {
	builder := &FormVariableValueInfoBuilder{}
	return builder
}

// 文本变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) TextValue(textValue *FormFieldVariableStringValue) *FormVariableValueInfoBuilder {
	builder.textValue = textValue
	builder.textValueFlag = true
	return builder
}

// 数值变量对象（这里的value必须传入一个合法的数字，常见非法值："" 和 null）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) NumberValue(numberValue *FormFieldVariableStringValue) *FormVariableValueInfoBuilder {
	builder.numberValue = numberValue
	builder.numberValueFlag = true
	return builder
}

// 日期变量对象（这里的value为从1970年1月1日（UTC/GMT的午夜）开始所经过的天数）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) DateValue(dateValue *FormFieldVariableNumberValue) *FormVariableValueInfoBuilder {
	builder.dateValue = dateValue
	builder.dateValueFlag = true
	return builder
}

// 员工变量对象（值传入employmentID）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) EmploymentValue(employmentValue *FormFieldVariableStringValue) *FormVariableValueInfoBuilder {
	builder.employmentValue = employmentValue
	builder.employmentValueFlag = true
	return builder
}

// 日期时间变量对象（从1970年1月1日（UTC/GMT的午夜）开始所经过的毫秒数。）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) DateTimeValue(dateTimeValue *FormFieldVariableNumberValue) *FormVariableValueInfoBuilder {
	builder.dateTimeValue = dateTimeValue
	builder.dateTimeValueFlag = true
	return builder
}

// 枚举变量对象（客户需要传入 枚举的枚举项key作为enum_value.value的值）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) EnumValue(enumValue *FormFieldVariableStringValue) *FormVariableValueInfoBuilder {
	builder.enumValue = enumValue
	builder.enumValueFlag = true
	return builder
}

// 空变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) NullValue(nullValue *FormFieldVariableNullValue) *FormVariableValueInfoBuilder {
	builder.nullValue = nullValue
	builder.nullValueFlag = true
	return builder
}

// 布尔变量对象
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) BoolValue(boolValue *FormFieldVariableBoolValue) *FormVariableValueInfoBuilder {
	builder.boolValue = boolValue
	builder.boolValueFlag = true
	return builder
}

// 部门变量对象（值传入departmentID）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) DepartmentValue(departmentValue *FormFieldVariableStringValue) *FormVariableValueInfoBuilder {
	builder.departmentValue = departmentValue
	builder.departmentValueFlag = true
	return builder
}

// i18n变量对象（中英文为可选，但不能出现中英文均为空的数据。）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) I18nValue(i18nValue *FormFieldVariableI18nValue) *FormVariableValueInfoBuilder {
	builder.i18nValue = i18nValue
	builder.i18nValueFlag = true
	return builder
}

// 对象变量（对于所有引用wukong数据的Value，object_value.value中传入wukong中的wkID。）
//
// 示例值：
func (builder *FormVariableValueInfoBuilder) ObjectValue(objectValue *FormFieldVariableStringValue) *FormVariableValueInfoBuilder {
	builder.objectValue = objectValue
	builder.objectValueFlag = true
	return builder
}

func (builder *FormVariableValueInfoBuilder) Build() *FormVariableValueInfo {
	req := &FormVariableValueInfo{}
	if builder.textValueFlag {
		req.TextValue = builder.textValue
	}
	if builder.numberValueFlag {
		req.NumberValue = builder.numberValue
	}
	if builder.dateValueFlag {
		req.DateValue = builder.dateValue
	}
	if builder.employmentValueFlag {
		req.EmploymentValue = builder.employmentValue
	}
	if builder.dateTimeValueFlag {
		req.DateTimeValue = builder.dateTimeValue
	}
	if builder.enumValueFlag {
		req.EnumValue = builder.enumValue
	}
	if builder.nullValueFlag {
		req.NullValue = builder.nullValue
	}
	if builder.boolValueFlag {
		req.BoolValue = builder.boolValue
	}
	if builder.departmentValueFlag {
		req.DepartmentValue = builder.departmentValue
	}
	if builder.i18nValueFlag {
		req.I18nValue = builder.i18nValue
	}
	if builder.objectValueFlag {
		req.ObjectValue = builder.objectValue
	}
	return req
}

type HiberarchyCommon struct {
	ParentId *string `json:"parent_id,omitempty"` // 上级组织

	Name []*I18n `json:"name,omitempty"` // 名称

	Type *Enum `json:"type,omitempty"` // 组织类型

	Active *bool `json:"active,omitempty"` // 启用

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	Code *string `json:"code,omitempty"` // 编码

	Description []*I18n `json:"description,omitempty"` // 描述

	TreeOrder *string `json:"tree_order,omitempty"` // 树形排序，代表同层级的部门排序序号

	ListOrder *string `json:"list_order,omitempty"` // 列表排序，代表所有部门的混排序号

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type HiberarchyCommonBuilder struct {
	parentId     string // 上级组织
	parentIdFlag bool

	name     []*I18n // 名称
	nameFlag bool

	type_    *Enum // 组织类型
	typeFlag bool

	active     bool // 启用
	activeFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	code     string // 编码
	codeFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	treeOrder     string // 树形排序，代表同层级的部门排序序号
	treeOrderFlag bool

	listOrder     string // 列表排序，代表所有部门的混排序号
	listOrderFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewHiberarchyCommonBuilder() *HiberarchyCommonBuilder {
	builder := &HiberarchyCommonBuilder{}
	return builder
}

// 上级组织
//
// 示例值：4719168654814483759
func (builder *HiberarchyCommonBuilder) ParentId(parentId string) *HiberarchyCommonBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *HiberarchyCommonBuilder) Name(name []*I18n) *HiberarchyCommonBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 组织类型
//
// 示例值：
func (builder *HiberarchyCommonBuilder) Type(type_ *Enum) *HiberarchyCommonBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *HiberarchyCommonBuilder) Active(active bool) *HiberarchyCommonBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *HiberarchyCommonBuilder) EffectiveTime(effectiveTime string) *HiberarchyCommonBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *HiberarchyCommonBuilder) ExpirationTime(expirationTime string) *HiberarchyCommonBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 编码
//
// 示例值：12456
func (builder *HiberarchyCommonBuilder) Code(code string) *HiberarchyCommonBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *HiberarchyCommonBuilder) Description(description []*I18n) *HiberarchyCommonBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 树形排序，代表同层级的部门排序序号
//
// 示例值：123
func (builder *HiberarchyCommonBuilder) TreeOrder(treeOrder string) *HiberarchyCommonBuilder {
	builder.treeOrder = treeOrder
	builder.treeOrderFlag = true
	return builder
}

// 列表排序，代表所有部门的混排序号
//
// 示例值：123
func (builder *HiberarchyCommonBuilder) ListOrder(listOrder string) *HiberarchyCommonBuilder {
	builder.listOrder = listOrder
	builder.listOrderFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *HiberarchyCommonBuilder) CustomFields(customFields []*ObjectFieldData) *HiberarchyCommonBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *HiberarchyCommonBuilder) Build() *HiberarchyCommon {
	req := &HiberarchyCommon{}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.typeFlag {
		req.Type = builder.type_
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.treeOrderFlag {
		req.TreeOrder = &builder.treeOrder

	}
	if builder.listOrderFlag {
		req.ListOrder = &builder.listOrder

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type HrbpInfo struct {
	HrbpId *string `json:"hrbp_id,omitempty"` // hrbp id

	HrbpType *Enum `json:"hrbp_type,omitempty"` // hrbp类型

	AuthType *Enum `json:"auth_type,omitempty"` // 授权类型

	EmploymentId *string `json:"employment_id,omitempty"` // 员工id

	Order *int `json:"order,omitempty"` // 顺序
}

type HrbpInfoBuilder struct {
	hrbpId     string // hrbp id
	hrbpIdFlag bool

	hrbpType     *Enum // hrbp类型
	hrbpTypeFlag bool

	authType     *Enum // 授权类型
	authTypeFlag bool

	employmentId     string // 员工id
	employmentIdFlag bool

	order     int // 顺序
	orderFlag bool
}

func NewHrbpInfoBuilder() *HrbpInfoBuilder {
	builder := &HrbpInfoBuilder{}
	return builder
}

// hrbp id
//
// 示例值：6846027341358024200
func (builder *HrbpInfoBuilder) HrbpId(hrbpId string) *HrbpInfoBuilder {
	builder.hrbpId = hrbpId
	builder.hrbpIdFlag = true
	return builder
}

// hrbp类型
//
// 示例值：
func (builder *HrbpInfoBuilder) HrbpType(hrbpType *Enum) *HrbpInfoBuilder {
	builder.hrbpType = hrbpType
	builder.hrbpTypeFlag = true
	return builder
}

// 授权类型
//
// 示例值：
func (builder *HrbpInfoBuilder) AuthType(authType *Enum) *HrbpInfoBuilder {
	builder.authType = authType
	builder.authTypeFlag = true
	return builder
}

// 员工id
//
// 示例值：6846027341358024200
func (builder *HrbpInfoBuilder) EmploymentId(employmentId string) *HrbpInfoBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 顺序
//
// 示例值：1
func (builder *HrbpInfoBuilder) Order(order int) *HrbpInfoBuilder {
	builder.order = order
	builder.orderFlag = true
	return builder
}

func (builder *HrbpInfoBuilder) Build() *HrbpInfo {
	req := &HrbpInfo{}
	if builder.hrbpIdFlag {
		req.HrbpId = &builder.hrbpId

	}
	if builder.hrbpTypeFlag {
		req.HrbpType = builder.hrbpType
	}
	if builder.authTypeFlag {
		req.AuthType = builder.authType
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.orderFlag {
		req.Order = &builder.order

	}
	return req
}

type I18n struct {
	Lang *string `json:"lang,omitempty"` // 语言编码（IETF BCP 47）

	Value *string `json:"value,omitempty"` // 文本内容
}

type I18nBuilder struct {
	lang     string // 语言编码（IETF BCP 47）
	langFlag bool

	value     string // 文本内容
	valueFlag bool
}

func NewI18nBuilder() *I18nBuilder {
	builder := &I18nBuilder{}
	return builder
}

// 语言编码（IETF BCP 47）
//
// 示例值：zh-CN
func (builder *I18nBuilder) Lang(lang string) *I18nBuilder {
	builder.lang = lang
	builder.langFlag = true
	return builder
}

// 文本内容
//
// 示例值：中文示例
func (builder *I18nBuilder) Value(value string) *I18nBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *I18nBuilder) Build() *I18n {
	req := &I18n{}
	if builder.langFlag {
		req.Lang = &builder.lang

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type I18nV2 struct {
	ZhCn *string `json:"zh_cn,omitempty"` // zh-CN

	EnUs *string `json:"en_us,omitempty"` // en-US
}

type I18nV2Builder struct {
	zhCn     string // zh-CN
	zhCnFlag bool

	enUs     string // en-US
	enUsFlag bool
}

func NewI18nV2Builder() *I18nV2Builder {
	builder := &I18nV2Builder{}
	return builder
}

// zh-CN
//
// 示例值：王冰
func (builder *I18nV2Builder) ZhCn(zhCn string) *I18nV2Builder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// en-US
//
// 示例值：Bob
func (builder *I18nV2Builder) EnUs(enUs string) *I18nV2Builder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *I18nV2Builder) Build() *I18nV2 {
	req := &I18nV2{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type InternationalAssignment struct {
	Id *string `json:"id,omitempty"` // 当前生效的外派记录ID

	AssignmentCityId *string `json:"assignment_city_id,omitempty"` // 当前生效外派记录的外派城市（派驻地）ID

	AssignmentCompanyId *string `json:"assignment_company_id,omitempty"` // 当前生效外派记录的外派公司ID

	AssignmentCountryId *string `json:"assignment_country_id,omitempty"` // 当前生效外派记录的外派国家ID

	AssignmentReason *I18n `json:"assignment_reason,omitempty"` // 当前生效外派记录的外派原因

	EffectiveTime *string `json:"effective_time,omitempty"` // 当前生效外派记录的生效时间

	StartAssignmentProcessId *string `json:"start_assignment_process_id,omitempty"` // 当前生效外派记录的开始外派流程 ID

	EndAssignmentProcessId *string `json:"end_assignment_process_id,omitempty"` // 当前生效外派记录的结束外派流程 ID

	ExpirationTime *string `json:"expiration_time,omitempty"` // 当前生效外派记录的失效时间

	InternationalAssignmentStatus *Enum `json:"international_assignment_status,omitempty"` // -| 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment

	InternationalAssignmentType *Enum `json:"international_assignment_type,omitempty"` // -| 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
}

type InternationalAssignmentBuilder struct {
	id     string // 当前生效的外派记录ID
	idFlag bool

	assignmentCityId     string // 当前生效外派记录的外派城市（派驻地）ID
	assignmentCityIdFlag bool

	assignmentCompanyId     string // 当前生效外派记录的外派公司ID
	assignmentCompanyIdFlag bool

	assignmentCountryId     string // 当前生效外派记录的外派国家ID
	assignmentCountryIdFlag bool

	assignmentReason     *I18n // 当前生效外派记录的外派原因
	assignmentReasonFlag bool

	effectiveTime     string // 当前生效外派记录的生效时间
	effectiveTimeFlag bool

	startAssignmentProcessId     string // 当前生效外派记录的开始外派流程 ID
	startAssignmentProcessIdFlag bool

	endAssignmentProcessId     string // 当前生效外派记录的结束外派流程 ID
	endAssignmentProcessIdFlag bool

	expirationTime     string // 当前生效外派记录的失效时间
	expirationTimeFlag bool

	internationalAssignmentStatus     *Enum // -| 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
	internationalAssignmentStatusFlag bool

	internationalAssignmentType     *Enum // -| 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
	internationalAssignmentTypeFlag bool
}

func NewInternationalAssignmentBuilder() *InternationalAssignmentBuilder {
	builder := &InternationalAssignmentBuilder{}
	return builder
}

// 当前生效的外派记录ID
//
// 示例值：7046599238679447000
func (builder *InternationalAssignmentBuilder) Id(id string) *InternationalAssignmentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 当前生效外派记录的外派城市（派驻地）ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentBuilder) AssignmentCityId(assignmentCityId string) *InternationalAssignmentBuilder {
	builder.assignmentCityId = assignmentCityId
	builder.assignmentCityIdFlag = true
	return builder
}

// 当前生效外派记录的外派公司ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentBuilder) AssignmentCompanyId(assignmentCompanyId string) *InternationalAssignmentBuilder {
	builder.assignmentCompanyId = assignmentCompanyId
	builder.assignmentCompanyIdFlag = true
	return builder
}

// 当前生效外派记录的外派国家ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentBuilder) AssignmentCountryId(assignmentCountryId string) *InternationalAssignmentBuilder {
	builder.assignmentCountryId = assignmentCountryId
	builder.assignmentCountryIdFlag = true
	return builder
}

// 当前生效外派记录的外派原因
//
// 示例值：
func (builder *InternationalAssignmentBuilder) AssignmentReason(assignmentReason *I18n) *InternationalAssignmentBuilder {
	builder.assignmentReason = assignmentReason
	builder.assignmentReasonFlag = true
	return builder
}

// 当前生效外派记录的生效时间
//
// 示例值：2023-08-29
func (builder *InternationalAssignmentBuilder) EffectiveTime(effectiveTime string) *InternationalAssignmentBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 当前生效外派记录的开始外派流程 ID
//
// 示例值：111111
func (builder *InternationalAssignmentBuilder) StartAssignmentProcessId(startAssignmentProcessId string) *InternationalAssignmentBuilder {
	builder.startAssignmentProcessId = startAssignmentProcessId
	builder.startAssignmentProcessIdFlag = true
	return builder
}

// 当前生效外派记录的结束外派流程 ID
//
// 示例值：1111111
func (builder *InternationalAssignmentBuilder) EndAssignmentProcessId(endAssignmentProcessId string) *InternationalAssignmentBuilder {
	builder.endAssignmentProcessId = endAssignmentProcessId
	builder.endAssignmentProcessIdFlag = true
	return builder
}

// 当前生效外派记录的失效时间
//
// 示例值：2023-12-29
func (builder *InternationalAssignmentBuilder) ExpirationTime(expirationTime string) *InternationalAssignmentBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// -| 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentBuilder) InternationalAssignmentStatus(internationalAssignmentStatus *Enum) *InternationalAssignmentBuilder {
	builder.internationalAssignmentStatus = internationalAssignmentStatus
	builder.internationalAssignmentStatusFlag = true
	return builder
}

// -| 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentBuilder) InternationalAssignmentType(internationalAssignmentType *Enum) *InternationalAssignmentBuilder {
	builder.internationalAssignmentType = internationalAssignmentType
	builder.internationalAssignmentTypeFlag = true
	return builder
}

func (builder *InternationalAssignmentBuilder) Build() *InternationalAssignment {
	req := &InternationalAssignment{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.assignmentCityIdFlag {
		req.AssignmentCityId = &builder.assignmentCityId

	}
	if builder.assignmentCompanyIdFlag {
		req.AssignmentCompanyId = &builder.assignmentCompanyId

	}
	if builder.assignmentCountryIdFlag {
		req.AssignmentCountryId = &builder.assignmentCountryId

	}
	if builder.assignmentReasonFlag {
		req.AssignmentReason = builder.assignmentReason
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.startAssignmentProcessIdFlag {
		req.StartAssignmentProcessId = &builder.startAssignmentProcessId

	}
	if builder.endAssignmentProcessIdFlag {
		req.EndAssignmentProcessId = &builder.endAssignmentProcessId

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.internationalAssignmentStatusFlag {
		req.InternationalAssignmentStatus = builder.internationalAssignmentStatus
	}
	if builder.internationalAssignmentTypeFlag {
		req.InternationalAssignmentType = builder.internationalAssignmentType
	}
	return req
}

type InternationalAssignmentV2 struct {
	Id *string `json:"id,omitempty"` // 派驻信息ID

	EmploymentId *string `json:"employment_id,omitempty"` // Employment ID

	CreatedBy *string `json:"created_by,omitempty"` // 创建人

	CreatedAt *string `json:"created_at,omitempty"` // 创建时间

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	InternationalAssignmentExpectedEndDate *string `json:"international_assignment_expected_end_date,omitempty"` // 预计结束日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	DeletedAt *string `json:"deleted_at,omitempty"` // 删除时间

	UpdatedAt *string `json:"updated_at,omitempty"` // 更新时间

	UpdatedBy *string `json:"updated_by,omitempty"` // 更新人

	AssignmentCountry *string `json:"assignment_country,omitempty"` // 外派国家ID

	AssignmentCity *string `json:"assignment_city,omitempty"` // 外派城市ID

	AssignmentCompany *string `json:"assignment_company,omitempty"` // 外派公司ID

	InternationalAssignmentStatus *Enum `json:"international_assignment_status,omitempty"` // 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment

	InternationalAssignmentType *Enum `json:"international_assignment_type,omitempty"` // 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment

	InternationalAssignmentAllowance *bool `json:"international_assignment_allowance,omitempty"` // 是否享有派驻津贴

	Accommodation *bool `json:"accommodation,omitempty"` // 是否提供住宿

	Description *string `json:"description,omitempty"` // 描述
}

type InternationalAssignmentV2Builder struct {
	id     string // 派驻信息ID
	idFlag bool

	employmentId     string // Employment ID
	employmentIdFlag bool

	createdBy     string // 创建人
	createdByFlag bool

	createdAt     string // 创建时间
	createdAtFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	internationalAssignmentExpectedEndDate     string // 预计结束日期
	internationalAssignmentExpectedEndDateFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	deletedAt     string // 删除时间
	deletedAtFlag bool

	updatedAt     string // 更新时间
	updatedAtFlag bool

	updatedBy     string // 更新人
	updatedByFlag bool

	assignmentCountry     string // 外派国家ID
	assignmentCountryFlag bool

	assignmentCity     string // 外派城市ID
	assignmentCityFlag bool

	assignmentCompany     string // 外派公司ID
	assignmentCompanyFlag bool

	internationalAssignmentStatus     *Enum // 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
	internationalAssignmentStatusFlag bool

	internationalAssignmentType     *Enum // 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
	internationalAssignmentTypeFlag bool

	internationalAssignmentAllowance     bool // 是否享有派驻津贴
	internationalAssignmentAllowanceFlag bool

	accommodation     bool // 是否提供住宿
	accommodationFlag bool

	description     string // 描述
	descriptionFlag bool
}

func NewInternationalAssignmentV2Builder() *InternationalAssignmentV2Builder {
	builder := &InternationalAssignmentV2Builder{}
	return builder
}

// 派驻信息ID
//
// 示例值：7046599238679447000
func (builder *InternationalAssignmentV2Builder) Id(id string) *InternationalAssignmentV2Builder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// Employment ID
//
// 示例值：7046599238679447000
func (builder *InternationalAssignmentV2Builder) EmploymentId(employmentId string) *InternationalAssignmentV2Builder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 创建人
//
// 示例值：7046599238679447000
func (builder *InternationalAssignmentV2Builder) CreatedBy(createdBy string) *InternationalAssignmentV2Builder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 创建时间
//
// 示例值：2021-08-18 16:04:21
func (builder *InternationalAssignmentV2Builder) CreatedAt(createdAt string) *InternationalAssignmentV2Builder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 生效时间
//
// 示例值：2023-08-29
func (builder *InternationalAssignmentV2Builder) EffectiveTime(effectiveTime string) *InternationalAssignmentV2Builder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 预计结束日期
//
// 示例值：2023-12-29
func (builder *InternationalAssignmentV2Builder) InternationalAssignmentExpectedEndDate(internationalAssignmentExpectedEndDate string) *InternationalAssignmentV2Builder {
	builder.internationalAssignmentExpectedEndDate = internationalAssignmentExpectedEndDate
	builder.internationalAssignmentExpectedEndDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2023-12-29
func (builder *InternationalAssignmentV2Builder) ExpirationTime(expirationTime string) *InternationalAssignmentV2Builder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 删除时间
//
// 示例值：2021-08-18 16:04:21
func (builder *InternationalAssignmentV2Builder) DeletedAt(deletedAt string) *InternationalAssignmentV2Builder {
	builder.deletedAt = deletedAt
	builder.deletedAtFlag = true
	return builder
}

// 更新时间
//
// 示例值：2021-08-18 16:04:21
func (builder *InternationalAssignmentV2Builder) UpdatedAt(updatedAt string) *InternationalAssignmentV2Builder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 更新人
//
// 示例值：7046599238679447000
func (builder *InternationalAssignmentV2Builder) UpdatedBy(updatedBy string) *InternationalAssignmentV2Builder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 外派国家ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2Builder) AssignmentCountry(assignmentCountry string) *InternationalAssignmentV2Builder {
	builder.assignmentCountry = assignmentCountry
	builder.assignmentCountryFlag = true
	return builder
}

// 外派城市ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2Builder) AssignmentCity(assignmentCity string) *InternationalAssignmentV2Builder {
	builder.assignmentCity = assignmentCity
	builder.assignmentCityFlag = true
	return builder
}

// 外派公司ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2Builder) AssignmentCompany(assignmentCompany string) *InternationalAssignmentV2Builder {
	builder.assignmentCompany = assignmentCompany
	builder.assignmentCompanyFlag = true
	return builder
}

// 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentV2Builder) InternationalAssignmentStatus(internationalAssignmentStatus *Enum) *InternationalAssignmentV2Builder {
	builder.internationalAssignmentStatus = internationalAssignmentStatus
	builder.internationalAssignmentStatusFlag = true
	return builder
}

// 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentV2Builder) InternationalAssignmentType(internationalAssignmentType *Enum) *InternationalAssignmentV2Builder {
	builder.internationalAssignmentType = internationalAssignmentType
	builder.internationalAssignmentTypeFlag = true
	return builder
}

// 是否享有派驻津贴
//
// 示例值：false
func (builder *InternationalAssignmentV2Builder) InternationalAssignmentAllowance(internationalAssignmentAllowance bool) *InternationalAssignmentV2Builder {
	builder.internationalAssignmentAllowance = internationalAssignmentAllowance
	builder.internationalAssignmentAllowanceFlag = true
	return builder
}

// 是否提供住宿
//
// 示例值：false
func (builder *InternationalAssignmentV2Builder) Accommodation(accommodation bool) *InternationalAssignmentV2Builder {
	builder.accommodation = accommodation
	builder.accommodationFlag = true
	return builder
}

// 描述
//
// 示例值：外派信息的描述
func (builder *InternationalAssignmentV2Builder) Description(description string) *InternationalAssignmentV2Builder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *InternationalAssignmentV2Builder) Build() *InternationalAssignmentV2 {
	req := &InternationalAssignmentV2{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.internationalAssignmentExpectedEndDateFlag {
		req.InternationalAssignmentExpectedEndDate = &builder.internationalAssignmentExpectedEndDate

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.deletedAtFlag {
		req.DeletedAt = &builder.deletedAt

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.assignmentCountryFlag {
		req.AssignmentCountry = &builder.assignmentCountry

	}
	if builder.assignmentCityFlag {
		req.AssignmentCity = &builder.assignmentCity

	}
	if builder.assignmentCompanyFlag {
		req.AssignmentCompany = &builder.assignmentCompany

	}
	if builder.internationalAssignmentStatusFlag {
		req.InternationalAssignmentStatus = builder.internationalAssignmentStatus
	}
	if builder.internationalAssignmentTypeFlag {
		req.InternationalAssignmentType = builder.internationalAssignmentType
	}
	if builder.internationalAssignmentAllowanceFlag {
		req.InternationalAssignmentAllowance = &builder.internationalAssignmentAllowance

	}
	if builder.accommodationFlag {
		req.Accommodation = &builder.accommodation

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	return req
}

type InternationalAssignmentV2ForCreate struct {
	EmploymentId *string `json:"employment_id,omitempty"` // Employment ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	InternationalAssignmentExpectedEndDate *string `json:"international_assignment_expected_end_date,omitempty"` // 预计结束日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	AssignmentCountry *string `json:"assignment_country,omitempty"` // 外派国家ID

	AssignmentCity *string `json:"assignment_city,omitempty"` // 外派城市ID

	AssignmentCompany *string `json:"assignment_company,omitempty"` // 外派公司ID

	InternationalAssignmentStatus *Enum `json:"international_assignment_status,omitempty"` // 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment

	InternationalAssignmentType *Enum `json:"international_assignment_type,omitempty"` // 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment

	InternationalAssignmentAllowance *bool `json:"international_assignment_allowance,omitempty"` // 是否享有派驻津贴

	Accommodation *bool `json:"accommodation,omitempty"` // 是否提供住宿

	Description *string `json:"description,omitempty"` // 描述
}

type InternationalAssignmentV2ForCreateBuilder struct {
	employmentId     string // Employment ID
	employmentIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	internationalAssignmentExpectedEndDate     string // 预计结束日期
	internationalAssignmentExpectedEndDateFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	assignmentCountry     string // 外派国家ID
	assignmentCountryFlag bool

	assignmentCity     string // 外派城市ID
	assignmentCityFlag bool

	assignmentCompany     string // 外派公司ID
	assignmentCompanyFlag bool

	internationalAssignmentStatus     *Enum // 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
	internationalAssignmentStatusFlag bool

	internationalAssignmentType     *Enum // 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
	internationalAssignmentTypeFlag bool

	internationalAssignmentAllowance     bool // 是否享有派驻津贴
	internationalAssignmentAllowanceFlag bool

	accommodation     bool // 是否提供住宿
	accommodationFlag bool

	description     string // 描述
	descriptionFlag bool
}

func NewInternationalAssignmentV2ForCreateBuilder() *InternationalAssignmentV2ForCreateBuilder {
	builder := &InternationalAssignmentV2ForCreateBuilder{}
	return builder
}

// Employment ID
//
// 示例值：7046599238679447000
func (builder *InternationalAssignmentV2ForCreateBuilder) EmploymentId(employmentId string) *InternationalAssignmentV2ForCreateBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2023-08-29
func (builder *InternationalAssignmentV2ForCreateBuilder) EffectiveTime(effectiveTime string) *InternationalAssignmentV2ForCreateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 预计结束日期
//
// 示例值：2023-12-29
func (builder *InternationalAssignmentV2ForCreateBuilder) InternationalAssignmentExpectedEndDate(internationalAssignmentExpectedEndDate string) *InternationalAssignmentV2ForCreateBuilder {
	builder.internationalAssignmentExpectedEndDate = internationalAssignmentExpectedEndDate
	builder.internationalAssignmentExpectedEndDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2023-12-29
func (builder *InternationalAssignmentV2ForCreateBuilder) ExpirationTime(expirationTime string) *InternationalAssignmentV2ForCreateBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 外派国家ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2ForCreateBuilder) AssignmentCountry(assignmentCountry string) *InternationalAssignmentV2ForCreateBuilder {
	builder.assignmentCountry = assignmentCountry
	builder.assignmentCountryFlag = true
	return builder
}

// 外派城市ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2ForCreateBuilder) AssignmentCity(assignmentCity string) *InternationalAssignmentV2ForCreateBuilder {
	builder.assignmentCity = assignmentCity
	builder.assignmentCityFlag = true
	return builder
}

// 外派公司ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2ForCreateBuilder) AssignmentCompany(assignmentCompany string) *InternationalAssignmentV2ForCreateBuilder {
	builder.assignmentCompany = assignmentCompany
	builder.assignmentCompanyFlag = true
	return builder
}

// 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentV2ForCreateBuilder) InternationalAssignmentStatus(internationalAssignmentStatus *Enum) *InternationalAssignmentV2ForCreateBuilder {
	builder.internationalAssignmentStatus = internationalAssignmentStatus
	builder.internationalAssignmentStatusFlag = true
	return builder
}

// 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentV2ForCreateBuilder) InternationalAssignmentType(internationalAssignmentType *Enum) *InternationalAssignmentV2ForCreateBuilder {
	builder.internationalAssignmentType = internationalAssignmentType
	builder.internationalAssignmentTypeFlag = true
	return builder
}

// 是否享有派驻津贴
//
// 示例值：true
func (builder *InternationalAssignmentV2ForCreateBuilder) InternationalAssignmentAllowance(internationalAssignmentAllowance bool) *InternationalAssignmentV2ForCreateBuilder {
	builder.internationalAssignmentAllowance = internationalAssignmentAllowance
	builder.internationalAssignmentAllowanceFlag = true
	return builder
}

// 是否提供住宿
//
// 示例值：true
func (builder *InternationalAssignmentV2ForCreateBuilder) Accommodation(accommodation bool) *InternationalAssignmentV2ForCreateBuilder {
	builder.accommodation = accommodation
	builder.accommodationFlag = true
	return builder
}

// 描述
//
// 示例值：外派信息的描述
func (builder *InternationalAssignmentV2ForCreateBuilder) Description(description string) *InternationalAssignmentV2ForCreateBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *InternationalAssignmentV2ForCreateBuilder) Build() *InternationalAssignmentV2ForCreate {
	req := &InternationalAssignmentV2ForCreate{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.internationalAssignmentExpectedEndDateFlag {
		req.InternationalAssignmentExpectedEndDate = &builder.internationalAssignmentExpectedEndDate

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.assignmentCountryFlag {
		req.AssignmentCountry = &builder.assignmentCountry

	}
	if builder.assignmentCityFlag {
		req.AssignmentCity = &builder.assignmentCity

	}
	if builder.assignmentCompanyFlag {
		req.AssignmentCompany = &builder.assignmentCompany

	}
	if builder.internationalAssignmentStatusFlag {
		req.InternationalAssignmentStatus = builder.internationalAssignmentStatus
	}
	if builder.internationalAssignmentTypeFlag {
		req.InternationalAssignmentType = builder.internationalAssignmentType
	}
	if builder.internationalAssignmentAllowanceFlag {
		req.InternationalAssignmentAllowance = &builder.internationalAssignmentAllowance

	}
	if builder.accommodationFlag {
		req.Accommodation = &builder.accommodation

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	return req
}

type InternationalAssignmentV2ForPatch struct {
	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	InternationalAssignmentExpectedEndDate *string `json:"international_assignment_expected_end_date,omitempty"` // 预计结束日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	AssignmentCountry *string `json:"assignment_country,omitempty"` // 外派国家ID

	AssignmentCity *string `json:"assignment_city,omitempty"` // 外派城市ID

	AssignmentCompany *string `json:"assignment_company,omitempty"` // 外派公司ID

	InternationalAssignmentStatus *Enum `json:"international_assignment_status,omitempty"` // 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment

	InternationalAssignmentType *Enum `json:"international_assignment_type,omitempty"` // 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment

	InternationalAssignmentAllowance *bool `json:"international_assignment_allowance,omitempty"` // 是否享有派驻津贴

	Accommodation *bool `json:"accommodation,omitempty"` // 是否提供住宿

	Description *string `json:"description,omitempty"` // 描述
}

type InternationalAssignmentV2ForPatchBuilder struct {
	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	internationalAssignmentExpectedEndDate     string // 预计结束日期
	internationalAssignmentExpectedEndDateFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	assignmentCountry     string // 外派国家ID
	assignmentCountryFlag bool

	assignmentCity     string // 外派城市ID
	assignmentCityFlag bool

	assignmentCompany     string // 外派公司ID
	assignmentCompanyFlag bool

	internationalAssignmentStatus     *Enum // 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
	internationalAssignmentStatusFlag bool

	internationalAssignmentType     *Enum // 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
	internationalAssignmentTypeFlag bool

	internationalAssignmentAllowance     bool // 是否享有派驻津贴
	internationalAssignmentAllowanceFlag bool

	accommodation     bool // 是否提供住宿
	accommodationFlag bool

	description     string // 描述
	descriptionFlag bool
}

func NewInternationalAssignmentV2ForPatchBuilder() *InternationalAssignmentV2ForPatchBuilder {
	builder := &InternationalAssignmentV2ForPatchBuilder{}
	return builder
}

// 生效时间
//
// 示例值：2023-08-29
func (builder *InternationalAssignmentV2ForPatchBuilder) EffectiveTime(effectiveTime string) *InternationalAssignmentV2ForPatchBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 预计结束日期
//
// 示例值：2023-12-29
func (builder *InternationalAssignmentV2ForPatchBuilder) InternationalAssignmentExpectedEndDate(internationalAssignmentExpectedEndDate string) *InternationalAssignmentV2ForPatchBuilder {
	builder.internationalAssignmentExpectedEndDate = internationalAssignmentExpectedEndDate
	builder.internationalAssignmentExpectedEndDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2023-12-29
func (builder *InternationalAssignmentV2ForPatchBuilder) ExpirationTime(expirationTime string) *InternationalAssignmentV2ForPatchBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 外派国家ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2ForPatchBuilder) AssignmentCountry(assignmentCountry string) *InternationalAssignmentV2ForPatchBuilder {
	builder.assignmentCountry = assignmentCountry
	builder.assignmentCountryFlag = true
	return builder
}

// 外派城市ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2ForPatchBuilder) AssignmentCity(assignmentCity string) *InternationalAssignmentV2ForPatchBuilder {
	builder.assignmentCity = assignmentCity
	builder.assignmentCityFlag = true
	return builder
}

// 外派公司ID
//
// 示例值：7046599238679447084
func (builder *InternationalAssignmentV2ForPatchBuilder) AssignmentCompany(assignmentCompany string) *InternationalAssignmentV2ForPatchBuilder {
	builder.assignmentCompany = assignmentCompany
	builder.assignmentCompanyFlag = true
	return builder
}

// 当前生效外派记录的外派状态 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_status - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentV2ForPatchBuilder) InternationalAssignmentStatus(internationalAssignmentStatus *Enum) *InternationalAssignmentV2ForPatchBuilder {
	builder.internationalAssignmentStatus = internationalAssignmentStatus
	builder.internationalAssignmentStatusFlag = true
	return builder
}

// 当前生效外派记录的外派类型 - 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：international_assignment_type - object_api_name：international_assignment
//
// 示例值：
func (builder *InternationalAssignmentV2ForPatchBuilder) InternationalAssignmentType(internationalAssignmentType *Enum) *InternationalAssignmentV2ForPatchBuilder {
	builder.internationalAssignmentType = internationalAssignmentType
	builder.internationalAssignmentTypeFlag = true
	return builder
}

// 是否享有派驻津贴
//
// 示例值：true
func (builder *InternationalAssignmentV2ForPatchBuilder) InternationalAssignmentAllowance(internationalAssignmentAllowance bool) *InternationalAssignmentV2ForPatchBuilder {
	builder.internationalAssignmentAllowance = internationalAssignmentAllowance
	builder.internationalAssignmentAllowanceFlag = true
	return builder
}

// 是否提供住宿
//
// 示例值：true
func (builder *InternationalAssignmentV2ForPatchBuilder) Accommodation(accommodation bool) *InternationalAssignmentV2ForPatchBuilder {
	builder.accommodation = accommodation
	builder.accommodationFlag = true
	return builder
}

// 描述
//
// 示例值：外派信息的描述
func (builder *InternationalAssignmentV2ForPatchBuilder) Description(description string) *InternationalAssignmentV2ForPatchBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *InternationalAssignmentV2ForPatchBuilder) Build() *InternationalAssignmentV2ForPatch {
	req := &InternationalAssignmentV2ForPatch{}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.internationalAssignmentExpectedEndDateFlag {
		req.InternationalAssignmentExpectedEndDate = &builder.internationalAssignmentExpectedEndDate

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.assignmentCountryFlag {
		req.AssignmentCountry = &builder.assignmentCountry

	}
	if builder.assignmentCityFlag {
		req.AssignmentCity = &builder.assignmentCity

	}
	if builder.assignmentCompanyFlag {
		req.AssignmentCompany = &builder.assignmentCompany

	}
	if builder.internationalAssignmentStatusFlag {
		req.InternationalAssignmentStatus = builder.internationalAssignmentStatus
	}
	if builder.internationalAssignmentTypeFlag {
		req.InternationalAssignmentType = builder.internationalAssignmentType
	}
	if builder.internationalAssignmentAllowanceFlag {
		req.InternationalAssignmentAllowance = &builder.internationalAssignmentAllowance

	}
	if builder.accommodationFlag {
		req.Accommodation = &builder.accommodation

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	return req
}

type Job struct {
	Id *string `json:"id,omitempty"` // 实体在CoreHR内部的唯一键

	Code *string `json:"code,omitempty"` // 编码

	Name []*I18n `json:"name,omitempty"` // 名称

	Description []*I18n `json:"description,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 启用

	JobTitle []*I18n `json:"job_title,omitempty"` // 职务头衔

	PathwayId *string `json:"pathway_id,omitempty"` // 通道ID

	JobFamilyIdList []string `json:"job_family_id_list,omitempty"` // 序列

	JobLevelIdList []string `json:"job_level_id_list,omitempty"` // 职级

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度，引用WorkingHoursType的ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CreatedBy *string `json:"created_by,omitempty"` // 创建人

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedBy *string `json:"updated_by,omitempty"` // 更新人

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间
}

type JobBuilder struct {
	id     string // 实体在CoreHR内部的唯一键
	idFlag bool

	code     string // 编码
	codeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	active     bool // 启用
	activeFlag bool

	jobTitle     []*I18n // 职务头衔
	jobTitleFlag bool

	pathwayId     string // 通道ID
	pathwayIdFlag bool

	jobFamilyIdList     []string // 序列
	jobFamilyIdListFlag bool

	jobLevelIdList     []string // 职级
	jobLevelIdListFlag bool

	workingHoursTypeId     string // 工时制度，引用WorkingHoursType的ID
	workingHoursTypeIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	createdBy     string // 创建人
	createdByFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedBy     string // 更新人
	updatedByFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool
}

func NewJobBuilder() *JobBuilder {
	builder := &JobBuilder{}
	return builder
}

// 实体在CoreHR内部的唯一键
//
// 示例值：4698040628992333549
func (builder *JobBuilder) Id(id string) *JobBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 编码
//
// 示例值：JP422119
func (builder *JobBuilder) Code(code string) *JobBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobBuilder) Name(name []*I18n) *JobBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobBuilder) Description(description []*I18n) *JobBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *JobBuilder) Active(active bool) *JobBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 职务头衔
//
// 示例值：
func (builder *JobBuilder) JobTitle(jobTitle []*I18n) *JobBuilder {
	builder.jobTitle = jobTitle
	builder.jobTitleFlag = true
	return builder
}

// 通道ID
//
// 示例值：4719519211875096301
func (builder *JobBuilder) PathwayId(pathwayId string) *JobBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 序列
//
// 示例值：
func (builder *JobBuilder) JobFamilyIdList(jobFamilyIdList []string) *JobBuilder {
	builder.jobFamilyIdList = jobFamilyIdList
	builder.jobFamilyIdListFlag = true
	return builder
}

// 职级
//
// 示例值：
func (builder *JobBuilder) JobLevelIdList(jobLevelIdList []string) *JobBuilder {
	builder.jobLevelIdList = jobLevelIdList
	builder.jobLevelIdListFlag = true
	return builder
}

// 工时制度，引用WorkingHoursType的ID
//
// 示例值：6890452208593372679
func (builder *JobBuilder) WorkingHoursTypeId(workingHoursTypeId string) *JobBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01 00:00:00
func (builder *JobBuilder) EffectiveTime(effectiveTime string) *JobBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2021-01-01 00:00:00
func (builder *JobBuilder) ExpirationTime(expirationTime string) *JobBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobBuilder) CustomFields(customFields []*ObjectFieldData) *JobBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 创建人
//
// 示例值：4719519211875096301
func (builder *JobBuilder) CreatedBy(createdBy string) *JobBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 创建时间
//
// 示例值：2021-01-01 00:00:00
func (builder *JobBuilder) CreatedTime(createdTime string) *JobBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新人
//
// 示例值：2415132452875096301
func (builder *JobBuilder) UpdatedBy(updatedBy string) *JobBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 更新时间
//
// 示例值：2021-01-01 00:00:00
func (builder *JobBuilder) UpdatedTime(updatedTime string) *JobBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

func (builder *JobBuilder) Build() *Job {
	req := &Job{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.jobTitleFlag {
		req.JobTitle = builder.jobTitle
	}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId

	}
	if builder.jobFamilyIdListFlag {
		req.JobFamilyIdList = builder.jobFamilyIdList
	}
	if builder.jobLevelIdListFlag {
		req.JobLevelIdList = builder.jobLevelIdList
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	return req
}

type JobChange struct {
	JobChangeId *string `json:"job_change_id,omitempty"` // 异动记录 id

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	Status *string `json:"status,omitempty"` // 异动状态

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型

	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因

	ProcessId *string `json:"process_id,omitempty"` // 异动流程 id

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间

	TransferInfo *TransferInfo `json:"transfer_info,omitempty"` // 异动详细信息

	IsAdjustSalary *bool `json:"is_adjust_salary,omitempty"` // 是否调整薪酬

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 异动自定义字段

	DetailsOfJobStatusChange []string `json:"details_of_job_status_change,omitempty"` // 异动变更内容
}

type JobChangeBuilder struct {
	jobChangeId     string // 异动记录 id
	jobChangeIdFlag bool

	employmentId     string // 雇员 id
	employmentIdFlag bool

	status     string // 异动状态
	statusFlag bool

	transferTypeUniqueIdentifier     string // 异动类型
	transferTypeUniqueIdentifierFlag bool

	transferReasonUniqueIdentifier     string // 异动原因
	transferReasonUniqueIdentifierFlag bool

	processId     string // 异动流程 id
	processIdFlag bool

	effectiveDate     string // 生效时间
	effectiveDateFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool

	transferInfo     *TransferInfo // 异动详细信息
	transferInfoFlag bool

	isAdjustSalary     bool // 是否调整薪酬
	isAdjustSalaryFlag bool

	customFields     []*CustomFieldData // 异动自定义字段
	customFieldsFlag bool

	detailsOfJobStatusChange     []string // 异动变更内容
	detailsOfJobStatusChangeFlag bool
}

func NewJobChangeBuilder() *JobChangeBuilder {
	builder := &JobChangeBuilder{}
	return builder
}

// 异动记录 id
//
// 示例值：6991776076699549697
func (builder *JobChangeBuilder) JobChangeId(jobChangeId string) *JobChangeBuilder {
	builder.jobChangeId = jobChangeId
	builder.jobChangeIdFlag = true
	return builder
}

// 雇员 id
//
// 示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *JobChangeBuilder) EmploymentId(employmentId string) *JobChangeBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 异动状态
//
// 示例值：Approved
func (builder *JobChangeBuilder) Status(status string) *JobChangeBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 异动类型
//
// 示例值：direct_leader_change
func (builder *JobChangeBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier string) *JobChangeBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动原因
//
// 示例值：involuntary_transfer
func (builder *JobChangeBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier string) *JobChangeBuilder {
	builder.transferReasonUniqueIdentifier = transferReasonUniqueIdentifier
	builder.transferReasonUniqueIdentifierFlag = true
	return builder
}

// 异动流程 id
//
// 示例值：6991776078461142564
func (builder *JobChangeBuilder) ProcessId(processId string) *JobChangeBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2022-03-01
func (builder *JobChangeBuilder) EffectiveDate(effectiveDate string) *JobChangeBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 创建时间
//
// 示例值：1627899724000
func (builder *JobChangeBuilder) CreatedTime(createdTime string) *JobChangeBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：1647434443000
func (builder *JobChangeBuilder) UpdatedTime(updatedTime string) *JobChangeBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

// 异动详细信息
//
// 示例值：
func (builder *JobChangeBuilder) TransferInfo(transferInfo *TransferInfo) *JobChangeBuilder {
	builder.transferInfo = transferInfo
	builder.transferInfoFlag = true
	return builder
}

// 是否调整薪酬
//
// 示例值：true
func (builder *JobChangeBuilder) IsAdjustSalary(isAdjustSalary bool) *JobChangeBuilder {
	builder.isAdjustSalary = isAdjustSalary
	builder.isAdjustSalaryFlag = true
	return builder
}

// 异动自定义字段
//
// 示例值：
func (builder *JobChangeBuilder) CustomFields(customFields []*CustomFieldData) *JobChangeBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 异动变更内容
//
// 示例值：
func (builder *JobChangeBuilder) DetailsOfJobStatusChange(detailsOfJobStatusChange []string) *JobChangeBuilder {
	builder.detailsOfJobStatusChange = detailsOfJobStatusChange
	builder.detailsOfJobStatusChangeFlag = true
	return builder
}

func (builder *JobChangeBuilder) Build() *JobChange {
	req := &JobChange{}
	if builder.jobChangeIdFlag {
		req.JobChangeId = &builder.jobChangeId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = &builder.transferTypeUniqueIdentifier

	}
	if builder.transferReasonUniqueIdentifierFlag {
		req.TransferReasonUniqueIdentifier = &builder.transferReasonUniqueIdentifier

	}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	if builder.transferInfoFlag {
		req.TransferInfo = builder.transferInfo
	}
	if builder.isAdjustSalaryFlag {
		req.IsAdjustSalary = &builder.isAdjustSalary

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.detailsOfJobStatusChangeFlag {
		req.DetailsOfJobStatusChange = builder.detailsOfJobStatusChange
	}
	return req
}

type JobData struct {
	JobDataId *string `json:"job_data_id,omitempty"` // 任职信息 ID

	VersionId *string `json:"version_id,omitempty"` // 任职记录版本 ID

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID，枚举值及详细信息可通过【查询单个人员类型】接口查询获得

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID，枚举值及详细信息可通过【查询单个工时制度】接口查询获得

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点 ID，枚举值及详细信息可通过【查询单个地点】接口查询获得

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，枚举值及详细信息可通过【查询单个部门】接口查询获得

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID，枚举值及详细信息可通过【查询单个岗位】接口查询获得

	JobId *string `json:"job_id,omitempty"` // 职务 ID，枚举值及详细信息可通过【查询单个职务】接口查询获得

	JobLevelId *string `json:"job_level_id,omitempty"` // 职务级别 ID，枚举值及详细信息可通过【查询单个职务级别】接口查询获得

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID

	JobFamilyId *string `json:"job_family_id,omitempty"` // 职务序列 ID，枚举值及详细信息可通过【查询单个职务序列】接口查询获得

	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期（实际结束日期）

	PrimaryJobData *bool `json:"primary_job_data,omitempty"` // 是否为主任职

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	AssignmentStartReason *Enum `json:"assignment_start_reason,omitempty"` // 业务类型（原任职原因）

	ProbationExpectedEndDate *string `json:"probation_expected_end_date,omitempty"` // 预计试用期结束日期

	ProbationOutcome *Enum `json:"probation_outcome,omitempty"` // 试用期结果，枚举值可通过文档【飞书人事枚举常量】试用期结果（probation_outcome）枚举定义部分获得

	DirectManager *BasicJobData `json:"direct_manager,omitempty"` // 直属上级

	DottedLineManagers []*BasicJobData `json:"dotted_line_managers,omitempty"` // 虚线上级

	SecondDirectManager *BasicJobData `json:"second_direct_manager,omitempty"` // 第二实线主管

	CostCenterRates []*JobDataCostCenter `json:"cost_center_rates,omitempty"` // 成本中心分摊信息

	WorkShift *Enum `json:"work_shift,omitempty"` // 排班类型

	CompensationType *Enum `json:"compensation_type,omitempty"` // 薪资类型

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CreatedAt *string `json:"created_at,omitempty"` // 创建时间

	WeeklyWorkingHoursV2 *float64 `json:"weekly_working_hours_v2,omitempty"` // 周工作时长 V2

	WeeklyWorkingHours *int `json:"weekly_working_hours,omitempty"` // 周工作时长

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID

	JobDataReason *Enum `json:"job_data_reason,omitempty"` // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name = "job_data";  - custom_api_name = "job_data_reason"

	PathwayId *string `json:"pathway_id,omitempty"` // 通道 ID
}

type JobDataBuilder struct {
	jobDataId     string // 任职信息 ID
	jobDataIdFlag bool

	versionId     string // 任职记录版本 ID
	versionIdFlag bool

	employeeTypeId     string // 人员类型 ID，枚举值及详细信息可通过【查询单个人员类型】接口查询获得
	employeeTypeIdFlag bool

	workingHoursTypeId     string // 工时制度 ID，枚举值及详细信息可通过【查询单个工时制度】接口查询获得
	workingHoursTypeIdFlag bool

	workLocationId     string // 工作地点 ID，枚举值及详细信息可通过【查询单个地点】接口查询获得
	workLocationIdFlag bool

	departmentId     string // 部门 ID，枚举值及详细信息可通过【查询单个部门】接口查询获得
	departmentIdFlag bool

	positionId     string // 岗位 ID，枚举值及详细信息可通过【查询单个岗位】接口查询获得
	positionIdFlag bool

	jobId     string // 职务 ID，枚举值及详细信息可通过【查询单个职务】接口查询获得
	jobIdFlag bool

	jobLevelId     string // 职务级别 ID，枚举值及详细信息可通过【查询单个职务级别】接口查询获得
	jobLevelIdFlag bool

	jobGradeId     string // 职等 ID
	jobGradeIdFlag bool

	jobFamilyId     string // 职务序列 ID，枚举值及详细信息可通过【查询单个职务序列】接口查询获得
	jobFamilyIdFlag bool

	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationEndDate     string // 试用期结束日期（实际结束日期）
	probationEndDateFlag bool

	primaryJobData     bool // 是否为主任职
	primaryJobDataFlag bool

	employmentId     string // 雇佣 ID
	employmentIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	assignmentStartReason     *Enum // 业务类型（原任职原因）
	assignmentStartReasonFlag bool

	probationExpectedEndDate     string // 预计试用期结束日期
	probationExpectedEndDateFlag bool

	probationOutcome     *Enum // 试用期结果，枚举值可通过文档【飞书人事枚举常量】试用期结果（probation_outcome）枚举定义部分获得
	probationOutcomeFlag bool

	directManager     *BasicJobData // 直属上级
	directManagerFlag bool

	dottedLineManagers     []*BasicJobData // 虚线上级
	dottedLineManagersFlag bool

	secondDirectManager     *BasicJobData // 第二实线主管
	secondDirectManagerFlag bool

	costCenterRates     []*JobDataCostCenter // 成本中心分摊信息
	costCenterRatesFlag bool

	workShift     *Enum // 排班类型
	workShiftFlag bool

	compensationType     *Enum // 薪资类型
	compensationTypeFlag bool

	serviceCompany     string // 任职公司
	serviceCompanyFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	createdAt     string // 创建时间
	createdAtFlag bool

	weeklyWorkingHoursV2     float64 // 周工作时长 V2
	weeklyWorkingHoursV2Flag bool

	weeklyWorkingHours     int // 周工作时长
	weeklyWorkingHoursFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool

	jobDataReason     *Enum // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name = "job_data";  - custom_api_name = "job_data_reason"
	jobDataReasonFlag bool

	pathwayId     string // 通道 ID
	pathwayIdFlag bool
}

func NewJobDataBuilder() *JobDataBuilder {
	builder := &JobDataBuilder{}
	return builder
}

// 任职信息 ID
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) JobDataId(jobDataId string) *JobDataBuilder {
	builder.jobDataId = jobDataId
	builder.jobDataIdFlag = true
	return builder
}

// 任职记录版本 ID
//
// 示例值：6890452208593372697
func (builder *JobDataBuilder) VersionId(versionId string) *JobDataBuilder {
	builder.versionId = versionId
	builder.versionIdFlag = true
	return builder
}

// 人员类型 ID，枚举值及详细信息可通过【查询单个人员类型】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) EmployeeTypeId(employeeTypeId string) *JobDataBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 工时制度 ID，枚举值及详细信息可通过【查询单个工时制度】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) WorkingHoursTypeId(workingHoursTypeId string) *JobDataBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 工作地点 ID，枚举值及详细信息可通过【查询单个地点】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) WorkLocationId(workLocationId string) *JobDataBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 部门 ID，枚举值及详细信息可通过【查询单个部门】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) DepartmentId(departmentId string) *JobDataBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 岗位 ID，枚举值及详细信息可通过【查询单个岗位】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) PositionId(positionId string) *JobDataBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 职务 ID，枚举值及详细信息可通过【查询单个职务】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) JobId(jobId string) *JobDataBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职务级别 ID，枚举值及详细信息可通过【查询单个职务级别】接口查询获得
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) JobLevelId(jobLevelId string) *JobDataBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等 ID
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) JobGradeId(jobGradeId string) *JobDataBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 职务序列 ID，枚举值及详细信息可通过【查询单个职务序列】接口查询获得
//
// 示例值：1245678
func (builder *JobDataBuilder) JobFamilyId(jobFamilyId string) *JobDataBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 试用期开始日期
//
// 示例值：2018-03-16T00:00:00
func (builder *JobDataBuilder) ProbationStartDate(probationStartDate string) *JobDataBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期结束日期（实际结束日期）
//
// 示例值：2019-05-24T00:00:00
func (builder *JobDataBuilder) ProbationEndDate(probationEndDate string) *JobDataBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 是否为主任职
//
// 示例值：true
func (builder *JobDataBuilder) PrimaryJobData(primaryJobData bool) *JobDataBuilder {
	builder.primaryJobData = primaryJobData
	builder.primaryJobDataFlag = true
	return builder
}

// 雇佣 ID
//
// 示例值：6893014062142064135
func (builder *JobDataBuilder) EmploymentId(employmentId string) *JobDataBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *JobDataBuilder) EffectiveTime(effectiveTime string) *JobDataBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *JobDataBuilder) ExpirationTime(expirationTime string) *JobDataBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 业务类型（原任职原因）
//
// 示例值：onboarding
func (builder *JobDataBuilder) AssignmentStartReason(assignmentStartReason *Enum) *JobDataBuilder {
	builder.assignmentStartReason = assignmentStartReason
	builder.assignmentStartReasonFlag = true
	return builder
}

// 预计试用期结束日期
//
// 示例值：2006-01-02
func (builder *JobDataBuilder) ProbationExpectedEndDate(probationExpectedEndDate string) *JobDataBuilder {
	builder.probationExpectedEndDate = probationExpectedEndDate
	builder.probationExpectedEndDateFlag = true
	return builder
}

// 试用期结果，枚举值可通过文档【飞书人事枚举常量】试用期结果（probation_outcome）枚举定义部分获得
//
// 示例值：passed
func (builder *JobDataBuilder) ProbationOutcome(probationOutcome *Enum) *JobDataBuilder {
	builder.probationOutcome = probationOutcome
	builder.probationOutcomeFlag = true
	return builder
}

// 直属上级
//
// 示例值：
func (builder *JobDataBuilder) DirectManager(directManager *BasicJobData) *JobDataBuilder {
	builder.directManager = directManager
	builder.directManagerFlag = true
	return builder
}

// 虚线上级
//
// 示例值：
func (builder *JobDataBuilder) DottedLineManagers(dottedLineManagers []*BasicJobData) *JobDataBuilder {
	builder.dottedLineManagers = dottedLineManagers
	builder.dottedLineManagersFlag = true
	return builder
}

// 第二实线主管
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) SecondDirectManager(secondDirectManager *BasicJobData) *JobDataBuilder {
	builder.secondDirectManager = secondDirectManager
	builder.secondDirectManagerFlag = true
	return builder
}

// 成本中心分摊信息
//
// 示例值：
func (builder *JobDataBuilder) CostCenterRates(costCenterRates []*JobDataCostCenter) *JobDataBuilder {
	builder.costCenterRates = costCenterRates
	builder.costCenterRatesFlag = true
	return builder
}

// 排班类型
//
// 示例值：
func (builder *JobDataBuilder) WorkShift(workShift *Enum) *JobDataBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 薪资类型
//
// 示例值：
func (builder *JobDataBuilder) CompensationType(compensationType *Enum) *JobDataBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 任职公司
//
// 示例值：6890452208593372680
func (builder *JobDataBuilder) ServiceCompany(serviceCompany string) *JobDataBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobDataBuilder) CustomFields(customFields []*CustomFieldData) *JobDataBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 创建时间
//
// 示例值：2020-05-02 00:00:00
func (builder *JobDataBuilder) CreatedAt(createdAt string) *JobDataBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 周工作时长 V2
//
// 示例值：10.1
func (builder *JobDataBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *JobDataBuilder {
	builder.weeklyWorkingHoursV2 = weeklyWorkingHoursV2
	builder.weeklyWorkingHoursV2Flag = true
	return builder
}

// 周工作时长
//
// 示例值：10
func (builder *JobDataBuilder) WeeklyWorkingHours(weeklyWorkingHours int) *JobDataBuilder {
	builder.weeklyWorkingHours = weeklyWorkingHours
	builder.weeklyWorkingHoursFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6890452208593372680
func (builder *JobDataBuilder) EmployeeSubtypeId(employeeSubtypeId string) *JobDataBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

// 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name = "job_data";  - custom_api_name = "job_data_reason"
//
// 示例值：
func (builder *JobDataBuilder) JobDataReason(jobDataReason *Enum) *JobDataBuilder {
	builder.jobDataReason = jobDataReason
	builder.jobDataReasonFlag = true
	return builder
}

// 通道 ID
//
// 示例值：6890452208593372679
func (builder *JobDataBuilder) PathwayId(pathwayId string) *JobDataBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

func (builder *JobDataBuilder) Build() *JobData {
	req := &JobData{}
	if builder.jobDataIdFlag {
		req.JobDataId = &builder.jobDataId

	}
	if builder.versionIdFlag {
		req.VersionId = &builder.versionId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.primaryJobDataFlag {
		req.PrimaryJobData = &builder.primaryJobData

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.assignmentStartReasonFlag {
		req.AssignmentStartReason = builder.assignmentStartReason
	}
	if builder.probationExpectedEndDateFlag {
		req.ProbationExpectedEndDate = &builder.probationExpectedEndDate

	}
	if builder.probationOutcomeFlag {
		req.ProbationOutcome = builder.probationOutcome
	}
	if builder.directManagerFlag {
		req.DirectManager = builder.directManager
	}
	if builder.dottedLineManagersFlag {
		req.DottedLineManagers = builder.dottedLineManagers
	}
	if builder.secondDirectManagerFlag {
		req.SecondDirectManager = builder.secondDirectManager
	}
	if builder.costCenterRatesFlag {
		req.CostCenterRates = builder.costCenterRates
	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.weeklyWorkingHoursV2Flag {
		req.WeeklyWorkingHoursV2 = &builder.weeklyWorkingHoursV2

	}
	if builder.weeklyWorkingHoursFlag {
		req.WeeklyWorkingHours = &builder.weeklyWorkingHours

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	if builder.jobDataReasonFlag {
		req.JobDataReason = builder.jobDataReason
	}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId

	}
	return req
}

type JobDataCostCenter struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息

	Rate *int `json:"rate,omitempty"` // 分摊比例(整数)

	NewRate *float64 `json:"new_rate,omitempty"` // 分摊比例
}

type JobDataCostCenterBuilder struct {
	costCenterId     string // 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
	costCenterIdFlag bool

	rate     int // 分摊比例(整数)
	rateFlag bool

	newRate     float64 // 分摊比例
	newRateFlag bool
}

func NewJobDataCostCenterBuilder() *JobDataCostCenterBuilder {
	builder := &JobDataCostCenterBuilder{}
	return builder
}

// 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
//
// 示例值：6950635856373745165
func (builder *JobDataCostCenterBuilder) CostCenterId(costCenterId string) *JobDataCostCenterBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 分摊比例(整数)
//
// 示例值：100
func (builder *JobDataCostCenterBuilder) Rate(rate int) *JobDataCostCenterBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

// 分摊比例
//
// 示例值：50.2
func (builder *JobDataCostCenterBuilder) NewRate(newRate float64) *JobDataCostCenterBuilder {
	builder.newRate = newRate
	builder.newRateFlag = true
	return builder
}

func (builder *JobDataCostCenterBuilder) Build() *JobDataCostCenter {
	req := &JobDataCostCenter{}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	if builder.newRateFlag {
		req.NewRate = &builder.newRate

	}
	return req
}

type JobDataCustomOrg struct {
	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	StartReason *string `json:"start_reason,omitempty"` // 原因

	CustomOrgWithRates []*CreateEmpCustomOrg `json:"custom_org_with_rates,omitempty"` // 自定义组织列表

	ObjectApiName *string `json:"object_api_name,omitempty"` // 自定义组织类型
}

type JobDataCustomOrgBuilder struct {
	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	startReason     string // 原因
	startReasonFlag bool

	customOrgWithRates     []*CreateEmpCustomOrg // 自定义组织列表
	customOrgWithRatesFlag bool

	objectApiName     string // 自定义组织类型
	objectApiNameFlag bool
}

func NewJobDataCustomOrgBuilder() *JobDataCustomOrgBuilder {
	builder := &JobDataCustomOrgBuilder{}
	return builder
}

// 生效时间
//
// 示例值：2024-07-02
func (builder *JobDataCustomOrgBuilder) EffectiveTime(effectiveTime string) *JobDataCustomOrgBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 原因
//
// 示例值：新增人员
func (builder *JobDataCustomOrgBuilder) StartReason(startReason string) *JobDataCustomOrgBuilder {
	builder.startReason = startReason
	builder.startReasonFlag = true
	return builder
}

// 自定义组织列表
//
// 示例值：
func (builder *JobDataCustomOrgBuilder) CustomOrgWithRates(customOrgWithRates []*CreateEmpCustomOrg) *JobDataCustomOrgBuilder {
	builder.customOrgWithRates = customOrgWithRates
	builder.customOrgWithRatesFlag = true
	return builder
}

// 自定义组织类型
//
// 示例值：custom_org_01
func (builder *JobDataCustomOrgBuilder) ObjectApiName(objectApiName string) *JobDataCustomOrgBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

func (builder *JobDataCustomOrgBuilder) Build() *JobDataCustomOrg {
	req := &JobDataCustomOrg{}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.startReasonFlag {
		req.StartReason = &builder.startReason

	}
	if builder.customOrgWithRatesFlag {
		req.CustomOrgWithRates = builder.customOrgWithRates
	}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName

	}
	return req
}

type JobDataId struct {
	WkId *string `json:"wk_id,omitempty"` // 记录ID
}

type JobDataIdBuilder struct {
	wkId     string // 记录ID
	wkIdFlag bool
}

func NewJobDataIdBuilder() *JobDataIdBuilder {
	builder := &JobDataIdBuilder{}
	return builder
}

// 记录ID
//
// 示例值：7305354116229514796
func (builder *JobDataIdBuilder) WkId(wkId string) *JobDataIdBuilder {
	builder.wkId = wkId
	builder.wkIdFlag = true
	return builder
}

func (builder *JobDataIdBuilder) Build() *JobDataId {
	req := &JobDataId{}
	if builder.wkIdFlag {
		req.WkId = &builder.wkId

	}
	return req
}

type JobFamily struct {
	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID

	Name []*I18n `json:"name,omitempty"` // 名称

	Active *bool `json:"active,omitempty"` // 启用

	Selectable *bool `json:"selectable,omitempty"` // 可选

	ParentId *string `json:"parent_id,omitempty"` // 上级序列

	PathwayIds []string `json:"pathway_ids,omitempty"` // 通道ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	Code *string `json:"code,omitempty"` // 编码

	Description []*I18n `json:"description,omitempty"` // 描述

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type JobFamilyBuilder struct {
	jobFamilyId     string // 序列 ID
	jobFamilyIdFlag bool

	name     []*I18n // 名称
	nameFlag bool

	active     bool // 启用
	activeFlag bool

	selectable     bool // 可选
	selectableFlag bool

	parentId     string // 上级序列
	parentIdFlag bool

	pathwayIds     []string // 通道ID
	pathwayIdsFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	code     string // 编码
	codeFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewJobFamilyBuilder() *JobFamilyBuilder {
	builder := &JobFamilyBuilder{}
	return builder
}

// 序列 ID
//
// 示例值：4698019107896524633
func (builder *JobFamilyBuilder) JobFamilyId(jobFamilyId string) *JobFamilyBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobFamilyBuilder) Name(name []*I18n) *JobFamilyBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *JobFamilyBuilder) Active(active bool) *JobFamilyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 可选
//
// 示例值：true
func (builder *JobFamilyBuilder) Selectable(selectable bool) *JobFamilyBuilder {
	builder.selectable = selectable
	builder.selectableFlag = true
	return builder
}

// 上级序列
//
// 示例值：4698020757495316313
func (builder *JobFamilyBuilder) ParentId(parentId string) *JobFamilyBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 通道ID
//
// 示例值：
func (builder *JobFamilyBuilder) PathwayIds(pathwayIds []string) *JobFamilyBuilder {
	builder.pathwayIds = pathwayIds
	builder.pathwayIdsFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *JobFamilyBuilder) EffectiveTime(effectiveTime string) *JobFamilyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *JobFamilyBuilder) ExpirationTime(expirationTime string) *JobFamilyBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 编码
//
// 示例值：123456
func (builder *JobFamilyBuilder) Code(code string) *JobFamilyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobFamilyBuilder) Description(description []*I18n) *JobFamilyBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobFamilyBuilder) CustomFields(customFields []*CustomFieldData) *JobFamilyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *JobFamilyBuilder) Build() *JobFamily {
	req := &JobFamily{}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.selectableFlag {
		req.Selectable = &builder.selectable

	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.pathwayIdsFlag {
		req.PathwayIds = builder.pathwayIds
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type JobFamilyTimeline struct {
	JobFamilyVersionData []*JobFamilyVersionData `json:"job_family_version_data,omitempty"` // 序列版本信息
}

type JobFamilyTimelineBuilder struct {
	jobFamilyVersionData     []*JobFamilyVersionData // 序列版本信息
	jobFamilyVersionDataFlag bool
}

func NewJobFamilyTimelineBuilder() *JobFamilyTimelineBuilder {
	builder := &JobFamilyTimelineBuilder{}
	return builder
}

// 序列版本信息
//
// 示例值：
func (builder *JobFamilyTimelineBuilder) JobFamilyVersionData(jobFamilyVersionData []*JobFamilyVersionData) *JobFamilyTimelineBuilder {
	builder.jobFamilyVersionData = jobFamilyVersionData
	builder.jobFamilyVersionDataFlag = true
	return builder
}

func (builder *JobFamilyTimelineBuilder) Build() *JobFamilyTimeline {
	req := &JobFamilyTimeline{}
	if builder.jobFamilyVersionDataFlag {
		req.JobFamilyVersionData = builder.jobFamilyVersionData
	}
	return req
}

type JobFamilyVersionData struct {
	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID

	JobFamilyVersionId *string `json:"job_family_version_id,omitempty"` // 序列版本 ID

	JobFamilyNames []*I18n `json:"job_family_names,omitempty"` // 序列名称

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间

	Active *bool `json:"active,omitempty"` // 是否启用

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Selectable *bool `json:"selectable,omitempty"` // 可选

	ParentJobFamilyId *string `json:"parent_job_family_id,omitempty"` // 上级序列

	PathwayIds []string `json:"pathway_ids,omitempty"` // 通道 ID 列表

	Code *string `json:"code,omitempty"` // 编码
}

type JobFamilyVersionDataBuilder struct {
	jobFamilyId     string // 序列 ID
	jobFamilyIdFlag bool

	jobFamilyVersionId     string // 序列版本 ID
	jobFamilyVersionIdFlag bool

	jobFamilyNames     []*I18n // 序列名称
	jobFamilyNamesFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	expirationDate     string // 失效时间
	expirationDateFlag bool

	active     bool // 是否启用
	activeFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	selectable     bool // 可选
	selectableFlag bool

	parentJobFamilyId     string // 上级序列
	parentJobFamilyIdFlag bool

	pathwayIds     []string // 通道 ID 列表
	pathwayIdsFlag bool

	code     string // 编码
	codeFlag bool
}

func NewJobFamilyVersionDataBuilder() *JobFamilyVersionDataBuilder {
	builder := &JobFamilyVersionDataBuilder{}
	return builder
}

// 序列 ID
//
// 示例值：4719456877659520852
func (builder *JobFamilyVersionDataBuilder) JobFamilyId(jobFamilyId string) *JobFamilyVersionDataBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 序列版本 ID
//
// 示例值：7238516215202170412
func (builder *JobFamilyVersionDataBuilder) JobFamilyVersionId(jobFamilyVersionId string) *JobFamilyVersionDataBuilder {
	builder.jobFamilyVersionId = jobFamilyVersionId
	builder.jobFamilyVersionIdFlag = true
	return builder
}

// 序列名称
//
// 示例值：
func (builder *JobFamilyVersionDataBuilder) JobFamilyNames(jobFamilyNames []*I18n) *JobFamilyVersionDataBuilder {
	builder.jobFamilyNames = jobFamilyNames
	builder.jobFamilyNamesFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *JobFamilyVersionDataBuilder) EffectiveDate(effectiveDate string) *JobFamilyVersionDataBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02
func (builder *JobFamilyVersionDataBuilder) ExpirationDate(expirationDate string) *JobFamilyVersionDataBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *JobFamilyVersionDataBuilder) Active(active bool) *JobFamilyVersionDataBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobFamilyVersionDataBuilder) Descriptions(descriptions []*I18n) *JobFamilyVersionDataBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 可选
//
// 示例值：true
func (builder *JobFamilyVersionDataBuilder) Selectable(selectable bool) *JobFamilyVersionDataBuilder {
	builder.selectable = selectable
	builder.selectableFlag = true
	return builder
}

// 上级序列
//
// 示例值：4698020757495316313
func (builder *JobFamilyVersionDataBuilder) ParentJobFamilyId(parentJobFamilyId string) *JobFamilyVersionDataBuilder {
	builder.parentJobFamilyId = parentJobFamilyId
	builder.parentJobFamilyIdFlag = true
	return builder
}

// 通道 ID 列表
//
// 示例值：
func (builder *JobFamilyVersionDataBuilder) PathwayIds(pathwayIds []string) *JobFamilyVersionDataBuilder {
	builder.pathwayIds = pathwayIds
	builder.pathwayIdsFlag = true
	return builder
}

// 编码
//
// 示例值：123456
func (builder *JobFamilyVersionDataBuilder) Code(code string) *JobFamilyVersionDataBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

func (builder *JobFamilyVersionDataBuilder) Build() *JobFamilyVersionData {
	req := &JobFamilyVersionData{}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobFamilyVersionIdFlag {
		req.JobFamilyVersionId = &builder.jobFamilyVersionId

	}
	if builder.jobFamilyNamesFlag {
		req.JobFamilyNames = builder.jobFamilyNames
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.selectableFlag {
		req.Selectable = &builder.selectable

	}
	if builder.parentJobFamilyIdFlag {
		req.ParentJobFamilyId = &builder.parentJobFamilyId

	}
	if builder.pathwayIdsFlag {
		req.PathwayIds = builder.pathwayIds
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	return req
}

type JobGrade struct {
	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID

	GradeOrder *int `json:"grade_order,omitempty"` // 职等数值

	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 启用
}

type JobGradeBuilder struct {
	jobGradeId     string // 职等 ID
	jobGradeIdFlag bool

	gradeOrder     int // 职等数值
	gradeOrderFlag bool

	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	active     bool // 启用
	activeFlag bool
}

func NewJobGradeBuilder() *JobGradeBuilder {
	builder := &JobGradeBuilder{}
	return builder
}

// 职等 ID
//
// 示例值：4692446793125560154
func (builder *JobGradeBuilder) JobGradeId(jobGradeId string) *JobGradeBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 职等数值
//
// 示例值：9999
func (builder *JobGradeBuilder) GradeOrder(gradeOrder int) *JobGradeBuilder {
	builder.gradeOrder = gradeOrder
	builder.gradeOrderFlag = true
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *JobGradeBuilder) Code(code string) *JobGradeBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobGradeBuilder) Names(names []*I18n) *JobGradeBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobGradeBuilder) Descriptions(descriptions []*I18n) *JobGradeBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *JobGradeBuilder) Active(active bool) *JobGradeBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *JobGradeBuilder) Build() *JobGrade {
	req := &JobGrade{}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.gradeOrderFlag {
		req.GradeOrder = &builder.gradeOrder

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	return req
}

type JobGradeCreate struct {
	GradeOrder *int `json:"grade_order,omitempty"` // 职等数值

	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述
}

type JobGradeCreateBuilder struct {
	gradeOrder     int // 职等数值
	gradeOrderFlag bool

	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool
}

func NewJobGradeCreateBuilder() *JobGradeCreateBuilder {
	builder := &JobGradeCreateBuilder{}
	return builder
}

// 职等数值
//
// 示例值：9999
func (builder *JobGradeCreateBuilder) GradeOrder(gradeOrder int) *JobGradeCreateBuilder {
	builder.gradeOrder = gradeOrder
	builder.gradeOrderFlag = true
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *JobGradeCreateBuilder) Code(code string) *JobGradeCreateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobGradeCreateBuilder) Names(names []*I18n) *JobGradeCreateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobGradeCreateBuilder) Descriptions(descriptions []*I18n) *JobGradeCreateBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

func (builder *JobGradeCreateBuilder) Build() *JobGradeCreate {
	req := &JobGradeCreate{}
	if builder.gradeOrderFlag {
		req.GradeOrder = &builder.gradeOrder

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	return req
}

type JobGradeUpdate struct {
	GradeOrder *int `json:"grade_order,omitempty"` // 职等数值

	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 启用
}

type JobGradeUpdateBuilder struct {
	gradeOrder     int // 职等数值
	gradeOrderFlag bool

	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	active     bool // 启用
	activeFlag bool
}

func NewJobGradeUpdateBuilder() *JobGradeUpdateBuilder {
	builder := &JobGradeUpdateBuilder{}
	return builder
}

// 职等数值
//
// 示例值：9999
func (builder *JobGradeUpdateBuilder) GradeOrder(gradeOrder int) *JobGradeUpdateBuilder {
	builder.gradeOrder = gradeOrder
	builder.gradeOrderFlag = true
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *JobGradeUpdateBuilder) Code(code string) *JobGradeUpdateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobGradeUpdateBuilder) Names(names []*I18n) *JobGradeUpdateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobGradeUpdateBuilder) Descriptions(descriptions []*I18n) *JobGradeUpdateBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *JobGradeUpdateBuilder) Active(active bool) *JobGradeUpdateBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *JobGradeUpdateBuilder) Build() *JobGradeUpdate {
	req := &JobGradeUpdate{}
	if builder.gradeOrderFlag {
		req.GradeOrder = &builder.gradeOrder

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	return req
}

type JobLevel struct {
	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID

	LevelOrder *int `json:"level_order,omitempty"` // 职级数值

	Code *string `json:"code,omitempty"` // 编码

	Name []*I18n `json:"name,omitempty"` // 名称

	Description []*I18n `json:"description,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 启用

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	JobGrade []string `json:"job_grade,omitempty"` // 职等 ID 列表

	PathwayIds []string `json:"pathway_ids,omitempty"` // 通道 ID 列表
}

type JobLevelBuilder struct {
	jobLevelId     string // 职级 ID
	jobLevelIdFlag bool

	levelOrder     int // 职级数值
	levelOrderFlag bool

	code     string // 编码
	codeFlag bool

	name     []*I18n // 名称
	nameFlag bool

	description     []*I18n // 描述
	descriptionFlag bool

	active     bool // 启用
	activeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	jobGrade     []string // 职等 ID 列表
	jobGradeFlag bool

	pathwayIds     []string // 通道 ID 列表
	pathwayIdsFlag bool
}

func NewJobLevelBuilder() *JobLevelBuilder {
	builder := &JobLevelBuilder{}
	return builder
}

// 职级 ID
//
// 示例值：4692446793125560154
func (builder *JobLevelBuilder) JobLevelId(jobLevelId string) *JobLevelBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职级数值
//
// 示例值：9999
func (builder *JobLevelBuilder) LevelOrder(levelOrder int) *JobLevelBuilder {
	builder.levelOrder = levelOrder
	builder.levelOrderFlag = true
	return builder
}

// 编码
//
// 示例值：VQzo/BSonp8l6PmcZ+VlDhkd2595LMkhyBAGX6HAlCY=
func (builder *JobLevelBuilder) Code(code string) *JobLevelBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *JobLevelBuilder) Name(name []*I18n) *JobLevelBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobLevelBuilder) Description(description []*I18n) *JobLevelBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *JobLevelBuilder) Active(active bool) *JobLevelBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *JobLevelBuilder) CustomFields(customFields []*CustomFieldData) *JobLevelBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 职等 ID 列表
//
// 示例值：
func (builder *JobLevelBuilder) JobGrade(jobGrade []string) *JobLevelBuilder {
	builder.jobGrade = jobGrade
	builder.jobGradeFlag = true
	return builder
}

// 通道 ID 列表
//
// 示例值：
func (builder *JobLevelBuilder) PathwayIds(pathwayIds []string) *JobLevelBuilder {
	builder.pathwayIds = pathwayIds
	builder.pathwayIdsFlag = true
	return builder
}

func (builder *JobLevelBuilder) Build() *JobLevel {
	req := &JobLevel{}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.levelOrderFlag {
		req.LevelOrder = &builder.levelOrder

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.jobGradeFlag {
		req.JobGrade = builder.jobGrade
	}
	if builder.pathwayIdsFlag {
		req.PathwayIds = builder.pathwayIds
	}
	return req
}

type JobTimeline struct {
	JobVersionData []*JobVersionData `json:"job_version_data,omitempty"` // 职务版本信息
}

type JobTimelineBuilder struct {
	jobVersionData     []*JobVersionData // 职务版本信息
	jobVersionDataFlag bool
}

func NewJobTimelineBuilder() *JobTimelineBuilder {
	builder := &JobTimelineBuilder{}
	return builder
}

// 职务版本信息
//
// 示例值：
func (builder *JobTimelineBuilder) JobVersionData(jobVersionData []*JobVersionData) *JobTimelineBuilder {
	builder.jobVersionData = jobVersionData
	builder.jobVersionDataFlag = true
	return builder
}

func (builder *JobTimelineBuilder) Build() *JobTimeline {
	req := &JobTimeline{}
	if builder.jobVersionDataFlag {
		req.JobVersionData = builder.jobVersionData
	}
	return req
}

type JobVersionData struct {
	JobId *string `json:"job_id,omitempty"` // 职务 ID

	JobVersionId *string `json:"job_version_id,omitempty"` // 职务版本 ID

	JobNames []*I18n `json:"job_names,omitempty"` // 职务名称

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间

	Active *bool `json:"active,omitempty"` // 是否启用

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Code *string `json:"code,omitempty"` // 编码

	JobTitles []*I18n `json:"job_titles,omitempty"` // 职务头衔

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列

	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级

	PathwayId *string `json:"pathway_id,omitempty"` // 通道ID

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度，引用WorkingHoursType的ID
}

type JobVersionDataBuilder struct {
	jobId     string // 职务 ID
	jobIdFlag bool

	jobVersionId     string // 职务版本 ID
	jobVersionIdFlag bool

	jobNames     []*I18n // 职务名称
	jobNamesFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	expirationDate     string // 失效时间
	expirationDateFlag bool

	active     bool // 是否启用
	activeFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	code     string // 编码
	codeFlag bool

	jobTitles     []*I18n // 职务头衔
	jobTitlesFlag bool

	jobFamilyIds     []string // 序列
	jobFamilyIdsFlag bool

	jobLevelIds     []string // 职级
	jobLevelIdsFlag bool

	pathwayId     string // 通道ID
	pathwayIdFlag bool

	workingHoursTypeId     string // 工时制度，引用WorkingHoursType的ID
	workingHoursTypeIdFlag bool
}

func NewJobVersionDataBuilder() *JobVersionDataBuilder {
	builder := &JobVersionDataBuilder{}
	return builder
}

// 职务 ID
//
// 示例值：4719456877659520852
func (builder *JobVersionDataBuilder) JobId(jobId string) *JobVersionDataBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职务版本 ID
//
// 示例值：7238516215202170412
func (builder *JobVersionDataBuilder) JobVersionId(jobVersionId string) *JobVersionDataBuilder {
	builder.jobVersionId = jobVersionId
	builder.jobVersionIdFlag = true
	return builder
}

// 职务名称
//
// 示例值：
func (builder *JobVersionDataBuilder) JobNames(jobNames []*I18n) *JobVersionDataBuilder {
	builder.jobNames = jobNames
	builder.jobNamesFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *JobVersionDataBuilder) EffectiveDate(effectiveDate string) *JobVersionDataBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02
func (builder *JobVersionDataBuilder) ExpirationDate(expirationDate string) *JobVersionDataBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *JobVersionDataBuilder) Active(active bool) *JobVersionDataBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *JobVersionDataBuilder) Descriptions(descriptions []*I18n) *JobVersionDataBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 编码
//
// 示例值：BD38591
func (builder *JobVersionDataBuilder) Code(code string) *JobVersionDataBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 职务头衔
//
// 示例值：
func (builder *JobVersionDataBuilder) JobTitles(jobTitles []*I18n) *JobVersionDataBuilder {
	builder.jobTitles = jobTitles
	builder.jobTitlesFlag = true
	return builder
}

// 序列
//
// 示例值：
func (builder *JobVersionDataBuilder) JobFamilyIds(jobFamilyIds []string) *JobVersionDataBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级
//
// 示例值：
func (builder *JobVersionDataBuilder) JobLevelIds(jobLevelIds []string) *JobVersionDataBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 通道ID
//
// 示例值：4719519211875096301
func (builder *JobVersionDataBuilder) PathwayId(pathwayId string) *JobVersionDataBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 工时制度，引用WorkingHoursType的ID
//
// 示例值：6890452208593372679
func (builder *JobVersionDataBuilder) WorkingHoursTypeId(workingHoursTypeId string) *JobVersionDataBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

func (builder *JobVersionDataBuilder) Build() *JobVersionData {
	req := &JobVersionData{}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobVersionIdFlag {
		req.JobVersionId = &builder.jobVersionId

	}
	if builder.jobNamesFlag {
		req.JobNames = builder.jobNames
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.jobTitlesFlag {
		req.JobTitles = builder.jobTitles
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	return req
}

type LangText struct {
	Lang *string `json:"lang,omitempty"` // 语言码

	Value *string `json:"value,omitempty"` // 语言码对应的文本阿
}

type LangTextBuilder struct {
	lang     string // 语言码
	langFlag bool

	value     string // 语言码对应的文本阿
	valueFlag bool
}

func NewLangTextBuilder() *LangTextBuilder {
	builder := &LangTextBuilder{}
	return builder
}

// 语言码
//
// 示例值：cn_zh
func (builder *LangTextBuilder) Lang(lang string) *LangTextBuilder {
	builder.lang = lang
	builder.langFlag = true
	return builder
}

// 语言码对应的文本阿
//
// 示例值：test
func (builder *LangTextBuilder) Value(value string) *LangTextBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *LangTextBuilder) Build() *LangText {
	req := &LangText{}
	if builder.langFlag {
		req.Lang = &builder.lang

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type Language struct {
	LanguageId *string `json:"language_id,omitempty"` // 语言 ID

	Name []*I18n `json:"name,omitempty"` // 语言名称

	IetfLanguageTag *string `json:"ietf_language_tag,omitempty"` // IETF 编码

	Status *int `json:"status,omitempty"` // 状态
}

type LanguageBuilder struct {
	languageId     string // 语言 ID
	languageIdFlag bool

	name     []*I18n // 语言名称
	nameFlag bool

	ietfLanguageTag     string // IETF 编码
	ietfLanguageTagFlag bool

	status     int // 状态
	statusFlag bool
}

func NewLanguageBuilder() *LanguageBuilder {
	builder := &LanguageBuilder{}
	return builder
}

// 语言 ID
//
// 示例值：6863323445740963342
func (builder *LanguageBuilder) LanguageId(languageId string) *LanguageBuilder {
	builder.languageId = languageId
	builder.languageIdFlag = true
	return builder
}

// 语言名称
//
// 示例值：
func (builder *LanguageBuilder) Name(name []*I18n) *LanguageBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// IETF 编码
//
// 示例值：en-UK
func (builder *LanguageBuilder) IetfLanguageTag(ietfLanguageTag string) *LanguageBuilder {
	builder.ietfLanguageTag = ietfLanguageTag
	builder.ietfLanguageTagFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *LanguageBuilder) Status(status int) *LanguageBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *LanguageBuilder) Build() *Language {
	req := &Language{}
	if builder.languageIdFlag {
		req.LanguageId = &builder.languageId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.ietfLanguageTagFlag {
		req.IetfLanguageTag = &builder.ietfLanguageTag

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type LeaveAccrualRecord struct {
	Id *string `json:"id,omitempty"` // 授予记录唯一ID

	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	GrantingQuantity *string `json:"granting_quantity,omitempty"` // 授予数量

	GrantingUnit *int `json:"granting_unit,omitempty"` // 授予单位，1表示天，2表示小时

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期，格式"2020-01-01"

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效日期，格式"2020-01-01"

	GrantedBy *int `json:"granted_by,omitempty"` // 授予来源，1：系统授予；2：手动授予；3：外部系统授予

	Reason []*LangText `json:"reason,omitempty"` // 授予原因

	CreatedAt *string `json:"created_at,omitempty"` // 授予记录的创建时间，unix时间戳

	CreatedBy *string `json:"created_by,omitempty"` // 授予记录的创建人的ID

	UpdatedAt *string `json:"updated_at,omitempty"` // 授予记录的更新时间，unix时间戳

	UpdatedBy *string `json:"updated_by,omitempty"` // 授予记录的更新人的ID
}

type LeaveAccrualRecordBuilder struct {
	id     string // 授予记录唯一ID
	idFlag bool

	employmentId     string // 员工ID
	employmentIdFlag bool

	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	grantingQuantity     string // 授予数量
	grantingQuantityFlag bool

	grantingUnit     int // 授予单位，1表示天，2表示小时
	grantingUnitFlag bool

	effectiveDate     string // 生效日期，格式"2020-01-01"
	effectiveDateFlag bool

	expirationDate     string // 失效日期，格式"2020-01-01"
	expirationDateFlag bool

	grantedBy     int // 授予来源，1：系统授予；2：手动授予；3：外部系统授予
	grantedByFlag bool

	reason     []*LangText // 授予原因
	reasonFlag bool

	createdAt     string // 授予记录的创建时间，unix时间戳
	createdAtFlag bool

	createdBy     string // 授予记录的创建人的ID
	createdByFlag bool

	updatedAt     string // 授予记录的更新时间，unix时间戳
	updatedAtFlag bool

	updatedBy     string // 授予记录的更新人的ID
	updatedByFlag bool
}

func NewLeaveAccrualRecordBuilder() *LeaveAccrualRecordBuilder {
	builder := &LeaveAccrualRecordBuilder{}
	return builder
}

// 授予记录唯一ID
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) Id(id string) *LeaveAccrualRecordBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 员工ID
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) EmploymentId(employmentId string) *LeaveAccrualRecordBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 假期类型ID
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) LeaveTypeId(leaveTypeId string) *LeaveAccrualRecordBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 授予数量
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) GrantingQuantity(grantingQuantity string) *LeaveAccrualRecordBuilder {
	builder.grantingQuantity = grantingQuantity
	builder.grantingQuantityFlag = true
	return builder
}

// 授予单位，1表示天，2表示小时
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) GrantingUnit(grantingUnit int) *LeaveAccrualRecordBuilder {
	builder.grantingUnit = grantingUnit
	builder.grantingUnitFlag = true
	return builder
}

// 生效日期，格式"2020-01-01"
//
// 示例值：2020-01-01
func (builder *LeaveAccrualRecordBuilder) EffectiveDate(effectiveDate string) *LeaveAccrualRecordBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效日期，格式"2020-01-01"
//
// 示例值：2020-01-01
func (builder *LeaveAccrualRecordBuilder) ExpirationDate(expirationDate string) *LeaveAccrualRecordBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 授予来源，1：系统授予；2：手动授予；3：外部系统授予
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) GrantedBy(grantedBy int) *LeaveAccrualRecordBuilder {
	builder.grantedBy = grantedBy
	builder.grantedByFlag = true
	return builder
}

// 授予原因
//
// 示例值：
func (builder *LeaveAccrualRecordBuilder) Reason(reason []*LangText) *LeaveAccrualRecordBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 授予记录的创建时间，unix时间戳
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) CreatedAt(createdAt string) *LeaveAccrualRecordBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 授予记录的创建人的ID
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) CreatedBy(createdBy string) *LeaveAccrualRecordBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 授予记录的更新时间，unix时间戳
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) UpdatedAt(updatedAt string) *LeaveAccrualRecordBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 授予记录的更新人的ID
//
// 示例值：1
func (builder *LeaveAccrualRecordBuilder) UpdatedBy(updatedBy string) *LeaveAccrualRecordBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

func (builder *LeaveAccrualRecordBuilder) Build() *LeaveAccrualRecord {
	req := &LeaveAccrualRecord{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.grantingQuantityFlag {
		req.GrantingQuantity = &builder.grantingQuantity

	}
	if builder.grantingUnitFlag {
		req.GrantingUnit = &builder.grantingUnit

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.grantedByFlag {
		req.GrantedBy = &builder.grantedBy

	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	return req
}

type LeaveBalance struct {
	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	LeaveTypeName []*I18n `json:"leave_type_name,omitempty"` // 假期类型名称

	HistoricalCyclesLeft *string `json:"historical_cycles_left,omitempty"` // 结转的历史周期授予时长

	ThisCycleTotal *string `json:"this_cycle_total,omitempty"` // 本周期授予时长

	ThisCycleTaken *string `json:"this_cycle_taken,omitempty"` // 本周期已休时长

	LeaveBalance *string `json:"leave_balance,omitempty"` // 假期余额

	LeaveDurationUnit *int `json:"leave_duration_unit,omitempty"` // 假期时长的单位

	HistoryCycleAccrual *string `json:"history_cycle_accrual,omitempty"` // 历史结转发放

	BalanceInCurrentCycle *string `json:"balance_in_current_cycle,omitempty"` // 当前周期余额

	Taken *string `json:"taken,omitempty"` // 已休时长

	TakenHistoryCycle *string `json:"taken_history_cycle,omitempty"` // 历史周期已休时长

	OffboardingBalance *string `json:"offboarding_balance,omitempty"` // 余额（离职折算）

	TakenCurrentDate *string `json:"taken_current_date,omitempty"` // 已休时长（截止当日）

	OffboardingGranted *string `json:"offboarding_granted,omitempty"` // 本周期授予时长（离职折算）

	LeaveBalanceExcludingUnderApproval *string `json:"leave_balance_excluding_under_approval,omitempty"` // 假期余额（不包含审批中）

	LeaveQuantityUnderApproval *string `json:"leave_quantity_under_approval,omitempty"` // 审批中额度
}

type LeaveBalanceBuilder struct {
	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	leaveTypeName     []*I18n // 假期类型名称
	leaveTypeNameFlag bool

	historicalCyclesLeft     string // 结转的历史周期授予时长
	historicalCyclesLeftFlag bool

	thisCycleTotal     string // 本周期授予时长
	thisCycleTotalFlag bool

	thisCycleTaken     string // 本周期已休时长
	thisCycleTakenFlag bool

	leaveBalance     string // 假期余额
	leaveBalanceFlag bool

	leaveDurationUnit     int // 假期时长的单位
	leaveDurationUnitFlag bool

	historyCycleAccrual     string // 历史结转发放
	historyCycleAccrualFlag bool

	balanceInCurrentCycle     string // 当前周期余额
	balanceInCurrentCycleFlag bool

	taken     string // 已休时长
	takenFlag bool

	takenHistoryCycle     string // 历史周期已休时长
	takenHistoryCycleFlag bool

	offboardingBalance     string // 余额（离职折算）
	offboardingBalanceFlag bool

	takenCurrentDate     string // 已休时长（截止当日）
	takenCurrentDateFlag bool

	offboardingGranted     string // 本周期授予时长（离职折算）
	offboardingGrantedFlag bool

	leaveBalanceExcludingUnderApproval     string // 假期余额（不包含审批中）
	leaveBalanceExcludingUnderApprovalFlag bool

	leaveQuantityUnderApproval     string // 审批中额度
	leaveQuantityUnderApprovalFlag bool
}

func NewLeaveBalanceBuilder() *LeaveBalanceBuilder {
	builder := &LeaveBalanceBuilder{}
	return builder
}

// 假期类型ID
//
// 示例值：4718803945687580505
func (builder *LeaveBalanceBuilder) LeaveTypeId(leaveTypeId string) *LeaveBalanceBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 假期类型名称
//
// 示例值：
func (builder *LeaveBalanceBuilder) LeaveTypeName(leaveTypeName []*I18n) *LeaveBalanceBuilder {
	builder.leaveTypeName = leaveTypeName
	builder.leaveTypeNameFlag = true
	return builder
}

// 结转的历史周期授予时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) HistoricalCyclesLeft(historicalCyclesLeft string) *LeaveBalanceBuilder {
	builder.historicalCyclesLeft = historicalCyclesLeft
	builder.historicalCyclesLeftFlag = true
	return builder
}

// 本周期授予时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) ThisCycleTotal(thisCycleTotal string) *LeaveBalanceBuilder {
	builder.thisCycleTotal = thisCycleTotal
	builder.thisCycleTotalFlag = true
	return builder
}

// 本周期已休时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) ThisCycleTaken(thisCycleTaken string) *LeaveBalanceBuilder {
	builder.thisCycleTaken = thisCycleTaken
	builder.thisCycleTakenFlag = true
	return builder
}

// 假期余额
//
// 示例值：0
func (builder *LeaveBalanceBuilder) LeaveBalance(leaveBalance string) *LeaveBalanceBuilder {
	builder.leaveBalance = leaveBalance
	builder.leaveBalanceFlag = true
	return builder
}

// 假期时长的单位
//
// 示例值：0
func (builder *LeaveBalanceBuilder) LeaveDurationUnit(leaveDurationUnit int) *LeaveBalanceBuilder {
	builder.leaveDurationUnit = leaveDurationUnit
	builder.leaveDurationUnitFlag = true
	return builder
}

// 历史结转发放
//
// 示例值：0
func (builder *LeaveBalanceBuilder) HistoryCycleAccrual(historyCycleAccrual string) *LeaveBalanceBuilder {
	builder.historyCycleAccrual = historyCycleAccrual
	builder.historyCycleAccrualFlag = true
	return builder
}

// 当前周期余额
//
// 示例值：0
func (builder *LeaveBalanceBuilder) BalanceInCurrentCycle(balanceInCurrentCycle string) *LeaveBalanceBuilder {
	builder.balanceInCurrentCycle = balanceInCurrentCycle
	builder.balanceInCurrentCycleFlag = true
	return builder
}

// 已休时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) Taken(taken string) *LeaveBalanceBuilder {
	builder.taken = taken
	builder.takenFlag = true
	return builder
}

// 历史周期已休时长
//
// 示例值：0
func (builder *LeaveBalanceBuilder) TakenHistoryCycle(takenHistoryCycle string) *LeaveBalanceBuilder {
	builder.takenHistoryCycle = takenHistoryCycle
	builder.takenHistoryCycleFlag = true
	return builder
}

// 余额（离职折算）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) OffboardingBalance(offboardingBalance string) *LeaveBalanceBuilder {
	builder.offboardingBalance = offboardingBalance
	builder.offboardingBalanceFlag = true
	return builder
}

// 已休时长（截止当日）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) TakenCurrentDate(takenCurrentDate string) *LeaveBalanceBuilder {
	builder.takenCurrentDate = takenCurrentDate
	builder.takenCurrentDateFlag = true
	return builder
}

// 本周期授予时长（离职折算）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) OffboardingGranted(offboardingGranted string) *LeaveBalanceBuilder {
	builder.offboardingGranted = offboardingGranted
	builder.offboardingGrantedFlag = true
	return builder
}

// 假期余额（不包含审批中）
//
// 示例值：0
func (builder *LeaveBalanceBuilder) LeaveBalanceExcludingUnderApproval(leaveBalanceExcludingUnderApproval string) *LeaveBalanceBuilder {
	builder.leaveBalanceExcludingUnderApproval = leaveBalanceExcludingUnderApproval
	builder.leaveBalanceExcludingUnderApprovalFlag = true
	return builder
}

// 审批中额度
//
// 示例值：0
func (builder *LeaveBalanceBuilder) LeaveQuantityUnderApproval(leaveQuantityUnderApproval string) *LeaveBalanceBuilder {
	builder.leaveQuantityUnderApproval = leaveQuantityUnderApproval
	builder.leaveQuantityUnderApprovalFlag = true
	return builder
}

func (builder *LeaveBalanceBuilder) Build() *LeaveBalance {
	req := &LeaveBalance{}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.leaveTypeNameFlag {
		req.LeaveTypeName = builder.leaveTypeName
	}
	if builder.historicalCyclesLeftFlag {
		req.HistoricalCyclesLeft = &builder.historicalCyclesLeft

	}
	if builder.thisCycleTotalFlag {
		req.ThisCycleTotal = &builder.thisCycleTotal

	}
	if builder.thisCycleTakenFlag {
		req.ThisCycleTaken = &builder.thisCycleTaken

	}
	if builder.leaveBalanceFlag {
		req.LeaveBalance = &builder.leaveBalance

	}
	if builder.leaveDurationUnitFlag {
		req.LeaveDurationUnit = &builder.leaveDurationUnit

	}
	if builder.historyCycleAccrualFlag {
		req.HistoryCycleAccrual = &builder.historyCycleAccrual

	}
	if builder.balanceInCurrentCycleFlag {
		req.BalanceInCurrentCycle = &builder.balanceInCurrentCycle

	}
	if builder.takenFlag {
		req.Taken = &builder.taken

	}
	if builder.takenHistoryCycleFlag {
		req.TakenHistoryCycle = &builder.takenHistoryCycle

	}
	if builder.offboardingBalanceFlag {
		req.OffboardingBalance = &builder.offboardingBalance

	}
	if builder.takenCurrentDateFlag {
		req.TakenCurrentDate = &builder.takenCurrentDate

	}
	if builder.offboardingGrantedFlag {
		req.OffboardingGranted = &builder.offboardingGranted

	}
	if builder.leaveBalanceExcludingUnderApprovalFlag {
		req.LeaveBalanceExcludingUnderApproval = &builder.leaveBalanceExcludingUnderApproval

	}
	if builder.leaveQuantityUnderApprovalFlag {
		req.LeaveQuantityUnderApproval = &builder.leaveQuantityUnderApproval

	}
	return req
}

type LeaveEmployExpireRecord struct {
	Id *string `json:"id,omitempty"` // record id

	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	GrantingQuantity *string `json:"granting_quantity,omitempty"` // 授予余额数量

	LeftGrantingQuantity *string `json:"left_granting_quantity,omitempty"` // 授予数量 扣减完后的授予数量

	GrantingUnit *int `json:"granting_unit,omitempty"` // 授予单位，1表示天，2表示小时

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期，格式"2020-01-01"

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效日期，格式"2020-01-01"

	Reason []*LangText `json:"reason,omitempty"` // 授予原因

	IsUpdateByExternal *bool `json:"is_update_by_external,omitempty"` // 是否已经被外部系统更改过

	AccrualSource *int `json:"accrual_source,omitempty"` // 授予来源

	LeaveSubTypeId *string `json:"leave_sub_type_id,omitempty"` // 假期子类型id
}

type LeaveEmployExpireRecordBuilder struct {
	id     string // record id
	idFlag bool

	employmentId     string // 员工ID
	employmentIdFlag bool

	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	grantingQuantity     string // 授予余额数量
	grantingQuantityFlag bool

	leftGrantingQuantity     string // 授予数量 扣减完后的授予数量
	leftGrantingQuantityFlag bool

	grantingUnit     int // 授予单位，1表示天，2表示小时
	grantingUnitFlag bool

	effectiveDate     string // 生效日期，格式"2020-01-01"
	effectiveDateFlag bool

	expirationDate     string // 失效日期，格式"2020-01-01"
	expirationDateFlag bool

	reason     []*LangText // 授予原因
	reasonFlag bool

	isUpdateByExternal     bool // 是否已经被外部系统更改过
	isUpdateByExternalFlag bool

	accrualSource     int // 授予来源
	accrualSourceFlag bool

	leaveSubTypeId     string // 假期子类型id
	leaveSubTypeIdFlag bool
}

func NewLeaveEmployExpireRecordBuilder() *LeaveEmployExpireRecordBuilder {
	builder := &LeaveEmployExpireRecordBuilder{}
	return builder
}

// record id
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) Id(id string) *LeaveEmployExpireRecordBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 员工ID
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) EmploymentId(employmentId string) *LeaveEmployExpireRecordBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 假期类型ID
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) LeaveTypeId(leaveTypeId string) *LeaveEmployExpireRecordBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 授予余额数量
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) GrantingQuantity(grantingQuantity string) *LeaveEmployExpireRecordBuilder {
	builder.grantingQuantity = grantingQuantity
	builder.grantingQuantityFlag = true
	return builder
}

// 授予数量 扣减完后的授予数量
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) LeftGrantingQuantity(leftGrantingQuantity string) *LeaveEmployExpireRecordBuilder {
	builder.leftGrantingQuantity = leftGrantingQuantity
	builder.leftGrantingQuantityFlag = true
	return builder
}

// 授予单位，1表示天，2表示小时
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) GrantingUnit(grantingUnit int) *LeaveEmployExpireRecordBuilder {
	builder.grantingUnit = grantingUnit
	builder.grantingUnitFlag = true
	return builder
}

// 生效日期，格式"2020-01-01"
//
// 示例值：2020-01-01
func (builder *LeaveEmployExpireRecordBuilder) EffectiveDate(effectiveDate string) *LeaveEmployExpireRecordBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效日期，格式"2020-01-01"
//
// 示例值：2020-01-01
func (builder *LeaveEmployExpireRecordBuilder) ExpirationDate(expirationDate string) *LeaveEmployExpireRecordBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 授予原因
//
// 示例值：
func (builder *LeaveEmployExpireRecordBuilder) Reason(reason []*LangText) *LeaveEmployExpireRecordBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 是否已经被外部系统更改过
//
// 示例值：true
func (builder *LeaveEmployExpireRecordBuilder) IsUpdateByExternal(isUpdateByExternal bool) *LeaveEmployExpireRecordBuilder {
	builder.isUpdateByExternal = isUpdateByExternal
	builder.isUpdateByExternalFlag = true
	return builder
}

// 授予来源
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) AccrualSource(accrualSource int) *LeaveEmployExpireRecordBuilder {
	builder.accrualSource = accrualSource
	builder.accrualSourceFlag = true
	return builder
}

// 假期子类型id
//
// 示例值：1
func (builder *LeaveEmployExpireRecordBuilder) LeaveSubTypeId(leaveSubTypeId string) *LeaveEmployExpireRecordBuilder {
	builder.leaveSubTypeId = leaveSubTypeId
	builder.leaveSubTypeIdFlag = true
	return builder
}

func (builder *LeaveEmployExpireRecordBuilder) Build() *LeaveEmployExpireRecord {
	req := &LeaveEmployExpireRecord{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.grantingQuantityFlag {
		req.GrantingQuantity = &builder.grantingQuantity

	}
	if builder.leftGrantingQuantityFlag {
		req.LeftGrantingQuantity = &builder.leftGrantingQuantity

	}
	if builder.grantingUnitFlag {
		req.GrantingUnit = &builder.grantingUnit

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.isUpdateByExternalFlag {
		req.IsUpdateByExternal = &builder.isUpdateByExternal

	}
	if builder.accrualSourceFlag {
		req.AccrualSource = &builder.accrualSource

	}
	if builder.leaveSubTypeIdFlag {
		req.LeaveSubTypeId = &builder.leaveSubTypeId

	}
	return req
}

type LeaveExtendItem struct {
	Key *string `json:"key,omitempty"` // 扩展字段键

	Value *string `json:"value,omitempty"` // 扩展字段值
}

type LeaveExtendItemBuilder struct {
	key     string // 扩展字段键
	keyFlag bool

	value     string // 扩展字段值
	valueFlag bool
}

func NewLeaveExtendItemBuilder() *LeaveExtendItemBuilder {
	builder := &LeaveExtendItemBuilder{}
	return builder
}

// 扩展字段键
//
// 示例值：testKey
func (builder *LeaveExtendItemBuilder) Key(key string) *LeaveExtendItemBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 扩展字段值
//
// 示例值：testValue
func (builder *LeaveExtendItemBuilder) Value(value string) *LeaveExtendItemBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *LeaveExtendItemBuilder) Build() *LeaveExtendItem {
	req := &LeaveExtendItem{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type LeaveGrantingRecord struct {
	Id *string `json:"id,omitempty"` // 假期授予记录 ID

	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型 ID

	GrantingQuantity *string `json:"granting_quantity,omitempty"` // 授予数量

	GrantingUnit *int `json:"granting_unit,omitempty"` // 授予时长单位

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间（根据休假规则自动计算）

	GrantedBy *int `json:"granted_by,omitempty"` // 授予来源

	Reason []*I18n `json:"reason,omitempty"` // 授予原因

	CreatedAt *string `json:"created_at,omitempty"` // 授予记录的创建时间，毫秒级unix时间戳

	CreatedBy *string `json:"created_by,omitempty"` // 授予记录的创建人，值为创建人的员工 ID

	UpdatedAt *string `json:"updated_at,omitempty"` // 授予记录的更新时间

	UpdatedBy *string `json:"updated_by,omitempty"` // 授予记录的更新人，值为更新人的员工 ID

	SectionType *int `json:"section_type,omitempty"` // 是否参与折算
}

type LeaveGrantingRecordBuilder struct {
	id     string // 假期授予记录 ID
	idFlag bool

	employmentId     string // 员工 ID
	employmentIdFlag bool

	leaveTypeId     string // 假期类型 ID
	leaveTypeIdFlag bool

	grantingQuantity     string // 授予数量
	grantingQuantityFlag bool

	grantingUnit     int // 授予时长单位
	grantingUnitFlag bool

	effectiveDate     string // 生效时间
	effectiveDateFlag bool

	expirationDate     string // 失效时间（根据休假规则自动计算）
	expirationDateFlag bool

	grantedBy     int // 授予来源
	grantedByFlag bool

	reason     []*I18n // 授予原因
	reasonFlag bool

	createdAt     string // 授予记录的创建时间，毫秒级unix时间戳
	createdAtFlag bool

	createdBy     string // 授予记录的创建人，值为创建人的员工 ID
	createdByFlag bool

	updatedAt     string // 授予记录的更新时间
	updatedAtFlag bool

	updatedBy     string // 授予记录的更新人，值为更新人的员工 ID
	updatedByFlag bool

	sectionType     int // 是否参与折算
	sectionTypeFlag bool
}

func NewLeaveGrantingRecordBuilder() *LeaveGrantingRecordBuilder {
	builder := &LeaveGrantingRecordBuilder{}
	return builder
}

// 假期授予记录 ID
//
// 示例值：4718803945687580505
func (builder *LeaveGrantingRecordBuilder) Id(id string) *LeaveGrantingRecordBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 员工 ID
//
// 示例值：4718803945687580505
func (builder *LeaveGrantingRecordBuilder) EmploymentId(employmentId string) *LeaveGrantingRecordBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 假期类型 ID
//
// 示例值：4718803945687580505
func (builder *LeaveGrantingRecordBuilder) LeaveTypeId(leaveTypeId string) *LeaveGrantingRecordBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 授予数量
//
// 示例值：4718803945687580505
func (builder *LeaveGrantingRecordBuilder) GrantingQuantity(grantingQuantity string) *LeaveGrantingRecordBuilder {
	builder.grantingQuantity = grantingQuantity
	builder.grantingQuantityFlag = true
	return builder
}

// 授予时长单位
//
// 示例值：1
func (builder *LeaveGrantingRecordBuilder) GrantingUnit(grantingUnit int) *LeaveGrantingRecordBuilder {
	builder.grantingUnit = grantingUnit
	builder.grantingUnitFlag = true
	return builder
}

// 生效时间
//
// 示例值：2022-01-01
func (builder *LeaveGrantingRecordBuilder) EffectiveDate(effectiveDate string) *LeaveGrantingRecordBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间（根据休假规则自动计算）
//
// 示例值：2022-01-01
func (builder *LeaveGrantingRecordBuilder) ExpirationDate(expirationDate string) *LeaveGrantingRecordBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 授予来源
//
// 示例值：1
func (builder *LeaveGrantingRecordBuilder) GrantedBy(grantedBy int) *LeaveGrantingRecordBuilder {
	builder.grantedBy = grantedBy
	builder.grantedByFlag = true
	return builder
}

// 授予原因
//
// 示例值：
func (builder *LeaveGrantingRecordBuilder) Reason(reason []*I18n) *LeaveGrantingRecordBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 授予记录的创建时间，毫秒级unix时间戳
//
// 示例值：4718803945687580505
func (builder *LeaveGrantingRecordBuilder) CreatedAt(createdAt string) *LeaveGrantingRecordBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 授予记录的创建人，值为创建人的员工 ID
//
// 示例值：1
func (builder *LeaveGrantingRecordBuilder) CreatedBy(createdBy string) *LeaveGrantingRecordBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 授予记录的更新时间
//
// 示例值：2020-05-02 00:00:00
func (builder *LeaveGrantingRecordBuilder) UpdatedAt(updatedAt string) *LeaveGrantingRecordBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 授予记录的更新人，值为更新人的员工 ID
//
// 示例值：123456789
func (builder *LeaveGrantingRecordBuilder) UpdatedBy(updatedBy string) *LeaveGrantingRecordBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 是否参与折算
//
// 示例值：1
func (builder *LeaveGrantingRecordBuilder) SectionType(sectionType int) *LeaveGrantingRecordBuilder {
	builder.sectionType = sectionType
	builder.sectionTypeFlag = true
	return builder
}

func (builder *LeaveGrantingRecordBuilder) Build() *LeaveGrantingRecord {
	req := &LeaveGrantingRecord{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.grantingQuantityFlag {
		req.GrantingQuantity = &builder.grantingQuantity

	}
	if builder.grantingUnitFlag {
		req.GrantingUnit = &builder.grantingUnit

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.grantedByFlag {
		req.GrantedBy = &builder.grantedBy

	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.sectionTypeFlag {
		req.SectionType = &builder.sectionType

	}
	return req
}

type LeaveProcessInfo struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程id

	ProcessStatus *string `json:"process_status,omitempty"` // 流程状态

	ProcessApplyTime *string `json:"process_apply_time,omitempty"` // 流程发起时间
}

type LeaveProcessInfoBuilder struct {
	processId     string // 流程id
	processIdFlag bool

	processStatus     string // 流程状态
	processStatusFlag bool

	processApplyTime     string // 流程发起时间
	processApplyTimeFlag bool
}

func NewLeaveProcessInfoBuilder() *LeaveProcessInfoBuilder {
	builder := &LeaveProcessInfoBuilder{}
	return builder
}

// 流程id
//
// 示例值：4718803945687580505
func (builder *LeaveProcessInfoBuilder) ProcessId(processId string) *LeaveProcessInfoBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 流程状态
//
// 示例值：passed
func (builder *LeaveProcessInfoBuilder) ProcessStatus(processStatus string) *LeaveProcessInfoBuilder {
	builder.processStatus = processStatus
	builder.processStatusFlag = true
	return builder
}

// 流程发起时间
//
// 示例值：2024-01-01 00:00:00
func (builder *LeaveProcessInfoBuilder) ProcessApplyTime(processApplyTime string) *LeaveProcessInfoBuilder {
	builder.processApplyTime = processApplyTime
	builder.processApplyTimeFlag = true
	return builder
}

func (builder *LeaveProcessInfoBuilder) Build() *LeaveProcessInfo {
	req := &LeaveProcessInfo{}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.processStatusFlag {
		req.ProcessStatus = &builder.processStatus

	}
	if builder.processApplyTimeFlag {
		req.ProcessApplyTime = &builder.processApplyTime

	}
	return req
}

type LeaveRequest struct {
	LeaveRequestId *string `json:"leave_request_id,omitempty"` // 请假记录ID

	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣信息ID

	EmploymentName []*I18n `json:"employment_name,omitempty"` // 员工姓名

	LeaveTypeId *string `json:"leave_type_id,omitempty"` // 假期类型ID

	LeaveTypeName []*I18n `json:"leave_type_name,omitempty"` // 假期类型名称

	StartTime *string `json:"start_time,omitempty"` // 假期开始时间

	EndTime *string `json:"end_time,omitempty"` // 假期结束时间

	LeaveDuration *string `json:"leave_duration,omitempty"` // 假期时长

	LeaveDurationUnit *int `json:"leave_duration_unit,omitempty"` // 假期时长的单位

	LeaveRequestStatus *int `json:"leave_request_status,omitempty"` // 请假记录的状态

	GrantSource *string `json:"grant_source,omitempty"` // 数据来源

	ReturnTime *string `json:"return_time,omitempty"` // 返岗时间

	SubmittedAt *string `json:"submitted_at,omitempty"` // 发起时间

	SubmittedBy *string `json:"submitted_by,omitempty"` // 发起人

	Notes *string `json:"notes,omitempty"` // 备注

	ApprovalDate *string `json:"approval_date,omitempty"` // 审批通过日期

	IsDeducted *bool `json:"is_deducted,omitempty"` // 是否带薪

	Detail []*LeaveRequestDetail `json:"detail,omitempty"` // 请假详情

	LeaveTypeCode *string `json:"leave_type_code,omitempty"` // 假期类型枚举

	ActualEndDate *string `json:"actual_end_date,omitempty"` // 实际结束日期

	EstimatedEndDate *string `json:"estimated_end_date,omitempty"` // 预估结束日期

	TimeZone *string `json:"time_zone,omitempty"` // 时区

	DataSource *int `json:"data_source,omitempty"` // 请假记录数据来源

	LeaveProcessId []string `json:"leave_process_id,omitempty"` // 请假申请流程ID

	LeaveCorrectProcessId []string `json:"leave_correct_process_id,omitempty"` // 请假更正流程ID

	LeaveCancelProcessId []string `json:"leave_cancel_process_id,omitempty"` // 请假取消流程ID

	LeaveReturnProcessId []string `json:"leave_return_process_id,omitempty"` // 请假返岗流程ID

	WdPaidType *int `json:"wd_paid_type,omitempty"` // workDay算薪类型

	LeaveCorrectProcessInfo []*LeaveProcessInfo `json:"leave_correct_process_info,omitempty"` // 请假更正流程信息

	WorkdayExtendInfos []*LeaveExtendItem `json:"workday_extend_infos,omitempty"` // workday扩展字段信息
}

type LeaveRequestBuilder struct {
	leaveRequestId     string // 请假记录ID
	leaveRequestIdFlag bool

	employmentId     string // 雇佣信息ID
	employmentIdFlag bool

	employmentName     []*I18n // 员工姓名
	employmentNameFlag bool

	leaveTypeId     string // 假期类型ID
	leaveTypeIdFlag bool

	leaveTypeName     []*I18n // 假期类型名称
	leaveTypeNameFlag bool

	startTime     string // 假期开始时间
	startTimeFlag bool

	endTime     string // 假期结束时间
	endTimeFlag bool

	leaveDuration     string // 假期时长
	leaveDurationFlag bool

	leaveDurationUnit     int // 假期时长的单位
	leaveDurationUnitFlag bool

	leaveRequestStatus     int // 请假记录的状态
	leaveRequestStatusFlag bool

	grantSource     string // 数据来源
	grantSourceFlag bool

	returnTime     string // 返岗时间
	returnTimeFlag bool

	submittedAt     string // 发起时间
	submittedAtFlag bool

	submittedBy     string // 发起人
	submittedByFlag bool

	notes     string // 备注
	notesFlag bool

	approvalDate     string // 审批通过日期
	approvalDateFlag bool

	isDeducted     bool // 是否带薪
	isDeductedFlag bool

	detail     []*LeaveRequestDetail // 请假详情
	detailFlag bool

	leaveTypeCode     string // 假期类型枚举
	leaveTypeCodeFlag bool

	actualEndDate     string // 实际结束日期
	actualEndDateFlag bool

	estimatedEndDate     string // 预估结束日期
	estimatedEndDateFlag bool

	timeZone     string // 时区
	timeZoneFlag bool

	dataSource     int // 请假记录数据来源
	dataSourceFlag bool

	leaveProcessId     []string // 请假申请流程ID
	leaveProcessIdFlag bool

	leaveCorrectProcessId     []string // 请假更正流程ID
	leaveCorrectProcessIdFlag bool

	leaveCancelProcessId     []string // 请假取消流程ID
	leaveCancelProcessIdFlag bool

	leaveReturnProcessId     []string // 请假返岗流程ID
	leaveReturnProcessIdFlag bool

	wdPaidType     int // workDay算薪类型
	wdPaidTypeFlag bool

	leaveCorrectProcessInfo     []*LeaveProcessInfo // 请假更正流程信息
	leaveCorrectProcessInfoFlag bool

	workdayExtendInfos     []*LeaveExtendItem // workday扩展字段信息
	workdayExtendInfosFlag bool
}

func NewLeaveRequestBuilder() *LeaveRequestBuilder {
	builder := &LeaveRequestBuilder{}
	return builder
}

// 请假记录ID
//
// 示例值：4718803945687580505
func (builder *LeaveRequestBuilder) LeaveRequestId(leaveRequestId string) *LeaveRequestBuilder {
	builder.leaveRequestId = leaveRequestId
	builder.leaveRequestIdFlag = true
	return builder
}

// 雇佣信息ID
//
// 示例值：4718803945687580505
func (builder *LeaveRequestBuilder) EmploymentId(employmentId string) *LeaveRequestBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 员工姓名
//
// 示例值：
func (builder *LeaveRequestBuilder) EmploymentName(employmentName []*I18n) *LeaveRequestBuilder {
	builder.employmentName = employmentName
	builder.employmentNameFlag = true
	return builder
}

// 假期类型ID
//
// 示例值：0
func (builder *LeaveRequestBuilder) LeaveTypeId(leaveTypeId string) *LeaveRequestBuilder {
	builder.leaveTypeId = leaveTypeId
	builder.leaveTypeIdFlag = true
	return builder
}

// 假期类型名称
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveTypeName(leaveTypeName []*I18n) *LeaveRequestBuilder {
	builder.leaveTypeName = leaveTypeName
	builder.leaveTypeNameFlag = true
	return builder
}

// 假期开始时间
//
// 示例值：2022-09-09
func (builder *LeaveRequestBuilder) StartTime(startTime string) *LeaveRequestBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 假期结束时间
//
// 示例值：2022-09-09
func (builder *LeaveRequestBuilder) EndTime(endTime string) *LeaveRequestBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 假期时长
//
// 示例值：2
func (builder *LeaveRequestBuilder) LeaveDuration(leaveDuration string) *LeaveRequestBuilder {
	builder.leaveDuration = leaveDuration
	builder.leaveDurationFlag = true
	return builder
}

// 假期时长的单位
//
// 示例值：2
func (builder *LeaveRequestBuilder) LeaveDurationUnit(leaveDurationUnit int) *LeaveRequestBuilder {
	builder.leaveDurationUnit = leaveDurationUnit
	builder.leaveDurationUnitFlag = true
	return builder
}

// 请假记录的状态
//
// 示例值：2
func (builder *LeaveRequestBuilder) LeaveRequestStatus(leaveRequestStatus int) *LeaveRequestBuilder {
	builder.leaveRequestStatus = leaveRequestStatus
	builder.leaveRequestStatusFlag = true
	return builder
}

// 数据来源
//
// 示例值：manual
func (builder *LeaveRequestBuilder) GrantSource(grantSource string) *LeaveRequestBuilder {
	builder.grantSource = grantSource
	builder.grantSourceFlag = true
	return builder
}

// 返岗时间
//
// 示例值：2022-09-09
func (builder *LeaveRequestBuilder) ReturnTime(returnTime string) *LeaveRequestBuilder {
	builder.returnTime = returnTime
	builder.returnTimeFlag = true
	return builder
}

// 发起时间
//
// 示例值：2022-09-09
func (builder *LeaveRequestBuilder) SubmittedAt(submittedAt string) *LeaveRequestBuilder {
	builder.submittedAt = submittedAt
	builder.submittedAtFlag = true
	return builder
}

// 发起人
//
// 示例值：kk
func (builder *LeaveRequestBuilder) SubmittedBy(submittedBy string) *LeaveRequestBuilder {
	builder.submittedBy = submittedBy
	builder.submittedByFlag = true
	return builder
}

// 备注
//
// 示例值：备注
func (builder *LeaveRequestBuilder) Notes(notes string) *LeaveRequestBuilder {
	builder.notes = notes
	builder.notesFlag = true
	return builder
}

// 审批通过日期
//
// 示例值：2022-09-09
func (builder *LeaveRequestBuilder) ApprovalDate(approvalDate string) *LeaveRequestBuilder {
	builder.approvalDate = approvalDate
	builder.approvalDateFlag = true
	return builder
}

// 是否带薪
//
// 示例值：false
func (builder *LeaveRequestBuilder) IsDeducted(isDeducted bool) *LeaveRequestBuilder {
	builder.isDeducted = isDeducted
	builder.isDeductedFlag = true
	return builder
}

// 请假详情
//
// 示例值：
func (builder *LeaveRequestBuilder) Detail(detail []*LeaveRequestDetail) *LeaveRequestBuilder {
	builder.detail = detail
	builder.detailFlag = true
	return builder
}

// 假期类型枚举
//
// 示例值：Annual Leave
func (builder *LeaveRequestBuilder) LeaveTypeCode(leaveTypeCode string) *LeaveRequestBuilder {
	builder.leaveTypeCode = leaveTypeCode
	builder.leaveTypeCodeFlag = true
	return builder
}

// 实际结束日期
//
// 示例值：2022-08-02
func (builder *LeaveRequestBuilder) ActualEndDate(actualEndDate string) *LeaveRequestBuilder {
	builder.actualEndDate = actualEndDate
	builder.actualEndDateFlag = true
	return builder
}

// 预估结束日期
//
// 示例值：2022-08-02
func (builder *LeaveRequestBuilder) EstimatedEndDate(estimatedEndDate string) *LeaveRequestBuilder {
	builder.estimatedEndDate = estimatedEndDate
	builder.estimatedEndDateFlag = true
	return builder
}

// 时区
//
// 示例值：Asia/Shanghai
func (builder *LeaveRequestBuilder) TimeZone(timeZone string) *LeaveRequestBuilder {
	builder.timeZone = timeZone
	builder.timeZoneFlag = true
	return builder
}

// 请假记录数据来源
//
// 示例值：1
func (builder *LeaveRequestBuilder) DataSource(dataSource int) *LeaveRequestBuilder {
	builder.dataSource = dataSource
	builder.dataSourceFlag = true
	return builder
}

// 请假申请流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveProcessId(leaveProcessId []string) *LeaveRequestBuilder {
	builder.leaveProcessId = leaveProcessId
	builder.leaveProcessIdFlag = true
	return builder
}

// 请假更正流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveCorrectProcessId(leaveCorrectProcessId []string) *LeaveRequestBuilder {
	builder.leaveCorrectProcessId = leaveCorrectProcessId
	builder.leaveCorrectProcessIdFlag = true
	return builder
}

// 请假取消流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveCancelProcessId(leaveCancelProcessId []string) *LeaveRequestBuilder {
	builder.leaveCancelProcessId = leaveCancelProcessId
	builder.leaveCancelProcessIdFlag = true
	return builder
}

// 请假返岗流程ID
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveReturnProcessId(leaveReturnProcessId []string) *LeaveRequestBuilder {
	builder.leaveReturnProcessId = leaveReturnProcessId
	builder.leaveReturnProcessIdFlag = true
	return builder
}

// workDay算薪类型
//
// 示例值：1
func (builder *LeaveRequestBuilder) WdPaidType(wdPaidType int) *LeaveRequestBuilder {
	builder.wdPaidType = wdPaidType
	builder.wdPaidTypeFlag = true
	return builder
}

// 请假更正流程信息
//
// 示例值：
func (builder *LeaveRequestBuilder) LeaveCorrectProcessInfo(leaveCorrectProcessInfo []*LeaveProcessInfo) *LeaveRequestBuilder {
	builder.leaveCorrectProcessInfo = leaveCorrectProcessInfo
	builder.leaveCorrectProcessInfoFlag = true
	return builder
}

// workday扩展字段信息
//
// 示例值：
func (builder *LeaveRequestBuilder) WorkdayExtendInfos(workdayExtendInfos []*LeaveExtendItem) *LeaveRequestBuilder {
	builder.workdayExtendInfos = workdayExtendInfos
	builder.workdayExtendInfosFlag = true
	return builder
}

func (builder *LeaveRequestBuilder) Build() *LeaveRequest {
	req := &LeaveRequest{}
	if builder.leaveRequestIdFlag {
		req.LeaveRequestId = &builder.leaveRequestId

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.employmentNameFlag {
		req.EmploymentName = builder.employmentName
	}
	if builder.leaveTypeIdFlag {
		req.LeaveTypeId = &builder.leaveTypeId

	}
	if builder.leaveTypeNameFlag {
		req.LeaveTypeName = builder.leaveTypeName
	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.leaveDurationFlag {
		req.LeaveDuration = &builder.leaveDuration

	}
	if builder.leaveDurationUnitFlag {
		req.LeaveDurationUnit = &builder.leaveDurationUnit

	}
	if builder.leaveRequestStatusFlag {
		req.LeaveRequestStatus = &builder.leaveRequestStatus

	}
	if builder.grantSourceFlag {
		req.GrantSource = &builder.grantSource

	}
	if builder.returnTimeFlag {
		req.ReturnTime = &builder.returnTime

	}
	if builder.submittedAtFlag {
		req.SubmittedAt = &builder.submittedAt

	}
	if builder.submittedByFlag {
		req.SubmittedBy = &builder.submittedBy

	}
	if builder.notesFlag {
		req.Notes = &builder.notes

	}
	if builder.approvalDateFlag {
		req.ApprovalDate = &builder.approvalDate

	}
	if builder.isDeductedFlag {
		req.IsDeducted = &builder.isDeducted

	}
	if builder.detailFlag {
		req.Detail = builder.detail
	}
	if builder.leaveTypeCodeFlag {
		req.LeaveTypeCode = &builder.leaveTypeCode

	}
	if builder.actualEndDateFlag {
		req.ActualEndDate = &builder.actualEndDate

	}
	if builder.estimatedEndDateFlag {
		req.EstimatedEndDate = &builder.estimatedEndDate

	}
	if builder.timeZoneFlag {
		req.TimeZone = &builder.timeZone

	}
	if builder.dataSourceFlag {
		req.DataSource = &builder.dataSource

	}
	if builder.leaveProcessIdFlag {
		req.LeaveProcessId = builder.leaveProcessId
	}
	if builder.leaveCorrectProcessIdFlag {
		req.LeaveCorrectProcessId = builder.leaveCorrectProcessId
	}
	if builder.leaveCancelProcessIdFlag {
		req.LeaveCancelProcessId = builder.leaveCancelProcessId
	}
	if builder.leaveReturnProcessIdFlag {
		req.LeaveReturnProcessId = builder.leaveReturnProcessId
	}
	if builder.wdPaidTypeFlag {
		req.WdPaidType = &builder.wdPaidType

	}
	if builder.leaveCorrectProcessInfoFlag {
		req.LeaveCorrectProcessInfo = builder.leaveCorrectProcessInfo
	}
	if builder.workdayExtendInfosFlag {
		req.WorkdayExtendInfos = builder.workdayExtendInfos
	}
	return req
}

type LeaveRequestDetail struct {
	LeaveRequestId *string `json:"leave_request_id,omitempty"` // 请假记录id

	LeaveDate *string `json:"leave_date,omitempty"` // 假期发生日期

	LeaveDuration *string `json:"leave_duration,omitempty"` // 假期时长

	LeaveDurationUnit *int `json:"leave_duration_unit,omitempty"` // 假期时长单位，1：天，2：小时

	PaidType *int `json:"paid_type,omitempty"` // 是否影响算薪，1：不参与算薪计算, 非对应的日期类型或者无对应的假期计划，2：影响算薪，3：不影响算薪
}

type LeaveRequestDetailBuilder struct {
	leaveRequestId     string // 请假记录id
	leaveRequestIdFlag bool

	leaveDate     string // 假期发生日期
	leaveDateFlag bool

	leaveDuration     string // 假期时长
	leaveDurationFlag bool

	leaveDurationUnit     int // 假期时长单位，1：天，2：小时
	leaveDurationUnitFlag bool

	paidType     int // 是否影响算薪，1：不参与算薪计算, 非对应的日期类型或者无对应的假期计划，2：影响算薪，3：不影响算薪
	paidTypeFlag bool
}

func NewLeaveRequestDetailBuilder() *LeaveRequestDetailBuilder {
	builder := &LeaveRequestDetailBuilder{}
	return builder
}

// 请假记录id
//
// 示例值：4718803945687580505
func (builder *LeaveRequestDetailBuilder) LeaveRequestId(leaveRequestId string) *LeaveRequestDetailBuilder {
	builder.leaveRequestId = leaveRequestId
	builder.leaveRequestIdFlag = true
	return builder
}

// 假期发生日期
//
// 示例值：2022-07-07
func (builder *LeaveRequestDetailBuilder) LeaveDate(leaveDate string) *LeaveRequestDetailBuilder {
	builder.leaveDate = leaveDate
	builder.leaveDateFlag = true
	return builder
}

// 假期时长
//
// 示例值：1
func (builder *LeaveRequestDetailBuilder) LeaveDuration(leaveDuration string) *LeaveRequestDetailBuilder {
	builder.leaveDuration = leaveDuration
	builder.leaveDurationFlag = true
	return builder
}

// 假期时长单位，1：天，2：小时
//
// 示例值：1
func (builder *LeaveRequestDetailBuilder) LeaveDurationUnit(leaveDurationUnit int) *LeaveRequestDetailBuilder {
	builder.leaveDurationUnit = leaveDurationUnit
	builder.leaveDurationUnitFlag = true
	return builder
}

// 是否影响算薪，1：不参与算薪计算, 非对应的日期类型或者无对应的假期计划，2：影响算薪，3：不影响算薪
//
// 示例值：1
func (builder *LeaveRequestDetailBuilder) PaidType(paidType int) *LeaveRequestDetailBuilder {
	builder.paidType = paidType
	builder.paidTypeFlag = true
	return builder
}

func (builder *LeaveRequestDetailBuilder) Build() *LeaveRequestDetail {
	req := &LeaveRequestDetail{}
	if builder.leaveRequestIdFlag {
		req.LeaveRequestId = &builder.leaveRequestId

	}
	if builder.leaveDateFlag {
		req.LeaveDate = &builder.leaveDate

	}
	if builder.leaveDurationFlag {
		req.LeaveDuration = &builder.leaveDuration

	}
	if builder.leaveDurationUnitFlag {
		req.LeaveDurationUnit = &builder.leaveDurationUnit

	}
	if builder.paidTypeFlag {
		req.PaidType = &builder.paidType

	}
	return req
}

type Location struct {
	LocationId *string `json:"location_id,omitempty"` // 地点 ID

	HiberarchyCommon *HiberarchyCommon `json:"hiberarchy_common,omitempty"` // 地点基本信息

	LocationUsageList []*Enum `json:"location_usage_list,omitempty"` // 地点用途

	Address []*Address `json:"address,omitempty"` // 地址

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	Locale *Enum `json:"locale,omitempty"` // 区域设置

	TimeZoneId *string `json:"time_zone_id,omitempty"` // 时区

	DisplayLanguageId *string `json:"display_language_id,omitempty"` // 默认显示语言
}

type LocationBuilder struct {
	locationId     string // 地点 ID
	locationIdFlag bool

	hiberarchyCommon     *HiberarchyCommon // 地点基本信息
	hiberarchyCommonFlag bool

	locationUsageList     []*Enum // 地点用途
	locationUsageListFlag bool

	address     []*Address // 地址
	addressFlag bool

	workingHoursTypeId     string // 工时制度
	workingHoursTypeIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	locale     *Enum // 区域设置
	localeFlag bool

	timeZoneId     string // 时区
	timeZoneIdFlag bool

	displayLanguageId     string // 默认显示语言
	displayLanguageIdFlag bool
}

func NewLocationBuilder() *LocationBuilder {
	builder := &LocationBuilder{}
	return builder
}

// 地点 ID
//
// 示例值：4718803945687580505
func (builder *LocationBuilder) LocationId(locationId string) *LocationBuilder {
	builder.locationId = locationId
	builder.locationIdFlag = true
	return builder
}

// 地点基本信息
//
// 示例值：
func (builder *LocationBuilder) HiberarchyCommon(hiberarchyCommon *HiberarchyCommon) *LocationBuilder {
	builder.hiberarchyCommon = hiberarchyCommon
	builder.hiberarchyCommonFlag = true
	return builder
}

// 地点用途
//
// 示例值：
func (builder *LocationBuilder) LocationUsageList(locationUsageList []*Enum) *LocationBuilder {
	builder.locationUsageList = locationUsageList
	builder.locationUsageListFlag = true
	return builder
}

// 地址
//
// 示例值：
func (builder *LocationBuilder) Address(address []*Address) *LocationBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 工时制度
//
// 示例值：4690238309151997779
func (builder *LocationBuilder) WorkingHoursTypeId(workingHoursTypeId string) *LocationBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *LocationBuilder) EffectiveTime(effectiveTime string) *LocationBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *LocationBuilder) ExpirationTime(expirationTime string) *LocationBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *LocationBuilder) CustomFields(customFields []*CustomFieldData) *LocationBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 区域设置
//
// 示例值：zh_cn
func (builder *LocationBuilder) Locale(locale *Enum) *LocationBuilder {
	builder.locale = locale
	builder.localeFlag = true
	return builder
}

// 时区
//
// 示例值：123456789
func (builder *LocationBuilder) TimeZoneId(timeZoneId string) *LocationBuilder {
	builder.timeZoneId = timeZoneId
	builder.timeZoneIdFlag = true
	return builder
}

// 默认显示语言
//
// 示例值：123456789
func (builder *LocationBuilder) DisplayLanguageId(displayLanguageId string) *LocationBuilder {
	builder.displayLanguageId = displayLanguageId
	builder.displayLanguageIdFlag = true
	return builder
}

func (builder *LocationBuilder) Build() *Location {
	req := &Location{}
	if builder.locationIdFlag {
		req.LocationId = &builder.locationId

	}
	if builder.hiberarchyCommonFlag {
		req.HiberarchyCommon = builder.hiberarchyCommon
	}
	if builder.locationUsageListFlag {
		req.LocationUsageList = builder.locationUsageList
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.localeFlag {
		req.Locale = builder.locale
	}
	if builder.timeZoneIdFlag {
		req.TimeZoneId = &builder.timeZoneId

	}
	if builder.displayLanguageIdFlag {
		req.DisplayLanguageId = &builder.displayLanguageId

	}
	return req
}

type LocationAddressCreate struct {
	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	RegionId *string `json:"region_id,omitempty"` // 主要行政区

	CityId *string `json:"city_id,omitempty"` // 城市

	DistinctId *string `json:"distinct_id,omitempty"` // 区 / 县

	AddressLine1 *string `json:"address_line1,omitempty"` // 地址行 1

	AddressLine2 *string `json:"address_line2,omitempty"` // 地址行 2

	AddressLine3 *string `json:"address_line3,omitempty"` // 地址行 3

	AddressLine4 *string `json:"address_line4,omitempty"` // 地址行 4

	AddressLine5 *string `json:"address_line5,omitempty"` // 地址行 5

	AddressLine6 *string `json:"address_line6,omitempty"` // 地址行 6

	AddressLine7 *string `json:"address_line7,omitempty"` // 地址行 7

	AddressLine8 *string `json:"address_line8,omitempty"` // 地址行 8

	AddressLine9 *string `json:"address_line9,omitempty"` // 地址行 9

	LocalAddressLine1 *string `json:"local_address_line1,omitempty"` // 地址行 1（非拉丁语系的本地文字）

	LocalAddressLine2 *string `json:"local_address_line2,omitempty"` // 地址行 2（非拉丁语系的本地文字）

	LocalAddressLine3 *string `json:"local_address_line3,omitempty"` // 地址行 3（非拉丁语系的本地文字）

	LocalAddressLine4 *string `json:"local_address_line4,omitempty"` // 地址行 4（非拉丁语系的本地文字）

	LocalAddressLine5 *string `json:"local_address_line5,omitempty"` // 地址行 5（非拉丁语系的本地文字）

	LocalAddressLine6 *string `json:"local_address_line6,omitempty"` // 地址行 6（非拉丁语系的本地文字）

	LocalAddressLine7 *string `json:"local_address_line7,omitempty"` // 地址行 7（非拉丁语系的本地文字）

	LocalAddressLine8 *string `json:"local_address_line8,omitempty"` // 地址行 8（非拉丁语系的本地文字）

	LocalAddressLine9 *string `json:"local_address_line9,omitempty"` // 地址行 9（非拉丁语系的本地文字）

	PostalCode *string `json:"postal_code,omitempty"` // 邮政编码

	AddressTypes []*Enum `json:"address_types,omitempty"` // 地址类型，枚举值及详细信息可通过【枚举常量介绍】查询获得

	IsPrimary *bool `json:"is_primary,omitempty"` // 是否主要地址

	IsPublic *bool `json:"is_public,omitempty"` // 是否公开地址
}

type LocationAddressCreateBuilder struct {
	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	regionId     string // 主要行政区
	regionIdFlag bool

	cityId     string // 城市
	cityIdFlag bool

	distinctId     string // 区 / 县
	distinctIdFlag bool

	addressLine1     string // 地址行 1
	addressLine1Flag bool

	addressLine2     string // 地址行 2
	addressLine2Flag bool

	addressLine3     string // 地址行 3
	addressLine3Flag bool

	addressLine4     string // 地址行 4
	addressLine4Flag bool

	addressLine5     string // 地址行 5
	addressLine5Flag bool

	addressLine6     string // 地址行 6
	addressLine6Flag bool

	addressLine7     string // 地址行 7
	addressLine7Flag bool

	addressLine8     string // 地址行 8
	addressLine8Flag bool

	addressLine9     string // 地址行 9
	addressLine9Flag bool

	localAddressLine1     string // 地址行 1（非拉丁语系的本地文字）
	localAddressLine1Flag bool

	localAddressLine2     string // 地址行 2（非拉丁语系的本地文字）
	localAddressLine2Flag bool

	localAddressLine3     string // 地址行 3（非拉丁语系的本地文字）
	localAddressLine3Flag bool

	localAddressLine4     string // 地址行 4（非拉丁语系的本地文字）
	localAddressLine4Flag bool

	localAddressLine5     string // 地址行 5（非拉丁语系的本地文字）
	localAddressLine5Flag bool

	localAddressLine6     string // 地址行 6（非拉丁语系的本地文字）
	localAddressLine6Flag bool

	localAddressLine7     string // 地址行 7（非拉丁语系的本地文字）
	localAddressLine7Flag bool

	localAddressLine8     string // 地址行 8（非拉丁语系的本地文字）
	localAddressLine8Flag bool

	localAddressLine9     string // 地址行 9（非拉丁语系的本地文字）
	localAddressLine9Flag bool

	postalCode     string // 邮政编码
	postalCodeFlag bool

	addressTypes     []*Enum // 地址类型，枚举值及详细信息可通过【枚举常量介绍】查询获得
	addressTypesFlag bool

	isPrimary     bool // 是否主要地址
	isPrimaryFlag bool

	isPublic     bool // 是否公开地址
	isPublicFlag bool
}

func NewLocationAddressCreateBuilder() *LocationAddressCreateBuilder {
	builder := &LocationAddressCreateBuilder{}
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *LocationAddressCreateBuilder) CountryRegionId(countryRegionId string) *LocationAddressCreateBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 主要行政区
//
// 示例值：6863326264296474119
func (builder *LocationAddressCreateBuilder) RegionId(regionId string) *LocationAddressCreateBuilder {
	builder.regionId = regionId
	builder.regionIdFlag = true
	return builder
}

// 城市
//
// 示例值：6863333555859097096
func (builder *LocationAddressCreateBuilder) CityId(cityId string) *LocationAddressCreateBuilder {
	builder.cityId = cityId
	builder.cityIdFlag = true
	return builder
}

// 区 / 县
//
// 示例值：6863333556291110408
func (builder *LocationAddressCreateBuilder) DistinctId(distinctId string) *LocationAddressCreateBuilder {
	builder.distinctId = distinctId
	builder.distinctIdFlag = true
	return builder
}

// 地址行 1
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) AddressLine1(addressLine1 string) *LocationAddressCreateBuilder {
	builder.addressLine1 = addressLine1
	builder.addressLine1Flag = true
	return builder
}

// 地址行 2
//
// 示例值：PoewH
func (builder *LocationAddressCreateBuilder) AddressLine2(addressLine2 string) *LocationAddressCreateBuilder {
	builder.addressLine2 = addressLine2
	builder.addressLine2Flag = true
	return builder
}

// 地址行 3
//
// 示例值：PoewH
func (builder *LocationAddressCreateBuilder) AddressLine3(addressLine3 string) *LocationAddressCreateBuilder {
	builder.addressLine3 = addressLine3
	builder.addressLine3Flag = true
	return builder
}

// 地址行 4
//
// 示例值：jmwJc
func (builder *LocationAddressCreateBuilder) AddressLine4(addressLine4 string) *LocationAddressCreateBuilder {
	builder.addressLine4 = addressLine4
	builder.addressLine4Flag = true
	return builder
}

// 地址行 5
//
// 示例值：jmwJc
func (builder *LocationAddressCreateBuilder) AddressLine5(addressLine5 string) *LocationAddressCreateBuilder {
	builder.addressLine5 = addressLine5
	builder.addressLine5Flag = true
	return builder
}

// 地址行 6
//
// 示例值：jmwJc
func (builder *LocationAddressCreateBuilder) AddressLine6(addressLine6 string) *LocationAddressCreateBuilder {
	builder.addressLine6 = addressLine6
	builder.addressLine6Flag = true
	return builder
}

// 地址行 7
//
// 示例值：jmwJc
func (builder *LocationAddressCreateBuilder) AddressLine7(addressLine7 string) *LocationAddressCreateBuilder {
	builder.addressLine7 = addressLine7
	builder.addressLine7Flag = true
	return builder
}

// 地址行 8
//
// 示例值：rafSu
func (builder *LocationAddressCreateBuilder) AddressLine8(addressLine8 string) *LocationAddressCreateBuilder {
	builder.addressLine8 = addressLine8
	builder.addressLine8Flag = true
	return builder
}

// 地址行 9
//
// 示例值：McPRG
func (builder *LocationAddressCreateBuilder) AddressLine9(addressLine9 string) *LocationAddressCreateBuilder {
	builder.addressLine9 = addressLine9
	builder.addressLine9Flag = true
	return builder
}

// 地址行 1（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine1(localAddressLine1 string) *LocationAddressCreateBuilder {
	builder.localAddressLine1 = localAddressLine1
	builder.localAddressLine1Flag = true
	return builder
}

// 地址行 2（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine2(localAddressLine2 string) *LocationAddressCreateBuilder {
	builder.localAddressLine2 = localAddressLine2
	builder.localAddressLine2Flag = true
	return builder
}

// 地址行 3（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine3(localAddressLine3 string) *LocationAddressCreateBuilder {
	builder.localAddressLine3 = localAddressLine3
	builder.localAddressLine3Flag = true
	return builder
}

// 地址行 4（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine4(localAddressLine4 string) *LocationAddressCreateBuilder {
	builder.localAddressLine4 = localAddressLine4
	builder.localAddressLine4Flag = true
	return builder
}

// 地址行 5（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine5(localAddressLine5 string) *LocationAddressCreateBuilder {
	builder.localAddressLine5 = localAddressLine5
	builder.localAddressLine5Flag = true
	return builder
}

// 地址行 6（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine6(localAddressLine6 string) *LocationAddressCreateBuilder {
	builder.localAddressLine6 = localAddressLine6
	builder.localAddressLine6Flag = true
	return builder
}

// 地址行 7（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine7(localAddressLine7 string) *LocationAddressCreateBuilder {
	builder.localAddressLine7 = localAddressLine7
	builder.localAddressLine7Flag = true
	return builder
}

// 地址行 8（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine8(localAddressLine8 string) *LocationAddressCreateBuilder {
	builder.localAddressLine8 = localAddressLine8
	builder.localAddressLine8Flag = true
	return builder
}

// 地址行 9（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressCreateBuilder) LocalAddressLine9(localAddressLine9 string) *LocationAddressCreateBuilder {
	builder.localAddressLine9 = localAddressLine9
	builder.localAddressLine9Flag = true
	return builder
}

// 邮政编码
//
// 示例值：611530
func (builder *LocationAddressCreateBuilder) PostalCode(postalCode string) *LocationAddressCreateBuilder {
	builder.postalCode = postalCode
	builder.postalCodeFlag = true
	return builder
}

// 地址类型，枚举值及详细信息可通过【枚举常量介绍】查询获得
//
// 示例值：
func (builder *LocationAddressCreateBuilder) AddressTypes(addressTypes []*Enum) *LocationAddressCreateBuilder {
	builder.addressTypes = addressTypes
	builder.addressTypesFlag = true
	return builder
}

// 是否主要地址
//
// 示例值：true
func (builder *LocationAddressCreateBuilder) IsPrimary(isPrimary bool) *LocationAddressCreateBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 是否公开地址
//
// 示例值：true
func (builder *LocationAddressCreateBuilder) IsPublic(isPublic bool) *LocationAddressCreateBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

func (builder *LocationAddressCreateBuilder) Build() *LocationAddressCreate {
	req := &LocationAddressCreate{}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.regionIdFlag {
		req.RegionId = &builder.regionId

	}
	if builder.cityIdFlag {
		req.CityId = &builder.cityId

	}
	if builder.distinctIdFlag {
		req.DistinctId = &builder.distinctId

	}
	if builder.addressLine1Flag {
		req.AddressLine1 = &builder.addressLine1

	}
	if builder.addressLine2Flag {
		req.AddressLine2 = &builder.addressLine2

	}
	if builder.addressLine3Flag {
		req.AddressLine3 = &builder.addressLine3

	}
	if builder.addressLine4Flag {
		req.AddressLine4 = &builder.addressLine4

	}
	if builder.addressLine5Flag {
		req.AddressLine5 = &builder.addressLine5

	}
	if builder.addressLine6Flag {
		req.AddressLine6 = &builder.addressLine6

	}
	if builder.addressLine7Flag {
		req.AddressLine7 = &builder.addressLine7

	}
	if builder.addressLine8Flag {
		req.AddressLine8 = &builder.addressLine8

	}
	if builder.addressLine9Flag {
		req.AddressLine9 = &builder.addressLine9

	}
	if builder.localAddressLine1Flag {
		req.LocalAddressLine1 = &builder.localAddressLine1

	}
	if builder.localAddressLine2Flag {
		req.LocalAddressLine2 = &builder.localAddressLine2

	}
	if builder.localAddressLine3Flag {
		req.LocalAddressLine3 = &builder.localAddressLine3

	}
	if builder.localAddressLine4Flag {
		req.LocalAddressLine4 = &builder.localAddressLine4

	}
	if builder.localAddressLine5Flag {
		req.LocalAddressLine5 = &builder.localAddressLine5

	}
	if builder.localAddressLine6Flag {
		req.LocalAddressLine6 = &builder.localAddressLine6

	}
	if builder.localAddressLine7Flag {
		req.LocalAddressLine7 = &builder.localAddressLine7

	}
	if builder.localAddressLine8Flag {
		req.LocalAddressLine8 = &builder.localAddressLine8

	}
	if builder.localAddressLine9Flag {
		req.LocalAddressLine9 = &builder.localAddressLine9

	}
	if builder.postalCodeFlag {
		req.PostalCode = &builder.postalCode

	}
	if builder.addressTypesFlag {
		req.AddressTypes = builder.addressTypes
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	return req
}

type LocationAddressUpdate struct {
	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	RegionId *string `json:"region_id,omitempty"` // 主要行政区

	CityId *string `json:"city_id,omitempty"` // 城市

	DistinctId *string `json:"distinct_id,omitempty"` // 区 / 县

	AddressLine1 *string `json:"address_line1,omitempty"` // 地址行 1

	AddressLine2 *string `json:"address_line2,omitempty"` // 地址行 2

	AddressLine3 *string `json:"address_line3,omitempty"` // 地址行 3

	AddressLine4 *string `json:"address_line4,omitempty"` // 地址行 4

	AddressLine5 *string `json:"address_line5,omitempty"` // 地址行 5

	AddressLine6 *string `json:"address_line6,omitempty"` // 地址行 6

	AddressLine7 *string `json:"address_line7,omitempty"` // 地址行 7

	AddressLine8 *string `json:"address_line8,omitempty"` // 地址行 8

	AddressLine9 *string `json:"address_line9,omitempty"` // 地址行 9

	LocalAddressLine1 *string `json:"local_address_line1,omitempty"` // 地址行 1（非拉丁语系的本地文字）

	LocalAddressLine2 *string `json:"local_address_line2,omitempty"` // 地址行 2（非拉丁语系的本地文字）

	LocalAddressLine3 *string `json:"local_address_line3,omitempty"` // 地址行 3（非拉丁语系的本地文字）

	LocalAddressLine4 *string `json:"local_address_line4,omitempty"` // 地址行 4（非拉丁语系的本地文字）

	LocalAddressLine5 *string `json:"local_address_line5,omitempty"` // 地址行 5（非拉丁语系的本地文字）

	LocalAddressLine6 *string `json:"local_address_line6,omitempty"` // 地址行 6（非拉丁语系的本地文字）

	LocalAddressLine7 *string `json:"local_address_line7,omitempty"` // 地址行 7（非拉丁语系的本地文字）

	LocalAddressLine8 *string `json:"local_address_line8,omitempty"` // 地址行 8（非拉丁语系的本地文字）

	LocalAddressLine9 *string `json:"local_address_line9,omitempty"` // 地址行 9（非拉丁语系的本地文字）

	PostalCode *string `json:"postal_code,omitempty"` // 邮政编码

	AddressTypes []*Enum `json:"address_types,omitempty"` // 地址类型，枚举值及详细信息可通过【枚举常量介绍】查询获得

	IsPrimary *bool `json:"is_primary,omitempty"` // 是否主要地址

	IsPublic *bool `json:"is_public,omitempty"` // 是否公开地址
}

type LocationAddressUpdateBuilder struct {
	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	regionId     string // 主要行政区
	regionIdFlag bool

	cityId     string // 城市
	cityIdFlag bool

	distinctId     string // 区 / 县
	distinctIdFlag bool

	addressLine1     string // 地址行 1
	addressLine1Flag bool

	addressLine2     string // 地址行 2
	addressLine2Flag bool

	addressLine3     string // 地址行 3
	addressLine3Flag bool

	addressLine4     string // 地址行 4
	addressLine4Flag bool

	addressLine5     string // 地址行 5
	addressLine5Flag bool

	addressLine6     string // 地址行 6
	addressLine6Flag bool

	addressLine7     string // 地址行 7
	addressLine7Flag bool

	addressLine8     string // 地址行 8
	addressLine8Flag bool

	addressLine9     string // 地址行 9
	addressLine9Flag bool

	localAddressLine1     string // 地址行 1（非拉丁语系的本地文字）
	localAddressLine1Flag bool

	localAddressLine2     string // 地址行 2（非拉丁语系的本地文字）
	localAddressLine2Flag bool

	localAddressLine3     string // 地址行 3（非拉丁语系的本地文字）
	localAddressLine3Flag bool

	localAddressLine4     string // 地址行 4（非拉丁语系的本地文字）
	localAddressLine4Flag bool

	localAddressLine5     string // 地址行 5（非拉丁语系的本地文字）
	localAddressLine5Flag bool

	localAddressLine6     string // 地址行 6（非拉丁语系的本地文字）
	localAddressLine6Flag bool

	localAddressLine7     string // 地址行 7（非拉丁语系的本地文字）
	localAddressLine7Flag bool

	localAddressLine8     string // 地址行 8（非拉丁语系的本地文字）
	localAddressLine8Flag bool

	localAddressLine9     string // 地址行 9（非拉丁语系的本地文字）
	localAddressLine9Flag bool

	postalCode     string // 邮政编码
	postalCodeFlag bool

	addressTypes     []*Enum // 地址类型，枚举值及详细信息可通过【枚举常量介绍】查询获得
	addressTypesFlag bool

	isPrimary     bool // 是否主要地址
	isPrimaryFlag bool

	isPublic     bool // 是否公开地址
	isPublicFlag bool
}

func NewLocationAddressUpdateBuilder() *LocationAddressUpdateBuilder {
	builder := &LocationAddressUpdateBuilder{}
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *LocationAddressUpdateBuilder) CountryRegionId(countryRegionId string) *LocationAddressUpdateBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 主要行政区
//
// 示例值：6863326264296474119
func (builder *LocationAddressUpdateBuilder) RegionId(regionId string) *LocationAddressUpdateBuilder {
	builder.regionId = regionId
	builder.regionIdFlag = true
	return builder
}

// 城市
//
// 示例值：6863333555859097096
func (builder *LocationAddressUpdateBuilder) CityId(cityId string) *LocationAddressUpdateBuilder {
	builder.cityId = cityId
	builder.cityIdFlag = true
	return builder
}

// 区 / 县
//
// 示例值：6863333556291110408
func (builder *LocationAddressUpdateBuilder) DistinctId(distinctId string) *LocationAddressUpdateBuilder {
	builder.distinctId = distinctId
	builder.distinctIdFlag = true
	return builder
}

// 地址行 1
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) AddressLine1(addressLine1 string) *LocationAddressUpdateBuilder {
	builder.addressLine1 = addressLine1
	builder.addressLine1Flag = true
	return builder
}

// 地址行 2
//
// 示例值：PoewH
func (builder *LocationAddressUpdateBuilder) AddressLine2(addressLine2 string) *LocationAddressUpdateBuilder {
	builder.addressLine2 = addressLine2
	builder.addressLine2Flag = true
	return builder
}

// 地址行 3
//
// 示例值：PoewH
func (builder *LocationAddressUpdateBuilder) AddressLine3(addressLine3 string) *LocationAddressUpdateBuilder {
	builder.addressLine3 = addressLine3
	builder.addressLine3Flag = true
	return builder
}

// 地址行 4
//
// 示例值：jmwJc
func (builder *LocationAddressUpdateBuilder) AddressLine4(addressLine4 string) *LocationAddressUpdateBuilder {
	builder.addressLine4 = addressLine4
	builder.addressLine4Flag = true
	return builder
}

// 地址行 5
//
// 示例值：jmwJc
func (builder *LocationAddressUpdateBuilder) AddressLine5(addressLine5 string) *LocationAddressUpdateBuilder {
	builder.addressLine5 = addressLine5
	builder.addressLine5Flag = true
	return builder
}

// 地址行 6
//
// 示例值：jmwJc
func (builder *LocationAddressUpdateBuilder) AddressLine6(addressLine6 string) *LocationAddressUpdateBuilder {
	builder.addressLine6 = addressLine6
	builder.addressLine6Flag = true
	return builder
}

// 地址行 7
//
// 示例值：jmwJc
func (builder *LocationAddressUpdateBuilder) AddressLine7(addressLine7 string) *LocationAddressUpdateBuilder {
	builder.addressLine7 = addressLine7
	builder.addressLine7Flag = true
	return builder
}

// 地址行 8
//
// 示例值：rafSu
func (builder *LocationAddressUpdateBuilder) AddressLine8(addressLine8 string) *LocationAddressUpdateBuilder {
	builder.addressLine8 = addressLine8
	builder.addressLine8Flag = true
	return builder
}

// 地址行 9
//
// 示例值：McPRG
func (builder *LocationAddressUpdateBuilder) AddressLine9(addressLine9 string) *LocationAddressUpdateBuilder {
	builder.addressLine9 = addressLine9
	builder.addressLine9Flag = true
	return builder
}

// 地址行 1（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine1(localAddressLine1 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine1 = localAddressLine1
	builder.localAddressLine1Flag = true
	return builder
}

// 地址行 2（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine2(localAddressLine2 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine2 = localAddressLine2
	builder.localAddressLine2Flag = true
	return builder
}

// 地址行 3（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine3(localAddressLine3 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine3 = localAddressLine3
	builder.localAddressLine3Flag = true
	return builder
}

// 地址行 4（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine4(localAddressLine4 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine4 = localAddressLine4
	builder.localAddressLine4Flag = true
	return builder
}

// 地址行 5（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine5(localAddressLine5 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine5 = localAddressLine5
	builder.localAddressLine5Flag = true
	return builder
}

// 地址行 6（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine6(localAddressLine6 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine6 = localAddressLine6
	builder.localAddressLine6Flag = true
	return builder
}

// 地址行 7（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine7(localAddressLine7 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine7 = localAddressLine7
	builder.localAddressLine7Flag = true
	return builder
}

// 地址行 8（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine8(localAddressLine8 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine8 = localAddressLine8
	builder.localAddressLine8Flag = true
	return builder
}

// 地址行 9（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *LocationAddressUpdateBuilder) LocalAddressLine9(localAddressLine9 string) *LocationAddressUpdateBuilder {
	builder.localAddressLine9 = localAddressLine9
	builder.localAddressLine9Flag = true
	return builder
}

// 邮政编码
//
// 示例值：611530
func (builder *LocationAddressUpdateBuilder) PostalCode(postalCode string) *LocationAddressUpdateBuilder {
	builder.postalCode = postalCode
	builder.postalCodeFlag = true
	return builder
}

// 地址类型，枚举值及详细信息可通过【枚举常量介绍】查询获得
//
// 示例值：
func (builder *LocationAddressUpdateBuilder) AddressTypes(addressTypes []*Enum) *LocationAddressUpdateBuilder {
	builder.addressTypes = addressTypes
	builder.addressTypesFlag = true
	return builder
}

// 是否主要地址
//
// 示例值：true
func (builder *LocationAddressUpdateBuilder) IsPrimary(isPrimary bool) *LocationAddressUpdateBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 是否公开地址
//
// 示例值：true
func (builder *LocationAddressUpdateBuilder) IsPublic(isPublic bool) *LocationAddressUpdateBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

func (builder *LocationAddressUpdateBuilder) Build() *LocationAddressUpdate {
	req := &LocationAddressUpdate{}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.regionIdFlag {
		req.RegionId = &builder.regionId

	}
	if builder.cityIdFlag {
		req.CityId = &builder.cityId

	}
	if builder.distinctIdFlag {
		req.DistinctId = &builder.distinctId

	}
	if builder.addressLine1Flag {
		req.AddressLine1 = &builder.addressLine1

	}
	if builder.addressLine2Flag {
		req.AddressLine2 = &builder.addressLine2

	}
	if builder.addressLine3Flag {
		req.AddressLine3 = &builder.addressLine3

	}
	if builder.addressLine4Flag {
		req.AddressLine4 = &builder.addressLine4

	}
	if builder.addressLine5Flag {
		req.AddressLine5 = &builder.addressLine5

	}
	if builder.addressLine6Flag {
		req.AddressLine6 = &builder.addressLine6

	}
	if builder.addressLine7Flag {
		req.AddressLine7 = &builder.addressLine7

	}
	if builder.addressLine8Flag {
		req.AddressLine8 = &builder.addressLine8

	}
	if builder.addressLine9Flag {
		req.AddressLine9 = &builder.addressLine9

	}
	if builder.localAddressLine1Flag {
		req.LocalAddressLine1 = &builder.localAddressLine1

	}
	if builder.localAddressLine2Flag {
		req.LocalAddressLine2 = &builder.localAddressLine2

	}
	if builder.localAddressLine3Flag {
		req.LocalAddressLine3 = &builder.localAddressLine3

	}
	if builder.localAddressLine4Flag {
		req.LocalAddressLine4 = &builder.localAddressLine4

	}
	if builder.localAddressLine5Flag {
		req.LocalAddressLine5 = &builder.localAddressLine5

	}
	if builder.localAddressLine6Flag {
		req.LocalAddressLine6 = &builder.localAddressLine6

	}
	if builder.localAddressLine7Flag {
		req.LocalAddressLine7 = &builder.localAddressLine7

	}
	if builder.localAddressLine8Flag {
		req.LocalAddressLine8 = &builder.localAddressLine8

	}
	if builder.localAddressLine9Flag {
		req.LocalAddressLine9 = &builder.localAddressLine9

	}
	if builder.postalCodeFlag {
		req.PostalCode = &builder.postalCode

	}
	if builder.addressTypesFlag {
		req.AddressTypes = builder.addressTypes
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	return req
}

type LocationTimeline struct {
	LocationVersionData []*LocationVersionData `json:"location_version_data,omitempty"` // 地点版本信息

	Address []*Address `json:"address,omitempty"` // 地址信息
}

type LocationTimelineBuilder struct {
	locationVersionData     []*LocationVersionData // 地点版本信息
	locationVersionDataFlag bool

	address     []*Address // 地址信息
	addressFlag bool
}

func NewLocationTimelineBuilder() *LocationTimelineBuilder {
	builder := &LocationTimelineBuilder{}
	return builder
}

// 地点版本信息
//
// 示例值：
func (builder *LocationTimelineBuilder) LocationVersionData(locationVersionData []*LocationVersionData) *LocationTimelineBuilder {
	builder.locationVersionData = locationVersionData
	builder.locationVersionDataFlag = true
	return builder
}

// 地址信息
//
// 示例值：
func (builder *LocationTimelineBuilder) Address(address []*Address) *LocationTimelineBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

func (builder *LocationTimelineBuilder) Build() *LocationTimeline {
	req := &LocationTimeline{}
	if builder.locationVersionDataFlag {
		req.LocationVersionData = builder.locationVersionData
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	return req
}

type LocationUpdate struct {
	ParentId *string `json:"parent_id,omitempty"` // 上级地点 ID

	Names []*I18n `json:"names,omitempty"` // 地点名称

	Active *bool `json:"active,omitempty"` // 是否启用

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	Code *string `json:"code,omitempty"` // 地点编码

	Descriptions []*I18n `json:"descriptions,omitempty"` // 地点描述

	LocationUsages []*Enum `json:"location_usages,omitempty"` // 地点用途

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度 ID

	Locale *Enum `json:"locale,omitempty"` // 区域设置

	TimeZoneId *string `json:"time_zone_id,omitempty"` // 时区 ID

	DisplayLanguageId *string `json:"display_language_id,omitempty"` // 默认显示语言 ID
}

type LocationUpdateBuilder struct {
	parentId     string // 上级地点 ID
	parentIdFlag bool

	names     []*I18n // 地点名称
	namesFlag bool

	active     bool // 是否启用
	activeFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	code     string // 地点编码
	codeFlag bool

	descriptions     []*I18n // 地点描述
	descriptionsFlag bool

	locationUsages     []*Enum // 地点用途
	locationUsagesFlag bool

	workingHoursTypeId     string // 工时制度 ID
	workingHoursTypeIdFlag bool

	locale     *Enum // 区域设置
	localeFlag bool

	timeZoneId     string // 时区 ID
	timeZoneIdFlag bool

	displayLanguageId     string // 默认显示语言 ID
	displayLanguageIdFlag bool
}

func NewLocationUpdateBuilder() *LocationUpdateBuilder {
	builder := &LocationUpdateBuilder{}
	return builder
}

// 上级地点 ID
//
// 示例值：4719168654814483759
func (builder *LocationUpdateBuilder) ParentId(parentId string) *LocationUpdateBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 地点名称
//
// 示例值：
func (builder *LocationUpdateBuilder) Names(names []*I18n) *LocationUpdateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *LocationUpdateBuilder) Active(active bool) *LocationUpdateBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-02
func (builder *LocationUpdateBuilder) EffectiveTime(effectiveTime string) *LocationUpdateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 地点编码
//
// 示例值：12456
func (builder *LocationUpdateBuilder) Code(code string) *LocationUpdateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 地点描述
//
// 示例值：
func (builder *LocationUpdateBuilder) Descriptions(descriptions []*I18n) *LocationUpdateBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 地点用途
//
// 示例值：
func (builder *LocationUpdateBuilder) LocationUsages(locationUsages []*Enum) *LocationUpdateBuilder {
	builder.locationUsages = locationUsages
	builder.locationUsagesFlag = true
	return builder
}

// 工时制度 ID
//
// 示例值：4690238309151997779
func (builder *LocationUpdateBuilder) WorkingHoursTypeId(workingHoursTypeId string) *LocationUpdateBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 区域设置
//
// 示例值：zh_cn
func (builder *LocationUpdateBuilder) Locale(locale *Enum) *LocationUpdateBuilder {
	builder.locale = locale
	builder.localeFlag = true
	return builder
}

// 时区 ID
//
// 示例值：123456789
func (builder *LocationUpdateBuilder) TimeZoneId(timeZoneId string) *LocationUpdateBuilder {
	builder.timeZoneId = timeZoneId
	builder.timeZoneIdFlag = true
	return builder
}

// 默认显示语言 ID
//
// 示例值：123456789
func (builder *LocationUpdateBuilder) DisplayLanguageId(displayLanguageId string) *LocationUpdateBuilder {
	builder.displayLanguageId = displayLanguageId
	builder.displayLanguageIdFlag = true
	return builder
}

func (builder *LocationUpdateBuilder) Build() *LocationUpdate {
	req := &LocationUpdate{}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.locationUsagesFlag {
		req.LocationUsages = builder.locationUsages
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.localeFlag {
		req.Locale = builder.locale
	}
	if builder.timeZoneIdFlag {
		req.TimeZoneId = &builder.timeZoneId

	}
	if builder.displayLanguageIdFlag {
		req.DisplayLanguageId = &builder.displayLanguageId

	}
	return req
}

type LocationV2 struct {
	LocationId *string `json:"location_id,omitempty"` // 地点 ID

	ParentLocationId *string `json:"parent_location_id,omitempty"` // 上级地点ID

	Names []*I18n `json:"names,omitempty"` // 名称

	Code *string `json:"code,omitempty"` // 编码

	Active *bool `json:"active,omitempty"` // 启用状态

	LocationUsages []*Enum `json:"location_usages,omitempty"` // 地点用途

	Addresses []*Address `json:"addresses,omitempty"` // 地址

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效时间

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	Locale *Enum `json:"locale,omitempty"` // 区域设置

	TimeZoneId *string `json:"time_zone_id,omitempty"` // 时区

	DisplayLanguageId *string `json:"display_language_id,omitempty"` // 默认显示语言
}

type LocationV2Builder struct {
	locationId     string // 地点 ID
	locationIdFlag bool

	parentLocationId     string // 上级地点ID
	parentLocationIdFlag bool

	names     []*I18n // 名称
	namesFlag bool

	code     string // 编码
	codeFlag bool

	active     bool // 启用状态
	activeFlag bool

	locationUsages     []*Enum // 地点用途
	locationUsagesFlag bool

	addresses     []*Address // 地址
	addressesFlag bool

	workingHoursTypeId     string // 工时制度
	workingHoursTypeIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	expirationTime     string // 失效时间
	expirationTimeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	locale     *Enum // 区域设置
	localeFlag bool

	timeZoneId     string // 时区
	timeZoneIdFlag bool

	displayLanguageId     string // 默认显示语言
	displayLanguageIdFlag bool
}

func NewLocationV2Builder() *LocationV2Builder {
	builder := &LocationV2Builder{}
	return builder
}

// 地点 ID
//
// 示例值：4718803945687580505
func (builder *LocationV2Builder) LocationId(locationId string) *LocationV2Builder {
	builder.locationId = locationId
	builder.locationIdFlag = true
	return builder
}

// 上级地点ID
//
// 示例值：4719168654814483759
func (builder *LocationV2Builder) ParentLocationId(parentLocationId string) *LocationV2Builder {
	builder.parentLocationId = parentLocationId
	builder.parentLocationIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *LocationV2Builder) Names(names []*I18n) *LocationV2Builder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 编码
//
// 示例值：LO_CountryRegion_CHN
func (builder *LocationV2Builder) Code(code string) *LocationV2Builder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 启用状态
//
// 示例值：true
func (builder *LocationV2Builder) Active(active bool) *LocationV2Builder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 地点用途
//
// 示例值：
func (builder *LocationV2Builder) LocationUsages(locationUsages []*Enum) *LocationV2Builder {
	builder.locationUsages = locationUsages
	builder.locationUsagesFlag = true
	return builder
}

// 地址
//
// 示例值：
func (builder *LocationV2Builder) Addresses(addresses []*Address) *LocationV2Builder {
	builder.addresses = addresses
	builder.addressesFlag = true
	return builder
}

// 工时制度
//
// 示例值：4690238309151997779
func (builder *LocationV2Builder) WorkingHoursTypeId(workingHoursTypeId string) *LocationV2Builder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-05-01 00:00:00
func (builder *LocationV2Builder) EffectiveTime(effectiveTime string) *LocationV2Builder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02 00:00:00
func (builder *LocationV2Builder) ExpirationTime(expirationTime string) *LocationV2Builder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *LocationV2Builder) CustomFields(customFields []*CustomFieldData) *LocationV2Builder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 区域设置
//
// 示例值：zh_cn
func (builder *LocationV2Builder) Locale(locale *Enum) *LocationV2Builder {
	builder.locale = locale
	builder.localeFlag = true
	return builder
}

// 时区
//
// 示例值：123456789
func (builder *LocationV2Builder) TimeZoneId(timeZoneId string) *LocationV2Builder {
	builder.timeZoneId = timeZoneId
	builder.timeZoneIdFlag = true
	return builder
}

// 默认显示语言
//
// 示例值：123456789
func (builder *LocationV2Builder) DisplayLanguageId(displayLanguageId string) *LocationV2Builder {
	builder.displayLanguageId = displayLanguageId
	builder.displayLanguageIdFlag = true
	return builder
}

func (builder *LocationV2Builder) Build() *LocationV2 {
	req := &LocationV2{}
	if builder.locationIdFlag {
		req.LocationId = &builder.locationId

	}
	if builder.parentLocationIdFlag {
		req.ParentLocationId = &builder.parentLocationId

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.locationUsagesFlag {
		req.LocationUsages = builder.locationUsages
	}
	if builder.addressesFlag {
		req.Addresses = builder.addresses
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.localeFlag {
		req.Locale = builder.locale
	}
	if builder.timeZoneIdFlag {
		req.TimeZoneId = &builder.timeZoneId

	}
	if builder.displayLanguageIdFlag {
		req.DisplayLanguageId = &builder.displayLanguageId

	}
	return req
}

type LocationVersionData struct {
	LocationId *string `json:"location_id,omitempty"` // 地点ID

	LocationVersionId *string `json:"location_version_id,omitempty"` // 地点版本ID

	LocationNames []*I18n `json:"location_names,omitempty"` // 地点名称

	ParentLocationId *string `json:"parent_location_id,omitempty"` // 上级地点ID

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间

	Active *bool `json:"active,omitempty"` // 是否启用

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Code *string `json:"code,omitempty"` // 编码

	LocationUsages []*Enum `json:"location_usages,omitempty"` // 地点用途

	Locale *Enum `json:"locale,omitempty"` // 区域设置

	TimeZoneId *string `json:"time_zone_id,omitempty"` // 时区

	DisplayLanguageId *string `json:"display_language_id,omitempty"` // 默认语言

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度
}

type LocationVersionDataBuilder struct {
	locationId     string // 地点ID
	locationIdFlag bool

	locationVersionId     string // 地点版本ID
	locationVersionIdFlag bool

	locationNames     []*I18n // 地点名称
	locationNamesFlag bool

	parentLocationId     string // 上级地点ID
	parentLocationIdFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	expirationDate     string // 失效时间
	expirationDateFlag bool

	active     bool // 是否启用
	activeFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	code     string // 编码
	codeFlag bool

	locationUsages     []*Enum // 地点用途
	locationUsagesFlag bool

	locale     *Enum // 区域设置
	localeFlag bool

	timeZoneId     string // 时区
	timeZoneIdFlag bool

	displayLanguageId     string // 默认语言
	displayLanguageIdFlag bool

	workingHoursTypeId     string // 工时制度
	workingHoursTypeIdFlag bool
}

func NewLocationVersionDataBuilder() *LocationVersionDataBuilder {
	builder := &LocationVersionDataBuilder{}
	return builder
}

// 地点ID
//
// 示例值：4719456877659520852
func (builder *LocationVersionDataBuilder) LocationId(locationId string) *LocationVersionDataBuilder {
	builder.locationId = locationId
	builder.locationIdFlag = true
	return builder
}

// 地点版本ID
//
// 示例值：7238516215202170412
func (builder *LocationVersionDataBuilder) LocationVersionId(locationVersionId string) *LocationVersionDataBuilder {
	builder.locationVersionId = locationVersionId
	builder.locationVersionIdFlag = true
	return builder
}

// 地点名称
//
// 示例值：
func (builder *LocationVersionDataBuilder) LocationNames(locationNames []*I18n) *LocationVersionDataBuilder {
	builder.locationNames = locationNames
	builder.locationNamesFlag = true
	return builder
}

// 上级地点ID
//
// 示例值：8961456877659520953
func (builder *LocationVersionDataBuilder) ParentLocationId(parentLocationId string) *LocationVersionDataBuilder {
	builder.parentLocationId = parentLocationId
	builder.parentLocationIdFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *LocationVersionDataBuilder) EffectiveDate(effectiveDate string) *LocationVersionDataBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2020-05-02
func (builder *LocationVersionDataBuilder) ExpirationDate(expirationDate string) *LocationVersionDataBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *LocationVersionDataBuilder) Active(active bool) *LocationVersionDataBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *LocationVersionDataBuilder) Descriptions(descriptions []*I18n) *LocationVersionDataBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 编码
//
// 示例值：BD38591
func (builder *LocationVersionDataBuilder) Code(code string) *LocationVersionDataBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 地点用途
//
// 示例值：
func (builder *LocationVersionDataBuilder) LocationUsages(locationUsages []*Enum) *LocationVersionDataBuilder {
	builder.locationUsages = locationUsages
	builder.locationUsagesFlag = true
	return builder
}

// 区域设置
//
// 示例值：zh_cn
func (builder *LocationVersionDataBuilder) Locale(locale *Enum) *LocationVersionDataBuilder {
	builder.locale = locale
	builder.localeFlag = true
	return builder
}

// 时区
//
// 示例值：4690238309151997779
func (builder *LocationVersionDataBuilder) TimeZoneId(timeZoneId string) *LocationVersionDataBuilder {
	builder.timeZoneId = timeZoneId
	builder.timeZoneIdFlag = true
	return builder
}

// 默认语言
//
// 示例值：4690238309151997779
func (builder *LocationVersionDataBuilder) DisplayLanguageId(displayLanguageId string) *LocationVersionDataBuilder {
	builder.displayLanguageId = displayLanguageId
	builder.displayLanguageIdFlag = true
	return builder
}

// 工时制度
//
// 示例值：4690238309151997779
func (builder *LocationVersionDataBuilder) WorkingHoursTypeId(workingHoursTypeId string) *LocationVersionDataBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

func (builder *LocationVersionDataBuilder) Build() *LocationVersionData {
	req := &LocationVersionData{}
	if builder.locationIdFlag {
		req.LocationId = &builder.locationId

	}
	if builder.locationVersionIdFlag {
		req.LocationVersionId = &builder.locationVersionId

	}
	if builder.locationNamesFlag {
		req.LocationNames = builder.locationNames
	}
	if builder.parentLocationIdFlag {
		req.ParentLocationId = &builder.parentLocationId

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.locationUsagesFlag {
		req.LocationUsages = builder.locationUsages
	}
	if builder.localeFlag {
		req.Locale = builder.locale
	}
	if builder.timeZoneIdFlag {
		req.TimeZoneId = &builder.timeZoneId

	}
	if builder.displayLanguageIdFlag {
		req.DisplayLanguageId = &builder.displayLanguageId

	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	return req
}

type MatchRule struct {
	LeftValue *string `json:"left_value,omitempty"` // 左值

	Operator *string `json:"operator,omitempty"` // 操作符

	RightValues []string `json:"right_values,omitempty"` // 右值
}

type MatchRuleBuilder struct {
	leftValue     string // 左值
	leftValueFlag bool

	operator     string // 操作符
	operatorFlag bool

	rightValues     []string // 右值
	rightValuesFlag bool
}

func NewMatchRuleBuilder() *MatchRuleBuilder {
	builder := &MatchRuleBuilder{}
	return builder
}

// 左值
//
// 示例值：department
func (builder *MatchRuleBuilder) LeftValue(leftValue string) *MatchRuleBuilder {
	builder.leftValue = leftValue
	builder.leftValueFlag = true
	return builder
}

// 操作符
//
// 示例值：contains
func (builder *MatchRuleBuilder) Operator(operator string) *MatchRuleBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 右值
//
// 示例值：
func (builder *MatchRuleBuilder) RightValues(rightValues []string) *MatchRuleBuilder {
	builder.rightValues = rightValues
	builder.rightValuesFlag = true
	return builder
}

func (builder *MatchRuleBuilder) Build() *MatchRule {
	req := &MatchRule{}
	if builder.leftValueFlag {
		req.LeftValue = &builder.leftValue

	}
	if builder.operatorFlag {
		req.Operator = &builder.operator

	}
	if builder.rightValuesFlag {
		req.RightValues = builder.rightValues
	}
	return req
}

type MatchRules struct {
	MatchRules []*MatchRule `json:"match_rules,omitempty"` // 匹配规则组，组内取交集
}

type MatchRulesBuilder struct {
	matchRules     []*MatchRule // 匹配规则组，组内取交集
	matchRulesFlag bool
}

func NewMatchRulesBuilder() *MatchRulesBuilder {
	builder := &MatchRulesBuilder{}
	return builder
}

// 匹配规则组，组内取交集
//
// 示例值：
func (builder *MatchRulesBuilder) MatchRules(matchRules []*MatchRule) *MatchRulesBuilder {
	builder.matchRules = matchRules
	builder.matchRulesFlag = true
	return builder
}

func (builder *MatchRulesBuilder) Build() *MatchRules {
	req := &MatchRules{}
	if builder.matchRulesFlag {
		req.MatchRules = builder.matchRules
	}
	return req
}

type MatchingRuleDimensionItem struct {
	DimensionApiName *string `json:"dimension_api_name,omitempty"` // 维度APIName

	ValueBoolean *bool `json:"value_boolean,omitempty"` // 布尔类型的字段值

	ValueEnumIds []string `json:"value_enum_ids,omitempty"` // 枚举类型的字段值列表

	ValueLookupIds []string `json:"value_lookup_ids,omitempty"` // 查找类型的字段值列表
}

type MatchingRuleDimensionItemBuilder struct {
	dimensionApiName     string // 维度APIName
	dimensionApiNameFlag bool

	valueBoolean     bool // 布尔类型的字段值
	valueBooleanFlag bool

	valueEnumIds     []string // 枚举类型的字段值列表
	valueEnumIdsFlag bool

	valueLookupIds     []string // 查找类型的字段值列表
	valueLookupIdsFlag bool
}

func NewMatchingRuleDimensionItemBuilder() *MatchingRuleDimensionItemBuilder {
	builder := &MatchingRuleDimensionItemBuilder{}
	return builder
}

// 维度APIName
//
// 示例值：department
func (builder *MatchingRuleDimensionItemBuilder) DimensionApiName(dimensionApiName string) *MatchingRuleDimensionItemBuilder {
	builder.dimensionApiName = dimensionApiName
	builder.dimensionApiNameFlag = true
	return builder
}

// 布尔类型的字段值
//
// 示例值：false
func (builder *MatchingRuleDimensionItemBuilder) ValueBoolean(valueBoolean bool) *MatchingRuleDimensionItemBuilder {
	builder.valueBoolean = valueBoolean
	builder.valueBooleanFlag = true
	return builder
}

// 枚举类型的字段值列表
//
// 示例值：
func (builder *MatchingRuleDimensionItemBuilder) ValueEnumIds(valueEnumIds []string) *MatchingRuleDimensionItemBuilder {
	builder.valueEnumIds = valueEnumIds
	builder.valueEnumIdsFlag = true
	return builder
}

// 查找类型的字段值列表
//
// 示例值：
func (builder *MatchingRuleDimensionItemBuilder) ValueLookupIds(valueLookupIds []string) *MatchingRuleDimensionItemBuilder {
	builder.valueLookupIds = valueLookupIds
	builder.valueLookupIdsFlag = true
	return builder
}

func (builder *MatchingRuleDimensionItemBuilder) Build() *MatchingRuleDimensionItem {
	req := &MatchingRuleDimensionItem{}
	if builder.dimensionApiNameFlag {
		req.DimensionApiName = &builder.dimensionApiName

	}
	if builder.valueBooleanFlag {
		req.ValueBoolean = &builder.valueBoolean

	}
	if builder.valueEnumIdsFlag {
		req.ValueEnumIds = builder.valueEnumIds
	}
	if builder.valueLookupIdsFlag {
		req.ValueLookupIds = builder.valueLookupIds
	}
	return req
}

type MatchingRuleItem struct {
	MatchingRuleId *string `json:"matching_rule_id,omitempty"` // 匹配规则 ID

	CompanyId *string `json:"company_id,omitempty"` // 匹配的公司 ID

	Active *bool `json:"active,omitempty"` // 启停用状态

	Priority *int `json:"priority,omitempty"` // 优先级

	ScopeSetting *MatchingRuleScopeSetting `json:"scope_setting,omitempty"` // 维度设置

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述
}

type MatchingRuleItemBuilder struct {
	matchingRuleId     string // 匹配规则 ID
	matchingRuleIdFlag bool

	companyId     string // 匹配的公司 ID
	companyIdFlag bool

	active     bool // 启停用状态
	activeFlag bool

	priority     int // 优先级
	priorityFlag bool

	scopeSetting     *MatchingRuleScopeSetting // 维度设置
	scopeSettingFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool
}

func NewMatchingRuleItemBuilder() *MatchingRuleItemBuilder {
	builder := &MatchingRuleItemBuilder{}
	return builder
}

// 匹配规则 ID
//
// 示例值：77456335345
func (builder *MatchingRuleItemBuilder) MatchingRuleId(matchingRuleId string) *MatchingRuleItemBuilder {
	builder.matchingRuleId = matchingRuleId
	builder.matchingRuleIdFlag = true
	return builder
}

// 匹配的公司 ID
//
// 示例值：77456435345
func (builder *MatchingRuleItemBuilder) CompanyId(companyId string) *MatchingRuleItemBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 启停用状态
//
// 示例值：false
func (builder *MatchingRuleItemBuilder) Active(active bool) *MatchingRuleItemBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 优先级
//
// 示例值：10
func (builder *MatchingRuleItemBuilder) Priority(priority int) *MatchingRuleItemBuilder {
	builder.priority = priority
	builder.priorityFlag = true
	return builder
}

// 维度设置
//
// 示例值：
func (builder *MatchingRuleItemBuilder) ScopeSetting(scopeSetting *MatchingRuleScopeSetting) *MatchingRuleItemBuilder {
	builder.scopeSetting = scopeSetting
	builder.scopeSettingFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *MatchingRuleItemBuilder) Descriptions(descriptions []*I18n) *MatchingRuleItemBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

func (builder *MatchingRuleItemBuilder) Build() *MatchingRuleItem {
	req := &MatchingRuleItem{}
	if builder.matchingRuleIdFlag {
		req.MatchingRuleId = &builder.matchingRuleId

	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.priorityFlag {
		req.Priority = &builder.priority

	}
	if builder.scopeSettingFlag {
		req.ScopeSetting = builder.scopeSetting
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	return req
}

type MatchingRuleScopeSetting struct {
	IsAllScope *bool `json:"is_all_scope,omitempty"` // 是否适用全部范围

	MatchingRuleDimensions []*MatchingRuleDimensionItem `json:"matching_rule_dimensions,omitempty"` // 维度设置
}

type MatchingRuleScopeSettingBuilder struct {
	isAllScope     bool // 是否适用全部范围
	isAllScopeFlag bool

	matchingRuleDimensions     []*MatchingRuleDimensionItem // 维度设置
	matchingRuleDimensionsFlag bool
}

func NewMatchingRuleScopeSettingBuilder() *MatchingRuleScopeSettingBuilder {
	builder := &MatchingRuleScopeSettingBuilder{}
	return builder
}

// 是否适用全部范围
//
// 示例值：true
func (builder *MatchingRuleScopeSettingBuilder) IsAllScope(isAllScope bool) *MatchingRuleScopeSettingBuilder {
	builder.isAllScope = isAllScope
	builder.isAllScopeFlag = true
	return builder
}

// 维度设置
//
// 示例值：
func (builder *MatchingRuleScopeSettingBuilder) MatchingRuleDimensions(matchingRuleDimensions []*MatchingRuleDimensionItem) *MatchingRuleScopeSettingBuilder {
	builder.matchingRuleDimensions = matchingRuleDimensions
	builder.matchingRuleDimensionsFlag = true
	return builder
}

func (builder *MatchingRuleScopeSettingBuilder) Build() *MatchingRuleScopeSetting {
	req := &MatchingRuleScopeSetting{}
	if builder.isAllScopeFlag {
		req.IsAllScope = &builder.isAllScope

	}
	if builder.matchingRuleDimensionsFlag {
		req.MatchingRuleDimensions = builder.matchingRuleDimensions
	}
	return req
}

type Name struct {
	FullName *string `json:"full_name,omitempty"` // 全名

	FirstName *string `json:"first_name,omitempty"` // 名

	MiddleName *string `json:"middle_name,omitempty"` // 中间名

	NamePrimary *string `json:"name_primary,omitempty"` // 姓

	LocalFirstName *string `json:"local_first_name,omitempty"` // 名 - 本地文字

	LocalMiddleName *string `json:"local_middle_name,omitempty"` // 本地中间名

	LocalPrimary *string `json:"local_primary,omitempty"` // 姓 - 本地文字

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	CustomLocalName *string `json:"custom_local_name,omitempty"` // 本地文字的自定义姓名

	CustomWesternName *string `json:"custom_western_name,omitempty"` // 西方文字的自定义姓名

	AdditionalName *string `json:"additional_name,omitempty"` // 别名
}

type NameBuilder struct {
	fullName     string // 全名
	fullNameFlag bool

	firstName     string // 名
	firstNameFlag bool

	middleName     string // 中间名
	middleNameFlag bool

	namePrimary     string // 姓
	namePrimaryFlag bool

	localFirstName     string // 名 - 本地文字
	localFirstNameFlag bool

	localMiddleName     string // 本地中间名
	localMiddleNameFlag bool

	localPrimary     string // 姓 - 本地文字
	localPrimaryFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	customLocalName     string // 本地文字的自定义姓名
	customLocalNameFlag bool

	customWesternName     string // 西方文字的自定义姓名
	customWesternNameFlag bool

	additionalName     string // 别名
	additionalNameFlag bool
}

func NewNameBuilder() *NameBuilder {
	builder := &NameBuilder{}
	return builder
}

// 全名
//
// 示例值：李一一
func (builder *NameBuilder) FullName(fullName string) *NameBuilder {
	builder.fullName = fullName
	builder.fullNameFlag = true
	return builder
}

// 名
//
// 示例值：一
func (builder *NameBuilder) FirstName(firstName string) *NameBuilder {
	builder.firstName = firstName
	builder.firstNameFlag = true
	return builder
}

// 中间名
//
// 示例值：一
func (builder *NameBuilder) MiddleName(middleName string) *NameBuilder {
	builder.middleName = middleName
	builder.middleNameFlag = true
	return builder
}

// 姓
//
// 示例值：李
func (builder *NameBuilder) NamePrimary(namePrimary string) *NameBuilder {
	builder.namePrimary = namePrimary
	builder.namePrimaryFlag = true
	return builder
}

// 名 - 本地文字
//
// 示例值：一
func (builder *NameBuilder) LocalFirstName(localFirstName string) *NameBuilder {
	builder.localFirstName = localFirstName
	builder.localFirstNameFlag = true
	return builder
}

// 本地中间名
//
// 示例值：一
func (builder *NameBuilder) LocalMiddleName(localMiddleName string) *NameBuilder {
	builder.localMiddleName = localMiddleName
	builder.localMiddleNameFlag = true
	return builder
}

// 姓 - 本地文字
//
// 示例值：李
func (builder *NameBuilder) LocalPrimary(localPrimary string) *NameBuilder {
	builder.localPrimary = localPrimary
	builder.localPrimaryFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *NameBuilder) CountryRegionId(countryRegionId string) *NameBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 本地文字的自定义姓名
//
// 示例值：李一一
func (builder *NameBuilder) CustomLocalName(customLocalName string) *NameBuilder {
	builder.customLocalName = customLocalName
	builder.customLocalNameFlag = true
	return builder
}

// 西方文字的自定义姓名
//
// 示例值：YiyiLi
func (builder *NameBuilder) CustomWesternName(customWesternName string) *NameBuilder {
	builder.customWesternName = customWesternName
	builder.customWesternNameFlag = true
	return builder
}

// 别名
//
// 示例值：别名
func (builder *NameBuilder) AdditionalName(additionalName string) *NameBuilder {
	builder.additionalName = additionalName
	builder.additionalNameFlag = true
	return builder
}

func (builder *NameBuilder) Build() *Name {
	req := &Name{}
	if builder.fullNameFlag {
		req.FullName = &builder.fullName

	}
	if builder.firstNameFlag {
		req.FirstName = &builder.firstName

	}
	if builder.middleNameFlag {
		req.MiddleName = &builder.middleName

	}
	if builder.namePrimaryFlag {
		req.NamePrimary = &builder.namePrimary

	}
	if builder.localFirstNameFlag {
		req.LocalFirstName = &builder.localFirstName

	}
	if builder.localMiddleNameFlag {
		req.LocalMiddleName = &builder.localMiddleName

	}
	if builder.localPrimaryFlag {
		req.LocalPrimary = &builder.localPrimary

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.customLocalNameFlag {
		req.CustomLocalName = &builder.customLocalName

	}
	if builder.customWesternNameFlag {
		req.CustomWesternName = &builder.customWesternName

	}
	if builder.additionalNameFlag {
		req.AdditionalName = &builder.additionalName

	}
	return req
}

type NameForUpdate struct {
	FullName *string `json:"full_name,omitempty"` // 全名

	FirstName *string `json:"first_name,omitempty"` // 名

	MiddleName *string `json:"middle_name,omitempty"` // 中间名

	NamePrimary *string `json:"name_primary,omitempty"` // 姓

	LocalFirstName *string `json:"local_first_name,omitempty"` // 名 - 本地文字

	LocalMiddleName *string `json:"local_middle_name,omitempty"` // 本地中间名

	LocalPrimary *string `json:"local_primary,omitempty"` // 姓 - 本地文字

	CustomLocalName *string `json:"custom_local_name,omitempty"` // 自定义姓名（本地文字）

	CustomWesternName *string `json:"custom_western_name,omitempty"` // 自定义姓名（西方文字）

	CountryRegion *string `json:"country_region,omitempty"` // 国家/地区

	NameType *string `json:"name_type,omitempty"` // 姓名类型，枚举值

	AdditionalName *string `json:"additional_name,omitempty"` // 别名
}

type NameForUpdateBuilder struct {
	fullName     string // 全名
	fullNameFlag bool

	firstName     string // 名
	firstNameFlag bool

	middleName     string // 中间名
	middleNameFlag bool

	namePrimary     string // 姓
	namePrimaryFlag bool

	localFirstName     string // 名 - 本地文字
	localFirstNameFlag bool

	localMiddleName     string // 本地中间名
	localMiddleNameFlag bool

	localPrimary     string // 姓 - 本地文字
	localPrimaryFlag bool

	customLocalName     string // 自定义姓名（本地文字）
	customLocalNameFlag bool

	customWesternName     string // 自定义姓名（西方文字）
	customWesternNameFlag bool

	countryRegion     string // 国家/地区
	countryRegionFlag bool

	nameType     string // 姓名类型，枚举值
	nameTypeFlag bool

	additionalName     string // 别名
	additionalNameFlag bool
}

func NewNameForUpdateBuilder() *NameForUpdateBuilder {
	builder := &NameForUpdateBuilder{}
	return builder
}

// 全名
//
// 示例值：李一一
func (builder *NameForUpdateBuilder) FullName(fullName string) *NameForUpdateBuilder {
	builder.fullName = fullName
	builder.fullNameFlag = true
	return builder
}

// 名
//
// 示例值：一
func (builder *NameForUpdateBuilder) FirstName(firstName string) *NameForUpdateBuilder {
	builder.firstName = firstName
	builder.firstNameFlag = true
	return builder
}

// 中间名
//
// 示例值：一
func (builder *NameForUpdateBuilder) MiddleName(middleName string) *NameForUpdateBuilder {
	builder.middleName = middleName
	builder.middleNameFlag = true
	return builder
}

// 姓
//
// 示例值：李
func (builder *NameForUpdateBuilder) NamePrimary(namePrimary string) *NameForUpdateBuilder {
	builder.namePrimary = namePrimary
	builder.namePrimaryFlag = true
	return builder
}

// 名 - 本地文字
//
// 示例值：一
func (builder *NameForUpdateBuilder) LocalFirstName(localFirstName string) *NameForUpdateBuilder {
	builder.localFirstName = localFirstName
	builder.localFirstNameFlag = true
	return builder
}

// 本地中间名
//
// 示例值：一
func (builder *NameForUpdateBuilder) LocalMiddleName(localMiddleName string) *NameForUpdateBuilder {
	builder.localMiddleName = localMiddleName
	builder.localMiddleNameFlag = true
	return builder
}

// 姓 - 本地文字
//
// 示例值：李
func (builder *NameForUpdateBuilder) LocalPrimary(localPrimary string) *NameForUpdateBuilder {
	builder.localPrimary = localPrimary
	builder.localPrimaryFlag = true
	return builder
}

// 自定义姓名（本地文字）
//
// 示例值：李一一
func (builder *NameForUpdateBuilder) CustomLocalName(customLocalName string) *NameForUpdateBuilder {
	builder.customLocalName = customLocalName
	builder.customLocalNameFlag = true
	return builder
}

// 自定义姓名（西方文字）
//
// 示例值：YiyiLi
func (builder *NameForUpdateBuilder) CustomWesternName(customWesternName string) *NameForUpdateBuilder {
	builder.customWesternName = customWesternName
	builder.customWesternNameFlag = true
	return builder
}

// 国家/地区
//
// 示例值：6862995757234914824
func (builder *NameForUpdateBuilder) CountryRegion(countryRegion string) *NameForUpdateBuilder {
	builder.countryRegion = countryRegion
	builder.countryRegionFlag = true
	return builder
}

// 姓名类型，枚举值
//
// 示例值：legal_name，preferred_name，additional_name
func (builder *NameForUpdateBuilder) NameType(nameType string) *NameForUpdateBuilder {
	builder.nameType = nameType
	builder.nameTypeFlag = true
	return builder
}

// 别名
//
// 示例值：别名
func (builder *NameForUpdateBuilder) AdditionalName(additionalName string) *NameForUpdateBuilder {
	builder.additionalName = additionalName
	builder.additionalNameFlag = true
	return builder
}

func (builder *NameForUpdateBuilder) Build() *NameForUpdate {
	req := &NameForUpdate{}
	if builder.fullNameFlag {
		req.FullName = &builder.fullName

	}
	if builder.firstNameFlag {
		req.FirstName = &builder.firstName

	}
	if builder.middleNameFlag {
		req.MiddleName = &builder.middleName

	}
	if builder.namePrimaryFlag {
		req.NamePrimary = &builder.namePrimary

	}
	if builder.localFirstNameFlag {
		req.LocalFirstName = &builder.localFirstName

	}
	if builder.localMiddleNameFlag {
		req.LocalMiddleName = &builder.localMiddleName

	}
	if builder.localPrimaryFlag {
		req.LocalPrimary = &builder.localPrimary

	}
	if builder.customLocalNameFlag {
		req.CustomLocalName = &builder.customLocalName

	}
	if builder.customWesternNameFlag {
		req.CustomWesternName = &builder.customWesternName

	}
	if builder.countryRegionFlag {
		req.CountryRegion = &builder.countryRegion

	}
	if builder.nameTypeFlag {
		req.NameType = &builder.nameType

	}
	if builder.additionalNameFlag {
		req.AdditionalName = &builder.additionalName

	}
	return req
}

type NationalId struct {
	NationalIdTypeId *string `json:"national_id_type_id,omitempty"` // 国家证件类型

	NationalIdNumber *string `json:"national_id_number,omitempty"` // 证件号码

	IssueDate *string `json:"issue_date,omitempty"` // 证件签发日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 证件到期日期

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	IssuedBy *string `json:"issued_by,omitempty"` // 证件签发机构

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type NationalIdBuilder struct {
	nationalIdTypeId     string // 国家证件类型
	nationalIdTypeIdFlag bool

	nationalIdNumber     string // 证件号码
	nationalIdNumberFlag bool

	issueDate     string // 证件签发日期
	issueDateFlag bool

	expirationDate     string // 证件到期日期
	expirationDateFlag bool

	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	issuedBy     string // 证件签发机构
	issuedByFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewNationalIdBuilder() *NationalIdBuilder {
	builder := &NationalIdBuilder{}
	return builder
}

// 国家证件类型
//
// 示例值：6863330041896371725
func (builder *NationalIdBuilder) NationalIdTypeId(nationalIdTypeId string) *NationalIdBuilder {
	builder.nationalIdTypeId = nationalIdTypeId
	builder.nationalIdTypeIdFlag = true
	return builder
}

// 证件号码
//
// 示例值：1231131333
func (builder *NationalIdBuilder) NationalIdNumber(nationalIdNumber string) *NationalIdBuilder {
	builder.nationalIdNumber = nationalIdNumber
	builder.nationalIdNumberFlag = true
	return builder
}

// 证件签发日期
//
// 示例值：2020-04-01
func (builder *NationalIdBuilder) IssueDate(issueDate string) *NationalIdBuilder {
	builder.issueDate = issueDate
	builder.issueDateFlag = true
	return builder
}

// 证件到期日期
//
// 示例值：2020-05-21
func (builder *NationalIdBuilder) ExpirationDate(expirationDate string) *NationalIdBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *NationalIdBuilder) CountryRegionId(countryRegionId string) *NationalIdBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 证件签发机构
//
// 示例值：北京市公安局
func (builder *NationalIdBuilder) IssuedBy(issuedBy string) *NationalIdBuilder {
	builder.issuedBy = issuedBy
	builder.issuedByFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *NationalIdBuilder) CustomFields(customFields []*CustomFieldData) *NationalIdBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *NationalIdBuilder) Build() *NationalId {
	req := &NationalId{}
	if builder.nationalIdTypeIdFlag {
		req.NationalIdTypeId = &builder.nationalIdTypeId

	}
	if builder.nationalIdNumberFlag {
		req.NationalIdNumber = &builder.nationalIdNumber

	}
	if builder.issueDateFlag {
		req.IssueDate = &builder.issueDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.issuedByFlag {
		req.IssuedBy = &builder.issuedBy

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type NationalIdForUpdate struct {
	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区

	NationalIdTypeId *string `json:"national_id_type_id,omitempty"` // 国家证件类型

	NationalIdNumber *string `json:"national_id_number,omitempty"` // 证件号码

	IssueDate *string `json:"issue_date,omitempty"` // 证件签发日期

	ExpirationDate *string `json:"expiration_date,omitempty"` // 证件到期日期

	IssuedBy *string `json:"issued_by,omitempty"` // 证件签发机构

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type NationalIdForUpdateBuilder struct {
	countryRegionId     string // 国家 / 地区
	countryRegionIdFlag bool

	nationalIdTypeId     string // 国家证件类型
	nationalIdTypeIdFlag bool

	nationalIdNumber     string // 证件号码
	nationalIdNumberFlag bool

	issueDate     string // 证件签发日期
	issueDateFlag bool

	expirationDate     string // 证件到期日期
	expirationDateFlag bool

	issuedBy     string // 证件签发机构
	issuedByFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewNationalIdForUpdateBuilder() *NationalIdForUpdateBuilder {
	builder := &NationalIdForUpdateBuilder{}
	return builder
}

// 国家 / 地区
//
// 示例值：6862995757234914824
func (builder *NationalIdForUpdateBuilder) CountryRegionId(countryRegionId string) *NationalIdForUpdateBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 国家证件类型
//
// 示例值：6863330041896371725
func (builder *NationalIdForUpdateBuilder) NationalIdTypeId(nationalIdTypeId string) *NationalIdForUpdateBuilder {
	builder.nationalIdTypeId = nationalIdTypeId
	builder.nationalIdTypeIdFlag = true
	return builder
}

// 证件号码
//
// 示例值：1231131333
func (builder *NationalIdForUpdateBuilder) NationalIdNumber(nationalIdNumber string) *NationalIdForUpdateBuilder {
	builder.nationalIdNumber = nationalIdNumber
	builder.nationalIdNumberFlag = true
	return builder
}

// 证件签发日期
//
// 示例值：2020-04-01
func (builder *NationalIdForUpdateBuilder) IssueDate(issueDate string) *NationalIdForUpdateBuilder {
	builder.issueDate = issueDate
	builder.issueDateFlag = true
	return builder
}

// 证件到期日期
//
// 示例值：2020-05-21
func (builder *NationalIdForUpdateBuilder) ExpirationDate(expirationDate string) *NationalIdForUpdateBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 证件签发机构
//
// 示例值：北京市公安局
func (builder *NationalIdForUpdateBuilder) IssuedBy(issuedBy string) *NationalIdForUpdateBuilder {
	builder.issuedBy = issuedBy
	builder.issuedByFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *NationalIdForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *NationalIdForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *NationalIdForUpdateBuilder) Build() *NationalIdForUpdate {
	req := &NationalIdForUpdate{}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.nationalIdTypeIdFlag {
		req.NationalIdTypeId = &builder.nationalIdTypeId

	}
	if builder.nationalIdNumberFlag {
		req.NationalIdNumber = &builder.nationalIdNumber

	}
	if builder.issueDateFlag {
		req.IssueDate = &builder.issueDate

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.issuedByFlag {
		req.IssuedBy = &builder.issuedBy

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type Nationality struct {
	NationalityId *string `json:"nationality_id,omitempty"` // 国籍 ID，对应[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)等接口返回的 `nationality_id_v2` 字段

	Name []*I18n `json:"name,omitempty"` // 名称

	Alpha2Code *string `json:"alpha_2_code,omitempty"` // 国家/地区两位字母编码（ISO 3166-1）

	Alpha3Code *string `json:"alpha_3_code,omitempty"` // 国家/地区三位字母编码（ISO 3166-1）

	NumericCode *int `json:"numeric_code,omitempty"` // 数字代码

	CountryRegionId *string `json:"country_region_id,omitempty"` // 所属国家/地区 ID，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得

	Status *int `json:"status,omitempty"` // 状态
}

type NationalityBuilder struct {
	nationalityId     string // 国籍 ID，对应[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)等接口返回的 `nationality_id_v2` 字段
	nationalityIdFlag bool

	name     []*I18n // 名称
	nameFlag bool

	alpha2Code     string // 国家/地区两位字母编码（ISO 3166-1）
	alpha2CodeFlag bool

	alpha3Code     string // 国家/地区三位字母编码（ISO 3166-1）
	alpha3CodeFlag bool

	numericCode     int // 数字代码
	numericCodeFlag bool

	countryRegionId     string // 所属国家/地区 ID，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
	countryRegionIdFlag bool

	status     int // 状态
	statusFlag bool
}

func NewNationalityBuilder() *NationalityBuilder {
	builder := &NationalityBuilder{}
	return builder
}

// 国籍 ID，对应[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)等接口返回的 `nationality_id_v2` 字段
//
// 示例值：7075702736045475372
func (builder *NationalityBuilder) NationalityId(nationalityId string) *NationalityBuilder {
	builder.nationalityId = nationalityId
	builder.nationalityIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *NationalityBuilder) Name(name []*I18n) *NationalityBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 国家/地区两位字母编码（ISO 3166-1）
//
// 示例值：CN
func (builder *NationalityBuilder) Alpha2Code(alpha2Code string) *NationalityBuilder {
	builder.alpha2Code = alpha2Code
	builder.alpha2CodeFlag = true
	return builder
}

// 国家/地区三位字母编码（ISO 3166-1）
//
// 示例值：CHN
func (builder *NationalityBuilder) Alpha3Code(alpha3Code string) *NationalityBuilder {
	builder.alpha3Code = alpha3Code
	builder.alpha3CodeFlag = true
	return builder
}

// 数字代码
//
// 示例值：156
func (builder *NationalityBuilder) NumericCode(numericCode int) *NationalityBuilder {
	builder.numericCode = numericCode
	builder.numericCodeFlag = true
	return builder
}

// 所属国家/地区 ID，详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
//
// 示例值：6862995757234914824
func (builder *NationalityBuilder) CountryRegionId(countryRegionId string) *NationalityBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *NationalityBuilder) Status(status int) *NationalityBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *NationalityBuilder) Build() *Nationality {
	req := &Nationality{}
	if builder.nationalityIdFlag {
		req.NationalityId = &builder.nationalityId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.alpha2CodeFlag {
		req.Alpha2Code = &builder.alpha2Code

	}
	if builder.alpha3CodeFlag {
		req.Alpha3Code = &builder.alpha3Code

	}
	if builder.numericCodeFlag {
		req.NumericCode = &builder.numericCode

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type NoticePeriodDetail struct {
	WkId *string `json:"wk_id,omitempty"` // ID

	Value *int `json:"value,omitempty"` // 数值

	ValueUnit *string `json:"value_unit,omitempty"` // 单位

	Name *I18n `json:"name,omitempty"` // 名称
}

type NoticePeriodDetailBuilder struct {
	wkId     string // ID
	wkIdFlag bool

	value     int // 数值
	valueFlag bool

	valueUnit     string // 单位
	valueUnitFlag bool

	name     *I18n // 名称
	nameFlag bool
}

func NewNoticePeriodDetailBuilder() *NoticePeriodDetailBuilder {
	builder := &NoticePeriodDetailBuilder{}
	return builder
}

// ID
//
// 示例值：4698019107896524633
func (builder *NoticePeriodDetailBuilder) WkId(wkId string) *NoticePeriodDetailBuilder {
	builder.wkId = wkId
	builder.wkIdFlag = true
	return builder
}

// 数值
//
// 示例值：1
func (builder *NoticePeriodDetailBuilder) Value(value int) *NoticePeriodDetailBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 单位
//
// 示例值：月
func (builder *NoticePeriodDetailBuilder) ValueUnit(valueUnit string) *NoticePeriodDetailBuilder {
	builder.valueUnit = valueUnit
	builder.valueUnitFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *NoticePeriodDetailBuilder) Name(name *I18n) *NoticePeriodDetailBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *NoticePeriodDetailBuilder) Build() *NoticePeriodDetail {
	req := &NoticePeriodDetail{}
	if builder.wkIdFlag {
		req.WkId = &builder.wkId

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	if builder.valueUnitFlag {
		req.ValueUnit = &builder.valueUnit

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type ObjectFieldData struct {
	FieldName *string `json:"field_name,omitempty"` // 字段名

	Value *string `json:"value,omitempty"` // 字段值，是json转义后的字符串，根据元数据定义不同，字段格式不同(123, 123.23, true, [\"id1\",\"id2\], 2006-01-02 15:04:05])
}

type ObjectFieldDataBuilder struct {
	fieldName     string // 字段名
	fieldNameFlag bool

	value     string // 字段值，是json转义后的字符串，根据元数据定义不同，字段格式不同(123, 123.23, true, [\"id1\",\"id2\], 2006-01-02 15:04:05])
	valueFlag bool
}

func NewObjectFieldDataBuilder() *ObjectFieldDataBuilder {
	builder := &ObjectFieldDataBuilder{}
	return builder
}

// 字段名
//
// 示例值：name
func (builder *ObjectFieldDataBuilder) FieldName(fieldName string) *ObjectFieldDataBuilder {
	builder.fieldName = fieldName
	builder.fieldNameFlag = true
	return builder
}

// 字段值，是json转义后的字符串，根据元数据定义不同，字段格式不同(123, 123.23, true, [\"id1\",\"id2\], 2006-01-02 15:04:05])
//
// 示例值：Sandy
func (builder *ObjectFieldDataBuilder) Value(value string) *ObjectFieldDataBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *ObjectFieldDataBuilder) Build() *ObjectFieldData {
	req := &ObjectFieldData{}
	if builder.fieldNameFlag {
		req.FieldName = &builder.fieldName

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type OfferInfo struct {
	OfferId *string `json:"offer_id,omitempty"` // Offer id

	Offer *string `json:"offer,omitempty"` // Offer id查找类型ID

	OfferHrId *string `json:"offer_hr_id,omitempty"` // Offer hr id

	DepartmentId *string `json:"department_id,omitempty"` // 部门 id

	DirectLeaderId *string `json:"direct_leader_id,omitempty"` // 直属领导id

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级id

	JobId *string `json:"job_id,omitempty"` // 职务id

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列id

	JobLevelId *string `json:"job_level_id,omitempty"` // 级别id

	JobTitle *string `json:"job_title,omitempty"` // 职务头衔id

	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期

	ContractStartDate *string `json:"contract_start_date,omitempty"` // 合同开始日期

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 合同结束日期

	DurationPeriod *float64 `json:"duration_period,omitempty"` // 合同期限时长

	DurationUnit *string `json:"duration_unit,omitempty"` // 合同期限单位

	OnboardingDate *string `json:"onboarding_date,omitempty"` // 入职日期

	OnboardingLocationId *string `json:"onboarding_location_id,omitempty"` // 入职地点id

	OfficeLocationId *string `json:"office_location_id,omitempty"` // 办公地点id

	RecruitmentTypeId *string `json:"recruitment_type_id,omitempty"` // 招聘来源id

	ProbationPeriod *string `json:"probation_period,omitempty"` // 试用期时长

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型id

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型id

	EmploymentTypeId *string `json:"employment_type_id,omitempty"` // 雇佣类型id

	WorkEmail *string `json:"work_email,omitempty"` // 工作邮箱

	DurationTypeId *string `json:"duration_type_id,omitempty"` // 期限类型id

	SigningTypeId *string `json:"signing_type_id,omitempty"` // 签订类型id

	EntryMode *string `json:"entry_mode,omitempty"` // 入职方式

	SocialSecurityCityId *string `json:"social_security_city_id,omitempty"` // 社保城市id

	ContractType *string `json:"contract_type,omitempty"` // 合同类型

	Company *string `json:"company,omitempty"` // 公司

	CostCenterRate []*JobDataCostCenter `json:"cost_center_rate,omitempty"` // 成本中心分摊信息

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等ID

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司

	WorkShift *string `json:"work_shift,omitempty"` // 排班

	CompensationType *string `json:"compensation_type,omitempty"` // 薪资类型

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点id

	OnboardingAddressId *string `json:"onboarding_address_id,omitempty"` // 入职地址id

	OfficeAddressId *string `json:"office_address_id,omitempty"` // 办公地址id

	PositionId *string `json:"position_id,omitempty"` // 岗位id

	WorkingCalendarId *string `json:"working_calendar_id,omitempty"` // 工作日历id

	WorkingHoursType *string `json:"working_hours_type,omitempty"` // 工时制度

	PayGroupId *string `json:"pay_group_id,omitempty"` // 薪资组

	FlowId *string `json:"flow_id,omitempty"` // 入职流程ID

	CheckInTime *string `json:"check_in_time,omitempty"` // 签到日期

	CheckInMethod *string `json:"check_in_method,omitempty"` // 签到方式

	SeniorityDate *string `json:"seniority_date,omitempty"` // 司龄起算日期

	SeniorityAdjustInformationList []*PrehireSeniorityAdjustInformation `json:"seniority_adjust_information_list,omitempty"` // 司龄调整信息

	NoticePeriodProbationVoluntary *NoticePeriodDetail `json:"notice_period_probation_voluntary,omitempty"` // 试用期内通知期（主动离职)

	NoticePeriodProbationInvoluntary *NoticePeriodDetail `json:"notice_period_probation_involuntary,omitempty"` // 试用期内通知期（被动离职）

	NoticePeriodPositiveVoluntary *NoticePeriodDetail `json:"notice_period_positive_voluntary,omitempty"` // 转正后通知期（主动离职）

	NoticePeriodPositiveInvoluntary *NoticePeriodDetail `json:"notice_period_positive_involuntary,omitempty"` // 转正后通知期（被动离职）

	ConditionWorker *bool `json:"condition_worker,omitempty"` // 是否外部人员

	NonCompeteCovenant *bool `json:"non_compete_covenant,omitempty"` // 是否包含竞业条款

	CompanySponsoredVisa *bool `json:"company_sponsored_visa,omitempty"` // 需要公司办理签证

	HasOfferSalary *bool `json:"has_offer_salary,omitempty"` // 是否有 Offer 薪酬

	WorkStation *string `json:"work_station,omitempty"` // 工位

	Pathway *string `json:"pathway,omitempty"` // 通道

	DefaultCostCenter *PrehireDefaultCostCenterUpdate `json:"default_cost_center,omitempty"` // 默认成本中心

	CostAllocation *CostAllocation `json:"cost_allocation,omitempty"` // 成本分摊

	TalentId *string `json:"talent_id,omitempty"` // 人才ID

	ReuseFeishuAccount *string `json:"reuse_feishu_account,omitempty"` // 是否复用飞书账号

	ReusedFeishuAccountId *string `json:"reused_feishu_account_id,omitempty"` // 复用的飞书账号
}

type OfferInfoBuilder struct {
	offerId     string // Offer id
	offerIdFlag bool

	offer     string // Offer id查找类型ID
	offerFlag bool

	offerHrId     string // Offer hr id
	offerHrIdFlag bool

	departmentId     string // 部门 id
	departmentIdFlag bool

	directLeaderId     string // 直属领导id
	directLeaderIdFlag bool

	dottedLineManagerId     string // 虚线上级id
	dottedLineManagerIdFlag bool

	jobId     string // 职务id
	jobIdFlag bool

	jobFamilyId     string // 序列id
	jobFamilyIdFlag bool

	jobLevelId     string // 级别id
	jobLevelIdFlag bool

	jobTitle     string // 职务头衔id
	jobTitleFlag bool

	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationEndDate     string // 试用期结束日期
	probationEndDateFlag bool

	contractStartDate     string // 合同开始日期
	contractStartDateFlag bool

	contractEndDate     string // 合同结束日期
	contractEndDateFlag bool

	durationPeriod     float64 // 合同期限时长
	durationPeriodFlag bool

	durationUnit     string // 合同期限单位
	durationUnitFlag bool

	onboardingDate     string // 入职日期
	onboardingDateFlag bool

	onboardingLocationId     string // 入职地点id
	onboardingLocationIdFlag bool

	officeLocationId     string // 办公地点id
	officeLocationIdFlag bool

	recruitmentTypeId     string // 招聘来源id
	recruitmentTypeIdFlag bool

	probationPeriod     string // 试用期时长
	probationPeriodFlag bool

	employeeTypeId     string // 人员类型id
	employeeTypeIdFlag bool

	employeeSubtypeId     string // 人员子类型id
	employeeSubtypeIdFlag bool

	employmentTypeId     string // 雇佣类型id
	employmentTypeIdFlag bool

	workEmail     string // 工作邮箱
	workEmailFlag bool

	durationTypeId     string // 期限类型id
	durationTypeIdFlag bool

	signingTypeId     string // 签订类型id
	signingTypeIdFlag bool

	entryMode     string // 入职方式
	entryModeFlag bool

	socialSecurityCityId     string // 社保城市id
	socialSecurityCityIdFlag bool

	contractType     string // 合同类型
	contractTypeFlag bool

	company     string // 公司
	companyFlag bool

	costCenterRate     []*JobDataCostCenter // 成本中心分摊信息
	costCenterRateFlag bool

	jobGradeId     string // 职等ID
	jobGradeIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	serviceCompany     string // 任职公司
	serviceCompanyFlag bool

	workShift     string // 排班
	workShiftFlag bool

	compensationType     string // 薪资类型
	compensationTypeFlag bool

	workLocationId     string // 工作地点id
	workLocationIdFlag bool

	onboardingAddressId     string // 入职地址id
	onboardingAddressIdFlag bool

	officeAddressId     string // 办公地址id
	officeAddressIdFlag bool

	positionId     string // 岗位id
	positionIdFlag bool

	workingCalendarId     string // 工作日历id
	workingCalendarIdFlag bool

	workingHoursType     string // 工时制度
	workingHoursTypeFlag bool

	payGroupId     string // 薪资组
	payGroupIdFlag bool

	flowId     string // 入职流程ID
	flowIdFlag bool

	checkInTime     string // 签到日期
	checkInTimeFlag bool

	checkInMethod     string // 签到方式
	checkInMethodFlag bool

	seniorityDate     string // 司龄起算日期
	seniorityDateFlag bool

	seniorityAdjustInformationList     []*PrehireSeniorityAdjustInformation // 司龄调整信息
	seniorityAdjustInformationListFlag bool

	noticePeriodProbationVoluntary     *NoticePeriodDetail // 试用期内通知期（主动离职)
	noticePeriodProbationVoluntaryFlag bool

	noticePeriodProbationInvoluntary     *NoticePeriodDetail // 试用期内通知期（被动离职）
	noticePeriodProbationInvoluntaryFlag bool

	noticePeriodPositiveVoluntary     *NoticePeriodDetail // 转正后通知期（主动离职）
	noticePeriodPositiveVoluntaryFlag bool

	noticePeriodPositiveInvoluntary     *NoticePeriodDetail // 转正后通知期（被动离职）
	noticePeriodPositiveInvoluntaryFlag bool

	conditionWorker     bool // 是否外部人员
	conditionWorkerFlag bool

	nonCompeteCovenant     bool // 是否包含竞业条款
	nonCompeteCovenantFlag bool

	companySponsoredVisa     bool // 需要公司办理签证
	companySponsoredVisaFlag bool

	hasOfferSalary     bool // 是否有 Offer 薪酬
	hasOfferSalaryFlag bool

	workStation     string // 工位
	workStationFlag bool

	pathway     string // 通道
	pathwayFlag bool

	defaultCostCenter     *PrehireDefaultCostCenterUpdate // 默认成本中心
	defaultCostCenterFlag bool

	costAllocation     *CostAllocation // 成本分摊
	costAllocationFlag bool

	talentId     string // 人才ID
	talentIdFlag bool

	reuseFeishuAccount     string // 是否复用飞书账号
	reuseFeishuAccountFlag bool

	reusedFeishuAccountId     string // 复用的飞书账号
	reusedFeishuAccountIdFlag bool
}

func NewOfferInfoBuilder() *OfferInfoBuilder {
	builder := &OfferInfoBuilder{}
	return builder
}

// Offer id
//
// 示例值：7032210902531327521
func (builder *OfferInfoBuilder) OfferId(offerId string) *OfferInfoBuilder {
	builder.offerId = offerId
	builder.offerIdFlag = true
	return builder
}

// Offer id查找类型ID
//
// 示例值：7032210902531327521
func (builder *OfferInfoBuilder) Offer(offer string) *OfferInfoBuilder {
	builder.offer = offer
	builder.offerFlag = true
	return builder
}

// Offer hr id
//
// 示例值：7032210902531327521
func (builder *OfferInfoBuilder) OfferHrId(offerHrId string) *OfferInfoBuilder {
	builder.offerHrId = offerHrId
	builder.offerHrIdFlag = true
	return builder
}

// 部门 id
//
// 示例值：7147562782945478177
func (builder *OfferInfoBuilder) DepartmentId(departmentId string) *OfferInfoBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 直属领导id
//
// 示例值：7032210902531327521
func (builder *OfferInfoBuilder) DirectLeaderId(directLeaderId string) *OfferInfoBuilder {
	builder.directLeaderId = directLeaderId
	builder.directLeaderIdFlag = true
	return builder
}

// 虚线上级id
//
// 示例值：7032210902531327521
func (builder *OfferInfoBuilder) DottedLineManagerId(dottedLineManagerId string) *OfferInfoBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 职务id
//
// 示例值：6977976735715378724
func (builder *OfferInfoBuilder) JobId(jobId string) *OfferInfoBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 序列id
//
// 示例值：6977972856625939999
func (builder *OfferInfoBuilder) JobFamilyId(jobFamilyId string) *OfferInfoBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 级别id
//
// 示例值：6977971894960145950
func (builder *OfferInfoBuilder) JobLevelId(jobLevelId string) *OfferInfoBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职务头衔id
//
// 示例值：java
func (builder *OfferInfoBuilder) JobTitle(jobTitle string) *OfferInfoBuilder {
	builder.jobTitle = jobTitle
	builder.jobTitleFlag = true
	return builder
}

// 试用期开始日期
//
// 示例值：2022-07-29
func (builder *OfferInfoBuilder) ProbationStartDate(probationStartDate string) *OfferInfoBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期结束日期
//
// 示例值：2023-04-07
func (builder *OfferInfoBuilder) ProbationEndDate(probationEndDate string) *OfferInfoBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 合同开始日期
//
// 示例值：2022-10-08
func (builder *OfferInfoBuilder) ContractStartDate(contractStartDate string) *OfferInfoBuilder {
	builder.contractStartDate = contractStartDate
	builder.contractStartDateFlag = true
	return builder
}

// 合同结束日期
//
// 示例值：2025-10-07
func (builder *OfferInfoBuilder) ContractEndDate(contractEndDate string) *OfferInfoBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

// 合同期限时长
//
// 示例值：3
func (builder *OfferInfoBuilder) DurationPeriod(durationPeriod float64) *OfferInfoBuilder {
	builder.durationPeriod = durationPeriod
	builder.durationPeriodFlag = true
	return builder
}

// 合同期限单位
//
// 示例值：年
func (builder *OfferInfoBuilder) DurationUnit(durationUnit string) *OfferInfoBuilder {
	builder.durationUnit = durationUnit
	builder.durationUnitFlag = true
	return builder
}

// 入职日期
//
// 示例值：2022-10-08
func (builder *OfferInfoBuilder) OnboardingDate(onboardingDate string) *OfferInfoBuilder {
	builder.onboardingDate = onboardingDate
	builder.onboardingDateFlag = true
	return builder
}

// 入职地点id
//
// 示例值：6977976687350924832
func (builder *OfferInfoBuilder) OnboardingLocationId(onboardingLocationId string) *OfferInfoBuilder {
	builder.onboardingLocationId = onboardingLocationId
	builder.onboardingLocationIdFlag = true
	return builder
}

// 办公地点id
//
// 示例值：6977976687350924832
func (builder *OfferInfoBuilder) OfficeLocationId(officeLocationId string) *OfferInfoBuilder {
	builder.officeLocationId = officeLocationId
	builder.officeLocationIdFlag = true
	return builder
}

// 招聘来源id
//
// 示例值：experienced_professionals
func (builder *OfferInfoBuilder) RecruitmentTypeId(recruitmentTypeId string) *OfferInfoBuilder {
	builder.recruitmentTypeId = recruitmentTypeId
	builder.recruitmentTypeIdFlag = true
	return builder
}

// 试用期时长
//
// 示例值：6
func (builder *OfferInfoBuilder) ProbationPeriod(probationPeriod string) *OfferInfoBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

// 人员类型id
//
// 示例值：6977973225846343171
func (builder *OfferInfoBuilder) EmployeeTypeId(employeeTypeId string) *OfferInfoBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 人员子类型id
//
// 示例值：6977973225846343171
func (builder *OfferInfoBuilder) EmployeeSubtypeId(employeeSubtypeId string) *OfferInfoBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

// 雇佣类型id
//
// 示例值：6977973225846343171
func (builder *OfferInfoBuilder) EmploymentTypeId(employmentTypeId string) *OfferInfoBuilder {
	builder.employmentTypeId = employmentTypeId
	builder.employmentTypeIdFlag = true
	return builder
}

// 工作邮箱
//
// 示例值：joshua@bytedance.com
func (builder *OfferInfoBuilder) WorkEmail(workEmail string) *OfferInfoBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 期限类型id
//
// 示例值：6977973225846343171
func (builder *OfferInfoBuilder) DurationTypeId(durationTypeId string) *OfferInfoBuilder {
	builder.durationTypeId = durationTypeId
	builder.durationTypeIdFlag = true
	return builder
}

// 签订类型id
//
// 示例值：6738317738688661772
func (builder *OfferInfoBuilder) SigningTypeId(signingTypeId string) *OfferInfoBuilder {
	builder.signingTypeId = signingTypeId
	builder.signingTypeIdFlag = true
	return builder
}

// 入职方式
//
// 示例值：1
func (builder *OfferInfoBuilder) EntryMode(entryMode string) *OfferInfoBuilder {
	builder.entryMode = entryMode
	builder.entryModeFlag = true
	return builder
}

// 社保城市id
//
// 示例值：xxx
func (builder *OfferInfoBuilder) SocialSecurityCityId(socialSecurityCityId string) *OfferInfoBuilder {
	builder.socialSecurityCityId = socialSecurityCityId
	builder.socialSecurityCityIdFlag = true
	return builder
}

// 合同类型
//
// 示例值：6738317738688661772
func (builder *OfferInfoBuilder) ContractType(contractType string) *OfferInfoBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// 公司
//
// 示例值：6738317738688661772
func (builder *OfferInfoBuilder) Company(company string) *OfferInfoBuilder {
	builder.company = company
	builder.companyFlag = true
	return builder
}

// 成本中心分摊信息
//
// 示例值：
func (builder *OfferInfoBuilder) CostCenterRate(costCenterRate []*JobDataCostCenter) *OfferInfoBuilder {
	builder.costCenterRate = costCenterRate
	builder.costCenterRateFlag = true
	return builder
}

// 职等ID
//
// 示例值：6738317738688661772
func (builder *OfferInfoBuilder) JobGradeId(jobGradeId string) *OfferInfoBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *OfferInfoBuilder) CustomFields(customFields []*ObjectFieldData) *OfferInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 任职公司
//
// 示例值：6738317738688661772
func (builder *OfferInfoBuilder) ServiceCompany(serviceCompany string) *OfferInfoBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 排班
//
// 示例值：work_shift
func (builder *OfferInfoBuilder) WorkShift(workShift string) *OfferInfoBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 薪资类型
//
// 示例值：hourly
func (builder *OfferInfoBuilder) CompensationType(compensationType string) *OfferInfoBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 工作地点id
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) WorkLocationId(workLocationId string) *OfferInfoBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 入职地址id
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) OnboardingAddressId(onboardingAddressId string) *OfferInfoBuilder {
	builder.onboardingAddressId = onboardingAddressId
	builder.onboardingAddressIdFlag = true
	return builder
}

// 办公地址id
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) OfficeAddressId(officeAddressId string) *OfferInfoBuilder {
	builder.officeAddressId = officeAddressId
	builder.officeAddressIdFlag = true
	return builder
}

// 岗位id
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) PositionId(positionId string) *OfferInfoBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 工作日历id
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) WorkingCalendarId(workingCalendarId string) *OfferInfoBuilder {
	builder.workingCalendarId = workingCalendarId
	builder.workingCalendarIdFlag = true
	return builder
}

// 工时制度
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) WorkingHoursType(workingHoursType string) *OfferInfoBuilder {
	builder.workingHoursType = workingHoursType
	builder.workingHoursTypeFlag = true
	return builder
}

// 薪资组
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) PayGroupId(payGroupId string) *OfferInfoBuilder {
	builder.payGroupId = payGroupId
	builder.payGroupIdFlag = true
	return builder
}

// 入职流程ID
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) FlowId(flowId string) *OfferInfoBuilder {
	builder.flowId = flowId
	builder.flowIdFlag = true
	return builder
}

// 签到日期
//
// 示例值：2024-08-01
func (builder *OfferInfoBuilder) CheckInTime(checkInTime string) *OfferInfoBuilder {
	builder.checkInTime = checkInTime
	builder.checkInTimeFlag = true
	return builder
}

// 签到方式
//
// 示例值：6977976687350924833
func (builder *OfferInfoBuilder) CheckInMethod(checkInMethod string) *OfferInfoBuilder {
	builder.checkInMethod = checkInMethod
	builder.checkInMethodFlag = true
	return builder
}

// 司龄起算日期
//
// 示例值：2024-08-01
func (builder *OfferInfoBuilder) SeniorityDate(seniorityDate string) *OfferInfoBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 司龄调整信息
//
// 示例值：
func (builder *OfferInfoBuilder) SeniorityAdjustInformationList(seniorityAdjustInformationList []*PrehireSeniorityAdjustInformation) *OfferInfoBuilder {
	builder.seniorityAdjustInformationList = seniorityAdjustInformationList
	builder.seniorityAdjustInformationListFlag = true
	return builder
}

// 试用期内通知期（主动离职)
//
// 示例值：xxx
func (builder *OfferInfoBuilder) NoticePeriodProbationVoluntary(noticePeriodProbationVoluntary *NoticePeriodDetail) *OfferInfoBuilder {
	builder.noticePeriodProbationVoluntary = noticePeriodProbationVoluntary
	builder.noticePeriodProbationVoluntaryFlag = true
	return builder
}

// 试用期内通知期（被动离职）
//
// 示例值：xxx
func (builder *OfferInfoBuilder) NoticePeriodProbationInvoluntary(noticePeriodProbationInvoluntary *NoticePeriodDetail) *OfferInfoBuilder {
	builder.noticePeriodProbationInvoluntary = noticePeriodProbationInvoluntary
	builder.noticePeriodProbationInvoluntaryFlag = true
	return builder
}

// 转正后通知期（主动离职）
//
// 示例值：xxx
func (builder *OfferInfoBuilder) NoticePeriodPositiveVoluntary(noticePeriodPositiveVoluntary *NoticePeriodDetail) *OfferInfoBuilder {
	builder.noticePeriodPositiveVoluntary = noticePeriodPositiveVoluntary
	builder.noticePeriodPositiveVoluntaryFlag = true
	return builder
}

// 转正后通知期（被动离职）
//
// 示例值：xxx
func (builder *OfferInfoBuilder) NoticePeriodPositiveInvoluntary(noticePeriodPositiveInvoluntary *NoticePeriodDetail) *OfferInfoBuilder {
	builder.noticePeriodPositiveInvoluntary = noticePeriodPositiveInvoluntary
	builder.noticePeriodPositiveInvoluntaryFlag = true
	return builder
}

// 是否外部人员
//
// 示例值：true
func (builder *OfferInfoBuilder) ConditionWorker(conditionWorker bool) *OfferInfoBuilder {
	builder.conditionWorker = conditionWorker
	builder.conditionWorkerFlag = true
	return builder
}

// 是否包含竞业条款
//
// 示例值：true
func (builder *OfferInfoBuilder) NonCompeteCovenant(nonCompeteCovenant bool) *OfferInfoBuilder {
	builder.nonCompeteCovenant = nonCompeteCovenant
	builder.nonCompeteCovenantFlag = true
	return builder
}

// 需要公司办理签证
//
// 示例值：true
func (builder *OfferInfoBuilder) CompanySponsoredVisa(companySponsoredVisa bool) *OfferInfoBuilder {
	builder.companySponsoredVisa = companySponsoredVisa
	builder.companySponsoredVisaFlag = true
	return builder
}

// 是否有 Offer 薪酬
//
// 示例值：true
func (builder *OfferInfoBuilder) HasOfferSalary(hasOfferSalary bool) *OfferInfoBuilder {
	builder.hasOfferSalary = hasOfferSalary
	builder.hasOfferSalaryFlag = true
	return builder
}

// 工位
//
// 示例值：5-1-2
func (builder *OfferInfoBuilder) WorkStation(workStation string) *OfferInfoBuilder {
	builder.workStation = workStation
	builder.workStationFlag = true
	return builder
}

// 通道
//
// 示例值：7460865381179115052
func (builder *OfferInfoBuilder) Pathway(pathway string) *OfferInfoBuilder {
	builder.pathway = pathway
	builder.pathwayFlag = true
	return builder
}

// 默认成本中心
//
// 示例值：
func (builder *OfferInfoBuilder) DefaultCostCenter(defaultCostCenter *PrehireDefaultCostCenterUpdate) *OfferInfoBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *OfferInfoBuilder) CostAllocation(costAllocation *CostAllocation) *OfferInfoBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

// 人才ID
//
// 示例值：8234698927348
func (builder *OfferInfoBuilder) TalentId(talentId string) *OfferInfoBuilder {
	builder.talentId = talentId
	builder.talentIdFlag = true
	return builder
}

// 是否复用飞书账号
//
// 示例值：reuse
func (builder *OfferInfoBuilder) ReuseFeishuAccount(reuseFeishuAccount string) *OfferInfoBuilder {
	builder.reuseFeishuAccount = reuseFeishuAccount
	builder.reuseFeishuAccountFlag = true
	return builder
}

// 复用的飞书账号
//
// 示例值：7032210902531327521
func (builder *OfferInfoBuilder) ReusedFeishuAccountId(reusedFeishuAccountId string) *OfferInfoBuilder {
	builder.reusedFeishuAccountId = reusedFeishuAccountId
	builder.reusedFeishuAccountIdFlag = true
	return builder
}

func (builder *OfferInfoBuilder) Build() *OfferInfo {
	req := &OfferInfo{}
	if builder.offerIdFlag {
		req.OfferId = &builder.offerId

	}
	if builder.offerFlag {
		req.Offer = &builder.offer

	}
	if builder.offerHrIdFlag {
		req.OfferHrId = &builder.offerHrId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.directLeaderIdFlag {
		req.DirectLeaderId = &builder.directLeaderId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobTitleFlag {
		req.JobTitle = &builder.jobTitle

	}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.contractStartDateFlag {
		req.ContractStartDate = &builder.contractStartDate

	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	if builder.durationPeriodFlag {
		req.DurationPeriod = &builder.durationPeriod

	}
	if builder.durationUnitFlag {
		req.DurationUnit = &builder.durationUnit

	}
	if builder.onboardingDateFlag {
		req.OnboardingDate = &builder.onboardingDate

	}
	if builder.onboardingLocationIdFlag {
		req.OnboardingLocationId = &builder.onboardingLocationId

	}
	if builder.officeLocationIdFlag {
		req.OfficeLocationId = &builder.officeLocationId

	}
	if builder.recruitmentTypeIdFlag {
		req.RecruitmentTypeId = &builder.recruitmentTypeId

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	if builder.employmentTypeIdFlag {
		req.EmploymentTypeId = &builder.employmentTypeId

	}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail

	}
	if builder.durationTypeIdFlag {
		req.DurationTypeId = &builder.durationTypeId

	}
	if builder.signingTypeIdFlag {
		req.SigningTypeId = &builder.signingTypeId

	}
	if builder.entryModeFlag {
		req.EntryMode = &builder.entryMode

	}
	if builder.socialSecurityCityIdFlag {
		req.SocialSecurityCityId = &builder.socialSecurityCityId

	}
	if builder.contractTypeFlag {
		req.ContractType = &builder.contractType

	}
	if builder.companyFlag {
		req.Company = &builder.company

	}
	if builder.costCenterRateFlag {
		req.CostCenterRate = builder.costCenterRate
	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.workShiftFlag {
		req.WorkShift = &builder.workShift

	}
	if builder.compensationTypeFlag {
		req.CompensationType = &builder.compensationType

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.onboardingAddressIdFlag {
		req.OnboardingAddressId = &builder.onboardingAddressId

	}
	if builder.officeAddressIdFlag {
		req.OfficeAddressId = &builder.officeAddressId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.workingCalendarIdFlag {
		req.WorkingCalendarId = &builder.workingCalendarId

	}
	if builder.workingHoursTypeFlag {
		req.WorkingHoursType = &builder.workingHoursType

	}
	if builder.payGroupIdFlag {
		req.PayGroupId = &builder.payGroupId

	}
	if builder.flowIdFlag {
		req.FlowId = &builder.flowId

	}
	if builder.checkInTimeFlag {
		req.CheckInTime = &builder.checkInTime

	}
	if builder.checkInMethodFlag {
		req.CheckInMethod = &builder.checkInMethod

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.seniorityAdjustInformationListFlag {
		req.SeniorityAdjustInformationList = builder.seniorityAdjustInformationList
	}
	if builder.noticePeriodProbationVoluntaryFlag {
		req.NoticePeriodProbationVoluntary = builder.noticePeriodProbationVoluntary
	}
	if builder.noticePeriodProbationInvoluntaryFlag {
		req.NoticePeriodProbationInvoluntary = builder.noticePeriodProbationInvoluntary
	}
	if builder.noticePeriodPositiveVoluntaryFlag {
		req.NoticePeriodPositiveVoluntary = builder.noticePeriodPositiveVoluntary
	}
	if builder.noticePeriodPositiveInvoluntaryFlag {
		req.NoticePeriodPositiveInvoluntary = builder.noticePeriodPositiveInvoluntary
	}
	if builder.conditionWorkerFlag {
		req.ConditionWorker = &builder.conditionWorker

	}
	if builder.nonCompeteCovenantFlag {
		req.NonCompeteCovenant = &builder.nonCompeteCovenant

	}
	if builder.companySponsoredVisaFlag {
		req.CompanySponsoredVisa = &builder.companySponsoredVisa

	}
	if builder.hasOfferSalaryFlag {
		req.HasOfferSalary = &builder.hasOfferSalary

	}
	if builder.workStationFlag {
		req.WorkStation = &builder.workStation

	}
	if builder.pathwayFlag {
		req.Pathway = &builder.pathway

	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	if builder.talentIdFlag {
		req.TalentId = &builder.talentId

	}
	if builder.reuseFeishuAccountFlag {
		req.ReuseFeishuAccount = &builder.reuseFeishuAccount

	}
	if builder.reusedFeishuAccountIdFlag {
		req.ReusedFeishuAccountId = &builder.reusedFeishuAccountId

	}
	return req
}

type OfferInfoUpdate struct {
	OnboardingDate *string `json:"onboarding_date,omitempty"` // 入职日期

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘应用ID

	OnboardingLocationId *string `json:"onboarding_location_id,omitempty"` // 入职地点ID，详细信息可通过【批量查询地点】接口获得

	OnboardingAddressId *string `json:"onboarding_address_id,omitempty"` // 入职地址ID，详细信息可通过【批量查询地址】接口获得

	OfficeLocationId *string `json:"office_location_id,omitempty"` // 办公地点ID，详细信息可通过【批量查询地点】接口获得

	OfficeAddressId *string `json:"office_address_id,omitempty"` // 办公地址ID，详细信息可通过【批量查询地址】接口获得

	EmploymentType *string `json:"employment_type,omitempty"` // 雇佣类型，通过查询枚举集【employment_type】获得枚举apiName

	OnboardingMethod *string `json:"onboarding_method,omitempty"` // 入职方式，通过查询枚举集【onboarding_method】获得枚举apiName

	WorkEmails []*EmailForUpdate `json:"work_emails,omitempty"` // 工作邮箱

	CostCenterRates []*JobDataCostCenter `json:"cost_center_rates,omitempty"` // 成本中心分摊信息,只支持商业化租户

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID,

	ProbationPeriod *int `json:"probation_period,omitempty"` // 试用期时长

	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期

	ContractStartDate *string `json:"contract_start_date,omitempty"` // 合同开始日期

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 合同结束日期

	ContractType *string `json:"contract_type,omitempty"` // 合同类型

	DurationTypeId *string `json:"duration_type_id,omitempty"` // 期限类型

	SigningTypeId *string `json:"signing_type_id,omitempty"` // 签订类型

	WorkerId *string `json:"worker_id,omitempty"` // 工号

	CheckInTime *string `json:"check_in_time,omitempty"` // 签到时间

	CheckInMethod *string `json:"check_in_method,omitempty"` // 签到方式

	Company *string `json:"company,omitempty"` // 公司主体

	WorkShift *string `json:"work_shift,omitempty"` // 排班

	RecruitmentTypeId *string `json:"recruitment_type_id,omitempty"` // 招聘类型

	CompensationType *string `json:"compensation_type,omitempty"` // 薪资类型

	PayGroupId *string `json:"pay_group_id,omitempty"` // 薪资组

	OfferHrId *string `json:"offer_hr_id,omitempty"` // offer HR

	JobId *string `json:"job_id,omitempty"` // 职务

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型

	DirectLeaderId *string `json:"direct_leader_id,omitempty"` // 直属上级

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级

	DepartmentId *string `json:"department_id,omitempty"` // 部门

	SocialSecurityCity *string `json:"social_security_city,omitempty"` // 社保城市

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作城市

	WorkingCalendar *string `json:"working_calendar,omitempty"` // 工作日历

	WorkingHoursType *string `json:"working_hours_type,omitempty"` // 工时制度

	SeniorityDate *string `json:"seniority_date,omitempty"` // 司龄起算日期

	SeniorityAdjustInformationList []*PrehireSeniorityAdjustInformationUpdate `json:"seniority_adjust_information_list,omitempty"` // 司龄调整信息

	NoticePeriodProbationVoluntary *NoticePeriodDetail `json:"notice_period_probation_voluntary,omitempty"` // 试用期内通知期（主动离职)

	NoticePeriodProbationInvoluntary *NoticePeriodDetail `json:"notice_period_probation_involuntary,omitempty"` // 试用期内通知期（被动离职）

	NoticePeriodPositiveVoluntary *NoticePeriodDetail `json:"notice_period_positive_voluntary,omitempty"` // 转正后通知期（主动离职）

	NoticePeriodPositiveInvoluntary *NoticePeriodDetail `json:"notice_period_positive_involuntary,omitempty"` // 转正后通知期（被动离职）

	ConditionWorker *bool `json:"condition_worker,omitempty"` // 是否外部人员

	CompanySponsoredVisa *bool `json:"company_sponsored_visa,omitempty"` // 需要公司办理签证

	WeeklyWorkingHoursV2 *float64 `json:"weekly_working_hours_v2,omitempty"` // 周工作时长（单位：小时）

	WorkStation *string `json:"work_station,omitempty"` // 工位

	HasOfferSalary *bool `json:"has_offer_salary,omitempty"` // 是否有 Offer 薪酬

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司

	NonCompeteCovenant *bool `json:"non_compete_covenant,omitempty"` // 是否包含竞业条款

	Pathway *string `json:"pathway,omitempty"` // 通道

	DefaultCostCenter *PrehireDefaultCostCenterUpdate `json:"default_cost_center,omitempty"` // 默认成本中心

	CostAllocation *CostAllocation `json:"cost_allocation,omitempty"` // 成本分摊

	ReuseFeishuAccount *string `json:"reuse_feishu_account,omitempty"` // 是否复用飞书账号

	ReusedFeishuAccountId *string `json:"reused_feishu_account_id,omitempty"` // 复用的飞书账号
}

type OfferInfoUpdateBuilder struct {
	onboardingDate     string // 入职日期
	onboardingDateFlag bool

	atsApplicationId     string // 招聘应用ID
	atsApplicationIdFlag bool

	onboardingLocationId     string // 入职地点ID，详细信息可通过【批量查询地点】接口获得
	onboardingLocationIdFlag bool

	onboardingAddressId     string // 入职地址ID，详细信息可通过【批量查询地址】接口获得
	onboardingAddressIdFlag bool

	officeLocationId     string // 办公地点ID，详细信息可通过【批量查询地点】接口获得
	officeLocationIdFlag bool

	officeAddressId     string // 办公地址ID，详细信息可通过【批量查询地址】接口获得
	officeAddressIdFlag bool

	employmentType     string // 雇佣类型，通过查询枚举集【employment_type】获得枚举apiName
	employmentTypeFlag bool

	onboardingMethod     string // 入职方式，通过查询枚举集【onboarding_method】获得枚举apiName
	onboardingMethodFlag bool

	workEmails     []*EmailForUpdate // 工作邮箱
	workEmailsFlag bool

	costCenterRates     []*JobDataCostCenter // 成本中心分摊信息,只支持商业化租户
	costCenterRatesFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	positionId     string // 岗位 ID,
	positionIdFlag bool

	probationPeriod     int // 试用期时长
	probationPeriodFlag bool

	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationEndDate     string // 试用期结束日期
	probationEndDateFlag bool

	contractStartDate     string // 合同开始日期
	contractStartDateFlag bool

	contractEndDate     string // 合同结束日期
	contractEndDateFlag bool

	contractType     string // 合同类型
	contractTypeFlag bool

	durationTypeId     string // 期限类型
	durationTypeIdFlag bool

	signingTypeId     string // 签订类型
	signingTypeIdFlag bool

	workerId     string // 工号
	workerIdFlag bool

	checkInTime     string // 签到时间
	checkInTimeFlag bool

	checkInMethod     string // 签到方式
	checkInMethodFlag bool

	company     string // 公司主体
	companyFlag bool

	workShift     string // 排班
	workShiftFlag bool

	recruitmentTypeId     string // 招聘类型
	recruitmentTypeIdFlag bool

	compensationType     string // 薪资类型
	compensationTypeFlag bool

	payGroupId     string // 薪资组
	payGroupIdFlag bool

	offerHrId     string // offer HR
	offerHrIdFlag bool

	jobId     string // 职务
	jobIdFlag bool

	jobFamilyId     string // 序列
	jobFamilyIdFlag bool

	jobLevelId     string // 职级
	jobLevelIdFlag bool

	jobGradeId     string // 职等
	jobGradeIdFlag bool

	employeeTypeId     string // 人员类型
	employeeTypeIdFlag bool

	employeeSubtypeId     string // 人员子类型
	employeeSubtypeIdFlag bool

	directLeaderId     string // 直属上级
	directLeaderIdFlag bool

	dottedLineManagerId     string // 虚线上级
	dottedLineManagerIdFlag bool

	departmentId     string // 部门
	departmentIdFlag bool

	socialSecurityCity     string // 社保城市
	socialSecurityCityFlag bool

	workLocationId     string // 工作城市
	workLocationIdFlag bool

	workingCalendar     string // 工作日历
	workingCalendarFlag bool

	workingHoursType     string // 工时制度
	workingHoursTypeFlag bool

	seniorityDate     string // 司龄起算日期
	seniorityDateFlag bool

	seniorityAdjustInformationList     []*PrehireSeniorityAdjustInformationUpdate // 司龄调整信息
	seniorityAdjustInformationListFlag bool

	noticePeriodProbationVoluntary     *NoticePeriodDetail // 试用期内通知期（主动离职)
	noticePeriodProbationVoluntaryFlag bool

	noticePeriodProbationInvoluntary     *NoticePeriodDetail // 试用期内通知期（被动离职）
	noticePeriodProbationInvoluntaryFlag bool

	noticePeriodPositiveVoluntary     *NoticePeriodDetail // 转正后通知期（主动离职）
	noticePeriodPositiveVoluntaryFlag bool

	noticePeriodPositiveInvoluntary     *NoticePeriodDetail // 转正后通知期（被动离职）
	noticePeriodPositiveInvoluntaryFlag bool

	conditionWorker     bool // 是否外部人员
	conditionWorkerFlag bool

	companySponsoredVisa     bool // 需要公司办理签证
	companySponsoredVisaFlag bool

	weeklyWorkingHoursV2     float64 // 周工作时长（单位：小时）
	weeklyWorkingHoursV2Flag bool

	workStation     string // 工位
	workStationFlag bool

	hasOfferSalary     bool // 是否有 Offer 薪酬
	hasOfferSalaryFlag bool

	serviceCompany     string // 任职公司
	serviceCompanyFlag bool

	nonCompeteCovenant     bool // 是否包含竞业条款
	nonCompeteCovenantFlag bool

	pathway     string // 通道
	pathwayFlag bool

	defaultCostCenter     *PrehireDefaultCostCenterUpdate // 默认成本中心
	defaultCostCenterFlag bool

	costAllocation     *CostAllocation // 成本分摊
	costAllocationFlag bool

	reuseFeishuAccount     string // 是否复用飞书账号
	reuseFeishuAccountFlag bool

	reusedFeishuAccountId     string // 复用的飞书账号
	reusedFeishuAccountIdFlag bool
}

func NewOfferInfoUpdateBuilder() *OfferInfoUpdateBuilder {
	builder := &OfferInfoUpdateBuilder{}
	return builder
}

// 入职日期
//
// 示例值：2022-10-08
func (builder *OfferInfoUpdateBuilder) OnboardingDate(onboardingDate string) *OfferInfoUpdateBuilder {
	builder.onboardingDate = onboardingDate
	builder.onboardingDateFlag = true
	return builder
}

// 招聘应用ID
//
// 示例值：7140946969586010375
func (builder *OfferInfoUpdateBuilder) AtsApplicationId(atsApplicationId string) *OfferInfoUpdateBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 入职地点ID，详细信息可通过【批量查询地点】接口获得
//
// 示例值：6977976687350924832
func (builder *OfferInfoUpdateBuilder) OnboardingLocationId(onboardingLocationId string) *OfferInfoUpdateBuilder {
	builder.onboardingLocationId = onboardingLocationId
	builder.onboardingLocationIdFlag = true
	return builder
}

// 入职地址ID，详细信息可通过【批量查询地址】接口获得
//
// 示例值：6977976687350924832
func (builder *OfferInfoUpdateBuilder) OnboardingAddressId(onboardingAddressId string) *OfferInfoUpdateBuilder {
	builder.onboardingAddressId = onboardingAddressId
	builder.onboardingAddressIdFlag = true
	return builder
}

// 办公地点ID，详细信息可通过【批量查询地点】接口获得
//
// 示例值：6977976687350924833
func (builder *OfferInfoUpdateBuilder) OfficeLocationId(officeLocationId string) *OfferInfoUpdateBuilder {
	builder.officeLocationId = officeLocationId
	builder.officeLocationIdFlag = true
	return builder
}

// 办公地址ID，详细信息可通过【批量查询地址】接口获得
//
// 示例值：6977976687350924832
func (builder *OfferInfoUpdateBuilder) OfficeAddressId(officeAddressId string) *OfferInfoUpdateBuilder {
	builder.officeAddressId = officeAddressId
	builder.officeAddressIdFlag = true
	return builder
}

// 雇佣类型，通过查询枚举集【employment_type】获得枚举apiName
//
// 示例值：employee(员工);contingent_worker(临时工)
func (builder *OfferInfoUpdateBuilder) EmploymentType(employmentType string) *OfferInfoUpdateBuilder {
	builder.employmentType = employmentType
	builder.employmentTypeFlag = true
	return builder
}

// 入职方式，通过查询枚举集【onboarding_method】获得枚举apiName
//
// 示例值：onsite(现场入职);remote(远程入职)
func (builder *OfferInfoUpdateBuilder) OnboardingMethod(onboardingMethod string) *OfferInfoUpdateBuilder {
	builder.onboardingMethod = onboardingMethod
	builder.onboardingMethodFlag = true
	return builder
}

// 工作邮箱
//
// 示例值：
func (builder *OfferInfoUpdateBuilder) WorkEmails(workEmails []*EmailForUpdate) *OfferInfoUpdateBuilder {
	builder.workEmails = workEmails
	builder.workEmailsFlag = true
	return builder
}

// 成本中心分摊信息,只支持商业化租户
//
// 示例值：
func (builder *OfferInfoUpdateBuilder) CostCenterRates(costCenterRates []*JobDataCostCenter) *OfferInfoUpdateBuilder {
	builder.costCenterRates = costCenterRates
	builder.costCenterRatesFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *OfferInfoUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *OfferInfoUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 岗位 ID,
//
// 示例值：697797668735092768
func (builder *OfferInfoUpdateBuilder) PositionId(positionId string) *OfferInfoUpdateBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 试用期时长
//
// 示例值：697797668735092768
func (builder *OfferInfoUpdateBuilder) ProbationPeriod(probationPeriod int) *OfferInfoUpdateBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

// 试用期开始日期
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) ProbationStartDate(probationStartDate string) *OfferInfoUpdateBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期结束日期
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) ProbationEndDate(probationEndDate string) *OfferInfoUpdateBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 合同开始日期
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) ContractStartDate(contractStartDate string) *OfferInfoUpdateBuilder {
	builder.contractStartDate = contractStartDate
	builder.contractStartDateFlag = true
	return builder
}

// 合同结束日期
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) ContractEndDate(contractEndDate string) *OfferInfoUpdateBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

// 合同类型
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) ContractType(contractType string) *OfferInfoUpdateBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// 期限类型
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) DurationTypeId(durationTypeId string) *OfferInfoUpdateBuilder {
	builder.durationTypeId = durationTypeId
	builder.durationTypeIdFlag = true
	return builder
}

// 签订类型
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) SigningTypeId(signingTypeId string) *OfferInfoUpdateBuilder {
	builder.signingTypeId = signingTypeId
	builder.signingTypeIdFlag = true
	return builder
}

// 工号
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) WorkerId(workerId string) *OfferInfoUpdateBuilder {
	builder.workerId = workerId
	builder.workerIdFlag = true
	return builder
}

// 签到时间
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) CheckInTime(checkInTime string) *OfferInfoUpdateBuilder {
	builder.checkInTime = checkInTime
	builder.checkInTimeFlag = true
	return builder
}

// 签到方式
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) CheckInMethod(checkInMethod string) *OfferInfoUpdateBuilder {
	builder.checkInMethod = checkInMethod
	builder.checkInMethodFlag = true
	return builder
}

// 公司主体
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) Company(company string) *OfferInfoUpdateBuilder {
	builder.company = company
	builder.companyFlag = true
	return builder
}

// 排班
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) WorkShift(workShift string) *OfferInfoUpdateBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 招聘类型
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) RecruitmentTypeId(recruitmentTypeId string) *OfferInfoUpdateBuilder {
	builder.recruitmentTypeId = recruitmentTypeId
	builder.recruitmentTypeIdFlag = true
	return builder
}

// 薪资类型
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) CompensationType(compensationType string) *OfferInfoUpdateBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 薪资组
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) PayGroupId(payGroupId string) *OfferInfoUpdateBuilder {
	builder.payGroupId = payGroupId
	builder.payGroupIdFlag = true
	return builder
}

// offer HR
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) OfferHrId(offerHrId string) *OfferInfoUpdateBuilder {
	builder.offerHrId = offerHrId
	builder.offerHrIdFlag = true
	return builder
}

// 职务
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) JobId(jobId string) *OfferInfoUpdateBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 序列
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) JobFamilyId(jobFamilyId string) *OfferInfoUpdateBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职级
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) JobLevelId(jobLevelId string) *OfferInfoUpdateBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) JobGradeId(jobGradeId string) *OfferInfoUpdateBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 人员类型
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) EmployeeTypeId(employeeTypeId string) *OfferInfoUpdateBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 人员子类型
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) EmployeeSubtypeId(employeeSubtypeId string) *OfferInfoUpdateBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

// 直属上级
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) DirectLeaderId(directLeaderId string) *OfferInfoUpdateBuilder {
	builder.directLeaderId = directLeaderId
	builder.directLeaderIdFlag = true
	return builder
}

// 虚线上级
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) DottedLineManagerId(dottedLineManagerId string) *OfferInfoUpdateBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 部门
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) DepartmentId(departmentId string) *OfferInfoUpdateBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 社保城市
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) SocialSecurityCity(socialSecurityCity string) *OfferInfoUpdateBuilder {
	builder.socialSecurityCity = socialSecurityCity
	builder.socialSecurityCityFlag = true
	return builder
}

// 工作城市
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) WorkLocationId(workLocationId string) *OfferInfoUpdateBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 工作日历
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) WorkingCalendar(workingCalendar string) *OfferInfoUpdateBuilder {
	builder.workingCalendar = workingCalendar
	builder.workingCalendarFlag = true
	return builder
}

// 工时制度
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) WorkingHoursType(workingHoursType string) *OfferInfoUpdateBuilder {
	builder.workingHoursType = workingHoursType
	builder.workingHoursTypeFlag = true
	return builder
}

// 司龄起算日期
//
// 示例值：2022-10-08
func (builder *OfferInfoUpdateBuilder) SeniorityDate(seniorityDate string) *OfferInfoUpdateBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 司龄调整信息
//
// 示例值：
func (builder *OfferInfoUpdateBuilder) SeniorityAdjustInformationList(seniorityAdjustInformationList []*PrehireSeniorityAdjustInformationUpdate) *OfferInfoUpdateBuilder {
	builder.seniorityAdjustInformationList = seniorityAdjustInformationList
	builder.seniorityAdjustInformationListFlag = true
	return builder
}

// 试用期内通知期（主动离职)
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) NoticePeriodProbationVoluntary(noticePeriodProbationVoluntary *NoticePeriodDetail) *OfferInfoUpdateBuilder {
	builder.noticePeriodProbationVoluntary = noticePeriodProbationVoluntary
	builder.noticePeriodProbationVoluntaryFlag = true
	return builder
}

// 试用期内通知期（被动离职）
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) NoticePeriodProbationInvoluntary(noticePeriodProbationInvoluntary *NoticePeriodDetail) *OfferInfoUpdateBuilder {
	builder.noticePeriodProbationInvoluntary = noticePeriodProbationInvoluntary
	builder.noticePeriodProbationInvoluntaryFlag = true
	return builder
}

// 转正后通知期（主动离职）
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) NoticePeriodPositiveVoluntary(noticePeriodPositiveVoluntary *NoticePeriodDetail) *OfferInfoUpdateBuilder {
	builder.noticePeriodPositiveVoluntary = noticePeriodPositiveVoluntary
	builder.noticePeriodPositiveVoluntaryFlag = true
	return builder
}

// 转正后通知期（被动离职）
//
// 示例值：xxx
func (builder *OfferInfoUpdateBuilder) NoticePeriodPositiveInvoluntary(noticePeriodPositiveInvoluntary *NoticePeriodDetail) *OfferInfoUpdateBuilder {
	builder.noticePeriodPositiveInvoluntary = noticePeriodPositiveInvoluntary
	builder.noticePeriodPositiveInvoluntaryFlag = true
	return builder
}

// 是否外部人员
//
// 示例值：true
func (builder *OfferInfoUpdateBuilder) ConditionWorker(conditionWorker bool) *OfferInfoUpdateBuilder {
	builder.conditionWorker = conditionWorker
	builder.conditionWorkerFlag = true
	return builder
}

// 需要公司办理签证
//
// 示例值：true
func (builder *OfferInfoUpdateBuilder) CompanySponsoredVisa(companySponsoredVisa bool) *OfferInfoUpdateBuilder {
	builder.companySponsoredVisa = companySponsoredVisa
	builder.companySponsoredVisaFlag = true
	return builder
}

// 周工作时长（单位：小时）
//
// 示例值：8.5
func (builder *OfferInfoUpdateBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *OfferInfoUpdateBuilder {
	builder.weeklyWorkingHoursV2 = weeklyWorkingHoursV2
	builder.weeklyWorkingHoursV2Flag = true
	return builder
}

// 工位
//
// 示例值：5-1-2
func (builder *OfferInfoUpdateBuilder) WorkStation(workStation string) *OfferInfoUpdateBuilder {
	builder.workStation = workStation
	builder.workStationFlag = true
	return builder
}

// 是否有 Offer 薪酬
//
// 示例值：true
func (builder *OfferInfoUpdateBuilder) HasOfferSalary(hasOfferSalary bool) *OfferInfoUpdateBuilder {
	builder.hasOfferSalary = hasOfferSalary
	builder.hasOfferSalaryFlag = true
	return builder
}

// 任职公司
//
// 示例值：6738317738688661772
func (builder *OfferInfoUpdateBuilder) ServiceCompany(serviceCompany string) *OfferInfoUpdateBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 是否包含竞业条款
//
// 示例值：true
func (builder *OfferInfoUpdateBuilder) NonCompeteCovenant(nonCompeteCovenant bool) *OfferInfoUpdateBuilder {
	builder.nonCompeteCovenant = nonCompeteCovenant
	builder.nonCompeteCovenantFlag = true
	return builder
}

// 通道
//
// 示例值：7460865381179115052
func (builder *OfferInfoUpdateBuilder) Pathway(pathway string) *OfferInfoUpdateBuilder {
	builder.pathway = pathway
	builder.pathwayFlag = true
	return builder
}

// 默认成本中心
//
// 示例值：
func (builder *OfferInfoUpdateBuilder) DefaultCostCenter(defaultCostCenter *PrehireDefaultCostCenterUpdate) *OfferInfoUpdateBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *OfferInfoUpdateBuilder) CostAllocation(costAllocation *CostAllocation) *OfferInfoUpdateBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

// 是否复用飞书账号
//
// 示例值：reuse
func (builder *OfferInfoUpdateBuilder) ReuseFeishuAccount(reuseFeishuAccount string) *OfferInfoUpdateBuilder {
	builder.reuseFeishuAccount = reuseFeishuAccount
	builder.reuseFeishuAccountFlag = true
	return builder
}

// 复用的飞书账号
//
// 示例值：7032210902531327521
func (builder *OfferInfoUpdateBuilder) ReusedFeishuAccountId(reusedFeishuAccountId string) *OfferInfoUpdateBuilder {
	builder.reusedFeishuAccountId = reusedFeishuAccountId
	builder.reusedFeishuAccountIdFlag = true
	return builder
}

func (builder *OfferInfoUpdateBuilder) Build() *OfferInfoUpdate {
	req := &OfferInfoUpdate{}
	if builder.onboardingDateFlag {
		req.OnboardingDate = &builder.onboardingDate

	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.onboardingLocationIdFlag {
		req.OnboardingLocationId = &builder.onboardingLocationId

	}
	if builder.onboardingAddressIdFlag {
		req.OnboardingAddressId = &builder.onboardingAddressId

	}
	if builder.officeLocationIdFlag {
		req.OfficeLocationId = &builder.officeLocationId

	}
	if builder.officeAddressIdFlag {
		req.OfficeAddressId = &builder.officeAddressId

	}
	if builder.employmentTypeFlag {
		req.EmploymentType = &builder.employmentType

	}
	if builder.onboardingMethodFlag {
		req.OnboardingMethod = &builder.onboardingMethod

	}
	if builder.workEmailsFlag {
		req.WorkEmails = builder.workEmails
	}
	if builder.costCenterRatesFlag {
		req.CostCenterRates = builder.costCenterRates
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.contractStartDateFlag {
		req.ContractStartDate = &builder.contractStartDate

	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	if builder.contractTypeFlag {
		req.ContractType = &builder.contractType

	}
	if builder.durationTypeIdFlag {
		req.DurationTypeId = &builder.durationTypeId

	}
	if builder.signingTypeIdFlag {
		req.SigningTypeId = &builder.signingTypeId

	}
	if builder.workerIdFlag {
		req.WorkerId = &builder.workerId

	}
	if builder.checkInTimeFlag {
		req.CheckInTime = &builder.checkInTime

	}
	if builder.checkInMethodFlag {
		req.CheckInMethod = &builder.checkInMethod

	}
	if builder.companyFlag {
		req.Company = &builder.company

	}
	if builder.workShiftFlag {
		req.WorkShift = &builder.workShift

	}
	if builder.recruitmentTypeIdFlag {
		req.RecruitmentTypeId = &builder.recruitmentTypeId

	}
	if builder.compensationTypeFlag {
		req.CompensationType = &builder.compensationType

	}
	if builder.payGroupIdFlag {
		req.PayGroupId = &builder.payGroupId

	}
	if builder.offerHrIdFlag {
		req.OfferHrId = &builder.offerHrId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	if builder.directLeaderIdFlag {
		req.DirectLeaderId = &builder.directLeaderId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.socialSecurityCityFlag {
		req.SocialSecurityCity = &builder.socialSecurityCity

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.workingCalendarFlag {
		req.WorkingCalendar = &builder.workingCalendar

	}
	if builder.workingHoursTypeFlag {
		req.WorkingHoursType = &builder.workingHoursType

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.seniorityAdjustInformationListFlag {
		req.SeniorityAdjustInformationList = builder.seniorityAdjustInformationList
	}
	if builder.noticePeriodProbationVoluntaryFlag {
		req.NoticePeriodProbationVoluntary = builder.noticePeriodProbationVoluntary
	}
	if builder.noticePeriodProbationInvoluntaryFlag {
		req.NoticePeriodProbationInvoluntary = builder.noticePeriodProbationInvoluntary
	}
	if builder.noticePeriodPositiveVoluntaryFlag {
		req.NoticePeriodPositiveVoluntary = builder.noticePeriodPositiveVoluntary
	}
	if builder.noticePeriodPositiveInvoluntaryFlag {
		req.NoticePeriodPositiveInvoluntary = builder.noticePeriodPositiveInvoluntary
	}
	if builder.conditionWorkerFlag {
		req.ConditionWorker = &builder.conditionWorker

	}
	if builder.companySponsoredVisaFlag {
		req.CompanySponsoredVisa = &builder.companySponsoredVisa

	}
	if builder.weeklyWorkingHoursV2Flag {
		req.WeeklyWorkingHoursV2 = &builder.weeklyWorkingHoursV2

	}
	if builder.workStationFlag {
		req.WorkStation = &builder.workStation

	}
	if builder.hasOfferSalaryFlag {
		req.HasOfferSalary = &builder.hasOfferSalary

	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.nonCompeteCovenantFlag {
		req.NonCompeteCovenant = &builder.nonCompeteCovenant

	}
	if builder.pathwayFlag {
		req.Pathway = &builder.pathway

	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	if builder.reuseFeishuAccountFlag {
		req.ReuseFeishuAccount = &builder.reuseFeishuAccount

	}
	if builder.reusedFeishuAccountIdFlag {
		req.ReusedFeishuAccountId = &builder.reusedFeishuAccountId

	}
	return req
}

type OnboardingFlow struct {
	Id *string `json:"id,omitempty"` // 流程id

	Name *I18nV2 `json:"name,omitempty"` // 流程名称
}

type OnboardingFlowBuilder struct {
	id     string // 流程id
	idFlag bool

	name     *I18nV2 // 流程名称
	nameFlag bool
}

func NewOnboardingFlowBuilder() *OnboardingFlowBuilder {
	builder := &OnboardingFlowBuilder{}
	return builder
}

// 流程id
//
// 示例值：628caefb0eb4ac9c806982ee
func (builder *OnboardingFlowBuilder) Id(id string) *OnboardingFlowBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 流程名称
//
// 示例值：
func (builder *OnboardingFlowBuilder) Name(name *I18nV2) *OnboardingFlowBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *OnboardingFlowBuilder) Build() *OnboardingFlow {
	req := &OnboardingFlow{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	return req
}

type OnboardingFlowChange struct {
	AfterStatus *string `json:"after_status,omitempty"` // 入职流程状态变更
}

type OnboardingFlowChangeBuilder struct {
	afterStatus     string // 入职流程状态变更
	afterStatusFlag bool
}

func NewOnboardingFlowChangeBuilder() *OnboardingFlowChangeBuilder {
	builder := &OnboardingFlowChangeBuilder{}
	return builder
}

// 入职流程状态变更
//
// 示例值：in_progress
func (builder *OnboardingFlowChangeBuilder) AfterStatus(afterStatus string) *OnboardingFlowChangeBuilder {
	builder.afterStatus = afterStatus
	builder.afterStatusFlag = true
	return builder
}

func (builder *OnboardingFlowChangeBuilder) Build() *OnboardingFlowChange {
	req := &OnboardingFlowChange{}
	if builder.afterStatusFlag {
		req.AfterStatus = &builder.afterStatus

	}
	return req
}

type OnboardingQrCode struct {
	Id *string `json:"id,omitempty"` // 唯一键

	Pngs []string `json:"pngs,omitempty"` // 二维码图片链接,文件名区分语言

	Url *string `json:"url,omitempty"` // 二维码值链接

	Active *bool `json:"active,omitempty"` // 有效性

	CreatedBy *string `json:"created_by,omitempty"` // 创建人

	UpdatedBy *string `json:"updated_by,omitempty"` // 更新人

	CreatedAt *int `json:"created_at,omitempty"` // 创建时间

	UpdatedAt *int `json:"updated_at,omitempty"` // 更新时间

	DimensionValues []*QrCodeDimensionValue `json:"dimension_values,omitempty"` // 维度值列表
}

type OnboardingQrCodeBuilder struct {
	id     string // 唯一键
	idFlag bool

	pngs     []string // 二维码图片链接,文件名区分语言
	pngsFlag bool

	url     string // 二维码值链接
	urlFlag bool

	active     bool // 有效性
	activeFlag bool

	createdBy     string // 创建人
	createdByFlag bool

	updatedBy     string // 更新人
	updatedByFlag bool

	createdAt     int // 创建时间
	createdAtFlag bool

	updatedAt     int // 更新时间
	updatedAtFlag bool

	dimensionValues     []*QrCodeDimensionValue // 维度值列表
	dimensionValuesFlag bool
}

func NewOnboardingQrCodeBuilder() *OnboardingQrCodeBuilder {
	builder := &OnboardingQrCodeBuilder{}
	return builder
}

// 唯一键
//
// 示例值：345241
func (builder *OnboardingQrCodeBuilder) Id(id string) *OnboardingQrCodeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 二维码图片链接,文件名区分语言
//
// 示例值：
func (builder *OnboardingQrCodeBuilder) Pngs(pngs []string) *OnboardingQrCodeBuilder {
	builder.pngs = pngs
	builder.pngsFlag = true
	return builder
}

// 二维码值链接
//
// 示例值：xxxxx
func (builder *OnboardingQrCodeBuilder) Url(url string) *OnboardingQrCodeBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

// 有效性
//
// 示例值：xxx
func (builder *OnboardingQrCodeBuilder) Active(active bool) *OnboardingQrCodeBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 创建人
//
// 示例值：xxxxx
func (builder *OnboardingQrCodeBuilder) CreatedBy(createdBy string) *OnboardingQrCodeBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 更新人
//
// 示例值：xxxxx
func (builder *OnboardingQrCodeBuilder) UpdatedBy(updatedBy string) *OnboardingQrCodeBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 创建时间
//
// 示例值：xxxxxx
func (builder *OnboardingQrCodeBuilder) CreatedAt(createdAt int) *OnboardingQrCodeBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 更新时间
//
// 示例值：xxxxx
func (builder *OnboardingQrCodeBuilder) UpdatedAt(updatedAt int) *OnboardingQrCodeBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 维度值列表
//
// 示例值：
func (builder *OnboardingQrCodeBuilder) DimensionValues(dimensionValues []*QrCodeDimensionValue) *OnboardingQrCodeBuilder {
	builder.dimensionValues = dimensionValues
	builder.dimensionValuesFlag = true
	return builder
}

func (builder *OnboardingQrCodeBuilder) Build() *OnboardingQrCode {
	req := &OnboardingQrCode{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.pngsFlag {
		req.Pngs = builder.pngs
	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.dimensionValuesFlag {
		req.DimensionValues = builder.dimensionValues
	}
	return req
}

type OnboardingTask struct {
	TaskName *string `json:"task_name,omitempty"` // 任务名称

	TaskStatus *string `json:"task_status,omitempty"` // 任务名称

	OperatorId *string `json:"operator_id,omitempty"` // 当前操作人雇佣 ID

	TaskCode *string `json:"task_code,omitempty"` // 任务code
}

type OnboardingTaskBuilder struct {
	taskName     string // 任务名称
	taskNameFlag bool

	taskStatus     string // 任务名称
	taskStatusFlag bool

	operatorId     string // 当前操作人雇佣 ID
	operatorIdFlag bool

	taskCode     string // 任务code
	taskCodeFlag bool
}

func NewOnboardingTaskBuilder() *OnboardingTaskBuilder {
	builder := &OnboardingTaskBuilder{}
	return builder
}

// 任务名称
//
// 示例值：task_1
func (builder *OnboardingTaskBuilder) TaskName(taskName string) *OnboardingTaskBuilder {
	builder.taskName = taskName
	builder.taskNameFlag = true
	return builder
}

// 任务名称
//
// 示例值：
func (builder *OnboardingTaskBuilder) TaskStatus(taskStatus string) *OnboardingTaskBuilder {
	builder.taskStatus = taskStatus
	builder.taskStatusFlag = true
	return builder
}

// 当前操作人雇佣 ID
//
// 示例值：7032210902531327521
func (builder *OnboardingTaskBuilder) OperatorId(operatorId string) *OnboardingTaskBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 任务code
//
// 示例值：task_11
func (builder *OnboardingTaskBuilder) TaskCode(taskCode string) *OnboardingTaskBuilder {
	builder.taskCode = taskCode
	builder.taskCodeFlag = true
	return builder
}

func (builder *OnboardingTaskBuilder) Build() *OnboardingTask {
	req := &OnboardingTask{}
	if builder.taskNameFlag {
		req.TaskName = &builder.taskName

	}
	if builder.taskStatusFlag {
		req.TaskStatus = &builder.taskStatus

	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId

	}
	if builder.taskCodeFlag {
		req.TaskCode = &builder.taskCode

	}
	return req
}

type OnboardingTaskChange struct {
	AfterStatus *string `json:"after_status,omitempty"` // 变更后任务状态

	TaskCode *string `json:"task_code,omitempty"` // 任务标识
}

type OnboardingTaskChangeBuilder struct {
	afterStatus     string // 变更后任务状态
	afterStatusFlag bool

	taskCode     string // 任务标识
	taskCodeFlag bool
}

func NewOnboardingTaskChangeBuilder() *OnboardingTaskChangeBuilder {
	builder := &OnboardingTaskChangeBuilder{}
	return builder
}

// 变更后任务状态
//
// 示例值：in_progress
func (builder *OnboardingTaskChangeBuilder) AfterStatus(afterStatus string) *OnboardingTaskChangeBuilder {
	builder.afterStatus = afterStatus
	builder.afterStatusFlag = true
	return builder
}

// 任务标识
//
// 示例值：2
func (builder *OnboardingTaskChangeBuilder) TaskCode(taskCode string) *OnboardingTaskChangeBuilder {
	builder.taskCode = taskCode
	builder.taskCodeFlag = true
	return builder
}

func (builder *OnboardingTaskChangeBuilder) Build() *OnboardingTaskChange {
	req := &OnboardingTaskChange{}
	if builder.afterStatusFlag {
		req.AfterStatus = &builder.afterStatus

	}
	if builder.taskCodeFlag {
		req.TaskCode = &builder.taskCode

	}
	return req
}

type OperationLogEntity struct {
	OptType *string `json:"opt_type,omitempty"` // 操作类型（create、update、delete）

	Fields []*OperationLogEntityField `json:"fields,omitempty"` // 变更字段

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID
}

type OperationLogEntityBuilder struct {
	optType     string // 操作类型（create、update、delete）
	optTypeFlag bool

	fields     []*OperationLogEntityField // 变更字段
	fieldsFlag bool

	employmentId     string // 雇员ID
	employmentIdFlag bool
}

func NewOperationLogEntityBuilder() *OperationLogEntityBuilder {
	builder := &OperationLogEntityBuilder{}
	return builder
}

// 操作类型（create、update、delete）
//
// 示例值：update
func (builder *OperationLogEntityBuilder) OptType(optType string) *OperationLogEntityBuilder {
	builder.optType = optType
	builder.optTypeFlag = true
	return builder
}

// 变更字段
//
// 示例值：
func (builder *OperationLogEntityBuilder) Fields(fields []*OperationLogEntityField) *OperationLogEntityBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 雇员ID
//
// 示例值：7373878233473271340
func (builder *OperationLogEntityBuilder) EmploymentId(employmentId string) *OperationLogEntityBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

func (builder *OperationLogEntityBuilder) Build() *OperationLogEntity {
	req := &OperationLogEntity{}
	if builder.optTypeFlag {
		req.OptType = &builder.optType

	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	return req
}

type OperationLogEntityField struct {
	Field *string `json:"field,omitempty"` // 变更字段

	Before *string `json:"before,omitempty"` // 旧值

	After *string `json:"after,omitempty"` // 新值

	Ext *OperationLogEntityFieldExt `json:"ext,omitempty"` // 额外字段信息
}

type OperationLogEntityFieldBuilder struct {
	field     string // 变更字段
	fieldFlag bool

	before     string // 旧值
	beforeFlag bool

	after     string // 新值
	afterFlag bool

	ext     *OperationLogEntityFieldExt // 额外字段信息
	extFlag bool
}

func NewOperationLogEntityFieldBuilder() *OperationLogEntityFieldBuilder {
	builder := &OperationLogEntityFieldBuilder{}
	return builder
}

// 变更字段
//
// 示例值：personal_profile.profile_type_2_201_20101
func (builder *OperationLogEntityFieldBuilder) Field(field string) *OperationLogEntityFieldBuilder {
	builder.field = field
	builder.fieldFlag = true
	return builder
}

// 旧值
//
// 示例值：{\"type\":\"text\",\"value\":\"null\"}
func (builder *OperationLogEntityFieldBuilder) Before(before string) *OperationLogEntityFieldBuilder {
	builder.before = before
	builder.beforeFlag = true
	return builder
}

// 新值
//
// 示例值：{\"type\":\"text\",\"value\":\"1\"}
func (builder *OperationLogEntityFieldBuilder) After(after string) *OperationLogEntityFieldBuilder {
	builder.after = after
	builder.afterFlag = true
	return builder
}

// 额外字段信息
//
// 示例值：
func (builder *OperationLogEntityFieldBuilder) Ext(ext *OperationLogEntityFieldExt) *OperationLogEntityFieldBuilder {
	builder.ext = ext
	builder.extFlag = true
	return builder
}

func (builder *OperationLogEntityFieldBuilder) Build() *OperationLogEntityField {
	req := &OperationLogEntityField{}
	if builder.fieldFlag {
		req.Field = &builder.field

	}
	if builder.beforeFlag {
		req.Before = &builder.before

	}
	if builder.afterFlag {
		req.After = &builder.after

	}
	if builder.extFlag {
		req.Ext = builder.ext
	}
	return req
}

type OperationLogEntityFieldExt struct {
	Id *string `json:"id,omitempty"` // id

	Usage *string `json:"usage,omitempty"` // 用途
}

type OperationLogEntityFieldExtBuilder struct {
	id     string // id
	idFlag bool

	usage     string // 用途
	usageFlag bool
}

func NewOperationLogEntityFieldExtBuilder() *OperationLogEntityFieldExtBuilder {
	builder := &OperationLogEntityFieldExtBuilder{}
	return builder
}

// id
//
// 示例值：7525039829561198124_add_name_0
func (builder *OperationLogEntityFieldExtBuilder) Id(id string) *OperationLogEntityFieldExtBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用途
//
// 示例值：preferred_name
func (builder *OperationLogEntityFieldExtBuilder) Usage(usage string) *OperationLogEntityFieldExtBuilder {
	builder.usage = usage
	builder.usageFlag = true
	return builder
}

func (builder *OperationLogEntityFieldExtBuilder) Build() *OperationLogEntityFieldExt {
	req := &OperationLogEntityFieldExt{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.usageFlag {
		req.Usage = &builder.usage

	}
	return req
}

type OperationLogListReq struct {
	StartTime *string `json:"start_time,omitempty"` // 开始时间，默认当天往前 6*30 天

	EndTime *string `json:"end_time,omitempty"` // 结束时间，默认当天

	OperatorIds []string `json:"operator_ids,omitempty"` // 操作人ID

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID

	FilterFields []string `json:"filter_fields,omitempty"` // 查询变更的字段
}

type OperationLogListReqBuilder struct {
	startTime     string // 开始时间，默认当天往前 6*30 天
	startTimeFlag bool

	endTime     string // 结束时间，默认当天
	endTimeFlag bool

	operatorIds     []string // 操作人ID
	operatorIdsFlag bool

	employmentId     string // 雇员ID
	employmentIdFlag bool

	filterFields     []string // 查询变更的字段
	filterFieldsFlag bool
}

func NewOperationLogListReqBuilder() *OperationLogListReqBuilder {
	builder := &OperationLogListReqBuilder{}
	return builder
}

// 开始时间，默认当天往前 6*30 天
//
// 示例值：2024-01-02 00:00:00
func (builder *OperationLogListReqBuilder) StartTime(startTime string) *OperationLogListReqBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间，默认当天
//
// 示例值：2024-01-02 00:00:00
func (builder *OperationLogListReqBuilder) EndTime(endTime string) *OperationLogListReqBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 操作人ID
//
// 示例值：7140964208476371111
func (builder *OperationLogListReqBuilder) OperatorIds(operatorIds []string) *OperationLogListReqBuilder {
	builder.operatorIds = operatorIds
	builder.operatorIdsFlag = true
	return builder
}

// 雇员ID
//
// 示例值：7140964208476371111
func (builder *OperationLogListReqBuilder) EmploymentId(employmentId string) *OperationLogListReqBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 查询变更的字段
//
// 示例值：
func (builder *OperationLogListReqBuilder) FilterFields(filterFields []string) *OperationLogListReqBuilder {
	builder.filterFields = filterFields
	builder.filterFieldsFlag = true
	return builder
}

func (builder *OperationLogListReqBuilder) Build() *OperationLogListReq {
	req := &OperationLogListReq{}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.operatorIdsFlag {
		req.OperatorIds = builder.operatorIds
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.filterFieldsFlag {
		req.FilterFields = builder.filterFields
	}
	return req
}

type OperationLogListRespItem struct {
	OperatorId *string `json:"operator_id,omitempty"` // 操作人ID

	OptTime *string `json:"opt_time,omitempty"` // 操作时间

	Entities []*OperationLogEntity `json:"entities,omitempty"` // 操作记录
}

type OperationLogListRespItemBuilder struct {
	operatorId     string // 操作人ID
	operatorIdFlag bool

	optTime     string // 操作时间
	optTimeFlag bool

	entities     []*OperationLogEntity // 操作记录
	entitiesFlag bool
}

func NewOperationLogListRespItemBuilder() *OperationLogListRespItemBuilder {
	builder := &OperationLogListRespItemBuilder{}
	return builder
}

// 操作人ID
//
// 示例值：7373878233473271340
func (builder *OperationLogListRespItemBuilder) OperatorId(operatorId string) *OperationLogListRespItemBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 操作时间
//
// 示例值：2024-01-01 12:12:12
func (builder *OperationLogListRespItemBuilder) OptTime(optTime string) *OperationLogListRespItemBuilder {
	builder.optTime = optTime
	builder.optTimeFlag = true
	return builder
}

// 操作记录
//
// 示例值：
func (builder *OperationLogListRespItemBuilder) Entities(entities []*OperationLogEntity) *OperationLogListRespItemBuilder {
	builder.entities = entities
	builder.entitiesFlag = true
	return builder
}

func (builder *OperationLogListRespItemBuilder) Build() *OperationLogListRespItem {
	req := &OperationLogListRespItem{}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId

	}
	if builder.optTimeFlag {
		req.OptTime = &builder.optTime

	}
	if builder.entitiesFlag {
		req.Entities = builder.entities
	}
	return req
}

type OrgRole struct {
	ApiName *string `json:"api_name,omitempty"` // 角色key

	SecurityGroupId *string `json:"security_group_id,omitempty"` // 角色ID

	EmploymentIds []string `json:"employment_ids,omitempty"` // 授权员工列表

	InheritEmploymentIds []string `json:"inherit_employment_ids,omitempty"` // 继承至上级授权员工列表
}

type OrgRoleBuilder struct {
	apiName     string // 角色key
	apiNameFlag bool

	securityGroupId     string // 角色ID
	securityGroupIdFlag bool

	employmentIds     []string // 授权员工列表
	employmentIdsFlag bool

	inheritEmploymentIds     []string // 继承至上级授权员工列表
	inheritEmploymentIdsFlag bool
}

func NewOrgRoleBuilder() *OrgRoleBuilder {
	builder := &OrgRoleBuilder{}
	return builder
}

// 角色key
//
// 示例值：hrbp
func (builder *OrgRoleBuilder) ApiName(apiName string) *OrgRoleBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 角色ID
//
// 示例值：7034393015968122400
func (builder *OrgRoleBuilder) SecurityGroupId(securityGroupId string) *OrgRoleBuilder {
	builder.securityGroupId = securityGroupId
	builder.securityGroupIdFlag = true
	return builder
}

// 授权员工列表
//
// 示例值：
func (builder *OrgRoleBuilder) EmploymentIds(employmentIds []string) *OrgRoleBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 继承至上级授权员工列表
//
// 示例值：
func (builder *OrgRoleBuilder) InheritEmploymentIds(inheritEmploymentIds []string) *OrgRoleBuilder {
	builder.inheritEmploymentIds = inheritEmploymentIds
	builder.inheritEmploymentIdsFlag = true
	return builder
}

func (builder *OrgRoleBuilder) Build() *OrgRole {
	req := &OrgRole{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.securityGroupIdFlag {
		req.SecurityGroupId = &builder.securityGroupId

	}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.inheritEmploymentIdsFlag {
		req.InheritEmploymentIds = builder.inheritEmploymentIds
	}
	return req
}

type OrgRoleUpdate struct {
	ApiName *string `json:"api_name,omitempty"` // 角色key（ID、key必须填一个）

	SecurityGroupId *string `json:"security_group_id,omitempty"` // 角色ID（ID、key必须填一个）

	EmploymentIds []string `json:"employment_ids,omitempty"` // 授权员工列表
}

type OrgRoleUpdateBuilder struct {
	apiName     string // 角色key（ID、key必须填一个）
	apiNameFlag bool

	securityGroupId     string // 角色ID（ID、key必须填一个）
	securityGroupIdFlag bool

	employmentIds     []string // 授权员工列表
	employmentIdsFlag bool
}

func NewOrgRoleUpdateBuilder() *OrgRoleUpdateBuilder {
	builder := &OrgRoleUpdateBuilder{}
	return builder
}

// 角色key（ID、key必须填一个）
//
// 示例值：hrbp
func (builder *OrgRoleUpdateBuilder) ApiName(apiName string) *OrgRoleUpdateBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 角色ID（ID、key必须填一个）
//
// 示例值：7034393015968122400
func (builder *OrgRoleUpdateBuilder) SecurityGroupId(securityGroupId string) *OrgRoleUpdateBuilder {
	builder.securityGroupId = securityGroupId
	builder.securityGroupIdFlag = true
	return builder
}

// 授权员工列表
//
// 示例值：
func (builder *OrgRoleUpdateBuilder) EmploymentIds(employmentIds []string) *OrgRoleUpdateBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

func (builder *OrgRoleUpdateBuilder) Build() *OrgRoleUpdate {
	req := &OrgRoleUpdate{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.securityGroupIdFlag {
		req.SecurityGroupId = &builder.securityGroupId

	}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	return req
}

type OrganizationDomainEventData struct {
	Id *string `json:"id,omitempty"` // 变更实体的ID

	Entity *string `json:"entity,omitempty"` // 变更实体标识，ObjAPIName

	AggEntity *string `json:"agg_entity,omitempty"` // 聚合实体标识，父对象 ObjAPIName

	AggEntityId *string `json:"agg_entity_id,omitempty"` // 聚合实体ID 父对象ID

	AggEntityField *string `json:"agg_entity_field,omitempty"` // 所属聚合实体字段， FieldAPIName

	OptType *int `json:"opt_type,omitempty"` // 操作类型

	FieldChanges []string `json:"field_changes,omitempty"` // 变更字段列表
}

type OrganizationDomainEventDataBuilder struct {
	id     string // 变更实体的ID
	idFlag bool

	entity     string // 变更实体标识，ObjAPIName
	entityFlag bool

	aggEntity     string // 聚合实体标识，父对象 ObjAPIName
	aggEntityFlag bool

	aggEntityId     string // 聚合实体ID 父对象ID
	aggEntityIdFlag bool

	aggEntityField     string // 所属聚合实体字段， FieldAPIName
	aggEntityFieldFlag bool

	optType     int // 操作类型
	optTypeFlag bool

	fieldChanges     []string // 变更字段列表
	fieldChangesFlag bool
}

func NewOrganizationDomainEventDataBuilder() *OrganizationDomainEventDataBuilder {
	builder := &OrganizationDomainEventDataBuilder{}
	return builder
}

// 变更实体的ID
//
// 示例值：7818231238918192
func (builder *OrganizationDomainEventDataBuilder) Id(id string) *OrganizationDomainEventDataBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 变更实体标识，ObjAPIName
//
// 示例值：address
func (builder *OrganizationDomainEventDataBuilder) Entity(entity string) *OrganizationDomainEventDataBuilder {
	builder.entity = entity
	builder.entityFlag = true
	return builder
}

// 聚合实体标识，父对象 ObjAPIName
//
// 示例值：location
func (builder *OrganizationDomainEventDataBuilder) AggEntity(aggEntity string) *OrganizationDomainEventDataBuilder {
	builder.aggEntity = aggEntity
	builder.aggEntityFlag = true
	return builder
}

// 聚合实体ID 父对象ID
//
// 示例值：7291273149417948716
func (builder *OrganizationDomainEventDataBuilder) AggEntityId(aggEntityId string) *OrganizationDomainEventDataBuilder {
	builder.aggEntityId = aggEntityId
	builder.aggEntityIdFlag = true
	return builder
}

// 所属聚合实体字段， FieldAPIName
//
// 示例值：address
func (builder *OrganizationDomainEventDataBuilder) AggEntityField(aggEntityField string) *OrganizationDomainEventDataBuilder {
	builder.aggEntityField = aggEntityField
	builder.aggEntityFieldFlag = true
	return builder
}

// 操作类型
//
// 示例值：1
func (builder *OrganizationDomainEventDataBuilder) OptType(optType int) *OrganizationDomainEventDataBuilder {
	builder.optType = optType
	builder.optTypeFlag = true
	return builder
}

// 变更字段列表
//
// 示例值：
func (builder *OrganizationDomainEventDataBuilder) FieldChanges(fieldChanges []string) *OrganizationDomainEventDataBuilder {
	builder.fieldChanges = fieldChanges
	builder.fieldChangesFlag = true
	return builder
}

func (builder *OrganizationDomainEventDataBuilder) Build() *OrganizationDomainEventData {
	req := &OrganizationDomainEventData{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.entityFlag {
		req.Entity = &builder.entity

	}
	if builder.aggEntityFlag {
		req.AggEntity = &builder.aggEntity

	}
	if builder.aggEntityIdFlag {
		req.AggEntityId = &builder.aggEntityId

	}
	if builder.aggEntityFieldFlag {
		req.AggEntityField = &builder.aggEntityField

	}
	if builder.optTypeFlag {
		req.OptType = &builder.optType

	}
	if builder.fieldChangesFlag {
		req.FieldChanges = builder.fieldChanges
	}
	return req
}

type OrganizationOpLog struct {
	ObjectId *string `json:"object_id,omitempty"` // 业务对象ID

	Changes []*OperationLogEntityField `json:"changes,omitempty"` // 字段变化列表

	Operator *string `json:"operator,omitempty"` // 操作人

	OperationType *int `json:"operation_type,omitempty"` // 操作类型

	OperationTime *string `json:"operation_time,omitempty"` // 操作时间

	EffectiveTime *string `json:"effective_time,omitempty"` // 操作生效时间

	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因说明

	ChangeReasons []string `json:"change_reasons,omitempty"` // 调整原因列表
}

type OrganizationOpLogBuilder struct {
	objectId     string // 业务对象ID
	objectIdFlag bool

	changes     []*OperationLogEntityField // 字段变化列表
	changesFlag bool

	operator     string // 操作人
	operatorFlag bool

	operationType     int // 操作类型
	operationTypeFlag bool

	operationTime     string // 操作时间
	operationTimeFlag bool

	effectiveTime     string // 操作生效时间
	effectiveTimeFlag bool

	operationReason     string // 操作原因说明
	operationReasonFlag bool

	changeReasons     []string // 调整原因列表
	changeReasonsFlag bool
}

func NewOrganizationOpLogBuilder() *OrganizationOpLogBuilder {
	builder := &OrganizationOpLogBuilder{}
	return builder
}

// 业务对象ID
//
// 示例值：7094136522860922111
func (builder *OrganizationOpLogBuilder) ObjectId(objectId string) *OrganizationOpLogBuilder {
	builder.objectId = objectId
	builder.objectIdFlag = true
	return builder
}

// 字段变化列表
//
// 示例值：
func (builder *OrganizationOpLogBuilder) Changes(changes []*OperationLogEntityField) *OrganizationOpLogBuilder {
	builder.changes = changes
	builder.changesFlag = true
	return builder
}

// 操作人
//
// 示例值：工号001
func (builder *OrganizationOpLogBuilder) Operator(operator string) *OrganizationOpLogBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 操作类型
//
// 示例值：10
func (builder *OrganizationOpLogBuilder) OperationType(operationType int) *OrganizationOpLogBuilder {
	builder.operationType = operationType
	builder.operationTypeFlag = true
	return builder
}

// 操作时间
//
// 示例值：2020-05-02 12:00:00
func (builder *OrganizationOpLogBuilder) OperationTime(operationTime string) *OrganizationOpLogBuilder {
	builder.operationTime = operationTime
	builder.operationTimeFlag = true
	return builder
}

// 操作生效时间
//
// 示例值：2020-06-02
func (builder *OrganizationOpLogBuilder) EffectiveTime(effectiveTime string) *OrganizationOpLogBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 操作原因说明
//
// 示例值：因人员调整,变更部门负责人为某某
func (builder *OrganizationOpLogBuilder) OperationReason(operationReason string) *OrganizationOpLogBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

// 调整原因列表
//
// 示例值：
func (builder *OrganizationOpLogBuilder) ChangeReasons(changeReasons []string) *OrganizationOpLogBuilder {
	builder.changeReasons = changeReasons
	builder.changeReasonsFlag = true
	return builder
}

func (builder *OrganizationOpLogBuilder) Build() *OrganizationOpLog {
	req := &OrganizationOpLog{}
	if builder.objectIdFlag {
		req.ObjectId = &builder.objectId

	}
	if builder.changesFlag {
		req.Changes = builder.changes
	}
	if builder.operatorFlag {
		req.Operator = &builder.operator

	}
	if builder.operationTypeFlag {
		req.OperationType = &builder.operationType

	}
	if builder.operationTimeFlag {
		req.OperationTime = &builder.operationTime

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason

	}
	if builder.changeReasonsFlag {
		req.ChangeReasons = builder.changeReasons
	}
	return req
}

type OrgdraftDepartmentId struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID ，新建部门审批通过前会返回空值

	DraftDepartmentId *string `json:"draft_department_id,omitempty"` // 调整部门 ID ，新建部门审批通过前会返回格式为 td_xxx 的临时 ID
}

type OrgdraftDepartmentIdBuilder struct {
	departmentId     string // 部门 ID ，新建部门审批通过前会返回空值
	departmentIdFlag bool

	draftDepartmentId     string // 调整部门 ID ，新建部门审批通过前会返回格式为 td_xxx 的临时 ID
	draftDepartmentIdFlag bool
}

func NewOrgdraftDepartmentIdBuilder() *OrgdraftDepartmentIdBuilder {
	builder := &OrgdraftDepartmentIdBuilder{}
	return builder
}

// 部门 ID ，新建部门审批通过前会返回空值
//
// 示例值：6974659700705068581
func (builder *OrgdraftDepartmentIdBuilder) DepartmentId(departmentId string) *OrgdraftDepartmentIdBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 调整部门 ID ，新建部门审批通过前会返回格式为 td_xxx 的临时 ID
//
// 示例值：6974659700705068581
func (builder *OrgdraftDepartmentIdBuilder) DraftDepartmentId(draftDepartmentId string) *OrgdraftDepartmentIdBuilder {
	builder.draftDepartmentId = draftDepartmentId
	builder.draftDepartmentIdFlag = true
	return builder
}

func (builder *OrgdraftDepartmentIdBuilder) Build() *OrgdraftDepartmentId {
	req := &OrgdraftDepartmentId{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.draftDepartmentIdFlag {
		req.DraftDepartmentId = &builder.draftDepartmentId

	}
	return req
}

type OrgdraftOrgroleAssignment struct {
	GranteeId *string `json:"grantee_id,omitempty"` // 授权用户id

	ManagementScopes []*OrgroleAssignmentOrg `json:"management_scopes,omitempty"` // 管理范围，交叉角色时有值
}

type OrgdraftOrgroleAssignmentBuilder struct {
	granteeId     string // 授权用户id
	granteeIdFlag bool

	managementScopes     []*OrgroleAssignmentOrg // 管理范围，交叉角色时有值
	managementScopesFlag bool
}

func NewOrgdraftOrgroleAssignmentBuilder() *OrgdraftOrgroleAssignmentBuilder {
	builder := &OrgdraftOrgroleAssignmentBuilder{}
	return builder
}

// 授权用户id
//
// 示例值：6967286856077673994
func (builder *OrgdraftOrgroleAssignmentBuilder) GranteeId(granteeId string) *OrgdraftOrgroleAssignmentBuilder {
	builder.granteeId = granteeId
	builder.granteeIdFlag = true
	return builder
}

// 管理范围，交叉角色时有值
//
// 示例值：
func (builder *OrgdraftOrgroleAssignmentBuilder) ManagementScopes(managementScopes []*OrgroleAssignmentOrg) *OrgdraftOrgroleAssignmentBuilder {
	builder.managementScopes = managementScopes
	builder.managementScopesFlag = true
	return builder
}

func (builder *OrgdraftOrgroleAssignmentBuilder) Build() *OrgdraftOrgroleAssignment {
	req := &OrgdraftOrgroleAssignment{}
	if builder.granteeIdFlag {
		req.GranteeId = &builder.granteeId

	}
	if builder.managementScopesFlag {
		req.ManagementScopes = builder.managementScopes
	}
	return req
}

type OrgroleAssignmentOrg struct {
	OrgId *string `json:"org_id,omitempty"` // 组织ID

	OrgType *string `json:"org_type,omitempty"` // 组织类型

	OrgName *string `json:"org_name,omitempty"` // 组织名称
}

type OrgroleAssignmentOrgBuilder struct {
	orgId     string // 组织ID
	orgIdFlag bool

	orgType     string // 组织类型
	orgTypeFlag bool

	orgName     string // 组织名称
	orgNameFlag bool
}

func NewOrgroleAssignmentOrgBuilder() *OrgroleAssignmentOrgBuilder {
	builder := &OrgroleAssignmentOrgBuilder{}
	return builder
}

// 组织ID
//
// 示例值：6967286856077673993
func (builder *OrgroleAssignmentOrgBuilder) OrgId(orgId string) *OrgroleAssignmentOrgBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 组织类型
//
// 示例值：department
func (builder *OrgroleAssignmentOrgBuilder) OrgType(orgType string) *OrgroleAssignmentOrgBuilder {
	builder.orgType = orgType
	builder.orgTypeFlag = true
	return builder
}

// 组织名称
//
// 示例值：people
func (builder *OrgroleAssignmentOrgBuilder) OrgName(orgName string) *OrgroleAssignmentOrgBuilder {
	builder.orgName = orgName
	builder.orgNameFlag = true
	return builder
}

func (builder *OrgroleAssignmentOrgBuilder) Build() *OrgroleAssignmentOrg {
	req := &OrgroleAssignmentOrg{}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId

	}
	if builder.orgTypeFlag {
		req.OrgType = &builder.orgType

	}
	if builder.orgNameFlag {
		req.OrgName = &builder.orgName

	}
	return req
}

type OrgroleInfo struct {
	RoleId *string `json:"role_id,omitempty"` // 角色ID

	OriginOrgroles []*OrgdraftOrgroleAssignment `json:"origin_orgroles,omitempty"` // 原组织角色

	TargetOrgroles []*OrgdraftOrgroleAssignment `json:"target_orgroles,omitempty"` // 新组织角色
}

type OrgroleInfoBuilder struct {
	roleId     string // 角色ID
	roleIdFlag bool

	originOrgroles     []*OrgdraftOrgroleAssignment // 原组织角色
	originOrgrolesFlag bool

	targetOrgroles     []*OrgdraftOrgroleAssignment // 新组织角色
	targetOrgrolesFlag bool
}

func NewOrgroleInfoBuilder() *OrgroleInfoBuilder {
	builder := &OrgroleInfoBuilder{}
	return builder
}

// 角色ID
//
// 示例值：hrbp
func (builder *OrgroleInfoBuilder) RoleId(roleId string) *OrgroleInfoBuilder {
	builder.roleId = roleId
	builder.roleIdFlag = true
	return builder
}

// 原组织角色
//
// 示例值：
func (builder *OrgroleInfoBuilder) OriginOrgroles(originOrgroles []*OrgdraftOrgroleAssignment) *OrgroleInfoBuilder {
	builder.originOrgroles = originOrgroles
	builder.originOrgrolesFlag = true
	return builder
}

// 新组织角色
//
// 示例值：
func (builder *OrgroleInfoBuilder) TargetOrgroles(targetOrgroles []*OrgdraftOrgroleAssignment) *OrgroleInfoBuilder {
	builder.targetOrgroles = targetOrgroles
	builder.targetOrgrolesFlag = true
	return builder
}

func (builder *OrgroleInfoBuilder) Build() *OrgroleInfo {
	req := &OrgroleInfo{}
	if builder.roleIdFlag {
		req.RoleId = &builder.roleId

	}
	if builder.originOrgrolesFlag {
		req.OriginOrgroles = builder.originOrgroles
	}
	if builder.targetOrgrolesFlag {
		req.TargetOrgroles = builder.targetOrgroles
	}
	return req
}

type Pathway struct {
	PathwayId *string `json:"pathway_id,omitempty"` // 通道 ID

	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 启用
}

type PathwayBuilder struct {
	pathwayId     string // 通道 ID
	pathwayIdFlag bool

	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	active     bool // 启用
	activeFlag bool
}

func NewPathwayBuilder() *PathwayBuilder {
	builder := &PathwayBuilder{}
	return builder
}

// 通道 ID
//
// 示例值：4692446793125560154
func (builder *PathwayBuilder) PathwayId(pathwayId string) *PathwayBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *PathwayBuilder) Code(code string) *PathwayBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *PathwayBuilder) Names(names []*I18n) *PathwayBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *PathwayBuilder) Descriptions(descriptions []*I18n) *PathwayBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 启用
//
// 示例值：true
func (builder *PathwayBuilder) Active(active bool) *PathwayBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *PathwayBuilder) Build() *Pathway {
	req := &Pathway{}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	return req
}

type PathwayCreate struct {
	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述
}

type PathwayCreateBuilder struct {
	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool
}

func NewPathwayCreateBuilder() *PathwayCreateBuilder {
	builder := &PathwayCreateBuilder{}
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *PathwayCreateBuilder) Code(code string) *PathwayCreateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *PathwayCreateBuilder) Names(names []*I18n) *PathwayCreateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *PathwayCreateBuilder) Descriptions(descriptions []*I18n) *PathwayCreateBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

func (builder *PathwayCreateBuilder) Build() *PathwayCreate {
	req := &PathwayCreate{}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	return req
}

type PathwayUpdate struct {
	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述
}

type PathwayUpdateBuilder struct {
	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool
}

func NewPathwayUpdateBuilder() *PathwayUpdateBuilder {
	builder := &PathwayUpdateBuilder{}
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *PathwayUpdateBuilder) Code(code string) *PathwayUpdateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *PathwayUpdateBuilder) Names(names []*I18n) *PathwayUpdateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *PathwayUpdateBuilder) Descriptions(descriptions []*I18n) *PathwayUpdateBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

func (builder *PathwayUpdateBuilder) Build() *PathwayUpdate {
	req := &PathwayUpdate{}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	return req
}

type PersonInfo struct {
	PersonId *string `json:"person_id,omitempty"` // 个人信息 ID

	PhoneNumber *string `json:"phone_number,omitempty"` // 个人电话

	LegalName *string `json:"legal_name,omitempty"` // 法定姓名

	PreferredName *string `json:"preferred_name,omitempty"` // 常用名

	AdditionalName *string `json:"additional_name,omitempty"` // 别名

	PreferredLocalFullName *string `json:"preferred_local_full_name,omitempty"` // 常用本地全名

	PreferredEnglishFullName *string `json:"preferred_english_full_name,omitempty"` // 常用英文全名

	NameList []*PersonName `json:"name_list,omitempty"` // 姓名列表

	Gender *Enum `json:"gender,omitempty"` // -| 性别，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：gender - object_api_name：person

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 出生日期

	NationalityId *string `json:"nationality_id,omitempty"` // 国籍 ID ，国籍数据可通过【查询国家/地区信息】接口获取

	NationalityIdV2 *string `json:"nationality_id_v2,omitempty"` // 国籍 ID，可通过【查询国籍信息】接口查询

	AdditionalNationalities []*Nationality `json:"additional_nationalities,omitempty"` // 其他国籍

	CitizenshipStatus []*CitizenshipStatus `json:"citizenship_status,omitempty"` // 公民身份

	Race *Enum `json:"race,omitempty"` // -| 民族 / 种族，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：ethnicity_race - object_api_name：person

	MaritalStatus *Enum `json:"marital_status,omitempty"` // -| 婚姻状况，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：marital_status - object_api_name：person

	PhoneList []*Phone `json:"phone_list,omitempty"` // 电话列表，只有当满足下面所有条件时，电话在个人信息页才可见

	AddressList []*Address `json:"address_list,omitempty"` // 地址列表

	EmailList []*Email `json:"email_list,omitempty"` // 邮箱列表

	WorkExperienceList []*WorkExperienceInfo `json:"work_experience_list,omitempty"` // 工作经历列表

	EducationList []*Education `json:"education_list,omitempty"` // 教育经历列表

	BankAccountList []*BankAccount `json:"bank_account_list,omitempty"` // 银行账户

	NationalIdList []*NationalId `json:"national_id_list,omitempty"` // 证件

	DependentList []*Dependent `json:"dependent_list,omitempty"` // 家庭成员列表

	EmergencyContactList []*EmergencyContact `json:"emergency_contact_list,omitempty"` // 紧急联系人列表

	DateEnteredWorkforce *string `json:"date_entered_workforce,omitempty"` // 参加工作日期

	WorkingYears *int `json:"working_years,omitempty"` // 工龄

	ProfileImageId *string `json:"profile_image_id,omitempty"` // 头像资源的 ID

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱地址

	Age *int `json:"age,omitempty"` // 年龄

	HighestLevelOfEducation *Education `json:"highest_level_of_education,omitempty"` // 最高学历教育经历

	HighestDegreeOfEducation *Education `json:"highest_degree_of_education,omitempty"` // 最高学位教育经历

	PersonalProfile []*PersonalProfile `json:"personal_profile,omitempty"` // 个人资料附件

	NativeRegion *string `json:"native_region,omitempty"` // 籍贯 ID

	HukouType *Enum `json:"hukou_type,omitempty"` // 户口类型，枚举值可通过文档【飞书人事枚举常量】户口类型（hukou_type）枚举定义部分获得

	HukouLocation *string `json:"hukou_location,omitempty"` // 户口所在地

	PoliticalAffiliations []*Enum `json:"political_affiliations,omitempty"` // 政治面貌，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：political_affiliation - object_api_name：person_info_chn

	TalentId *string `json:"talent_id,omitempty"` // 人才 ID

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	NationalIdNumber *string `json:"national_id_number,omitempty"` // 居民身份证件号码

	FamilyAddress *string `json:"family_address,omitempty"` // 家庭地址

	PersonInfoChns []*PersonInfoChn `json:"person_info_chns,omitempty"` // 个人附加信息

	BornCountryRegion *string `json:"born_country_region,omitempty"` // 出生国家/地区

	IsDisabled *bool `json:"is_disabled,omitempty"` // 是否残疾

	DisableCardNumber *string `json:"disable_card_number,omitempty"` // 残疾证号

	IsMartyrFamily *bool `json:"is_martyr_family,omitempty"` // 是否烈属

	MartyrCardNumber *string `json:"martyr_card_number,omitempty"` // 烈属证号

	IsOldAlone *bool `json:"is_old_alone,omitempty"` // 是否孤老

	ResidentTaxes []*ResidentTax `json:"resident_taxes,omitempty"` // 居民身份信息

	FirstEntryTime *string `json:"first_entry_time,omitempty"` // 首次入境日期

	LeaveTime *string `json:"leave_time,omitempty"` // 预计离境日期

	Religion *Enum `json:"religion,omitempty"` // -| 宗教信仰，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name：person - custom_api_name：religion

	WorkingYearsV2 *float64 `json:"working_years_v2,omitempty"` // 工龄 浮点类型

	CreatedAt *string `json:"created_at,omitempty"` // 个人信息 创建时间

	UpdatedAt *string `json:"updated_at,omitempty"` // 个人信息 更新时间

	CreatedBy *string `json:"created_by,omitempty"` // 个人信息 创建人

	UpdatedBy *string `json:"updated_by,omitempty"` // 个人信息 更新人

	BankAccountNumber *string `json:"bank_account_number,omitempty"` // 银行卡号

	PassportNumber *string `json:"passport_number,omitempty"` // 护照号码

	FormerEmployer []*I18n `json:"former_employer,omitempty"` // 上家公司
}

type PersonInfoBuilder struct {
	personId     string // 个人信息 ID
	personIdFlag bool

	phoneNumber     string // 个人电话
	phoneNumberFlag bool

	legalName     string // 法定姓名
	legalNameFlag bool

	preferredName     string // 常用名
	preferredNameFlag bool

	additionalName     string // 别名
	additionalNameFlag bool

	preferredLocalFullName     string // 常用本地全名
	preferredLocalFullNameFlag bool

	preferredEnglishFullName     string // 常用英文全名
	preferredEnglishFullNameFlag bool

	nameList     []*PersonName // 姓名列表
	nameListFlag bool

	gender     *Enum // -| 性别，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：gender - object_api_name：person
	genderFlag bool

	dateOfBirth     string // 出生日期
	dateOfBirthFlag bool

	nationalityId     string // 国籍 ID ，国籍数据可通过【查询国家/地区信息】接口获取
	nationalityIdFlag bool

	nationalityIdV2     string // 国籍 ID，可通过【查询国籍信息】接口查询
	nationalityIdV2Flag bool

	additionalNationalities     []*Nationality // 其他国籍
	additionalNationalitiesFlag bool

	citizenshipStatus     []*CitizenshipStatus // 公民身份
	citizenshipStatusFlag bool

	race     *Enum // -| 民族 / 种族，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：ethnicity_race - object_api_name：person
	raceFlag bool

	maritalStatus     *Enum // -| 婚姻状况，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：marital_status - object_api_name：person
	maritalStatusFlag bool

	phoneList     []*Phone // 电话列表，只有当满足下面所有条件时，电话在个人信息页才可见
	phoneListFlag bool

	addressList     []*Address // 地址列表
	addressListFlag bool

	emailList     []*Email // 邮箱列表
	emailListFlag bool

	workExperienceList     []*WorkExperienceInfo // 工作经历列表
	workExperienceListFlag bool

	educationList     []*Education // 教育经历列表
	educationListFlag bool

	bankAccountList     []*BankAccount // 银行账户
	bankAccountListFlag bool

	nationalIdList     []*NationalId // 证件
	nationalIdListFlag bool

	dependentList     []*Dependent // 家庭成员列表
	dependentListFlag bool

	emergencyContactList     []*EmergencyContact // 紧急联系人列表
	emergencyContactListFlag bool

	dateEnteredWorkforce     string // 参加工作日期
	dateEnteredWorkforceFlag bool

	workingYears     int // 工龄
	workingYearsFlag bool

	profileImageId     string // 头像资源的 ID
	profileImageIdFlag bool

	emailAddress     string // 邮箱地址
	emailAddressFlag bool

	age     int // 年龄
	ageFlag bool

	highestLevelOfEducation     *Education // 最高学历教育经历
	highestLevelOfEducationFlag bool

	highestDegreeOfEducation     *Education // 最高学位教育经历
	highestDegreeOfEducationFlag bool

	personalProfile     []*PersonalProfile // 个人资料附件
	personalProfileFlag bool

	nativeRegion     string // 籍贯 ID
	nativeRegionFlag bool

	hukouType     *Enum // 户口类型，枚举值可通过文档【飞书人事枚举常量】户口类型（hukou_type）枚举定义部分获得
	hukouTypeFlag bool

	hukouLocation     string // 户口所在地
	hukouLocationFlag bool

	politicalAffiliations     []*Enum // 政治面貌，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：political_affiliation - object_api_name：person_info_chn
	politicalAffiliationsFlag bool

	talentId     string // 人才 ID
	talentIdFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	nationalIdNumber     string // 居民身份证件号码
	nationalIdNumberFlag bool

	familyAddress     string // 家庭地址
	familyAddressFlag bool

	personInfoChns     []*PersonInfoChn // 个人附加信息
	personInfoChnsFlag bool

	bornCountryRegion     string // 出生国家/地区
	bornCountryRegionFlag bool

	isDisabled     bool // 是否残疾
	isDisabledFlag bool

	disableCardNumber     string // 残疾证号
	disableCardNumberFlag bool

	isMartyrFamily     bool // 是否烈属
	isMartyrFamilyFlag bool

	martyrCardNumber     string // 烈属证号
	martyrCardNumberFlag bool

	isOldAlone     bool // 是否孤老
	isOldAloneFlag bool

	residentTaxes     []*ResidentTax // 居民身份信息
	residentTaxesFlag bool

	firstEntryTime     string // 首次入境日期
	firstEntryTimeFlag bool

	leaveTime     string // 预计离境日期
	leaveTimeFlag bool

	religion     *Enum // -| 宗教信仰，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name：person - custom_api_name：religion
	religionFlag bool

	workingYearsV2     float64 // 工龄 浮点类型
	workingYearsV2Flag bool

	createdAt     string // 个人信息 创建时间
	createdAtFlag bool

	updatedAt     string // 个人信息 更新时间
	updatedAtFlag bool

	createdBy     string // 个人信息 创建人
	createdByFlag bool

	updatedBy     string // 个人信息 更新人
	updatedByFlag bool

	bankAccountNumber     string // 银行卡号
	bankAccountNumberFlag bool

	passportNumber     string // 护照号码
	passportNumberFlag bool

	formerEmployer     []*I18n // 上家公司
	formerEmployerFlag bool
}

func NewPersonInfoBuilder() *PersonInfoBuilder {
	builder := &PersonInfoBuilder{}
	return builder
}

// 个人信息 ID
//
// 示例值：6919733936050406926
func (builder *PersonInfoBuilder) PersonId(personId string) *PersonInfoBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 个人电话
//
// 示例值：13649211111
func (builder *PersonInfoBuilder) PhoneNumber(phoneNumber string) *PersonInfoBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 法定姓名
//
// 示例值：张三
func (builder *PersonInfoBuilder) LegalName(legalName string) *PersonInfoBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 常用名
//
// 示例值：刘梓新(Henry)
func (builder *PersonInfoBuilder) PreferredName(preferredName string) *PersonInfoBuilder {
	builder.preferredName = preferredName
	builder.preferredNameFlag = true
	return builder
}

// 别名
//
// 示例值：梓新
func (builder *PersonInfoBuilder) AdditionalName(additionalName string) *PersonInfoBuilder {
	builder.additionalName = additionalName
	builder.additionalNameFlag = true
	return builder
}

// 常用本地全名
//
// 示例值：刘梓新
func (builder *PersonInfoBuilder) PreferredLocalFullName(preferredLocalFullName string) *PersonInfoBuilder {
	builder.preferredLocalFullName = preferredLocalFullName
	builder.preferredLocalFullNameFlag = true
	return builder
}

// 常用英文全名
//
// 示例值：Henry
func (builder *PersonInfoBuilder) PreferredEnglishFullName(preferredEnglishFullName string) *PersonInfoBuilder {
	builder.preferredEnglishFullName = preferredEnglishFullName
	builder.preferredEnglishFullNameFlag = true
	return builder
}

// 姓名列表
//
// 示例值：
func (builder *PersonInfoBuilder) NameList(nameList []*PersonName) *PersonInfoBuilder {
	builder.nameList = nameList
	builder.nameListFlag = true
	return builder
}

// -| 性别，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：gender - object_api_name：person
//
// 示例值：
func (builder *PersonInfoBuilder) Gender(gender *Enum) *PersonInfoBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 出生日期
//
// 示例值：2020-01-01
func (builder *PersonInfoBuilder) DateOfBirth(dateOfBirth string) *PersonInfoBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 国籍 ID ，国籍数据可通过【查询国家/地区信息】接口获取
//
// 示例值：6862995757234914811
func (builder *PersonInfoBuilder) NationalityId(nationalityId string) *PersonInfoBuilder {
	builder.nationalityId = nationalityId
	builder.nationalityIdFlag = true
	return builder
}

// 国籍 ID，可通过【查询国籍信息】接口查询
//
// 示例值：6862995757234914821
func (builder *PersonInfoBuilder) NationalityIdV2(nationalityIdV2 string) *PersonInfoBuilder {
	builder.nationalityIdV2 = nationalityIdV2
	builder.nationalityIdV2Flag = true
	return builder
}

// 其他国籍
//
// 示例值：
func (builder *PersonInfoBuilder) AdditionalNationalities(additionalNationalities []*Nationality) *PersonInfoBuilder {
	builder.additionalNationalities = additionalNationalities
	builder.additionalNationalitiesFlag = true
	return builder
}

// 公民身份
//
// 示例值：
func (builder *PersonInfoBuilder) CitizenshipStatus(citizenshipStatus []*CitizenshipStatus) *PersonInfoBuilder {
	builder.citizenshipStatus = citizenshipStatus
	builder.citizenshipStatusFlag = true
	return builder
}

// -| 民族 / 种族，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：ethnicity_race - object_api_name：person
//
// 示例值：
func (builder *PersonInfoBuilder) Race(race *Enum) *PersonInfoBuilder {
	builder.race = race
	builder.raceFlag = true
	return builder
}

// -| 婚姻状况，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：marital_status - object_api_name：person
//
// 示例值：
func (builder *PersonInfoBuilder) MaritalStatus(maritalStatus *Enum) *PersonInfoBuilder {
	builder.maritalStatus = maritalStatus
	builder.maritalStatusFlag = true
	return builder
}

// 电话列表，只有当满足下面所有条件时，电话在个人信息页才可见
//
// 示例值：
func (builder *PersonInfoBuilder) PhoneList(phoneList []*Phone) *PersonInfoBuilder {
	builder.phoneList = phoneList
	builder.phoneListFlag = true
	return builder
}

// 地址列表
//
// 示例值：
func (builder *PersonInfoBuilder) AddressList(addressList []*Address) *PersonInfoBuilder {
	builder.addressList = addressList
	builder.addressListFlag = true
	return builder
}

// 邮箱列表
//
// 示例值：
func (builder *PersonInfoBuilder) EmailList(emailList []*Email) *PersonInfoBuilder {
	builder.emailList = emailList
	builder.emailListFlag = true
	return builder
}

// 工作经历列表
//
// 示例值：
func (builder *PersonInfoBuilder) WorkExperienceList(workExperienceList []*WorkExperienceInfo) *PersonInfoBuilder {
	builder.workExperienceList = workExperienceList
	builder.workExperienceListFlag = true
	return builder
}

// 教育经历列表
//
// 示例值：
func (builder *PersonInfoBuilder) EducationList(educationList []*Education) *PersonInfoBuilder {
	builder.educationList = educationList
	builder.educationListFlag = true
	return builder
}

// 银行账户
//
// 示例值：
func (builder *PersonInfoBuilder) BankAccountList(bankAccountList []*BankAccount) *PersonInfoBuilder {
	builder.bankAccountList = bankAccountList
	builder.bankAccountListFlag = true
	return builder
}

// 证件
//
// 示例值：
func (builder *PersonInfoBuilder) NationalIdList(nationalIdList []*NationalId) *PersonInfoBuilder {
	builder.nationalIdList = nationalIdList
	builder.nationalIdListFlag = true
	return builder
}

// 家庭成员列表
//
// 示例值：
func (builder *PersonInfoBuilder) DependentList(dependentList []*Dependent) *PersonInfoBuilder {
	builder.dependentList = dependentList
	builder.dependentListFlag = true
	return builder
}

// 紧急联系人列表
//
// 示例值：
func (builder *PersonInfoBuilder) EmergencyContactList(emergencyContactList []*EmergencyContact) *PersonInfoBuilder {
	builder.emergencyContactList = emergencyContactList
	builder.emergencyContactListFlag = true
	return builder
}

// 参加工作日期
//
// 示例值：2020-10-01
func (builder *PersonInfoBuilder) DateEnteredWorkforce(dateEnteredWorkforce string) *PersonInfoBuilder {
	builder.dateEnteredWorkforce = dateEnteredWorkforce
	builder.dateEnteredWorkforceFlag = true
	return builder
}

// 工龄
//
// 示例值：2
func (builder *PersonInfoBuilder) WorkingYears(workingYears int) *PersonInfoBuilder {
	builder.workingYears = workingYears
	builder.workingYearsFlag = true
	return builder
}

// 头像资源的 ID
//
// 示例值：dfysuc8x76dsfsw
func (builder *PersonInfoBuilder) ProfileImageId(profileImageId string) *PersonInfoBuilder {
	builder.profileImageId = profileImageId
	builder.profileImageIdFlag = true
	return builder
}

// 邮箱地址
//
// 示例值：test@163.com
func (builder *PersonInfoBuilder) EmailAddress(emailAddress string) *PersonInfoBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 年龄
//
// 示例值：22
func (builder *PersonInfoBuilder) Age(age int) *PersonInfoBuilder {
	builder.age = age
	builder.ageFlag = true
	return builder
}

// 最高学历教育经历
//
// 示例值：
func (builder *PersonInfoBuilder) HighestLevelOfEducation(highestLevelOfEducation *Education) *PersonInfoBuilder {
	builder.highestLevelOfEducation = highestLevelOfEducation
	builder.highestLevelOfEducationFlag = true
	return builder
}

// 最高学位教育经历
//
// 示例值：
func (builder *PersonInfoBuilder) HighestDegreeOfEducation(highestDegreeOfEducation *Education) *PersonInfoBuilder {
	builder.highestDegreeOfEducation = highestDegreeOfEducation
	builder.highestDegreeOfEducationFlag = true
	return builder
}

// 个人资料附件
//
// 示例值：
func (builder *PersonInfoBuilder) PersonalProfile(personalProfile []*PersonalProfile) *PersonInfoBuilder {
	builder.personalProfile = personalProfile
	builder.personalProfileFlag = true
	return builder
}

// 籍贯 ID
//
// 示例值：6863326262618752111
func (builder *PersonInfoBuilder) NativeRegion(nativeRegion string) *PersonInfoBuilder {
	builder.nativeRegion = nativeRegion
	builder.nativeRegionFlag = true
	return builder
}

// 户口类型，枚举值可通过文档【飞书人事枚举常量】户口类型（hukou_type）枚举定义部分获得
//
// 示例值：
func (builder *PersonInfoBuilder) HukouType(hukouType *Enum) *PersonInfoBuilder {
	builder.hukouType = hukouType
	builder.hukouTypeFlag = true
	return builder
}

// 户口所在地
//
// 示例值：山东省平阴县
func (builder *PersonInfoBuilder) HukouLocation(hukouLocation string) *PersonInfoBuilder {
	builder.hukouLocation = hukouLocation
	builder.hukouLocationFlag = true
	return builder
}

// 政治面貌，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：political_affiliation - object_api_name：person_info_chn
//
// 示例值：
func (builder *PersonInfoBuilder) PoliticalAffiliations(politicalAffiliations []*Enum) *PersonInfoBuilder {
	builder.politicalAffiliations = politicalAffiliations
	builder.politicalAffiliationsFlag = true
	return builder
}

// 人才 ID
//
// 示例值：6863326262618752123
func (builder *PersonInfoBuilder) TalentId(talentId string) *PersonInfoBuilder {
	builder.talentId = talentId
	builder.talentIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PersonInfoBuilder) CustomFields(customFields []*CustomFieldData) *PersonInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 居民身份证件号码
//
// 示例值：11010000000000
func (builder *PersonInfoBuilder) NationalIdNumber(nationalIdNumber string) *PersonInfoBuilder {
	builder.nationalIdNumber = nationalIdNumber
	builder.nationalIdNumberFlag = true
	return builder
}

// 家庭地址
//
// 示例值：6863326262618752123
func (builder *PersonInfoBuilder) FamilyAddress(familyAddress string) *PersonInfoBuilder {
	builder.familyAddress = familyAddress
	builder.familyAddressFlag = true
	return builder
}

// 个人附加信息
//
// 示例值：6863326262618752123
func (builder *PersonInfoBuilder) PersonInfoChns(personInfoChns []*PersonInfoChn) *PersonInfoBuilder {
	builder.personInfoChns = personInfoChns
	builder.personInfoChnsFlag = true
	return builder
}

// 出生国家/地区
//
// 示例值：中国
func (builder *PersonInfoBuilder) BornCountryRegion(bornCountryRegion string) *PersonInfoBuilder {
	builder.bornCountryRegion = bornCountryRegion
	builder.bornCountryRegionFlag = true
	return builder
}

// 是否残疾
//
// 示例值：true
func (builder *PersonInfoBuilder) IsDisabled(isDisabled bool) *PersonInfoBuilder {
	builder.isDisabled = isDisabled
	builder.isDisabledFlag = true
	return builder
}

// 残疾证号
//
// 示例值：1110000
func (builder *PersonInfoBuilder) DisableCardNumber(disableCardNumber string) *PersonInfoBuilder {
	builder.disableCardNumber = disableCardNumber
	builder.disableCardNumberFlag = true
	return builder
}

// 是否烈属
//
// 示例值：true
func (builder *PersonInfoBuilder) IsMartyrFamily(isMartyrFamily bool) *PersonInfoBuilder {
	builder.isMartyrFamily = isMartyrFamily
	builder.isMartyrFamilyFlag = true
	return builder
}

// 烈属证号
//
// 示例值：1110000
func (builder *PersonInfoBuilder) MartyrCardNumber(martyrCardNumber string) *PersonInfoBuilder {
	builder.martyrCardNumber = martyrCardNumber
	builder.martyrCardNumberFlag = true
	return builder
}

// 是否孤老
//
// 示例值：true
func (builder *PersonInfoBuilder) IsOldAlone(isOldAlone bool) *PersonInfoBuilder {
	builder.isOldAlone = isOldAlone
	builder.isOldAloneFlag = true
	return builder
}

// 居民身份信息
//
// 示例值：6863326262618752123
func (builder *PersonInfoBuilder) ResidentTaxes(residentTaxes []*ResidentTax) *PersonInfoBuilder {
	builder.residentTaxes = residentTaxes
	builder.residentTaxesFlag = true
	return builder
}

// 首次入境日期
//
// 示例值：2021-01-02
func (builder *PersonInfoBuilder) FirstEntryTime(firstEntryTime string) *PersonInfoBuilder {
	builder.firstEntryTime = firstEntryTime
	builder.firstEntryTimeFlag = true
	return builder
}

// 预计离境日期
//
// 示例值：2022-01-02
func (builder *PersonInfoBuilder) LeaveTime(leaveTime string) *PersonInfoBuilder {
	builder.leaveTime = leaveTime
	builder.leaveTimeFlag = true
	return builder
}

// -| 宗教信仰，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name：person - custom_api_name：religion
//
// 示例值：
func (builder *PersonInfoBuilder) Religion(religion *Enum) *PersonInfoBuilder {
	builder.religion = religion
	builder.religionFlag = true
	return builder
}

// 工龄 浮点类型
//
// 示例值：2.1
func (builder *PersonInfoBuilder) WorkingYearsV2(workingYearsV2 float64) *PersonInfoBuilder {
	builder.workingYearsV2 = workingYearsV2
	builder.workingYearsV2Flag = true
	return builder
}

// 个人信息 创建时间
//
// 示例值：2022-01-02
func (builder *PersonInfoBuilder) CreatedAt(createdAt string) *PersonInfoBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 个人信息 更新时间
//
// 示例值：2022-01-02
func (builder *PersonInfoBuilder) UpdatedAt(updatedAt string) *PersonInfoBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 个人信息 创建人
//
// 示例值：69928404442626824
func (builder *PersonInfoBuilder) CreatedBy(createdBy string) *PersonInfoBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 个人信息 更新人
//
// 示例值：69928404442626824
func (builder *PersonInfoBuilder) UpdatedBy(updatedBy string) *PersonInfoBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 银行卡号
//
// 示例值：69928404442626824
func (builder *PersonInfoBuilder) BankAccountNumber(bankAccountNumber string) *PersonInfoBuilder {
	builder.bankAccountNumber = bankAccountNumber
	builder.bankAccountNumberFlag = true
	return builder
}

// 护照号码
//
// 示例值：6919733936050406926
func (builder *PersonInfoBuilder) PassportNumber(passportNumber string) *PersonInfoBuilder {
	builder.passportNumber = passportNumber
	builder.passportNumberFlag = true
	return builder
}

// 上家公司
//
// 示例值：
func (builder *PersonInfoBuilder) FormerEmployer(formerEmployer []*I18n) *PersonInfoBuilder {
	builder.formerEmployer = formerEmployer
	builder.formerEmployerFlag = true
	return builder
}

func (builder *PersonInfoBuilder) Build() *PersonInfo {
	req := &PersonInfo{}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	if builder.preferredNameFlag {
		req.PreferredName = &builder.preferredName

	}
	if builder.additionalNameFlag {
		req.AdditionalName = &builder.additionalName

	}
	if builder.preferredLocalFullNameFlag {
		req.PreferredLocalFullName = &builder.preferredLocalFullName

	}
	if builder.preferredEnglishFullNameFlag {
		req.PreferredEnglishFullName = &builder.preferredEnglishFullName

	}
	if builder.nameListFlag {
		req.NameList = builder.nameList
	}
	if builder.genderFlag {
		req.Gender = builder.gender
	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.nationalityIdFlag {
		req.NationalityId = &builder.nationalityId

	}
	if builder.nationalityIdV2Flag {
		req.NationalityIdV2 = &builder.nationalityIdV2

	}
	if builder.additionalNationalitiesFlag {
		req.AdditionalNationalities = builder.additionalNationalities
	}
	if builder.citizenshipStatusFlag {
		req.CitizenshipStatus = builder.citizenshipStatus
	}
	if builder.raceFlag {
		req.Race = builder.race
	}
	if builder.maritalStatusFlag {
		req.MaritalStatus = builder.maritalStatus
	}
	if builder.phoneListFlag {
		req.PhoneList = builder.phoneList
	}
	if builder.addressListFlag {
		req.AddressList = builder.addressList
	}
	if builder.emailListFlag {
		req.EmailList = builder.emailList
	}
	if builder.workExperienceListFlag {
		req.WorkExperienceList = builder.workExperienceList
	}
	if builder.educationListFlag {
		req.EducationList = builder.educationList
	}
	if builder.bankAccountListFlag {
		req.BankAccountList = builder.bankAccountList
	}
	if builder.nationalIdListFlag {
		req.NationalIdList = builder.nationalIdList
	}
	if builder.dependentListFlag {
		req.DependentList = builder.dependentList
	}
	if builder.emergencyContactListFlag {
		req.EmergencyContactList = builder.emergencyContactList
	}
	if builder.dateEnteredWorkforceFlag {
		req.DateEnteredWorkforce = &builder.dateEnteredWorkforce

	}
	if builder.workingYearsFlag {
		req.WorkingYears = &builder.workingYears

	}
	if builder.profileImageIdFlag {
		req.ProfileImageId = &builder.profileImageId

	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.ageFlag {
		req.Age = &builder.age

	}
	if builder.highestLevelOfEducationFlag {
		req.HighestLevelOfEducation = builder.highestLevelOfEducation
	}
	if builder.highestDegreeOfEducationFlag {
		req.HighestDegreeOfEducation = builder.highestDegreeOfEducation
	}
	if builder.personalProfileFlag {
		req.PersonalProfile = builder.personalProfile
	}
	if builder.nativeRegionFlag {
		req.NativeRegion = &builder.nativeRegion

	}
	if builder.hukouTypeFlag {
		req.HukouType = builder.hukouType
	}
	if builder.hukouLocationFlag {
		req.HukouLocation = &builder.hukouLocation

	}
	if builder.politicalAffiliationsFlag {
		req.PoliticalAffiliations = builder.politicalAffiliations
	}
	if builder.talentIdFlag {
		req.TalentId = &builder.talentId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.nationalIdNumberFlag {
		req.NationalIdNumber = &builder.nationalIdNumber

	}
	if builder.familyAddressFlag {
		req.FamilyAddress = &builder.familyAddress

	}
	if builder.personInfoChnsFlag {
		req.PersonInfoChns = builder.personInfoChns
	}
	if builder.bornCountryRegionFlag {
		req.BornCountryRegion = &builder.bornCountryRegion

	}
	if builder.isDisabledFlag {
		req.IsDisabled = &builder.isDisabled

	}
	if builder.disableCardNumberFlag {
		req.DisableCardNumber = &builder.disableCardNumber

	}
	if builder.isMartyrFamilyFlag {
		req.IsMartyrFamily = &builder.isMartyrFamily

	}
	if builder.martyrCardNumberFlag {
		req.MartyrCardNumber = &builder.martyrCardNumber

	}
	if builder.isOldAloneFlag {
		req.IsOldAlone = &builder.isOldAlone

	}
	if builder.residentTaxesFlag {
		req.ResidentTaxes = builder.residentTaxes
	}
	if builder.firstEntryTimeFlag {
		req.FirstEntryTime = &builder.firstEntryTime

	}
	if builder.leaveTimeFlag {
		req.LeaveTime = &builder.leaveTime

	}
	if builder.religionFlag {
		req.Religion = builder.religion
	}
	if builder.workingYearsV2Flag {
		req.WorkingYearsV2 = &builder.workingYearsV2

	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.bankAccountNumberFlag {
		req.BankAccountNumber = &builder.bankAccountNumber

	}
	if builder.passportNumberFlag {
		req.PassportNumber = &builder.passportNumber

	}
	if builder.formerEmployerFlag {
		req.FormerEmployer = builder.formerEmployer
	}
	return req
}

type PersonInfoBt struct {
	PersonId *string `json:"person_id,omitempty"` // 个人信息 ID

	PhoneNumber *string `json:"phone_number,omitempty"` // 个人电话;- 该值取自 person_info.phone_list 中满足以下条件的电话;  - is_primary: true;  - device_type: mobile_phone;  - phone_usage: home

	LegalName *string `json:"legal_name,omitempty"` // 法定姓名

	AdditionalName *string `json:"additional_name,omitempty"` // 别名

	PreferredName *string `json:"preferred_name,omitempty"` // 常用名

	PreferredLocalFullName *string `json:"preferred_local_full_name,omitempty"` // 常用本地全名

	PreferredEnglishFullName *string `json:"preferred_english_full_name,omitempty"` // 常用英文全名

	NameList []*PersonName `json:"name_list,omitempty"` // 姓名列表

	Gender *Enum `json:"gender,omitempty"` // -| 性别 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：gender - object_api_name：person

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 出生日期

	NationalityId *string `json:"nationality_id,omitempty"` // 国籍 ID;- 可通过[查询国籍信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)查询

	NationalityIdV2 *string `json:"nationality_id_v2,omitempty"` // 国籍 ID;- 可通过[查询国籍信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)查询

	AdditionalNationalities []*Nationality `json:"additional_nationalities,omitempty"` // 其他国籍

	CitizenshipStatus []*CitizenshipStatus `json:"citizenship_status,omitempty"` // 公民身份

	Race *Enum `json:"race,omitempty"` // -| 民族 / 种族 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：ethnicity_race - object_api_name：person

	MaritalStatus *Enum `json:"marital_status,omitempty"` // -| 婚姻状况 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：marital_status - object_api_name：person

	PhoneList []*Phone `json:"phone_list,omitempty"` // 电话列表

	AddressList []*Address `json:"address_list,omitempty"` // 地址列表

	EmailList []*Email `json:"email_list,omitempty"` // 邮箱列表

	WorkExperienceList []*WorkExperienceInfo `json:"work_experience_list,omitempty"` // 工作经历列表

	EducationList []*Education `json:"education_list,omitempty"` // 教育经历列表

	BankAccountList []*BankAccount `json:"bank_account_list,omitempty"` // 银行账户

	NationalIdList []*NationalId `json:"national_id_list,omitempty"` // 证件

	DependentList []*Dependent `json:"dependent_list,omitempty"` // 家庭成员列表

	EmergencyContactList []*EmergencyContact `json:"emergency_contact_list,omitempty"` // 紧急联系人列表

	DateEnteredWorkforce *string `json:"date_entered_workforce,omitempty"` // 参加工作日期

	WorkingYears *int `json:"working_years,omitempty"` // 工龄

	ProfileImageId *string `json:"profile_image_id,omitempty"` // 头像资源的 ID;- 已废弃，请使用 avatar_url

	EmailAddress *string `json:"email_address,omitempty"` // 邮箱地址

	Age *int `json:"age,omitempty"` // 年龄

	HighestLevelOfEducation *Education `json:"highest_level_of_education,omitempty"` // 最高学历教育经历

	HighestDegreeOfEducation *Education `json:"highest_degree_of_education,omitempty"` // 最高学位教育经历

	PersonalProfile []*PersonalProfile `json:"personal_profile,omitempty"` // 个人资料附件

	NativeRegion *string `json:"native_region,omitempty"` // 籍贯 ID;- 可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)获取详情

	HukouType *Enum `json:"hukou_type,omitempty"` // 户口类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name: person_info_chn;  - custom_api_name: hukou_type

	HukouLocation *string `json:"hukou_location,omitempty"` // 户口所在地

	PoliticalAffiliations []*Enum `json:"political_affiliations,omitempty"` // 政治面貌;- 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： ;  - custom_api_name：political_affiliation ;  - object_api_name：person_info_chn

	TalentId *string `json:"talent_id,omitempty"` // 人才 ID;- 可通过[获取人才信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)获取详情

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段;- 请参考[自定义字段说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)

	NationalIdNumber *string `json:"national_id_number,omitempty"` // 居民身份证件号码

	FamilyAddress *string `json:"family_address,omitempty"` // 家庭地址

	BornCountryRegion *string `json:"born_country_region,omitempty"` // 出生国家/地区

	IsDisabled *bool `json:"is_disabled,omitempty"` // 是否残疾

	DisableCardNumber *string `json:"disable_card_number,omitempty"` // 残疾证号

	IsMartyrFamily *bool `json:"is_martyr_family,omitempty"` // 是否烈属

	MartyrCardNumber *string `json:"martyr_card_number,omitempty"` // 烈属证号

	IsOldAlone *bool `json:"is_old_alone,omitempty"` // 是否孤老

	ResidentTaxes []*ResidentTax `json:"resident_taxes,omitempty"` // 居民身份信息

	FirstEntryTime *string `json:"first_entry_time,omitempty"` // 首次入境日期

	LeaveTime *string `json:"leave_time,omitempty"` // 预计离境日期

	Religion *Enum `json:"religion,omitempty"` // -| 宗教信仰 - 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下： - object_api_name：person - custom_api_name：religion

	WorkingYearsV2 *float64 `json:"working_years_v2,omitempty"` // 工龄 (浮点)
}

type PersonInfoBtBuilder struct {
	personId     string // 个人信息 ID
	personIdFlag bool

	phoneNumber     string // 个人电话;- 该值取自 person_info.phone_list 中满足以下条件的电话;  - is_primary: true;  - device_type: mobile_phone;  - phone_usage: home
	phoneNumberFlag bool

	legalName     string // 法定姓名
	legalNameFlag bool

	additionalName     string // 别名
	additionalNameFlag bool

	preferredName     string // 常用名
	preferredNameFlag bool

	preferredLocalFullName     string // 常用本地全名
	preferredLocalFullNameFlag bool

	preferredEnglishFullName     string // 常用英文全名
	preferredEnglishFullNameFlag bool

	nameList     []*PersonName // 姓名列表
	nameListFlag bool

	gender     *Enum // -| 性别 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：gender - object_api_name：person
	genderFlag bool

	dateOfBirth     string // 出生日期
	dateOfBirthFlag bool

	nationalityId     string // 国籍 ID;- 可通过[查询国籍信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)查询
	nationalityIdFlag bool

	nationalityIdV2     string // 国籍 ID;- 可通过[查询国籍信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)查询
	nationalityIdV2Flag bool

	additionalNationalities     []*Nationality // 其他国籍
	additionalNationalitiesFlag bool

	citizenshipStatus     []*CitizenshipStatus // 公民身份
	citizenshipStatusFlag bool

	race     *Enum // -| 民族 / 种族 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：ethnicity_race - object_api_name：person
	raceFlag bool

	maritalStatus     *Enum // -| 婚姻状况 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：marital_status - object_api_name：person
	maritalStatusFlag bool

	phoneList     []*Phone // 电话列表
	phoneListFlag bool

	addressList     []*Address // 地址列表
	addressListFlag bool

	emailList     []*Email // 邮箱列表
	emailListFlag bool

	workExperienceList     []*WorkExperienceInfo // 工作经历列表
	workExperienceListFlag bool

	educationList     []*Education // 教育经历列表
	educationListFlag bool

	bankAccountList     []*BankAccount // 银行账户
	bankAccountListFlag bool

	nationalIdList     []*NationalId // 证件
	nationalIdListFlag bool

	dependentList     []*Dependent // 家庭成员列表
	dependentListFlag bool

	emergencyContactList     []*EmergencyContact // 紧急联系人列表
	emergencyContactListFlag bool

	dateEnteredWorkforce     string // 参加工作日期
	dateEnteredWorkforceFlag bool

	workingYears     int // 工龄
	workingYearsFlag bool

	profileImageId     string // 头像资源的 ID;- 已废弃，请使用 avatar_url
	profileImageIdFlag bool

	emailAddress     string // 邮箱地址
	emailAddressFlag bool

	age     int // 年龄
	ageFlag bool

	highestLevelOfEducation     *Education // 最高学历教育经历
	highestLevelOfEducationFlag bool

	highestDegreeOfEducation     *Education // 最高学位教育经历
	highestDegreeOfEducationFlag bool

	personalProfile     []*PersonalProfile // 个人资料附件
	personalProfileFlag bool

	nativeRegion     string // 籍贯 ID;- 可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)获取详情
	nativeRegionFlag bool

	hukouType     *Enum // 户口类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name: person_info_chn;  - custom_api_name: hukou_type
	hukouTypeFlag bool

	hukouLocation     string // 户口所在地
	hukouLocationFlag bool

	politicalAffiliations     []*Enum // 政治面貌;- 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： ;  - custom_api_name：political_affiliation ;  - object_api_name：person_info_chn
	politicalAffiliationsFlag bool

	talentId     string // 人才 ID;- 可通过[获取人才信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)获取详情
	talentIdFlag bool

	customFields     []*CustomFieldData // 自定义字段;- 请参考[自定义字段说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
	customFieldsFlag bool

	nationalIdNumber     string // 居民身份证件号码
	nationalIdNumberFlag bool

	familyAddress     string // 家庭地址
	familyAddressFlag bool

	bornCountryRegion     string // 出生国家/地区
	bornCountryRegionFlag bool

	isDisabled     bool // 是否残疾
	isDisabledFlag bool

	disableCardNumber     string // 残疾证号
	disableCardNumberFlag bool

	isMartyrFamily     bool // 是否烈属
	isMartyrFamilyFlag bool

	martyrCardNumber     string // 烈属证号
	martyrCardNumberFlag bool

	isOldAlone     bool // 是否孤老
	isOldAloneFlag bool

	residentTaxes     []*ResidentTax // 居民身份信息
	residentTaxesFlag bool

	firstEntryTime     string // 首次入境日期
	firstEntryTimeFlag bool

	leaveTime     string // 预计离境日期
	leaveTimeFlag bool

	religion     *Enum // -| 宗教信仰 - 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下： - object_api_name：person - custom_api_name：religion
	religionFlag bool

	workingYearsV2     float64 // 工龄 (浮点)
	workingYearsV2Flag bool
}

func NewPersonInfoBtBuilder() *PersonInfoBtBuilder {
	builder := &PersonInfoBtBuilder{}
	return builder
}

// 个人信息 ID
//
// 示例值：6919733936050406926
func (builder *PersonInfoBtBuilder) PersonId(personId string) *PersonInfoBtBuilder {
	builder.personId = personId
	builder.personIdFlag = true
	return builder
}

// 个人电话;- 该值取自 person_info.phone_list 中满足以下条件的电话;  - is_primary: true;  - device_type: mobile_phone;  - phone_usage: home
//
// 示例值：13649211111
func (builder *PersonInfoBtBuilder) PhoneNumber(phoneNumber string) *PersonInfoBtBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 法定姓名
//
// 示例值：张三
func (builder *PersonInfoBtBuilder) LegalName(legalName string) *PersonInfoBtBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 别名
//
// 示例值：张三
func (builder *PersonInfoBtBuilder) AdditionalName(additionalName string) *PersonInfoBtBuilder {
	builder.additionalName = additionalName
	builder.additionalNameFlag = true
	return builder
}

// 常用名
//
// 示例值：刘梓新(Henry)
func (builder *PersonInfoBtBuilder) PreferredName(preferredName string) *PersonInfoBtBuilder {
	builder.preferredName = preferredName
	builder.preferredNameFlag = true
	return builder
}

// 常用本地全名
//
// 示例值：刘梓新
func (builder *PersonInfoBtBuilder) PreferredLocalFullName(preferredLocalFullName string) *PersonInfoBtBuilder {
	builder.preferredLocalFullName = preferredLocalFullName
	builder.preferredLocalFullNameFlag = true
	return builder
}

// 常用英文全名
//
// 示例值：Henry
func (builder *PersonInfoBtBuilder) PreferredEnglishFullName(preferredEnglishFullName string) *PersonInfoBtBuilder {
	builder.preferredEnglishFullName = preferredEnglishFullName
	builder.preferredEnglishFullNameFlag = true
	return builder
}

// 姓名列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) NameList(nameList []*PersonName) *PersonInfoBtBuilder {
	builder.nameList = nameList
	builder.nameListFlag = true
	return builder
}

// -| 性别 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：gender - object_api_name：person
//
// 示例值：
func (builder *PersonInfoBtBuilder) Gender(gender *Enum) *PersonInfoBtBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 出生日期
//
// 示例值：2020-01-01
func (builder *PersonInfoBtBuilder) DateOfBirth(dateOfBirth string) *PersonInfoBtBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 国籍 ID;- 可通过[查询国籍信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)查询
//
// 示例值：6862995757234914811
func (builder *PersonInfoBtBuilder) NationalityId(nationalityId string) *PersonInfoBtBuilder {
	builder.nationalityId = nationalityId
	builder.nationalityIdFlag = true
	return builder
}

// 国籍 ID;- 可通过[查询国籍信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)查询
//
// 示例值：6862995757234914821
func (builder *PersonInfoBtBuilder) NationalityIdV2(nationalityIdV2 string) *PersonInfoBtBuilder {
	builder.nationalityIdV2 = nationalityIdV2
	builder.nationalityIdV2Flag = true
	return builder
}

// 其他国籍
//
// 示例值：
func (builder *PersonInfoBtBuilder) AdditionalNationalities(additionalNationalities []*Nationality) *PersonInfoBtBuilder {
	builder.additionalNationalities = additionalNationalities
	builder.additionalNationalitiesFlag = true
	return builder
}

// 公民身份
//
// 示例值：
func (builder *PersonInfoBtBuilder) CitizenshipStatus(citizenshipStatus []*CitizenshipStatus) *PersonInfoBtBuilder {
	builder.citizenshipStatus = citizenshipStatus
	builder.citizenshipStatusFlag = true
	return builder
}

// -| 民族 / 种族 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：ethnicity_race - object_api_name：person
//
// 示例值：
func (builder *PersonInfoBtBuilder) Race(race *Enum) *PersonInfoBtBuilder {
	builder.race = race
	builder.raceFlag = true
	return builder
}

// -| 婚姻状况 - 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： - custom_api_name：marital_status - object_api_name：person
//
// 示例值：
func (builder *PersonInfoBtBuilder) MaritalStatus(maritalStatus *Enum) *PersonInfoBtBuilder {
	builder.maritalStatus = maritalStatus
	builder.maritalStatusFlag = true
	return builder
}

// 电话列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) PhoneList(phoneList []*Phone) *PersonInfoBtBuilder {
	builder.phoneList = phoneList
	builder.phoneListFlag = true
	return builder
}

// 地址列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) AddressList(addressList []*Address) *PersonInfoBtBuilder {
	builder.addressList = addressList
	builder.addressListFlag = true
	return builder
}

// 邮箱列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) EmailList(emailList []*Email) *PersonInfoBtBuilder {
	builder.emailList = emailList
	builder.emailListFlag = true
	return builder
}

// 工作经历列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) WorkExperienceList(workExperienceList []*WorkExperienceInfo) *PersonInfoBtBuilder {
	builder.workExperienceList = workExperienceList
	builder.workExperienceListFlag = true
	return builder
}

// 教育经历列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) EducationList(educationList []*Education) *PersonInfoBtBuilder {
	builder.educationList = educationList
	builder.educationListFlag = true
	return builder
}

// 银行账户
//
// 示例值：
func (builder *PersonInfoBtBuilder) BankAccountList(bankAccountList []*BankAccount) *PersonInfoBtBuilder {
	builder.bankAccountList = bankAccountList
	builder.bankAccountListFlag = true
	return builder
}

// 证件
//
// 示例值：
func (builder *PersonInfoBtBuilder) NationalIdList(nationalIdList []*NationalId) *PersonInfoBtBuilder {
	builder.nationalIdList = nationalIdList
	builder.nationalIdListFlag = true
	return builder
}

// 家庭成员列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) DependentList(dependentList []*Dependent) *PersonInfoBtBuilder {
	builder.dependentList = dependentList
	builder.dependentListFlag = true
	return builder
}

// 紧急联系人列表
//
// 示例值：
func (builder *PersonInfoBtBuilder) EmergencyContactList(emergencyContactList []*EmergencyContact) *PersonInfoBtBuilder {
	builder.emergencyContactList = emergencyContactList
	builder.emergencyContactListFlag = true
	return builder
}

// 参加工作日期
//
// 示例值：2020-10-01
func (builder *PersonInfoBtBuilder) DateEnteredWorkforce(dateEnteredWorkforce string) *PersonInfoBtBuilder {
	builder.dateEnteredWorkforce = dateEnteredWorkforce
	builder.dateEnteredWorkforceFlag = true
	return builder
}

// 工龄
//
// 示例值：2
func (builder *PersonInfoBtBuilder) WorkingYears(workingYears int) *PersonInfoBtBuilder {
	builder.workingYears = workingYears
	builder.workingYearsFlag = true
	return builder
}

// 头像资源的 ID;- 已废弃，请使用 avatar_url
//
// 示例值：dfysuc8x76dsfsw
func (builder *PersonInfoBtBuilder) ProfileImageId(profileImageId string) *PersonInfoBtBuilder {
	builder.profileImageId = profileImageId
	builder.profileImageIdFlag = true
	return builder
}

// 邮箱地址
//
// 示例值：test@163.com
func (builder *PersonInfoBtBuilder) EmailAddress(emailAddress string) *PersonInfoBtBuilder {
	builder.emailAddress = emailAddress
	builder.emailAddressFlag = true
	return builder
}

// 年龄
//
// 示例值：22
func (builder *PersonInfoBtBuilder) Age(age int) *PersonInfoBtBuilder {
	builder.age = age
	builder.ageFlag = true
	return builder
}

// 最高学历教育经历
//
// 示例值：
func (builder *PersonInfoBtBuilder) HighestLevelOfEducation(highestLevelOfEducation *Education) *PersonInfoBtBuilder {
	builder.highestLevelOfEducation = highestLevelOfEducation
	builder.highestLevelOfEducationFlag = true
	return builder
}

// 最高学位教育经历
//
// 示例值：
func (builder *PersonInfoBtBuilder) HighestDegreeOfEducation(highestDegreeOfEducation *Education) *PersonInfoBtBuilder {
	builder.highestDegreeOfEducation = highestDegreeOfEducation
	builder.highestDegreeOfEducationFlag = true
	return builder
}

// 个人资料附件
//
// 示例值：
func (builder *PersonInfoBtBuilder) PersonalProfile(personalProfile []*PersonalProfile) *PersonInfoBtBuilder {
	builder.personalProfile = personalProfile
	builder.personalProfileFlag = true
	return builder
}

// 籍贯 ID;- 可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)获取详情
//
// 示例值：6863326262618752111
func (builder *PersonInfoBtBuilder) NativeRegion(nativeRegion string) *PersonInfoBtBuilder {
	builder.nativeRegion = nativeRegion
	builder.nativeRegionFlag = true
	return builder
}

// 户口类型;- 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name: person_info_chn;  - custom_api_name: hukou_type
//
// 示例值：
func (builder *PersonInfoBtBuilder) HukouType(hukouType *Enum) *PersonInfoBtBuilder {
	builder.hukouType = hukouType
	builder.hukouTypeFlag = true
	return builder
}

// 户口所在地
//
// 示例值：山东省平阴县
func (builder *PersonInfoBtBuilder) HukouLocation(hukouLocation string) *PersonInfoBtBuilder {
	builder.hukouLocation = hukouLocation
	builder.hukouLocationFlag = true
	return builder
}

// 政治面貌;- 枚举值可查询[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口获取，按如下参数查询即可： ;  - custom_api_name：political_affiliation ;  - object_api_name：person_info_chn
//
// 示例值：
func (builder *PersonInfoBtBuilder) PoliticalAffiliations(politicalAffiliations []*Enum) *PersonInfoBtBuilder {
	builder.politicalAffiliations = politicalAffiliations
	builder.politicalAffiliationsFlag = true
	return builder
}

// 人才 ID;- 可通过[获取人才信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)获取详情
//
// 示例值：6863326262618752123
func (builder *PersonInfoBtBuilder) TalentId(talentId string) *PersonInfoBtBuilder {
	builder.talentId = talentId
	builder.talentIdFlag = true
	return builder
}

// 自定义字段;- 请参考[自定义字段说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
//
// 示例值：
func (builder *PersonInfoBtBuilder) CustomFields(customFields []*CustomFieldData) *PersonInfoBtBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 居民身份证件号码
//
// 示例值：11010000000000
func (builder *PersonInfoBtBuilder) NationalIdNumber(nationalIdNumber string) *PersonInfoBtBuilder {
	builder.nationalIdNumber = nationalIdNumber
	builder.nationalIdNumberFlag = true
	return builder
}

// 家庭地址
//
// 示例值：6863326262618752123
func (builder *PersonInfoBtBuilder) FamilyAddress(familyAddress string) *PersonInfoBtBuilder {
	builder.familyAddress = familyAddress
	builder.familyAddressFlag = true
	return builder
}

// 出生国家/地区
//
// 示例值：中国
func (builder *PersonInfoBtBuilder) BornCountryRegion(bornCountryRegion string) *PersonInfoBtBuilder {
	builder.bornCountryRegion = bornCountryRegion
	builder.bornCountryRegionFlag = true
	return builder
}

// 是否残疾
//
// 示例值：true
func (builder *PersonInfoBtBuilder) IsDisabled(isDisabled bool) *PersonInfoBtBuilder {
	builder.isDisabled = isDisabled
	builder.isDisabledFlag = true
	return builder
}

// 残疾证号
//
// 示例值：1110000
func (builder *PersonInfoBtBuilder) DisableCardNumber(disableCardNumber string) *PersonInfoBtBuilder {
	builder.disableCardNumber = disableCardNumber
	builder.disableCardNumberFlag = true
	return builder
}

// 是否烈属
//
// 示例值：true
func (builder *PersonInfoBtBuilder) IsMartyrFamily(isMartyrFamily bool) *PersonInfoBtBuilder {
	builder.isMartyrFamily = isMartyrFamily
	builder.isMartyrFamilyFlag = true
	return builder
}

// 烈属证号
//
// 示例值：1110000
func (builder *PersonInfoBtBuilder) MartyrCardNumber(martyrCardNumber string) *PersonInfoBtBuilder {
	builder.martyrCardNumber = martyrCardNumber
	builder.martyrCardNumberFlag = true
	return builder
}

// 是否孤老
//
// 示例值：true
func (builder *PersonInfoBtBuilder) IsOldAlone(isOldAlone bool) *PersonInfoBtBuilder {
	builder.isOldAlone = isOldAlone
	builder.isOldAloneFlag = true
	return builder
}

// 居民身份信息
//
// 示例值：6863326262618752123
func (builder *PersonInfoBtBuilder) ResidentTaxes(residentTaxes []*ResidentTax) *PersonInfoBtBuilder {
	builder.residentTaxes = residentTaxes
	builder.residentTaxesFlag = true
	return builder
}

// 首次入境日期
//
// 示例值：2021-01-02
func (builder *PersonInfoBtBuilder) FirstEntryTime(firstEntryTime string) *PersonInfoBtBuilder {
	builder.firstEntryTime = firstEntryTime
	builder.firstEntryTimeFlag = true
	return builder
}

// 预计离境日期
//
// 示例值：2022-01-02
func (builder *PersonInfoBtBuilder) LeaveTime(leaveTime string) *PersonInfoBtBuilder {
	builder.leaveTime = leaveTime
	builder.leaveTimeFlag = true
	return builder
}

// -| 宗教信仰 - 可通过[获取字段详情](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下： - object_api_name：person - custom_api_name：religion
//
// 示例值：
func (builder *PersonInfoBtBuilder) Religion(religion *Enum) *PersonInfoBtBuilder {
	builder.religion = religion
	builder.religionFlag = true
	return builder
}

// 工龄 (浮点)
//
// 示例值：2.1
func (builder *PersonInfoBtBuilder) WorkingYearsV2(workingYearsV2 float64) *PersonInfoBtBuilder {
	builder.workingYearsV2 = workingYearsV2
	builder.workingYearsV2Flag = true
	return builder
}

func (builder *PersonInfoBtBuilder) Build() *PersonInfoBt {
	req := &PersonInfoBt{}
	if builder.personIdFlag {
		req.PersonId = &builder.personId

	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	if builder.additionalNameFlag {
		req.AdditionalName = &builder.additionalName

	}
	if builder.preferredNameFlag {
		req.PreferredName = &builder.preferredName

	}
	if builder.preferredLocalFullNameFlag {
		req.PreferredLocalFullName = &builder.preferredLocalFullName

	}
	if builder.preferredEnglishFullNameFlag {
		req.PreferredEnglishFullName = &builder.preferredEnglishFullName

	}
	if builder.nameListFlag {
		req.NameList = builder.nameList
	}
	if builder.genderFlag {
		req.Gender = builder.gender
	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.nationalityIdFlag {
		req.NationalityId = &builder.nationalityId

	}
	if builder.nationalityIdV2Flag {
		req.NationalityIdV2 = &builder.nationalityIdV2

	}
	if builder.additionalNationalitiesFlag {
		req.AdditionalNationalities = builder.additionalNationalities
	}
	if builder.citizenshipStatusFlag {
		req.CitizenshipStatus = builder.citizenshipStatus
	}
	if builder.raceFlag {
		req.Race = builder.race
	}
	if builder.maritalStatusFlag {
		req.MaritalStatus = builder.maritalStatus
	}
	if builder.phoneListFlag {
		req.PhoneList = builder.phoneList
	}
	if builder.addressListFlag {
		req.AddressList = builder.addressList
	}
	if builder.emailListFlag {
		req.EmailList = builder.emailList
	}
	if builder.workExperienceListFlag {
		req.WorkExperienceList = builder.workExperienceList
	}
	if builder.educationListFlag {
		req.EducationList = builder.educationList
	}
	if builder.bankAccountListFlag {
		req.BankAccountList = builder.bankAccountList
	}
	if builder.nationalIdListFlag {
		req.NationalIdList = builder.nationalIdList
	}
	if builder.dependentListFlag {
		req.DependentList = builder.dependentList
	}
	if builder.emergencyContactListFlag {
		req.EmergencyContactList = builder.emergencyContactList
	}
	if builder.dateEnteredWorkforceFlag {
		req.DateEnteredWorkforce = &builder.dateEnteredWorkforce

	}
	if builder.workingYearsFlag {
		req.WorkingYears = &builder.workingYears

	}
	if builder.profileImageIdFlag {
		req.ProfileImageId = &builder.profileImageId

	}
	if builder.emailAddressFlag {
		req.EmailAddress = &builder.emailAddress

	}
	if builder.ageFlag {
		req.Age = &builder.age

	}
	if builder.highestLevelOfEducationFlag {
		req.HighestLevelOfEducation = builder.highestLevelOfEducation
	}
	if builder.highestDegreeOfEducationFlag {
		req.HighestDegreeOfEducation = builder.highestDegreeOfEducation
	}
	if builder.personalProfileFlag {
		req.PersonalProfile = builder.personalProfile
	}
	if builder.nativeRegionFlag {
		req.NativeRegion = &builder.nativeRegion

	}
	if builder.hukouTypeFlag {
		req.HukouType = builder.hukouType
	}
	if builder.hukouLocationFlag {
		req.HukouLocation = &builder.hukouLocation

	}
	if builder.politicalAffiliationsFlag {
		req.PoliticalAffiliations = builder.politicalAffiliations
	}
	if builder.talentIdFlag {
		req.TalentId = &builder.talentId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.nationalIdNumberFlag {
		req.NationalIdNumber = &builder.nationalIdNumber

	}
	if builder.familyAddressFlag {
		req.FamilyAddress = &builder.familyAddress

	}
	if builder.bornCountryRegionFlag {
		req.BornCountryRegion = &builder.bornCountryRegion

	}
	if builder.isDisabledFlag {
		req.IsDisabled = &builder.isDisabled

	}
	if builder.disableCardNumberFlag {
		req.DisableCardNumber = &builder.disableCardNumber

	}
	if builder.isMartyrFamilyFlag {
		req.IsMartyrFamily = &builder.isMartyrFamily

	}
	if builder.martyrCardNumberFlag {
		req.MartyrCardNumber = &builder.martyrCardNumber

	}
	if builder.isOldAloneFlag {
		req.IsOldAlone = &builder.isOldAlone

	}
	if builder.residentTaxesFlag {
		req.ResidentTaxes = builder.residentTaxes
	}
	if builder.firstEntryTimeFlag {
		req.FirstEntryTime = &builder.firstEntryTime

	}
	if builder.leaveTimeFlag {
		req.LeaveTime = &builder.leaveTime

	}
	if builder.religionFlag {
		req.Religion = builder.religion
	}
	if builder.workingYearsV2Flag {
		req.WorkingYearsV2 = &builder.workingYearsV2

	}
	return req
}

type PersonInfoChn struct {
	NativeRegion *string `json:"native_region,omitempty"` // 籍贯 ID

	HukouType *Enum `json:"hukou_type,omitempty"` // -| 户口类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：hukou_type - object_api_name：person_info_chn

	HukouLocation *string `json:"hukou_location,omitempty"` // 户口所在地

	FirstEntryTime *string `json:"first_entry_time,omitempty"` // 首次入境日期

	LeaveTime *string `json:"leave_time,omitempty"` // 预计离境日期

	PoliticalAffiliations []*Enum `json:"political_affiliations,omitempty"` // 政治面貌，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：political_affiliation - object_api_name：person_info_chn
}

type PersonInfoChnBuilder struct {
	nativeRegion     string // 籍贯 ID
	nativeRegionFlag bool

	hukouType     *Enum // -| 户口类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：hukou_type - object_api_name：person_info_chn
	hukouTypeFlag bool

	hukouLocation     string // 户口所在地
	hukouLocationFlag bool

	firstEntryTime     string // 首次入境日期
	firstEntryTimeFlag bool

	leaveTime     string // 预计离境日期
	leaveTimeFlag bool

	politicalAffiliations     []*Enum // 政治面貌，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：political_affiliation - object_api_name：person_info_chn
	politicalAffiliationsFlag bool
}

func NewPersonInfoChnBuilder() *PersonInfoChnBuilder {
	builder := &PersonInfoChnBuilder{}
	return builder
}

// 籍贯 ID
//
// 示例值：6863326262618752111
func (builder *PersonInfoChnBuilder) NativeRegion(nativeRegion string) *PersonInfoChnBuilder {
	builder.nativeRegion = nativeRegion
	builder.nativeRegionFlag = true
	return builder
}

// -| 户口类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：hukou_type - object_api_name：person_info_chn
//
// 示例值：
func (builder *PersonInfoChnBuilder) HukouType(hukouType *Enum) *PersonInfoChnBuilder {
	builder.hukouType = hukouType
	builder.hukouTypeFlag = true
	return builder
}

// 户口所在地
//
// 示例值：山东省平阴县
func (builder *PersonInfoChnBuilder) HukouLocation(hukouLocation string) *PersonInfoChnBuilder {
	builder.hukouLocation = hukouLocation
	builder.hukouLocationFlag = true
	return builder
}

// 首次入境日期
//
// 示例值：2023-07-09
func (builder *PersonInfoChnBuilder) FirstEntryTime(firstEntryTime string) *PersonInfoChnBuilder {
	builder.firstEntryTime = firstEntryTime
	builder.firstEntryTimeFlag = true
	return builder
}

// 预计离境日期
//
// 示例值：2023-07-09
func (builder *PersonInfoChnBuilder) LeaveTime(leaveTime string) *PersonInfoChnBuilder {
	builder.leaveTime = leaveTime
	builder.leaveTimeFlag = true
	return builder
}

// 政治面貌，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：political_affiliation - object_api_name：person_info_chn
//
// 示例值：
func (builder *PersonInfoChnBuilder) PoliticalAffiliations(politicalAffiliations []*Enum) *PersonInfoChnBuilder {
	builder.politicalAffiliations = politicalAffiliations
	builder.politicalAffiliationsFlag = true
	return builder
}

func (builder *PersonInfoChnBuilder) Build() *PersonInfoChn {
	req := &PersonInfoChn{}
	if builder.nativeRegionFlag {
		req.NativeRegion = &builder.nativeRegion

	}
	if builder.hukouTypeFlag {
		req.HukouType = builder.hukouType
	}
	if builder.hukouLocationFlag {
		req.HukouLocation = &builder.hukouLocation

	}
	if builder.firstEntryTimeFlag {
		req.FirstEntryTime = &builder.firstEntryTime

	}
	if builder.leaveTimeFlag {
		req.LeaveTime = &builder.leaveTime

	}
	if builder.politicalAffiliationsFlag {
		req.PoliticalAffiliations = builder.politicalAffiliations
	}
	return req
}

type PersonName struct {
	LocalPrimary *string `json:"local_primary,omitempty"` // 姓 - 本地文字

	LocalFirstName *string `json:"local_first_name,omitempty"` // 名 - 本地文字

	CountryRegionId *string `json:"country_region_id,omitempty"` // 国家 / 地区;- 详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得

	NameType *Enum `json:"name_type,omitempty"` // 姓名类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：name_type

	LocalFirstName2 *string `json:"local_first_name_2,omitempty"` // 名 - 第二本地文字

	LocalPrimary2 *string `json:"local_primary_2,omitempty"` // 姓 - 第二本地文字

	AdditionalName *string `json:"additional_name,omitempty"` // 别名

	AdditionalNameType *Enum `json:"additional_name_type,omitempty"` // 补充姓名类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：additional_name_type

	FirstName *string `json:"first_name,omitempty"` // 名

	FullName *string `json:"full_name,omitempty"` // 全名

	Hereditary *string `json:"hereditary,omitempty"` // 姓氏称谓

	CustomName *string `json:"custom_name,omitempty"` // 自定义姓名（未传入时，姓名将默认根据所属国家 / 地区规则对相关姓、名字段拼接）

	CustomLocalName *string `json:"custom_local_name,omitempty"` // 本地文字的自定义姓名（未传入时，本地文字的姓名将默认根据所属国家 / 地区规则对本地文字的相关姓、名字段拼接）

	MiddleName *string `json:"middle_name,omitempty"` // 中间名

	NamePrimary *string `json:"name_primary,omitempty"` // 姓

	Secondary *string `json:"secondary,omitempty"` // 第二姓氏

	Tertiary *string `json:"tertiary,omitempty"` // 婚后姓氏

	Social *Enum `json:"social,omitempty"` // 尊称;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：social

	Title *Enum `json:"title,omitempty"` // 头衔;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：title

	LocalMiddleName *string `json:"local_middle_name,omitempty"` // 本地中间名

	LocalSecondary *string `json:"local_secondary,omitempty"` // 第二姓氏 - 本地文字

	DisplayNameLocalAndWesternScript *string `json:"display_name_local_and_western_script,omitempty"` // 展示姓名（本地和西方文字）

	DisplayNameLocalScript *string `json:"display_name_local_script,omitempty"` // 展示姓名（本地文字）

	DisplayNameWesternScript *string `json:"display_name_western_script,omitempty"` // 展示姓名（西方文字）
}

type PersonNameBuilder struct {
	localPrimary     string // 姓 - 本地文字
	localPrimaryFlag bool

	localFirstName     string // 名 - 本地文字
	localFirstNameFlag bool

	countryRegionId     string // 国家 / 地区;- 详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
	countryRegionIdFlag bool

	nameType     *Enum // 姓名类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：name_type
	nameTypeFlag bool

	localFirstName2     string // 名 - 第二本地文字
	localFirstName2Flag bool

	localPrimary2     string // 姓 - 第二本地文字
	localPrimary2Flag bool

	additionalName     string // 别名
	additionalNameFlag bool

	additionalNameType     *Enum // 补充姓名类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：additional_name_type
	additionalNameTypeFlag bool

	firstName     string // 名
	firstNameFlag bool

	fullName     string // 全名
	fullNameFlag bool

	hereditary     string // 姓氏称谓
	hereditaryFlag bool

	customName     string // 自定义姓名（未传入时，姓名将默认根据所属国家 / 地区规则对相关姓、名字段拼接）
	customNameFlag bool

	customLocalName     string // 本地文字的自定义姓名（未传入时，本地文字的姓名将默认根据所属国家 / 地区规则对本地文字的相关姓、名字段拼接）
	customLocalNameFlag bool

	middleName     string // 中间名
	middleNameFlag bool

	namePrimary     string // 姓
	namePrimaryFlag bool

	secondary     string // 第二姓氏
	secondaryFlag bool

	tertiary     string // 婚后姓氏
	tertiaryFlag bool

	social     *Enum // 尊称;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：social
	socialFlag bool

	title     *Enum // 头衔;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：title
	titleFlag bool

	localMiddleName     string // 本地中间名
	localMiddleNameFlag bool

	localSecondary     string // 第二姓氏 - 本地文字
	localSecondaryFlag bool

	displayNameLocalAndWesternScript     string // 展示姓名（本地和西方文字）
	displayNameLocalAndWesternScriptFlag bool

	displayNameLocalScript     string // 展示姓名（本地文字）
	displayNameLocalScriptFlag bool

	displayNameWesternScript     string // 展示姓名（西方文字）
	displayNameWesternScriptFlag bool
}

func NewPersonNameBuilder() *PersonNameBuilder {
	builder := &PersonNameBuilder{}
	return builder
}

// 姓 - 本地文字
//
// 示例值：黄
func (builder *PersonNameBuilder) LocalPrimary(localPrimary string) *PersonNameBuilder {
	builder.localPrimary = localPrimary
	builder.localPrimaryFlag = true
	return builder
}

// 名 - 本地文字
//
// 示例值：四
func (builder *PersonNameBuilder) LocalFirstName(localFirstName string) *PersonNameBuilder {
	builder.localFirstName = localFirstName
	builder.localFirstNameFlag = true
	return builder
}

// 国家 / 地区;- 详细信息可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口查询获得
//
// 示例值：6862995757234914824
func (builder *PersonNameBuilder) CountryRegionId(countryRegionId string) *PersonNameBuilder {
	builder.countryRegionId = countryRegionId
	builder.countryRegionIdFlag = true
	return builder
}

// 姓名类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：name_type
//
// 示例值：
func (builder *PersonNameBuilder) NameType(nameType *Enum) *PersonNameBuilder {
	builder.nameType = nameType
	builder.nameTypeFlag = true
	return builder
}

// 名 - 第二本地文字
//
// 示例值：五
func (builder *PersonNameBuilder) LocalFirstName2(localFirstName2 string) *PersonNameBuilder {
	builder.localFirstName2 = localFirstName2
	builder.localFirstName2Flag = true
	return builder
}

// 姓 - 第二本地文字
//
// 示例值：王
func (builder *PersonNameBuilder) LocalPrimary2(localPrimary2 string) *PersonNameBuilder {
	builder.localPrimary2 = localPrimary2
	builder.localPrimary2Flag = true
	return builder
}

// 别名
//
// 示例值：别名
func (builder *PersonNameBuilder) AdditionalName(additionalName string) *PersonNameBuilder {
	builder.additionalName = additionalName
	builder.additionalNameFlag = true
	return builder
}

// 补充姓名类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：additional_name_type
//
// 示例值：
func (builder *PersonNameBuilder) AdditionalNameType(additionalNameType *Enum) *PersonNameBuilder {
	builder.additionalNameType = additionalNameType
	builder.additionalNameTypeFlag = true
	return builder
}

// 名
//
// 示例值：帅
func (builder *PersonNameBuilder) FirstName(firstName string) *PersonNameBuilder {
	builder.firstName = firstName
	builder.firstNameFlag = true
	return builder
}

// 全名
//
// 示例值：王大帅
func (builder *PersonNameBuilder) FullName(fullName string) *PersonNameBuilder {
	builder.fullName = fullName
	builder.fullNameFlag = true
	return builder
}

// 姓氏称谓
//
// 示例值：王
func (builder *PersonNameBuilder) Hereditary(hereditary string) *PersonNameBuilder {
	builder.hereditary = hereditary
	builder.hereditaryFlag = true
	return builder
}

// 自定义姓名（未传入时，姓名将默认根据所属国家 / 地区规则对相关姓、名字段拼接）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) CustomName(customName string) *PersonNameBuilder {
	builder.customName = customName
	builder.customNameFlag = true
	return builder
}

// 本地文字的自定义姓名（未传入时，本地文字的姓名将默认根据所属国家 / 地区规则对本地文字的相关姓、名字段拼接）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) CustomLocalName(customLocalName string) *PersonNameBuilder {
	builder.customLocalName = customLocalName
	builder.customLocalNameFlag = true
	return builder
}

// 中间名
//
// 示例值：大
func (builder *PersonNameBuilder) MiddleName(middleName string) *PersonNameBuilder {
	builder.middleName = middleName
	builder.middleNameFlag = true
	return builder
}

// 姓
//
// 示例值：王
func (builder *PersonNameBuilder) NamePrimary(namePrimary string) *PersonNameBuilder {
	builder.namePrimary = namePrimary
	builder.namePrimaryFlag = true
	return builder
}

// 第二姓氏
//
// 示例值：王
func (builder *PersonNameBuilder) Secondary(secondary string) *PersonNameBuilder {
	builder.secondary = secondary
	builder.secondaryFlag = true
	return builder
}

// 婚后姓氏
//
// 示例值：王
func (builder *PersonNameBuilder) Tertiary(tertiary string) *PersonNameBuilder {
	builder.tertiary = tertiary
	builder.tertiaryFlag = true
	return builder
}

// 尊称;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：social
//
// 示例值：王大帅
func (builder *PersonNameBuilder) Social(social *Enum) *PersonNameBuilder {
	builder.social = social
	builder.socialFlag = true
	return builder
}

// 头衔;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：person_name;  - custom_api_name：title
//
// 示例值：王
func (builder *PersonNameBuilder) Title(title *Enum) *PersonNameBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 本地中间名
//
// 示例值：大
func (builder *PersonNameBuilder) LocalMiddleName(localMiddleName string) *PersonNameBuilder {
	builder.localMiddleName = localMiddleName
	builder.localMiddleNameFlag = true
	return builder
}

// 第二姓氏 - 本地文字
//
// 示例值：王
func (builder *PersonNameBuilder) LocalSecondary(localSecondary string) *PersonNameBuilder {
	builder.localSecondary = localSecondary
	builder.localSecondaryFlag = true
	return builder
}

// 展示姓名（本地和西方文字）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) DisplayNameLocalAndWesternScript(displayNameLocalAndWesternScript string) *PersonNameBuilder {
	builder.displayNameLocalAndWesternScript = displayNameLocalAndWesternScript
	builder.displayNameLocalAndWesternScriptFlag = true
	return builder
}

// 展示姓名（本地文字）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) DisplayNameLocalScript(displayNameLocalScript string) *PersonNameBuilder {
	builder.displayNameLocalScript = displayNameLocalScript
	builder.displayNameLocalScriptFlag = true
	return builder
}

// 展示姓名（西方文字）
//
// 示例值：王大帅
func (builder *PersonNameBuilder) DisplayNameWesternScript(displayNameWesternScript string) *PersonNameBuilder {
	builder.displayNameWesternScript = displayNameWesternScript
	builder.displayNameWesternScriptFlag = true
	return builder
}

func (builder *PersonNameBuilder) Build() *PersonName {
	req := &PersonName{}
	if builder.localPrimaryFlag {
		req.LocalPrimary = &builder.localPrimary

	}
	if builder.localFirstNameFlag {
		req.LocalFirstName = &builder.localFirstName

	}
	if builder.countryRegionIdFlag {
		req.CountryRegionId = &builder.countryRegionId

	}
	if builder.nameTypeFlag {
		req.NameType = builder.nameType
	}
	if builder.localFirstName2Flag {
		req.LocalFirstName2 = &builder.localFirstName2

	}
	if builder.localPrimary2Flag {
		req.LocalPrimary2 = &builder.localPrimary2

	}
	if builder.additionalNameFlag {
		req.AdditionalName = &builder.additionalName

	}
	if builder.additionalNameTypeFlag {
		req.AdditionalNameType = builder.additionalNameType
	}
	if builder.firstNameFlag {
		req.FirstName = &builder.firstName

	}
	if builder.fullNameFlag {
		req.FullName = &builder.fullName

	}
	if builder.hereditaryFlag {
		req.Hereditary = &builder.hereditary

	}
	if builder.customNameFlag {
		req.CustomName = &builder.customName

	}
	if builder.customLocalNameFlag {
		req.CustomLocalName = &builder.customLocalName

	}
	if builder.middleNameFlag {
		req.MiddleName = &builder.middleName

	}
	if builder.namePrimaryFlag {
		req.NamePrimary = &builder.namePrimary

	}
	if builder.secondaryFlag {
		req.Secondary = &builder.secondary

	}
	if builder.tertiaryFlag {
		req.Tertiary = &builder.tertiary

	}
	if builder.socialFlag {
		req.Social = builder.social
	}
	if builder.titleFlag {
		req.Title = builder.title
	}
	if builder.localMiddleNameFlag {
		req.LocalMiddleName = &builder.localMiddleName

	}
	if builder.localSecondaryFlag {
		req.LocalSecondary = &builder.localSecondary

	}
	if builder.displayNameLocalAndWesternScriptFlag {
		req.DisplayNameLocalAndWesternScript = &builder.displayNameLocalAndWesternScript

	}
	if builder.displayNameLocalScriptFlag {
		req.DisplayNameLocalScript = &builder.displayNameLocalScript

	}
	if builder.displayNameWesternScriptFlag {
		req.DisplayNameWesternScript = &builder.displayNameWesternScript

	}
	return req
}

type PersonalProfile struct {
	PersonalProfileId *string `json:"personal_profile_id,omitempty"` // 个人资料 ID

	PersonalProfileType *Enum `json:"personal_profile_type,omitempty"` // 资料类型

	Files []*File `json:"files,omitempty"` // 上传文件列表
}

type PersonalProfileBuilder struct {
	personalProfileId     string // 个人资料 ID
	personalProfileIdFlag bool

	personalProfileType     *Enum // 资料类型
	personalProfileTypeFlag bool

	files     []*File // 上传文件列表
	filesFlag bool
}

func NewPersonalProfileBuilder() *PersonalProfileBuilder {
	builder := &PersonalProfileBuilder{}
	return builder
}

// 个人资料 ID
//
// 示例值：150018109586e8ea745e47ae8feb3722dbe1d03a181336393633393133303431393831343930373235150200
func (builder *PersonalProfileBuilder) PersonalProfileId(personalProfileId string) *PersonalProfileBuilder {
	builder.personalProfileId = personalProfileId
	builder.personalProfileIdFlag = true
	return builder
}

// 资料类型
//
// 示例值：
func (builder *PersonalProfileBuilder) PersonalProfileType(personalProfileType *Enum) *PersonalProfileBuilder {
	builder.personalProfileType = personalProfileType
	builder.personalProfileTypeFlag = true
	return builder
}

// 上传文件列表
//
// 示例值：
func (builder *PersonalProfileBuilder) Files(files []*File) *PersonalProfileBuilder {
	builder.files = files
	builder.filesFlag = true
	return builder
}

func (builder *PersonalProfileBuilder) Build() *PersonalProfile {
	req := &PersonalProfile{}
	if builder.personalProfileIdFlag {
		req.PersonalProfileId = &builder.personalProfileId

	}
	if builder.personalProfileTypeFlag {
		req.PersonalProfileType = builder.personalProfileType
	}
	if builder.filesFlag {
		req.Files = builder.files
	}
	return req
}

type PersonalProfileForUpdate struct {
	PersonalProfileType *string `json:"personal_profile_type,omitempty"` // 资料类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "personal_profile" - custom_api_name = "profile_type"

	Files []*File `json:"files,omitempty"` // 资料文件列表
}

type PersonalProfileForUpdateBuilder struct {
	personalProfileType     string // 资料类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "personal_profile" - custom_api_name = "profile_type"
	personalProfileTypeFlag bool

	files     []*File // 资料文件列表
	filesFlag bool
}

func NewPersonalProfileForUpdateBuilder() *PersonalProfileForUpdateBuilder {
	builder := &PersonalProfileForUpdateBuilder{}
	return builder
}

// 资料类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可：- object_api_name = "personal_profile" - custom_api_name = "profile_type"
//
// 示例值：1
func (builder *PersonalProfileForUpdateBuilder) PersonalProfileType(personalProfileType string) *PersonalProfileForUpdateBuilder {
	builder.personalProfileType = personalProfileType
	builder.personalProfileTypeFlag = true
	return builder
}

// 资料文件列表
//
// 示例值：
func (builder *PersonalProfileForUpdateBuilder) Files(files []*File) *PersonalProfileForUpdateBuilder {
	builder.files = files
	builder.filesFlag = true
	return builder
}

func (builder *PersonalProfileForUpdateBuilder) Build() *PersonalProfileForUpdate {
	req := &PersonalProfileForUpdate{}
	if builder.personalProfileTypeFlag {
		req.PersonalProfileType = &builder.personalProfileType

	}
	if builder.filesFlag {
		req.Files = builder.files
	}
	return req
}

type Phone struct {
	InternationalAreaCode *Enum `json:"international_area_code,omitempty"` // 国家区号

	PhoneNumber *string `json:"phone_number,omitempty"` // 电话号码

	FormattedPhoneNumber *string `json:"formatted_phone_number,omitempty"` // 完整电话号码

	DeviceType *Enum `json:"device_type,omitempty"` // 设备类型

	PhoneUsage *Enum `json:"phone_usage,omitempty"` // 电话用途

	IsPrimary *bool `json:"is_primary,omitempty"` // 主要电话

	IsPublic *bool `json:"is_public,omitempty"` // 公开电话
}

type PhoneBuilder struct {
	internationalAreaCode     *Enum // 国家区号
	internationalAreaCodeFlag bool

	phoneNumber     string // 电话号码
	phoneNumberFlag bool

	formattedPhoneNumber     string // 完整电话号码
	formattedPhoneNumberFlag bool

	deviceType     *Enum // 设备类型
	deviceTypeFlag bool

	phoneUsage     *Enum // 电话用途
	phoneUsageFlag bool

	isPrimary     bool // 主要电话
	isPrimaryFlag bool

	isPublic     bool // 公开电话
	isPublicFlag bool
}

func NewPhoneBuilder() *PhoneBuilder {
	builder := &PhoneBuilder{}
	return builder
}

// 国家区号
//
// 示例值：
func (builder *PhoneBuilder) InternationalAreaCode(internationalAreaCode *Enum) *PhoneBuilder {
	builder.internationalAreaCode = internationalAreaCode
	builder.internationalAreaCodeFlag = true
	return builder
}

// 电话号码
//
// 示例值：010-12345678
func (builder *PhoneBuilder) PhoneNumber(phoneNumber string) *PhoneBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 完整电话号码
//
// 示例值：+86 010-12345678
func (builder *PhoneBuilder) FormattedPhoneNumber(formattedPhoneNumber string) *PhoneBuilder {
	builder.formattedPhoneNumber = formattedPhoneNumber
	builder.formattedPhoneNumberFlag = true
	return builder
}

// 设备类型
//
// 示例值：
func (builder *PhoneBuilder) DeviceType(deviceType *Enum) *PhoneBuilder {
	builder.deviceType = deviceType
	builder.deviceTypeFlag = true
	return builder
}

// 电话用途
//
// 示例值：
func (builder *PhoneBuilder) PhoneUsage(phoneUsage *Enum) *PhoneBuilder {
	builder.phoneUsage = phoneUsage
	builder.phoneUsageFlag = true
	return builder
}

// 主要电话
//
// 示例值：true
func (builder *PhoneBuilder) IsPrimary(isPrimary bool) *PhoneBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 公开电话
//
// 示例值：true
func (builder *PhoneBuilder) IsPublic(isPublic bool) *PhoneBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

func (builder *PhoneBuilder) Build() *Phone {
	req := &Phone{}
	if builder.internationalAreaCodeFlag {
		req.InternationalAreaCode = builder.internationalAreaCode
	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	if builder.formattedPhoneNumberFlag {
		req.FormattedPhoneNumber = &builder.formattedPhoneNumber

	}
	if builder.deviceTypeFlag {
		req.DeviceType = builder.deviceType
	}
	if builder.phoneUsageFlag {
		req.PhoneUsage = builder.phoneUsage
	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	return req
}

type PhoneForUpdate struct {
	InternationalAreaCode *string `json:"international_area_code,omitempty"` // 国家区号,枚举值

	PhoneNumber *string `json:"phone_number,omitempty"` // 电话号码

	DeviceType *string `json:"device_type,omitempty"` // 设备类型，枚举值

	PhoneUsage *string `json:"phone_usage,omitempty"` // 电话用途,枚举值

	IsPrimary *bool `json:"is_primary,omitempty"` // 主要电话,若有多个电话，只能有一个电话的「is_primary」为true

	IsPublic *bool `json:"is_public,omitempty"` // 公开电话
}

type PhoneForUpdateBuilder struct {
	internationalAreaCode     string // 国家区号,枚举值
	internationalAreaCodeFlag bool

	phoneNumber     string // 电话号码
	phoneNumberFlag bool

	deviceType     string // 设备类型，枚举值
	deviceTypeFlag bool

	phoneUsage     string // 电话用途,枚举值
	phoneUsageFlag bool

	isPrimary     bool // 主要电话,若有多个电话，只能有一个电话的「is_primary」为true
	isPrimaryFlag bool

	isPublic     bool // 公开电话
	isPublicFlag bool
}

func NewPhoneForUpdateBuilder() *PhoneForUpdateBuilder {
	builder := &PhoneForUpdateBuilder{}
	return builder
}

// 国家区号,枚举值
//
// 示例值：86_china
func (builder *PhoneForUpdateBuilder) InternationalAreaCode(internationalAreaCode string) *PhoneForUpdateBuilder {
	builder.internationalAreaCode = internationalAreaCode
	builder.internationalAreaCodeFlag = true
	return builder
}

// 电话号码
//
// 示例值：010-12345678
func (builder *PhoneForUpdateBuilder) PhoneNumber(phoneNumber string) *PhoneForUpdateBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 设备类型，枚举值
//
// 示例值：mobile_phone
func (builder *PhoneForUpdateBuilder) DeviceType(deviceType string) *PhoneForUpdateBuilder {
	builder.deviceType = deviceType
	builder.deviceTypeFlag = true
	return builder
}

// 电话用途,枚举值
//
// 示例值：home
func (builder *PhoneForUpdateBuilder) PhoneUsage(phoneUsage string) *PhoneForUpdateBuilder {
	builder.phoneUsage = phoneUsage
	builder.phoneUsageFlag = true
	return builder
}

// 主要电话,若有多个电话，只能有一个电话的「is_primary」为true
//
// 示例值：true
func (builder *PhoneForUpdateBuilder) IsPrimary(isPrimary bool) *PhoneForUpdateBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 公开电话
//
// 示例值：true
func (builder *PhoneForUpdateBuilder) IsPublic(isPublic bool) *PhoneForUpdateBuilder {
	builder.isPublic = isPublic
	builder.isPublicFlag = true
	return builder
}

func (builder *PhoneForUpdateBuilder) Build() *PhoneForUpdate {
	req := &PhoneForUpdate{}
	if builder.internationalAreaCodeFlag {
		req.InternationalAreaCode = &builder.internationalAreaCode

	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	if builder.deviceTypeFlag {
		req.DeviceType = &builder.deviceType

	}
	if builder.phoneUsageFlag {
		req.PhoneUsage = &builder.phoneUsage

	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.isPublicFlag {
		req.IsPublic = &builder.isPublic

	}
	return req
}

type PhoneNumberAndAreaCode struct {
	AreaCode *Enum `json:"area_code,omitempty"` // 区号

	PhoneNumber *string `json:"phone_number,omitempty"` // 号码
}

type PhoneNumberAndAreaCodeBuilder struct {
	areaCode     *Enum // 区号
	areaCodeFlag bool

	phoneNumber     string // 号码
	phoneNumberFlag bool
}

func NewPhoneNumberAndAreaCodeBuilder() *PhoneNumberAndAreaCodeBuilder {
	builder := &PhoneNumberAndAreaCodeBuilder{}
	return builder
}

// 区号
//
// 示例值：123123
func (builder *PhoneNumberAndAreaCodeBuilder) AreaCode(areaCode *Enum) *PhoneNumberAndAreaCodeBuilder {
	builder.areaCode = areaCode
	builder.areaCodeFlag = true
	return builder
}

// 号码
//
// 示例值：213213
func (builder *PhoneNumberAndAreaCodeBuilder) PhoneNumber(phoneNumber string) *PhoneNumberAndAreaCodeBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

func (builder *PhoneNumberAndAreaCodeBuilder) Build() *PhoneNumberAndAreaCode {
	req := &PhoneNumberAndAreaCode{}
	if builder.areaCodeFlag {
		req.AreaCode = builder.areaCode
	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	return req
}

type Position struct {
	PositionId *string `json:"position_id,omitempty"` // 岗位 ID

	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	Active *bool `json:"active,omitempty"` // 状态

	JobFamilyIdList []string `json:"job_family_id_list,omitempty"` // 序列

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心

	JobId *string `json:"job_id,omitempty"` // 职务

	JobLevelIdList []string `json:"job_level_id_list,omitempty"` // 职级

	EmployeeTypeIdList []string `json:"employee_type_id_list,omitempty"` // 人员类型

	JobGradeIdList []string `json:"job_grade_id_list,omitempty"` // 职等

	WorkLocationIdList []string `json:"work_location_id_list,omitempty"` // 工作地点

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度

	DepartmentId *string `json:"department_id,omitempty"` // 部门

	DirectLeaderId *string `json:"direct_leader_id,omitempty"` // 直属上级岗位

	DottedLineLeaderId *string `json:"dotted_line_leader_id,omitempty"` // 虚线上级岗位

	IsKeyPosition *bool `json:"is_key_position,omitempty"` // 是否关键岗位

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效日期

	ExpirationTime *string `json:"expiration_time,omitempty"` // 失效日期

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	CreatedBy *string `json:"created_by,omitempty"` // 创建人
}

type PositionBuilder struct {
	positionId     string // 岗位 ID
	positionIdFlag bool

	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	active     bool // 状态
	activeFlag bool

	jobFamilyIdList     []string // 序列
	jobFamilyIdListFlag bool

	costCenterId     string // 成本中心
	costCenterIdFlag bool

	jobId     string // 职务
	jobIdFlag bool

	jobLevelIdList     []string // 职级
	jobLevelIdListFlag bool

	employeeTypeIdList     []string // 人员类型
	employeeTypeIdListFlag bool

	jobGradeIdList     []string // 职等
	jobGradeIdListFlag bool

	workLocationIdList     []string // 工作地点
	workLocationIdListFlag bool

	workingHoursTypeId     string // 工时制度
	workingHoursTypeIdFlag bool

	departmentId     string // 部门
	departmentIdFlag bool

	directLeaderId     string // 直属上级岗位
	directLeaderIdFlag bool

	dottedLineLeaderId     string // 虚线上级岗位
	dottedLineLeaderIdFlag bool

	isKeyPosition     bool // 是否关键岗位
	isKeyPositionFlag bool

	effectiveTime     string // 生效日期
	effectiveTimeFlag bool

	expirationTime     string // 失效日期
	expirationTimeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	createdBy     string // 创建人
	createdByFlag bool
}

func NewPositionBuilder() *PositionBuilder {
	builder := &PositionBuilder{}
	return builder
}

// 岗位 ID
//
// 示例值：4692446793125560154
func (builder *PositionBuilder) PositionId(positionId string) *PositionBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *PositionBuilder) Code(code string) *PositionBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *PositionBuilder) Names(names []*I18n) *PositionBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *PositionBuilder) Descriptions(descriptions []*I18n) *PositionBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 状态
//
// 示例值：true
func (builder *PositionBuilder) Active(active bool) *PositionBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 序列
//
// 示例值：
func (builder *PositionBuilder) JobFamilyIdList(jobFamilyIdList []string) *PositionBuilder {
	builder.jobFamilyIdList = jobFamilyIdList
	builder.jobFamilyIdListFlag = true
	return builder
}

// 成本中心
//
// 示例值：4719519211875096301
func (builder *PositionBuilder) CostCenterId(costCenterId string) *PositionBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 职务
//
// 示例值：4719519211875096302
func (builder *PositionBuilder) JobId(jobId string) *PositionBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职级
//
// 示例值：
func (builder *PositionBuilder) JobLevelIdList(jobLevelIdList []string) *PositionBuilder {
	builder.jobLevelIdList = jobLevelIdList
	builder.jobLevelIdListFlag = true
	return builder
}

// 人员类型
//
// 示例值：
func (builder *PositionBuilder) EmployeeTypeIdList(employeeTypeIdList []string) *PositionBuilder {
	builder.employeeTypeIdList = employeeTypeIdList
	builder.employeeTypeIdListFlag = true
	return builder
}

// 职等
//
// 示例值：
func (builder *PositionBuilder) JobGradeIdList(jobGradeIdList []string) *PositionBuilder {
	builder.jobGradeIdList = jobGradeIdList
	builder.jobGradeIdListFlag = true
	return builder
}

// 工作地点
//
// 示例值：
func (builder *PositionBuilder) WorkLocationIdList(workLocationIdList []string) *PositionBuilder {
	builder.workLocationIdList = workLocationIdList
	builder.workLocationIdListFlag = true
	return builder
}

// 工时制度
//
// 示例值：4719519211875096301
func (builder *PositionBuilder) WorkingHoursTypeId(workingHoursTypeId string) *PositionBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 部门
//
// 示例值：4719519211875096301
func (builder *PositionBuilder) DepartmentId(departmentId string) *PositionBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 直属上级岗位
//
// 示例值：4719519211875096301
func (builder *PositionBuilder) DirectLeaderId(directLeaderId string) *PositionBuilder {
	builder.directLeaderId = directLeaderId
	builder.directLeaderIdFlag = true
	return builder
}

// 虚线上级岗位
//
// 示例值：4719519211875096301
func (builder *PositionBuilder) DottedLineLeaderId(dottedLineLeaderId string) *PositionBuilder {
	builder.dottedLineLeaderId = dottedLineLeaderId
	builder.dottedLineLeaderIdFlag = true
	return builder
}

// 是否关键岗位
//
// 示例值：true
func (builder *PositionBuilder) IsKeyPosition(isKeyPosition bool) *PositionBuilder {
	builder.isKeyPosition = isKeyPosition
	builder.isKeyPositionFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *PositionBuilder) EffectiveTime(effectiveTime string) *PositionBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 失效日期
//
// 示例值：2020-05-01
func (builder *PositionBuilder) ExpirationTime(expirationTime string) *PositionBuilder {
	builder.expirationTime = expirationTime
	builder.expirationTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PositionBuilder) CustomFields(customFields []*CustomFieldData) *PositionBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 创建人
//
// 示例值：4719519211875096301
func (builder *PositionBuilder) CreatedBy(createdBy string) *PositionBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

func (builder *PositionBuilder) Build() *Position {
	req := &Position{}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.jobFamilyIdListFlag {
		req.JobFamilyIdList = builder.jobFamilyIdList
	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobLevelIdListFlag {
		req.JobLevelIdList = builder.jobLevelIdList
	}
	if builder.employeeTypeIdListFlag {
		req.EmployeeTypeIdList = builder.employeeTypeIdList
	}
	if builder.jobGradeIdListFlag {
		req.JobGradeIdList = builder.jobGradeIdList
	}
	if builder.workLocationIdListFlag {
		req.WorkLocationIdList = builder.workLocationIdList
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.directLeaderIdFlag {
		req.DirectLeaderId = &builder.directLeaderId

	}
	if builder.dottedLineLeaderIdFlag {
		req.DottedLineLeaderId = &builder.dottedLineLeaderId

	}
	if builder.isKeyPositionFlag {
		req.IsKeyPosition = &builder.isKeyPosition

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.expirationTimeFlag {
		req.ExpirationTime = &builder.expirationTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	return req
}

type PositionAdjustmentInfo struct {
	OriginalJobFamilies []string `json:"original_job_families,omitempty"` // 原序列 ID

	TargetJobFamilies []string `json:"target_job_families,omitempty"` // 新序列 ID

	OriginalDepartment *string `json:"original_department,omitempty"` // 原所属部门 ID

	TargetDepartment *string `json:"target_department,omitempty"` // 新所属部门 ID

	TargetDraftDepartment *string `json:"target_draft_department,omitempty"` // 新所属部门 ID，新建部门审批完成前会返回 td_xxx 的临时 ID

	OriginalCostCenter *string `json:"original_cost_center,omitempty"` // 原岗位默认成本中心 ID

	TargetCostCenter *string `json:"target_cost_center,omitempty"` // 新岗位默认成本中心 ID

	OriginalWorkingHoursType *string `json:"original_working_hours_type,omitempty"` // 原工时制度 ID

	TargetWorkingHoursType *string `json:"target_working_hours_type,omitempty"` // 新工时制度 ID

	OriginalJob *string `json:"original_job,omitempty"` // 原职务 ID

	TargetJob *string `json:"target_job,omitempty"` // 新职务 ID

	OriginalIsKeyPosition *bool `json:"original_is_key_position,omitempty"` // 原是否关键岗位

	TargetIsKeyPosition *bool `json:"target_is_key_position,omitempty"` // 新是否关键岗位

	OriginalEmployeeTypes []string `json:"original_employee_types,omitempty"` // 原人员类型 ID

	TargetEmployeeTypes []string `json:"target_employee_types,omitempty"` // 新人员类型 ID

	OriginalNames []*I18n `json:"original_names,omitempty"` // 原名称

	TargetNames []*I18n `json:"target_names,omitempty"` // 新名称

	OriginalJobGrades []string `json:"original_job_grades,omitempty"` // 原职等 ID

	TargetJobGrades []string `json:"target_job_grades,omitempty"` // 新职等 ID

	OriginalCode *string `json:"original_code,omitempty"` // 原编码

	TargetCode *string `json:"target_code,omitempty"` // 新编码

	OriginalJobLevels []string `json:"original_job_levels,omitempty"` // 原职级 ID

	TargetJobLevels []string `json:"target_job_levels,omitempty"` // 新职级 ID

	OriginalActive *bool `json:"original_active,omitempty"` // 原状态

	TargetActive *bool `json:"target_active,omitempty"` // 新状态

	OriginalDirectLeader *string `json:"original_direct_leader,omitempty"` // 原直线上级（岗位） ID

	TargetDirectLeader *string `json:"target_direct_leader,omitempty"` // 新直线上级（岗位） ID

	TargetDraftDirectLeader *string `json:"target_draft_direct_leader,omitempty"` // 新直线上级（岗位） ID，新建岗位审批完成前会返回 td_xxx 的临时 ID

	OriginalWorkLocations []string `json:"original_work_locations,omitempty"` // 原工作地点 ID

	TargetWorkLocations []string `json:"target_work_locations,omitempty"` // 新工作地点 ID

	OriginalDescriptions []*I18n `json:"original_descriptions,omitempty"` // 原描述

	TargetDescriptions []*I18n `json:"target_descriptions,omitempty"` // 新描述

	OriginalDepartmentIdPaths []*OrgdraftDepartmentId `json:"original_department_id_paths,omitempty"` // 原部门全路径，从根部门开始自上而下返回部门 ID 列表

	TargetDepartmentIdPaths []*OrgdraftDepartmentId `json:"target_department_id_paths,omitempty"` // 新部门全路径，从根部门开始自上而下返回部门 ID 列表

	CustomFields []*ChangeFieldPair `json:"custom_fields,omitempty"` // 自定义字段
}

type PositionAdjustmentInfoBuilder struct {
	originalJobFamilies     []string // 原序列 ID
	originalJobFamiliesFlag bool

	targetJobFamilies     []string // 新序列 ID
	targetJobFamiliesFlag bool

	originalDepartment     string // 原所属部门 ID
	originalDepartmentFlag bool

	targetDepartment     string // 新所属部门 ID
	targetDepartmentFlag bool

	targetDraftDepartment     string // 新所属部门 ID，新建部门审批完成前会返回 td_xxx 的临时 ID
	targetDraftDepartmentFlag bool

	originalCostCenter     string // 原岗位默认成本中心 ID
	originalCostCenterFlag bool

	targetCostCenter     string // 新岗位默认成本中心 ID
	targetCostCenterFlag bool

	originalWorkingHoursType     string // 原工时制度 ID
	originalWorkingHoursTypeFlag bool

	targetWorkingHoursType     string // 新工时制度 ID
	targetWorkingHoursTypeFlag bool

	originalJob     string // 原职务 ID
	originalJobFlag bool

	targetJob     string // 新职务 ID
	targetJobFlag bool

	originalIsKeyPosition     bool // 原是否关键岗位
	originalIsKeyPositionFlag bool

	targetIsKeyPosition     bool // 新是否关键岗位
	targetIsKeyPositionFlag bool

	originalEmployeeTypes     []string // 原人员类型 ID
	originalEmployeeTypesFlag bool

	targetEmployeeTypes     []string // 新人员类型 ID
	targetEmployeeTypesFlag bool

	originalNames     []*I18n // 原名称
	originalNamesFlag bool

	targetNames     []*I18n // 新名称
	targetNamesFlag bool

	originalJobGrades     []string // 原职等 ID
	originalJobGradesFlag bool

	targetJobGrades     []string // 新职等 ID
	targetJobGradesFlag bool

	originalCode     string // 原编码
	originalCodeFlag bool

	targetCode     string // 新编码
	targetCodeFlag bool

	originalJobLevels     []string // 原职级 ID
	originalJobLevelsFlag bool

	targetJobLevels     []string // 新职级 ID
	targetJobLevelsFlag bool

	originalActive     bool // 原状态
	originalActiveFlag bool

	targetActive     bool // 新状态
	targetActiveFlag bool

	originalDirectLeader     string // 原直线上级（岗位） ID
	originalDirectLeaderFlag bool

	targetDirectLeader     string // 新直线上级（岗位） ID
	targetDirectLeaderFlag bool

	targetDraftDirectLeader     string // 新直线上级（岗位） ID，新建岗位审批完成前会返回 td_xxx 的临时 ID
	targetDraftDirectLeaderFlag bool

	originalWorkLocations     []string // 原工作地点 ID
	originalWorkLocationsFlag bool

	targetWorkLocations     []string // 新工作地点 ID
	targetWorkLocationsFlag bool

	originalDescriptions     []*I18n // 原描述
	originalDescriptionsFlag bool

	targetDescriptions     []*I18n // 新描述
	targetDescriptionsFlag bool

	originalDepartmentIdPaths     []*OrgdraftDepartmentId // 原部门全路径，从根部门开始自上而下返回部门 ID 列表
	originalDepartmentIdPathsFlag bool

	targetDepartmentIdPaths     []*OrgdraftDepartmentId // 新部门全路径，从根部门开始自上而下返回部门 ID 列表
	targetDepartmentIdPathsFlag bool

	customFields     []*ChangeFieldPair // 自定义字段
	customFieldsFlag bool
}

func NewPositionAdjustmentInfoBuilder() *PositionAdjustmentInfoBuilder {
	builder := &PositionAdjustmentInfoBuilder{}
	return builder
}

// 原序列 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalJobFamilies(originalJobFamilies []string) *PositionAdjustmentInfoBuilder {
	builder.originalJobFamilies = originalJobFamilies
	builder.originalJobFamiliesFlag = true
	return builder
}

// 新序列 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetJobFamilies(targetJobFamilies []string) *PositionAdjustmentInfoBuilder {
	builder.targetJobFamilies = targetJobFamilies
	builder.targetJobFamiliesFlag = true
	return builder
}

// 原所属部门 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) OriginalDepartment(originalDepartment string) *PositionAdjustmentInfoBuilder {
	builder.originalDepartment = originalDepartment
	builder.originalDepartmentFlag = true
	return builder
}

// 新所属部门 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) TargetDepartment(targetDepartment string) *PositionAdjustmentInfoBuilder {
	builder.targetDepartment = targetDepartment
	builder.targetDepartmentFlag = true
	return builder
}

// 新所属部门 ID，新建部门审批完成前会返回 td_xxx 的临时 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) TargetDraftDepartment(targetDraftDepartment string) *PositionAdjustmentInfoBuilder {
	builder.targetDraftDepartment = targetDraftDepartment
	builder.targetDraftDepartmentFlag = true
	return builder
}

// 原岗位默认成本中心 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) OriginalCostCenter(originalCostCenter string) *PositionAdjustmentInfoBuilder {
	builder.originalCostCenter = originalCostCenter
	builder.originalCostCenterFlag = true
	return builder
}

// 新岗位默认成本中心 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) TargetCostCenter(targetCostCenter string) *PositionAdjustmentInfoBuilder {
	builder.targetCostCenter = targetCostCenter
	builder.targetCostCenterFlag = true
	return builder
}

// 原工时制度 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) OriginalWorkingHoursType(originalWorkingHoursType string) *PositionAdjustmentInfoBuilder {
	builder.originalWorkingHoursType = originalWorkingHoursType
	builder.originalWorkingHoursTypeFlag = true
	return builder
}

// 新工时制度 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) TargetWorkingHoursType(targetWorkingHoursType string) *PositionAdjustmentInfoBuilder {
	builder.targetWorkingHoursType = targetWorkingHoursType
	builder.targetWorkingHoursTypeFlag = true
	return builder
}

// 原职务 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) OriginalJob(originalJob string) *PositionAdjustmentInfoBuilder {
	builder.originalJob = originalJob
	builder.originalJobFlag = true
	return builder
}

// 新职务 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) TargetJob(targetJob string) *PositionAdjustmentInfoBuilder {
	builder.targetJob = targetJob
	builder.targetJobFlag = true
	return builder
}

// 原是否关键岗位
//
// 示例值：true
func (builder *PositionAdjustmentInfoBuilder) OriginalIsKeyPosition(originalIsKeyPosition bool) *PositionAdjustmentInfoBuilder {
	builder.originalIsKeyPosition = originalIsKeyPosition
	builder.originalIsKeyPositionFlag = true
	return builder
}

// 新是否关键岗位
//
// 示例值：true
func (builder *PositionAdjustmentInfoBuilder) TargetIsKeyPosition(targetIsKeyPosition bool) *PositionAdjustmentInfoBuilder {
	builder.targetIsKeyPosition = targetIsKeyPosition
	builder.targetIsKeyPositionFlag = true
	return builder
}

// 原人员类型 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalEmployeeTypes(originalEmployeeTypes []string) *PositionAdjustmentInfoBuilder {
	builder.originalEmployeeTypes = originalEmployeeTypes
	builder.originalEmployeeTypesFlag = true
	return builder
}

// 新人员类型 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetEmployeeTypes(targetEmployeeTypes []string) *PositionAdjustmentInfoBuilder {
	builder.targetEmployeeTypes = targetEmployeeTypes
	builder.targetEmployeeTypesFlag = true
	return builder
}

// 原名称
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalNames(originalNames []*I18n) *PositionAdjustmentInfoBuilder {
	builder.originalNames = originalNames
	builder.originalNamesFlag = true
	return builder
}

// 新名称
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetNames(targetNames []*I18n) *PositionAdjustmentInfoBuilder {
	builder.targetNames = targetNames
	builder.targetNamesFlag = true
	return builder
}

// 原职等 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalJobGrades(originalJobGrades []string) *PositionAdjustmentInfoBuilder {
	builder.originalJobGrades = originalJobGrades
	builder.originalJobGradesFlag = true
	return builder
}

// 新职等 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetJobGrades(targetJobGrades []string) *PositionAdjustmentInfoBuilder {
	builder.targetJobGrades = targetJobGrades
	builder.targetJobGradesFlag = true
	return builder
}

// 原编码
//
// 示例值：P00000456
func (builder *PositionAdjustmentInfoBuilder) OriginalCode(originalCode string) *PositionAdjustmentInfoBuilder {
	builder.originalCode = originalCode
	builder.originalCodeFlag = true
	return builder
}

// 新编码
//
// 示例值：P00000456
func (builder *PositionAdjustmentInfoBuilder) TargetCode(targetCode string) *PositionAdjustmentInfoBuilder {
	builder.targetCode = targetCode
	builder.targetCodeFlag = true
	return builder
}

// 原职级 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalJobLevels(originalJobLevels []string) *PositionAdjustmentInfoBuilder {
	builder.originalJobLevels = originalJobLevels
	builder.originalJobLevelsFlag = true
	return builder
}

// 新职级 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetJobLevels(targetJobLevels []string) *PositionAdjustmentInfoBuilder {
	builder.targetJobLevels = targetJobLevels
	builder.targetJobLevelsFlag = true
	return builder
}

// 原状态
//
// 示例值：true
func (builder *PositionAdjustmentInfoBuilder) OriginalActive(originalActive bool) *PositionAdjustmentInfoBuilder {
	builder.originalActive = originalActive
	builder.originalActiveFlag = true
	return builder
}

// 新状态
//
// 示例值：true
func (builder *PositionAdjustmentInfoBuilder) TargetActive(targetActive bool) *PositionAdjustmentInfoBuilder {
	builder.targetActive = targetActive
	builder.targetActiveFlag = true
	return builder
}

// 原直线上级（岗位） ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) OriginalDirectLeader(originalDirectLeader string) *PositionAdjustmentInfoBuilder {
	builder.originalDirectLeader = originalDirectLeader
	builder.originalDirectLeaderFlag = true
	return builder
}

// 新直线上级（岗位） ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) TargetDirectLeader(targetDirectLeader string) *PositionAdjustmentInfoBuilder {
	builder.targetDirectLeader = targetDirectLeader
	builder.targetDirectLeaderFlag = true
	return builder
}

// 新直线上级（岗位） ID，新建岗位审批完成前会返回 td_xxx 的临时 ID
//
// 示例值：6974659700705068581
func (builder *PositionAdjustmentInfoBuilder) TargetDraftDirectLeader(targetDraftDirectLeader string) *PositionAdjustmentInfoBuilder {
	builder.targetDraftDirectLeader = targetDraftDirectLeader
	builder.targetDraftDirectLeaderFlag = true
	return builder
}

// 原工作地点 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalWorkLocations(originalWorkLocations []string) *PositionAdjustmentInfoBuilder {
	builder.originalWorkLocations = originalWorkLocations
	builder.originalWorkLocationsFlag = true
	return builder
}

// 新工作地点 ID
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetWorkLocations(targetWorkLocations []string) *PositionAdjustmentInfoBuilder {
	builder.targetWorkLocations = targetWorkLocations
	builder.targetWorkLocationsFlag = true
	return builder
}

// 原描述
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalDescriptions(originalDescriptions []*I18n) *PositionAdjustmentInfoBuilder {
	builder.originalDescriptions = originalDescriptions
	builder.originalDescriptionsFlag = true
	return builder
}

// 新描述
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetDescriptions(targetDescriptions []*I18n) *PositionAdjustmentInfoBuilder {
	builder.targetDescriptions = targetDescriptions
	builder.targetDescriptionsFlag = true
	return builder
}

// 原部门全路径，从根部门开始自上而下返回部门 ID 列表
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) OriginalDepartmentIdPaths(originalDepartmentIdPaths []*OrgdraftDepartmentId) *PositionAdjustmentInfoBuilder {
	builder.originalDepartmentIdPaths = originalDepartmentIdPaths
	builder.originalDepartmentIdPathsFlag = true
	return builder
}

// 新部门全路径，从根部门开始自上而下返回部门 ID 列表
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) TargetDepartmentIdPaths(targetDepartmentIdPaths []*OrgdraftDepartmentId) *PositionAdjustmentInfoBuilder {
	builder.targetDepartmentIdPaths = targetDepartmentIdPaths
	builder.targetDepartmentIdPathsFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PositionAdjustmentInfoBuilder) CustomFields(customFields []*ChangeFieldPair) *PositionAdjustmentInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PositionAdjustmentInfoBuilder) Build() *PositionAdjustmentInfo {
	req := &PositionAdjustmentInfo{}
	if builder.originalJobFamiliesFlag {
		req.OriginalJobFamilies = builder.originalJobFamilies
	}
	if builder.targetJobFamiliesFlag {
		req.TargetJobFamilies = builder.targetJobFamilies
	}
	if builder.originalDepartmentFlag {
		req.OriginalDepartment = &builder.originalDepartment

	}
	if builder.targetDepartmentFlag {
		req.TargetDepartment = &builder.targetDepartment

	}
	if builder.targetDraftDepartmentFlag {
		req.TargetDraftDepartment = &builder.targetDraftDepartment

	}
	if builder.originalCostCenterFlag {
		req.OriginalCostCenter = &builder.originalCostCenter

	}
	if builder.targetCostCenterFlag {
		req.TargetCostCenter = &builder.targetCostCenter

	}
	if builder.originalWorkingHoursTypeFlag {
		req.OriginalWorkingHoursType = &builder.originalWorkingHoursType

	}
	if builder.targetWorkingHoursTypeFlag {
		req.TargetWorkingHoursType = &builder.targetWorkingHoursType

	}
	if builder.originalJobFlag {
		req.OriginalJob = &builder.originalJob

	}
	if builder.targetJobFlag {
		req.TargetJob = &builder.targetJob

	}
	if builder.originalIsKeyPositionFlag {
		req.OriginalIsKeyPosition = &builder.originalIsKeyPosition

	}
	if builder.targetIsKeyPositionFlag {
		req.TargetIsKeyPosition = &builder.targetIsKeyPosition

	}
	if builder.originalEmployeeTypesFlag {
		req.OriginalEmployeeTypes = builder.originalEmployeeTypes
	}
	if builder.targetEmployeeTypesFlag {
		req.TargetEmployeeTypes = builder.targetEmployeeTypes
	}
	if builder.originalNamesFlag {
		req.OriginalNames = builder.originalNames
	}
	if builder.targetNamesFlag {
		req.TargetNames = builder.targetNames
	}
	if builder.originalJobGradesFlag {
		req.OriginalJobGrades = builder.originalJobGrades
	}
	if builder.targetJobGradesFlag {
		req.TargetJobGrades = builder.targetJobGrades
	}
	if builder.originalCodeFlag {
		req.OriginalCode = &builder.originalCode

	}
	if builder.targetCodeFlag {
		req.TargetCode = &builder.targetCode

	}
	if builder.originalJobLevelsFlag {
		req.OriginalJobLevels = builder.originalJobLevels
	}
	if builder.targetJobLevelsFlag {
		req.TargetJobLevels = builder.targetJobLevels
	}
	if builder.originalActiveFlag {
		req.OriginalActive = &builder.originalActive

	}
	if builder.targetActiveFlag {
		req.TargetActive = &builder.targetActive

	}
	if builder.originalDirectLeaderFlag {
		req.OriginalDirectLeader = &builder.originalDirectLeader

	}
	if builder.targetDirectLeaderFlag {
		req.TargetDirectLeader = &builder.targetDirectLeader

	}
	if builder.targetDraftDirectLeaderFlag {
		req.TargetDraftDirectLeader = &builder.targetDraftDirectLeader

	}
	if builder.originalWorkLocationsFlag {
		req.OriginalWorkLocations = builder.originalWorkLocations
	}
	if builder.targetWorkLocationsFlag {
		req.TargetWorkLocations = builder.targetWorkLocations
	}
	if builder.originalDescriptionsFlag {
		req.OriginalDescriptions = builder.originalDescriptions
	}
	if builder.targetDescriptionsFlag {
		req.TargetDescriptions = builder.targetDescriptions
	}
	if builder.originalDepartmentIdPathsFlag {
		req.OriginalDepartmentIdPaths = builder.originalDepartmentIdPaths
	}
	if builder.targetDepartmentIdPathsFlag {
		req.TargetDepartmentIdPaths = builder.targetDepartmentIdPaths
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PositionChange struct {
	PositionChangeId *string `json:"position_change_id,omitempty"` // 岗位调整记录 ID

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID

	DraftPositionId *string `json:"draft_position_id,omitempty"` // 调整过程岗位 ID 。对于在本次调整中新建的岗位，在调整未生效前会返回格式为 td_xxx 的过程岗位 ID，生效后将返回正式的岗位 ID

	PositionChangeType *string `json:"position_change_type,omitempty"` // 调整类型

	PositionAdjustmentInfo *PositionAdjustmentInfo `json:"position_adjustment_info,omitempty"` // 调整详细信息
}

type PositionChangeBuilder struct {
	positionChangeId     string // 岗位调整记录 ID
	positionChangeIdFlag bool

	positionId     string // 岗位 ID
	positionIdFlag bool

	draftPositionId     string // 调整过程岗位 ID 。对于在本次调整中新建的岗位，在调整未生效前会返回格式为 td_xxx 的过程岗位 ID，生效后将返回正式的岗位 ID
	draftPositionIdFlag bool

	positionChangeType     string // 调整类型
	positionChangeTypeFlag bool

	positionAdjustmentInfo     *PositionAdjustmentInfo // 调整详细信息
	positionAdjustmentInfoFlag bool
}

func NewPositionChangeBuilder() *PositionChangeBuilder {
	builder := &PositionChangeBuilder{}
	return builder
}

// 岗位调整记录 ID
//
// 示例值：6991776076699549697
func (builder *PositionChangeBuilder) PositionChangeId(positionChangeId string) *PositionChangeBuilder {
	builder.positionChangeId = positionChangeId
	builder.positionChangeIdFlag = true
	return builder
}

// 岗位 ID
//
// 示例值：6966236933198579208
func (builder *PositionChangeBuilder) PositionId(positionId string) *PositionChangeBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 调整过程岗位 ID 。对于在本次调整中新建的岗位，在调整未生效前会返回格式为 td_xxx 的过程岗位 ID，生效后将返回正式的岗位 ID
//
// 示例值：6966236933198579208
func (builder *PositionChangeBuilder) DraftPositionId(draftPositionId string) *PositionChangeBuilder {
	builder.draftPositionId = draftPositionId
	builder.draftPositionIdFlag = true
	return builder
}

// 调整类型
//
// 示例值：Create
func (builder *PositionChangeBuilder) PositionChangeType(positionChangeType string) *PositionChangeBuilder {
	builder.positionChangeType = positionChangeType
	builder.positionChangeTypeFlag = true
	return builder
}

// 调整详细信息
//
// 示例值：
func (builder *PositionChangeBuilder) PositionAdjustmentInfo(positionAdjustmentInfo *PositionAdjustmentInfo) *PositionChangeBuilder {
	builder.positionAdjustmentInfo = positionAdjustmentInfo
	builder.positionAdjustmentInfoFlag = true
	return builder
}

func (builder *PositionChangeBuilder) Build() *PositionChange {
	req := &PositionChange{}
	if builder.positionChangeIdFlag {
		req.PositionChangeId = &builder.positionChangeId

	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.draftPositionIdFlag {
		req.DraftPositionId = &builder.draftPositionId

	}
	if builder.positionChangeTypeFlag {
		req.PositionChangeType = &builder.positionChangeType

	}
	if builder.positionAdjustmentInfoFlag {
		req.PositionAdjustmentInfo = builder.positionAdjustmentInfo
	}
	return req
}

type PositionCreate struct {
	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心

	JobId *string `json:"job_id,omitempty"` // 职务

	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级

	EmployeeTypeIds []string `json:"employee_type_ids,omitempty"` // 人员类型

	JobGradeIds []string `json:"job_grade_ids,omitempty"` // 职等

	WorkLocationIds []string `json:"work_location_ids,omitempty"` // 工作地点

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度

	DepartmentId *string `json:"department_id,omitempty"` // 部门

	DirectLeaderId *string `json:"direct_leader_id,omitempty"` // 直属上级岗位

	DottedLineLeaderId *string `json:"dotted_line_leader_id,omitempty"` // 虚线上级岗位

	IsKeyPosition *bool `json:"is_key_position,omitempty"` // 是否关键岗位

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效日期

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PositionCreateBuilder struct {
	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	jobFamilyIds     []string // 序列
	jobFamilyIdsFlag bool

	costCenterId     string // 成本中心
	costCenterIdFlag bool

	jobId     string // 职务
	jobIdFlag bool

	jobLevelIds     []string // 职级
	jobLevelIdsFlag bool

	employeeTypeIds     []string // 人员类型
	employeeTypeIdsFlag bool

	jobGradeIds     []string // 职等
	jobGradeIdsFlag bool

	workLocationIds     []string // 工作地点
	workLocationIdsFlag bool

	workingHoursTypeId     string // 工时制度
	workingHoursTypeIdFlag bool

	departmentId     string // 部门
	departmentIdFlag bool

	directLeaderId     string // 直属上级岗位
	directLeaderIdFlag bool

	dottedLineLeaderId     string // 虚线上级岗位
	dottedLineLeaderIdFlag bool

	isKeyPosition     bool // 是否关键岗位
	isKeyPositionFlag bool

	effectiveTime     string // 生效日期
	effectiveTimeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPositionCreateBuilder() *PositionCreateBuilder {
	builder := &PositionCreateBuilder{}
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *PositionCreateBuilder) Code(code string) *PositionCreateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *PositionCreateBuilder) Names(names []*I18n) *PositionCreateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *PositionCreateBuilder) Descriptions(descriptions []*I18n) *PositionCreateBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 序列
//
// 示例值：
func (builder *PositionCreateBuilder) JobFamilyIds(jobFamilyIds []string) *PositionCreateBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 成本中心
//
// 示例值：4719519211875096301
func (builder *PositionCreateBuilder) CostCenterId(costCenterId string) *PositionCreateBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 职务
//
// 示例值：4719519211875096301
func (builder *PositionCreateBuilder) JobId(jobId string) *PositionCreateBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职级
//
// 示例值：
func (builder *PositionCreateBuilder) JobLevelIds(jobLevelIds []string) *PositionCreateBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 人员类型
//
// 示例值：
func (builder *PositionCreateBuilder) EmployeeTypeIds(employeeTypeIds []string) *PositionCreateBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 职等
//
// 示例值：
func (builder *PositionCreateBuilder) JobGradeIds(jobGradeIds []string) *PositionCreateBuilder {
	builder.jobGradeIds = jobGradeIds
	builder.jobGradeIdsFlag = true
	return builder
}

// 工作地点
//
// 示例值：
func (builder *PositionCreateBuilder) WorkLocationIds(workLocationIds []string) *PositionCreateBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 工时制度
//
// 示例值：4719519211875096301
func (builder *PositionCreateBuilder) WorkingHoursTypeId(workingHoursTypeId string) *PositionCreateBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 部门
//
// 示例值：4719519211875096301
func (builder *PositionCreateBuilder) DepartmentId(departmentId string) *PositionCreateBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 直属上级岗位
//
// 示例值：4719519211875096301
func (builder *PositionCreateBuilder) DirectLeaderId(directLeaderId string) *PositionCreateBuilder {
	builder.directLeaderId = directLeaderId
	builder.directLeaderIdFlag = true
	return builder
}

// 虚线上级岗位
//
// 示例值：4719519211875096301
func (builder *PositionCreateBuilder) DottedLineLeaderId(dottedLineLeaderId string) *PositionCreateBuilder {
	builder.dottedLineLeaderId = dottedLineLeaderId
	builder.dottedLineLeaderIdFlag = true
	return builder
}

// 是否关键岗位
//
// 示例值：true
func (builder *PositionCreateBuilder) IsKeyPosition(isKeyPosition bool) *PositionCreateBuilder {
	builder.isKeyPosition = isKeyPosition
	builder.isKeyPositionFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *PositionCreateBuilder) EffectiveTime(effectiveTime string) *PositionCreateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PositionCreateBuilder) CustomFields(customFields []*CustomFieldData) *PositionCreateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PositionCreateBuilder) Build() *PositionCreate {
	req := &PositionCreate{}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.jobGradeIdsFlag {
		req.JobGradeIds = builder.jobGradeIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.directLeaderIdFlag {
		req.DirectLeaderId = &builder.directLeaderId

	}
	if builder.dottedLineLeaderIdFlag {
		req.DottedLineLeaderId = &builder.dottedLineLeaderId

	}
	if builder.isKeyPositionFlag {
		req.IsKeyPosition = &builder.isKeyPosition

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PositionUpdate struct {
	Code *string `json:"code,omitempty"` // 编码

	Names []*I18n `json:"names,omitempty"` // 名称

	Descriptions []*I18n `json:"descriptions,omitempty"` // 描述

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列

	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心

	JobId *string `json:"job_id,omitempty"` // 职务

	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级

	EmployeeTypeIds []string `json:"employee_type_ids,omitempty"` // 人员类型

	JobGradeIds []string `json:"job_grade_ids,omitempty"` // 职等

	WorkLocationIds []string `json:"work_location_ids,omitempty"` // 工作地点

	WorkingHoursTypeId *string `json:"working_hours_type_id,omitempty"` // 工时制度

	DepartmentId *string `json:"department_id,omitempty"` // 部门

	DirectLeaderId *string `json:"direct_leader_id,omitempty"` // 直属上级岗位

	DottedLineLeaderId *string `json:"dotted_line_leader_id,omitempty"` // 虚线上级岗位

	IsKeyPosition *bool `json:"is_key_position,omitempty"` // 是否关键岗位

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效日期

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PositionUpdateBuilder struct {
	code     string // 编码
	codeFlag bool

	names     []*I18n // 名称
	namesFlag bool

	descriptions     []*I18n // 描述
	descriptionsFlag bool

	jobFamilyIds     []string // 序列
	jobFamilyIdsFlag bool

	costCenterId     string // 成本中心
	costCenterIdFlag bool

	jobId     string // 职务
	jobIdFlag bool

	jobLevelIds     []string // 职级
	jobLevelIdsFlag bool

	employeeTypeIds     []string // 人员类型
	employeeTypeIdsFlag bool

	jobGradeIds     []string // 职等
	jobGradeIdsFlag bool

	workLocationIds     []string // 工作地点
	workLocationIdsFlag bool

	workingHoursTypeId     string // 工时制度
	workingHoursTypeIdFlag bool

	departmentId     string // 部门
	departmentIdFlag bool

	directLeaderId     string // 直属上级岗位
	directLeaderIdFlag bool

	dottedLineLeaderId     string // 虚线上级岗位
	dottedLineLeaderIdFlag bool

	isKeyPosition     bool // 是否关键岗位
	isKeyPositionFlag bool

	effectiveTime     string // 生效日期
	effectiveTimeFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPositionUpdateBuilder() *PositionUpdateBuilder {
	builder := &PositionUpdateBuilder{}
	return builder
}

// 编码
//
// 示例值：A01234
func (builder *PositionUpdateBuilder) Code(code string) *PositionUpdateBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *PositionUpdateBuilder) Names(names []*I18n) *PositionUpdateBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 描述
//
// 示例值：
func (builder *PositionUpdateBuilder) Descriptions(descriptions []*I18n) *PositionUpdateBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

// 序列
//
// 示例值：
func (builder *PositionUpdateBuilder) JobFamilyIds(jobFamilyIds []string) *PositionUpdateBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 成本中心
//
// 示例值：4719519211875096301
func (builder *PositionUpdateBuilder) CostCenterId(costCenterId string) *PositionUpdateBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 职务
//
// 示例值：4719519211875096301
func (builder *PositionUpdateBuilder) JobId(jobId string) *PositionUpdateBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 职级
//
// 示例值：
func (builder *PositionUpdateBuilder) JobLevelIds(jobLevelIds []string) *PositionUpdateBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 人员类型
//
// 示例值：
func (builder *PositionUpdateBuilder) EmployeeTypeIds(employeeTypeIds []string) *PositionUpdateBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 职等
//
// 示例值：
func (builder *PositionUpdateBuilder) JobGradeIds(jobGradeIds []string) *PositionUpdateBuilder {
	builder.jobGradeIds = jobGradeIds
	builder.jobGradeIdsFlag = true
	return builder
}

// 工作地点
//
// 示例值：
func (builder *PositionUpdateBuilder) WorkLocationIds(workLocationIds []string) *PositionUpdateBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 工时制度
//
// 示例值：4719519211875096301
func (builder *PositionUpdateBuilder) WorkingHoursTypeId(workingHoursTypeId string) *PositionUpdateBuilder {
	builder.workingHoursTypeId = workingHoursTypeId
	builder.workingHoursTypeIdFlag = true
	return builder
}

// 部门
//
// 示例值：4719519211875096301
func (builder *PositionUpdateBuilder) DepartmentId(departmentId string) *PositionUpdateBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 直属上级岗位
//
// 示例值：4719519211875096301
func (builder *PositionUpdateBuilder) DirectLeaderId(directLeaderId string) *PositionUpdateBuilder {
	builder.directLeaderId = directLeaderId
	builder.directLeaderIdFlag = true
	return builder
}

// 虚线上级岗位
//
// 示例值：4719519211875096301
func (builder *PositionUpdateBuilder) DottedLineLeaderId(dottedLineLeaderId string) *PositionUpdateBuilder {
	builder.dottedLineLeaderId = dottedLineLeaderId
	builder.dottedLineLeaderIdFlag = true
	return builder
}

// 是否关键岗位
//
// 示例值：true
func (builder *PositionUpdateBuilder) IsKeyPosition(isKeyPosition bool) *PositionUpdateBuilder {
	builder.isKeyPosition = isKeyPosition
	builder.isKeyPositionFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-05-01
func (builder *PositionUpdateBuilder) EffectiveTime(effectiveTime string) *PositionUpdateBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PositionUpdateBuilder) CustomFields(customFields []*CustomFieldData) *PositionUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PositionUpdateBuilder) Build() *PositionUpdate {
	req := &PositionUpdate{}
	if builder.codeFlag {
		req.Code = &builder.code

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.jobGradeIdsFlag {
		req.JobGradeIds = builder.jobGradeIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.workingHoursTypeIdFlag {
		req.WorkingHoursTypeId = &builder.workingHoursTypeId

	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.directLeaderIdFlag {
		req.DirectLeaderId = &builder.directLeaderId

	}
	if builder.dottedLineLeaderIdFlag {
		req.DottedLineLeaderId = &builder.dottedLineLeaderId

	}
	if builder.isKeyPositionFlag {
		req.IsKeyPosition = &builder.isKeyPosition

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PreHire struct {
	PersonInfo *PersonInfo `json:"person_info,omitempty"` // 个人信息

	EmploymentInfo *PreHireEmploymentInfo `json:"employment_info,omitempty"` // 工作信息

	OnboardingInfo *PreHireOnboardingInfo `json:"onboarding_info,omitempty"` // 入职信息

	ProbationInfo *PreHireProbationInfo `json:"probation_info,omitempty"` // 试用期信息

	ContractInfo *PreHireContractInfo `json:"contract_info,omitempty"` // 合同信息

	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职 id

	PeopleFieldsJson *string `json:"people_fields_json,omitempty"` // 部分老people体系字段兼容序列化的值，用于做切换器兼容
}

type PreHireBuilder struct {
	personInfo     *PersonInfo // 个人信息
	personInfoFlag bool

	employmentInfo     *PreHireEmploymentInfo // 工作信息
	employmentInfoFlag bool

	onboardingInfo     *PreHireOnboardingInfo // 入职信息
	onboardingInfoFlag bool

	probationInfo     *PreHireProbationInfo // 试用期信息
	probationInfoFlag bool

	contractInfo     *PreHireContractInfo // 合同信息
	contractInfoFlag bool

	preHireId     string // 待入职 id
	preHireIdFlag bool

	peopleFieldsJson     string // 部分老people体系字段兼容序列化的值，用于做切换器兼容
	peopleFieldsJsonFlag bool
}

func NewPreHireBuilder() *PreHireBuilder {
	builder := &PreHireBuilder{}
	return builder
}

// 个人信息
//
// 示例值：
func (builder *PreHireBuilder) PersonInfo(personInfo *PersonInfo) *PreHireBuilder {
	builder.personInfo = personInfo
	builder.personInfoFlag = true
	return builder
}

// 工作信息
//
// 示例值：
func (builder *PreHireBuilder) EmploymentInfo(employmentInfo *PreHireEmploymentInfo) *PreHireBuilder {
	builder.employmentInfo = employmentInfo
	builder.employmentInfoFlag = true
	return builder
}

// 入职信息
//
// 示例值：
func (builder *PreHireBuilder) OnboardingInfo(onboardingInfo *PreHireOnboardingInfo) *PreHireBuilder {
	builder.onboardingInfo = onboardingInfo
	builder.onboardingInfoFlag = true
	return builder
}

// 试用期信息
//
// 示例值：
func (builder *PreHireBuilder) ProbationInfo(probationInfo *PreHireProbationInfo) *PreHireBuilder {
	builder.probationInfo = probationInfo
	builder.probationInfoFlag = true
	return builder
}

// 合同信息
//
// 示例值：
func (builder *PreHireBuilder) ContractInfo(contractInfo *PreHireContractInfo) *PreHireBuilder {
	builder.contractInfo = contractInfo
	builder.contractInfoFlag = true
	return builder
}

// 待入职 id
//
// 示例值：7032210902531327521
func (builder *PreHireBuilder) PreHireId(preHireId string) *PreHireBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 部分老people体系字段兼容序列化的值，用于做切换器兼容
//
// 示例值：{"process":1}
func (builder *PreHireBuilder) PeopleFieldsJson(peopleFieldsJson string) *PreHireBuilder {
	builder.peopleFieldsJson = peopleFieldsJson
	builder.peopleFieldsJsonFlag = true
	return builder
}

func (builder *PreHireBuilder) Build() *PreHire {
	req := &PreHire{}
	if builder.personInfoFlag {
		req.PersonInfo = builder.personInfo
	}
	if builder.employmentInfoFlag {
		req.EmploymentInfo = builder.employmentInfo
	}
	if builder.onboardingInfoFlag {
		req.OnboardingInfo = builder.onboardingInfo
	}
	if builder.probationInfoFlag {
		req.ProbationInfo = builder.probationInfo
	}
	if builder.contractInfoFlag {
		req.ContractInfo = builder.contractInfo
	}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId

	}
	if builder.peopleFieldsJsonFlag {
		req.PeopleFieldsJson = &builder.peopleFieldsJson

	}
	return req
}

type PreHireAbnormalReason struct {
	Descriptions []*I18n `json:"descriptions,omitempty"` // 异常信息描述
}

type PreHireAbnormalReasonBuilder struct {
	descriptions     []*I18n // 异常信息描述
	descriptionsFlag bool
}

func NewPreHireAbnormalReasonBuilder() *PreHireAbnormalReasonBuilder {
	builder := &PreHireAbnormalReasonBuilder{}
	return builder
}

// 异常信息描述
//
// 示例值：
func (builder *PreHireAbnormalReasonBuilder) Descriptions(descriptions []*I18n) *PreHireAbnormalReasonBuilder {
	builder.descriptions = descriptions
	builder.descriptionsFlag = true
	return builder
}

func (builder *PreHireAbnormalReasonBuilder) Build() *PreHireAbnormalReason {
	req := &PreHireAbnormalReason{}
	if builder.descriptionsFlag {
		req.Descriptions = builder.descriptions
	}
	return req
}

type PreHireContractInfo struct {
	ContractStartDate *string `json:"contract_start_date,omitempty"` // 合同开始日期

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 合同结束日期

	ContractType *string `json:"contract_type,omitempty"` // -| 合同类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "contract_type"

	DurationType *string `json:"duration_type,omitempty"` // -| 期限类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "duration_type"

	SigningType *string `json:"signing_type,omitempty"` // -| 签订类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "duration_type"

	ContractFileIds []string `json:"contract_file_ids,omitempty"` // 合同文件
}

type PreHireContractInfoBuilder struct {
	contractStartDate     string // 合同开始日期
	contractStartDateFlag bool

	contractEndDate     string // 合同结束日期
	contractEndDateFlag bool

	contractType     string // -| 合同类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "contract_type"
	contractTypeFlag bool

	durationType     string // -| 期限类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "duration_type"
	durationTypeFlag bool

	signingType     string // -| 签订类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "duration_type"
	signingTypeFlag bool

	contractFileIds     []string // 合同文件
	contractFileIdsFlag bool
}

func NewPreHireContractInfoBuilder() *PreHireContractInfoBuilder {
	builder := &PreHireContractInfoBuilder{}
	return builder
}

// 合同开始日期
//
// 示例值：2022-10-08
func (builder *PreHireContractInfoBuilder) ContractStartDate(contractStartDate string) *PreHireContractInfoBuilder {
	builder.contractStartDate = contractStartDate
	builder.contractStartDateFlag = true
	return builder
}

// 合同结束日期
//
// 示例值：2025-10-07
func (builder *PreHireContractInfoBuilder) ContractEndDate(contractEndDate string) *PreHireContractInfoBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

// -| 合同类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "contract_type"
//
// 示例值：labor_contract
func (builder *PreHireContractInfoBuilder) ContractType(contractType string) *PreHireContractInfoBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// -| 期限类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "duration_type"
//
// 示例值：fixed_term
func (builder *PreHireContractInfoBuilder) DurationType(durationType string) *PreHireContractInfoBuilder {
	builder.durationType = durationType
	builder.durationTypeFlag = true
	return builder
}

// -| 签订类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "duration_type"
//
// 示例值：renewed
func (builder *PreHireContractInfoBuilder) SigningType(signingType string) *PreHireContractInfoBuilder {
	builder.signingType = signingType
	builder.signingTypeFlag = true
	return builder
}

// 合同文件
//
// 示例值：\["6977976687350924833","6890452208593372141"\]
func (builder *PreHireContractInfoBuilder) ContractFileIds(contractFileIds []string) *PreHireContractInfoBuilder {
	builder.contractFileIds = contractFileIds
	builder.contractFileIdsFlag = true
	return builder
}

func (builder *PreHireContractInfoBuilder) Build() *PreHireContractInfo {
	req := &PreHireContractInfo{}
	if builder.contractStartDateFlag {
		req.ContractStartDate = &builder.contractStartDate

	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	if builder.contractTypeFlag {
		req.ContractType = &builder.contractType

	}
	if builder.durationTypeFlag {
		req.DurationType = &builder.durationType

	}
	if builder.signingTypeFlag {
		req.SigningType = &builder.signingType

	}
	if builder.contractFileIdsFlag {
		req.ContractFileIds = builder.contractFileIds
	}
	return req
}

type PreHireEmploymentInfo struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID ，可以通过【搜索部门信息】接口获取

	CostCenterRates []*JobDataCostCenter `json:"cost_center_rates,omitempty"` // 成本中心分摊信息

	OfficeLocationId *string `json:"office_location_id,omitempty"` // 办公地点id ，详细信息可通过【批量查询地点】接口获得

	WorkLocationId *string `json:"work_location_id,omitempty"` // 工作地点id ，详细信息可通过【批量查询地点】接口获得

	WorkStation *string `json:"work_station,omitempty"` // 工位

	WorkerId *string `json:"worker_id,omitempty"` // 工号

	CompensationType *Enum `json:"compensation_type,omitempty"` // -| 薪资类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：compensation_type - object_api_name：pre_hire

	DirectLeaderId *string `json:"direct_leader_id,omitempty"` // 直属上级雇佣 ID ， 可以通过【搜索员工信息】接口获取

	DottedLineManagerId *string `json:"dotted_line_manager_id,omitempty"` // 虚线上级雇佣 ID ， 可以通过【搜索员工信息】接口获取

	JobId *string `json:"job_id,omitempty"` // 职务 ID ,可以通过【批量查询职务】接口获取

	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列 ID，可以通过【批量查询职务序列】接口获取

	JobLevelId *string `json:"job_level_id,omitempty"` // 职级 ID，可以通过【批量查询职务级别】接口获取

	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等 ID

	JobTitle *string `json:"job_title,omitempty"` // 职务头衔

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID ，可以通过招聘【批量查询人员类型】接口获取

	EmployeeSubtypeId *string `json:"employee_subtype_id,omitempty"` // 人员子类型 ID

	EmploymentType *string `json:"employment_type,omitempty"` // -| 雇佣类型， 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "employment_type"

	WorkEmail *string `json:"work_email,omitempty"` // 工作邮箱

	CompanyId *string `json:"company_id,omitempty"` // 公司 ID , 详细信息可通过【批量查询公司】接口获得

	SocialSecurityCityId *string `json:"social_security_city_id,omitempty"` // 社保城市 ID ，详细信息可通过【批量查询地点】接口获得

	NonCompeteCovenant *bool `json:"non_compete_covenant,omitempty"` // 是否包含竞业条款

	WeeklyWorkingHours *int `json:"weekly_working_hours,omitempty"` // 周工作时长（单位：小时）

	Rehire *string `json:"rehire,omitempty"` // 是否离职重聘

	RehireEmploymentId *string `json:"rehire_employment_id,omitempty"` // -| 历史雇佣信息 ID ，雇佣信息详细信息可以通过「查询单个雇佣信息」API 获得，系统会检验当前雇佣信息的合法性，要求： - 雇佣信息为该人员最后一次雇佣记录 - 雇佣信息的雇员状态 = "terminated" - 该人员不存在其他待入职记录

	WorkingHoursType *string `json:"working_hours_type,omitempty"` // -| 工时制度 ID ，可通过【查询单个工时制度】接口获取

	WeeklyWorkingHoursV2 *float64 `json:"weekly_working_hours_v2,omitempty"` // 周工作时长v2（单位：小时）

	OfficeAddress *Address `json:"office_address,omitempty"` // 办公地址

	WorkingCalendarId *string `json:"working_calendar_id,omitempty"` // 工作日历

	UpdatedAt *string `json:"updated_at,omitempty"` // 待入职信息 更新时间

	SuspectedRehiring *bool `json:"suspected_rehiring,omitempty"` // 是否疑似重聘

	ConditionWorker *bool `json:"condition_worker,omitempty"` // 是否外部人员

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	PositionId *string `json:"position_id,omitempty"` // 岗位 ID

	CompanyManualUpdated *bool `json:"company_manual_updated,omitempty"` // 公司主体是否被手动修改

	PayGroup *PreHirePayGroupInfo `json:"pay_group,omitempty"` // 薪资组信息

	WhetherTheInformationIsAbnormal *bool `json:"whether_the_information_is_abnormal,omitempty"` // 是否信息异常

	AbnormalReason []*PreHireAbnormalReason `json:"abnormal_reason,omitempty"` // 异常原因列表

	HasOfferSalary *bool `json:"has_offer_salary,omitempty"` // 是否有 Offer 薪酬

	RecruitmentProjectId *string `json:"recruitment_project_id,omitempty"` // 招聘项目 ID

	WorkShift *Enum `json:"work_shift,omitempty"` // -| 排班类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：work_shift - object_api_name：pre_hire

	CreatedAt *string `json:"created_at,omitempty"` // 待入职信息 创建时间

	CreatedBy *string `json:"created_by,omitempty"` // 待入职信息 创建人

	UpdatedBy *string `json:"updated_by,omitempty"` // 待入职信息 更新人

	SeniorityDate *string `json:"seniority_date,omitempty"` // 司龄起算日期

	BackgroundCheckOrderId *string `json:"background_check_order_id,omitempty"` // 背调订单ID

	BackgroundCheckOrderName *string `json:"background_check_order_name,omitempty"` // 背调名称

	BackgroundCheckOrderPackageName *string `json:"background_check_order_package_name,omitempty"` // 背调套餐

	BackgroundCheckOrderResult *string `json:"background_check_order_result,omitempty"` // 背调结果

	BackgroundCheckOrderSupplierName *string `json:"background_check_order_supplier_name,omitempty"` // 背调供应商

	BackgroundCheckOrderAccountName *string `json:"background_check_order_account_name,omitempty"` // 背调账号名称

	BackgroundCheckOrderStartTime *string `json:"background_check_order_start_time,omitempty"` // 背调开始时间

	BackgroundCheckOrderCompleteTime *string `json:"background_check_order_complete_time,omitempty"` // 背调完成时间

	BackgroundCheckOrderStatus *Enum `json:"background_check_order_status,omitempty"` // -| 背调状态，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：background_check_order_status - object_api_name：pre_hire

	SeniorityAdjustInformationList []*PrehireSeniorityAdjustInformationQuery `json:"seniority_adjust_information_list,omitempty"` // 司龄调整信息

	NoticePeriodPositiveVoluntary *NoticePeriodDetail `json:"notice_period_positive_voluntary,omitempty"` // 转正后通知期（主动离职）

	NoticePeriodProbationInvoluntary *NoticePeriodDetail `json:"notice_period_probation_involuntary,omitempty"` // 试用期内通知期（被动离职）

	NoticePeriodPositiveInvoluntary *NoticePeriodDetail `json:"notice_period_positive_involuntary,omitempty"` // 转正后通知期（被动离职）

	NoticePeriodProbationVoluntary *NoticePeriodDetail `json:"notice_period_probation_voluntary,omitempty"` // 试用期内通知期（主动离职)

	WorkingHoursTypeManualUpdated *bool `json:"working_hours_type_manual_updated,omitempty"` // 工时制度是否被手动修改

	IsOverDue *bool `json:"is_over_due,omitempty"` // 入职任务是否逾期

	TaskCompleted *bool `json:"task_completed,omitempty"` // 入职任务是否完成

	ExpectedGraduateDate *string `json:"expected_graduate_date,omitempty"` // 预计毕业日期

	ServiceCompany *string `json:"service_company,omitempty"` // 任职公司 ID , 详细信息可通过【批量查询公司】接口获得

	Pathway *string `json:"pathway,omitempty"` // 通道

	DefaultCostCenter *DefaultCostCenter `json:"default_cost_center,omitempty"` // 默认成本中心

	CostAllocation *CostAllocation `json:"cost_allocation,omitempty"` // 成本分摊

	ReuseFeishuAccount *string `json:"reuse_feishu_account,omitempty"` // 是否复用飞书账号

	ReusedFeishuAccountId *string `json:"reused_feishu_account_id,omitempty"` // 复用的飞书账号
}

type PreHireEmploymentInfoBuilder struct {
	departmentId     string // 部门 ID ，可以通过【搜索部门信息】接口获取
	departmentIdFlag bool

	costCenterRates     []*JobDataCostCenter // 成本中心分摊信息
	costCenterRatesFlag bool

	officeLocationId     string // 办公地点id ，详细信息可通过【批量查询地点】接口获得
	officeLocationIdFlag bool

	workLocationId     string // 工作地点id ，详细信息可通过【批量查询地点】接口获得
	workLocationIdFlag bool

	workStation     string // 工位
	workStationFlag bool

	workerId     string // 工号
	workerIdFlag bool

	compensationType     *Enum // -| 薪资类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：compensation_type - object_api_name：pre_hire
	compensationTypeFlag bool

	directLeaderId     string // 直属上级雇佣 ID ， 可以通过【搜索员工信息】接口获取
	directLeaderIdFlag bool

	dottedLineManagerId     string // 虚线上级雇佣 ID ， 可以通过【搜索员工信息】接口获取
	dottedLineManagerIdFlag bool

	jobId     string // 职务 ID ,可以通过【批量查询职务】接口获取
	jobIdFlag bool

	jobFamilyId     string // 序列 ID，可以通过【批量查询职务序列】接口获取
	jobFamilyIdFlag bool

	jobLevelId     string // 职级 ID，可以通过【批量查询职务级别】接口获取
	jobLevelIdFlag bool

	jobGradeId     string // 职等 ID
	jobGradeIdFlag bool

	jobTitle     string // 职务头衔
	jobTitleFlag bool

	employeeTypeId     string // 人员类型 ID ，可以通过招聘【批量查询人员类型】接口获取
	employeeTypeIdFlag bool

	employeeSubtypeId     string // 人员子类型 ID
	employeeSubtypeIdFlag bool

	employmentType     string // -| 雇佣类型， 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "employment_type"
	employmentTypeFlag bool

	workEmail     string // 工作邮箱
	workEmailFlag bool

	companyId     string // 公司 ID , 详细信息可通过【批量查询公司】接口获得
	companyIdFlag bool

	socialSecurityCityId     string // 社保城市 ID ，详细信息可通过【批量查询地点】接口获得
	socialSecurityCityIdFlag bool

	nonCompeteCovenant     bool // 是否包含竞业条款
	nonCompeteCovenantFlag bool

	weeklyWorkingHours     int // 周工作时长（单位：小时）
	weeklyWorkingHoursFlag bool

	rehire     string // 是否离职重聘
	rehireFlag bool

	rehireEmploymentId     string // -| 历史雇佣信息 ID ，雇佣信息详细信息可以通过「查询单个雇佣信息」API 获得，系统会检验当前雇佣信息的合法性，要求： - 雇佣信息为该人员最后一次雇佣记录 - 雇佣信息的雇员状态 = "terminated" - 该人员不存在其他待入职记录
	rehireEmploymentIdFlag bool

	workingHoursType     string // -| 工时制度 ID ，可通过【查询单个工时制度】接口获取
	workingHoursTypeFlag bool

	weeklyWorkingHoursV2     float64 // 周工作时长v2（单位：小时）
	weeklyWorkingHoursV2Flag bool

	officeAddress     *Address // 办公地址
	officeAddressFlag bool

	workingCalendarId     string // 工作日历
	workingCalendarIdFlag bool

	updatedAt     string // 待入职信息 更新时间
	updatedAtFlag bool

	suspectedRehiring     bool // 是否疑似重聘
	suspectedRehiringFlag bool

	conditionWorker     bool // 是否外部人员
	conditionWorkerFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	positionId     string // 岗位 ID
	positionIdFlag bool

	companyManualUpdated     bool // 公司主体是否被手动修改
	companyManualUpdatedFlag bool

	payGroup     *PreHirePayGroupInfo // 薪资组信息
	payGroupFlag bool

	whetherTheInformationIsAbnormal     bool // 是否信息异常
	whetherTheInformationIsAbnormalFlag bool

	abnormalReason     []*PreHireAbnormalReason // 异常原因列表
	abnormalReasonFlag bool

	hasOfferSalary     bool // 是否有 Offer 薪酬
	hasOfferSalaryFlag bool

	recruitmentProjectId     string // 招聘项目 ID
	recruitmentProjectIdFlag bool

	workShift     *Enum // -| 排班类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：work_shift - object_api_name：pre_hire
	workShiftFlag bool

	createdAt     string // 待入职信息 创建时间
	createdAtFlag bool

	createdBy     string // 待入职信息 创建人
	createdByFlag bool

	updatedBy     string // 待入职信息 更新人
	updatedByFlag bool

	seniorityDate     string // 司龄起算日期
	seniorityDateFlag bool

	backgroundCheckOrderId     string // 背调订单ID
	backgroundCheckOrderIdFlag bool

	backgroundCheckOrderName     string // 背调名称
	backgroundCheckOrderNameFlag bool

	backgroundCheckOrderPackageName     string // 背调套餐
	backgroundCheckOrderPackageNameFlag bool

	backgroundCheckOrderResult     string // 背调结果
	backgroundCheckOrderResultFlag bool

	backgroundCheckOrderSupplierName     string // 背调供应商
	backgroundCheckOrderSupplierNameFlag bool

	backgroundCheckOrderAccountName     string // 背调账号名称
	backgroundCheckOrderAccountNameFlag bool

	backgroundCheckOrderStartTime     string // 背调开始时间
	backgroundCheckOrderStartTimeFlag bool

	backgroundCheckOrderCompleteTime     string // 背调完成时间
	backgroundCheckOrderCompleteTimeFlag bool

	backgroundCheckOrderStatus     *Enum // -| 背调状态，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：background_check_order_status - object_api_name：pre_hire
	backgroundCheckOrderStatusFlag bool

	seniorityAdjustInformationList     []*PrehireSeniorityAdjustInformationQuery // 司龄调整信息
	seniorityAdjustInformationListFlag bool

	noticePeriodPositiveVoluntary     *NoticePeriodDetail // 转正后通知期（主动离职）
	noticePeriodPositiveVoluntaryFlag bool

	noticePeriodProbationInvoluntary     *NoticePeriodDetail // 试用期内通知期（被动离职）
	noticePeriodProbationInvoluntaryFlag bool

	noticePeriodPositiveInvoluntary     *NoticePeriodDetail // 转正后通知期（被动离职）
	noticePeriodPositiveInvoluntaryFlag bool

	noticePeriodProbationVoluntary     *NoticePeriodDetail // 试用期内通知期（主动离职)
	noticePeriodProbationVoluntaryFlag bool

	workingHoursTypeManualUpdated     bool // 工时制度是否被手动修改
	workingHoursTypeManualUpdatedFlag bool

	isOverDue     bool // 入职任务是否逾期
	isOverDueFlag bool

	taskCompleted     bool // 入职任务是否完成
	taskCompletedFlag bool

	expectedGraduateDate     string // 预计毕业日期
	expectedGraduateDateFlag bool

	serviceCompany     string // 任职公司 ID , 详细信息可通过【批量查询公司】接口获得
	serviceCompanyFlag bool

	pathway     string // 通道
	pathwayFlag bool

	defaultCostCenter     *DefaultCostCenter // 默认成本中心
	defaultCostCenterFlag bool

	costAllocation     *CostAllocation // 成本分摊
	costAllocationFlag bool

	reuseFeishuAccount     string // 是否复用飞书账号
	reuseFeishuAccountFlag bool

	reusedFeishuAccountId     string // 复用的飞书账号
	reusedFeishuAccountIdFlag bool
}

func NewPreHireEmploymentInfoBuilder() *PreHireEmploymentInfoBuilder {
	builder := &PreHireEmploymentInfoBuilder{}
	return builder
}

// 部门 ID ，可以通过【搜索部门信息】接口获取
//
// 示例值：7147562782945478177
func (builder *PreHireEmploymentInfoBuilder) DepartmentId(departmentId string) *PreHireEmploymentInfoBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 成本中心分摊信息
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) CostCenterRates(costCenterRates []*JobDataCostCenter) *PreHireEmploymentInfoBuilder {
	builder.costCenterRates = costCenterRates
	builder.costCenterRatesFlag = true
	return builder
}

// 办公地点id ，详细信息可通过【批量查询地点】接口获得
//
// 示例值：6977976687350924832
func (builder *PreHireEmploymentInfoBuilder) OfficeLocationId(officeLocationId string) *PreHireEmploymentInfoBuilder {
	builder.officeLocationId = officeLocationId
	builder.officeLocationIdFlag = true
	return builder
}

// 工作地点id ，详细信息可通过【批量查询地点】接口获得
//
// 示例值：6977976687350924832
func (builder *PreHireEmploymentInfoBuilder) WorkLocationId(workLocationId string) *PreHireEmploymentInfoBuilder {
	builder.workLocationId = workLocationId
	builder.workLocationIdFlag = true
	return builder
}

// 工位
//
// 示例值：ABC123
func (builder *PreHireEmploymentInfoBuilder) WorkStation(workStation string) *PreHireEmploymentInfoBuilder {
	builder.workStation = workStation
	builder.workStationFlag = true
	return builder
}

// 工号
//
// 示例值：1234567
func (builder *PreHireEmploymentInfoBuilder) WorkerId(workerId string) *PreHireEmploymentInfoBuilder {
	builder.workerId = workerId
	builder.workerIdFlag = true
	return builder
}

// -| 薪资类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：compensation_type - object_api_name：pre_hire
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) CompensationType(compensationType *Enum) *PreHireEmploymentInfoBuilder {
	builder.compensationType = compensationType
	builder.compensationTypeFlag = true
	return builder
}

// 直属上级雇佣 ID ， 可以通过【搜索员工信息】接口获取
//
// 示例值：7032210902531327521
func (builder *PreHireEmploymentInfoBuilder) DirectLeaderId(directLeaderId string) *PreHireEmploymentInfoBuilder {
	builder.directLeaderId = directLeaderId
	builder.directLeaderIdFlag = true
	return builder
}

// 虚线上级雇佣 ID ， 可以通过【搜索员工信息】接口获取
//
// 示例值：7032210902531327521
func (builder *PreHireEmploymentInfoBuilder) DottedLineManagerId(dottedLineManagerId string) *PreHireEmploymentInfoBuilder {
	builder.dottedLineManagerId = dottedLineManagerId
	builder.dottedLineManagerIdFlag = true
	return builder
}

// 职务 ID ,可以通过【批量查询职务】接口获取
//
// 示例值：6977976735715378724
func (builder *PreHireEmploymentInfoBuilder) JobId(jobId string) *PreHireEmploymentInfoBuilder {
	builder.jobId = jobId
	builder.jobIdFlag = true
	return builder
}

// 序列 ID，可以通过【批量查询职务序列】接口获取
//
// 示例值：6977972856625939999
func (builder *PreHireEmploymentInfoBuilder) JobFamilyId(jobFamilyId string) *PreHireEmploymentInfoBuilder {
	builder.jobFamilyId = jobFamilyId
	builder.jobFamilyIdFlag = true
	return builder
}

// 职级 ID，可以通过【批量查询职务级别】接口获取
//
// 示例值：6977971894960145950
func (builder *PreHireEmploymentInfoBuilder) JobLevelId(jobLevelId string) *PreHireEmploymentInfoBuilder {
	builder.jobLevelId = jobLevelId
	builder.jobLevelIdFlag = true
	return builder
}

// 职等 ID
//
// 示例值：6977971894960145950
func (builder *PreHireEmploymentInfoBuilder) JobGradeId(jobGradeId string) *PreHireEmploymentInfoBuilder {
	builder.jobGradeId = jobGradeId
	builder.jobGradeIdFlag = true
	return builder
}

// 职务头衔
//
// 示例值：java
func (builder *PreHireEmploymentInfoBuilder) JobTitle(jobTitle string) *PreHireEmploymentInfoBuilder {
	builder.jobTitle = jobTitle
	builder.jobTitleFlag = true
	return builder
}

// 人员类型 ID ，可以通过招聘【批量查询人员类型】接口获取
//
// 示例值：6977973225846343171
func (builder *PreHireEmploymentInfoBuilder) EmployeeTypeId(employeeTypeId string) *PreHireEmploymentInfoBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 人员子类型 ID
//
// 示例值：6977973225846343171
func (builder *PreHireEmploymentInfoBuilder) EmployeeSubtypeId(employeeSubtypeId string) *PreHireEmploymentInfoBuilder {
	builder.employeeSubtypeId = employeeSubtypeId
	builder.employeeSubtypeIdFlag = true
	return builder
}

// -| 雇佣类型， 枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "employment_type"
//
// 示例值：employee
func (builder *PreHireEmploymentInfoBuilder) EmploymentType(employmentType string) *PreHireEmploymentInfoBuilder {
	builder.employmentType = employmentType
	builder.employmentTypeFlag = true
	return builder
}

// 工作邮箱
//
// 示例值：joshua@bytedance.com
func (builder *PreHireEmploymentInfoBuilder) WorkEmail(workEmail string) *PreHireEmploymentInfoBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 公司 ID , 详细信息可通过【批量查询公司】接口获得
//
// 示例值：6738317738688661772
func (builder *PreHireEmploymentInfoBuilder) CompanyId(companyId string) *PreHireEmploymentInfoBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 社保城市 ID ，详细信息可通过【批量查询地点】接口获得
//
// 示例值：6977973225846343171
func (builder *PreHireEmploymentInfoBuilder) SocialSecurityCityId(socialSecurityCityId string) *PreHireEmploymentInfoBuilder {
	builder.socialSecurityCityId = socialSecurityCityId
	builder.socialSecurityCityIdFlag = true
	return builder
}

// 是否包含竞业条款
//
// 示例值：true
func (builder *PreHireEmploymentInfoBuilder) NonCompeteCovenant(nonCompeteCovenant bool) *PreHireEmploymentInfoBuilder {
	builder.nonCompeteCovenant = nonCompeteCovenant
	builder.nonCompeteCovenantFlag = true
	return builder
}

// 周工作时长（单位：小时）
//
// 示例值：8
func (builder *PreHireEmploymentInfoBuilder) WeeklyWorkingHours(weeklyWorkingHours int) *PreHireEmploymentInfoBuilder {
	builder.weeklyWorkingHours = weeklyWorkingHours
	builder.weeklyWorkingHoursFlag = true
	return builder
}

// 是否离职重聘
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) Rehire(rehire string) *PreHireEmploymentInfoBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// -| 历史雇佣信息 ID ，雇佣信息详细信息可以通过「查询单个雇佣信息」API 获得，系统会检验当前雇佣信息的合法性，要求： - 雇佣信息为该人员最后一次雇佣记录 - 雇佣信息的雇员状态 = "terminated" - 该人员不存在其他待入职记录
//
// 示例值：6977973225846343172
func (builder *PreHireEmploymentInfoBuilder) RehireEmploymentId(rehireEmploymentId string) *PreHireEmploymentInfoBuilder {
	builder.rehireEmploymentId = rehireEmploymentId
	builder.rehireEmploymentIdFlag = true
	return builder
}

// -| 工时制度 ID ，可通过【查询单个工时制度】接口获取
//
// 示例值：6977973225846343171
func (builder *PreHireEmploymentInfoBuilder) WorkingHoursType(workingHoursType string) *PreHireEmploymentInfoBuilder {
	builder.workingHoursType = workingHoursType
	builder.workingHoursTypeFlag = true
	return builder
}

// 周工作时长v2（单位：小时）
//
// 示例值：8.5
func (builder *PreHireEmploymentInfoBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *PreHireEmploymentInfoBuilder {
	builder.weeklyWorkingHoursV2 = weeklyWorkingHoursV2
	builder.weeklyWorkingHoursV2Flag = true
	return builder
}

// 办公地址
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) OfficeAddress(officeAddress *Address) *PreHireEmploymentInfoBuilder {
	builder.officeAddress = officeAddress
	builder.officeAddressFlag = true
	return builder
}

// 工作日历
//
// 示例值：6977973225846343173
func (builder *PreHireEmploymentInfoBuilder) WorkingCalendarId(workingCalendarId string) *PreHireEmploymentInfoBuilder {
	builder.workingCalendarId = workingCalendarId
	builder.workingCalendarIdFlag = true
	return builder
}

// 待入职信息 更新时间
//
// 示例值：2023-01-10 10:29
func (builder *PreHireEmploymentInfoBuilder) UpdatedAt(updatedAt string) *PreHireEmploymentInfoBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 是否疑似重聘
//
// 示例值：false
func (builder *PreHireEmploymentInfoBuilder) SuspectedRehiring(suspectedRehiring bool) *PreHireEmploymentInfoBuilder {
	builder.suspectedRehiring = suspectedRehiring
	builder.suspectedRehiringFlag = true
	return builder
}

// 是否外部人员
//
// 示例值：false
func (builder *PreHireEmploymentInfoBuilder) ConditionWorker(conditionWorker bool) *PreHireEmploymentInfoBuilder {
	builder.conditionWorker = conditionWorker
	builder.conditionWorkerFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) CustomFields(customFields []*CustomFieldData) *PreHireEmploymentInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 岗位 ID
//
// 示例值：6977976735715373452
func (builder *PreHireEmploymentInfoBuilder) PositionId(positionId string) *PreHireEmploymentInfoBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 公司主体是否被手动修改
//
// 示例值：true
func (builder *PreHireEmploymentInfoBuilder) CompanyManualUpdated(companyManualUpdated bool) *PreHireEmploymentInfoBuilder {
	builder.companyManualUpdated = companyManualUpdated
	builder.companyManualUpdatedFlag = true
	return builder
}

// 薪资组信息
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) PayGroup(payGroup *PreHirePayGroupInfo) *PreHireEmploymentInfoBuilder {
	builder.payGroup = payGroup
	builder.payGroupFlag = true
	return builder
}

// 是否信息异常
//
// 示例值：true
func (builder *PreHireEmploymentInfoBuilder) WhetherTheInformationIsAbnormal(whetherTheInformationIsAbnormal bool) *PreHireEmploymentInfoBuilder {
	builder.whetherTheInformationIsAbnormal = whetherTheInformationIsAbnormal
	builder.whetherTheInformationIsAbnormalFlag = true
	return builder
}

// 异常原因列表
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) AbnormalReason(abnormalReason []*PreHireAbnormalReason) *PreHireEmploymentInfoBuilder {
	builder.abnormalReason = abnormalReason
	builder.abnormalReasonFlag = true
	return builder
}

// 是否有 Offer 薪酬
//
// 示例值：true
func (builder *PreHireEmploymentInfoBuilder) HasOfferSalary(hasOfferSalary bool) *PreHireEmploymentInfoBuilder {
	builder.hasOfferSalary = hasOfferSalary
	builder.hasOfferSalaryFlag = true
	return builder
}

// 招聘项目 ID
//
// 示例值：23214213152
func (builder *PreHireEmploymentInfoBuilder) RecruitmentProjectId(recruitmentProjectId string) *PreHireEmploymentInfoBuilder {
	builder.recruitmentProjectId = recruitmentProjectId
	builder.recruitmentProjectIdFlag = true
	return builder
}

// -| 排班类型，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：work_shift - object_api_name：pre_hire
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) WorkShift(workShift *Enum) *PreHireEmploymentInfoBuilder {
	builder.workShift = workShift
	builder.workShiftFlag = true
	return builder
}

// 待入职信息 创建时间
//
// 示例值：2023-01-10 10:29
func (builder *PreHireEmploymentInfoBuilder) CreatedAt(createdAt string) *PreHireEmploymentInfoBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 待入职信息 创建人
//
// 示例值：69928404442626824
func (builder *PreHireEmploymentInfoBuilder) CreatedBy(createdBy string) *PreHireEmploymentInfoBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 待入职信息 更新人
//
// 示例值：69928404442626824
func (builder *PreHireEmploymentInfoBuilder) UpdatedBy(updatedBy string) *PreHireEmploymentInfoBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 司龄起算日期
//
// 示例值：2023-01-10
func (builder *PreHireEmploymentInfoBuilder) SeniorityDate(seniorityDate string) *PreHireEmploymentInfoBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 背调订单ID
//
// 示例值：123
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderId(backgroundCheckOrderId string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderId = backgroundCheckOrderId
	builder.backgroundCheckOrderIdFlag = true
	return builder
}

// 背调名称
//
// 示例值：xxx
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderName(backgroundCheckOrderName string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderName = backgroundCheckOrderName
	builder.backgroundCheckOrderNameFlag = true
	return builder
}

// 背调套餐
//
// 示例值：xxx
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderPackageName(backgroundCheckOrderPackageName string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderPackageName = backgroundCheckOrderPackageName
	builder.backgroundCheckOrderPackageNameFlag = true
	return builder
}

// 背调结果
//
// 示例值：通过
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderResult(backgroundCheckOrderResult string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderResult = backgroundCheckOrderResult
	builder.backgroundCheckOrderResultFlag = true
	return builder
}

// 背调供应商
//
// 示例值：xxx
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderSupplierName(backgroundCheckOrderSupplierName string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderSupplierName = backgroundCheckOrderSupplierName
	builder.backgroundCheckOrderSupplierNameFlag = true
	return builder
}

// 背调账号名称
//
// 示例值：xxx
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderAccountName(backgroundCheckOrderAccountName string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderAccountName = backgroundCheckOrderAccountName
	builder.backgroundCheckOrderAccountNameFlag = true
	return builder
}

// 背调开始时间
//
// 示例值：2023-01-10 10:29
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderStartTime(backgroundCheckOrderStartTime string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderStartTime = backgroundCheckOrderStartTime
	builder.backgroundCheckOrderStartTimeFlag = true
	return builder
}

// 背调完成时间
//
// 示例值：2023-01-10 10:29
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderCompleteTime(backgroundCheckOrderCompleteTime string) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderCompleteTime = backgroundCheckOrderCompleteTime
	builder.backgroundCheckOrderCompleteTimeFlag = true
	return builder
}

// -| 背调状态，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - custom_api_name：background_check_order_status - object_api_name：pre_hire
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) BackgroundCheckOrderStatus(backgroundCheckOrderStatus *Enum) *PreHireEmploymentInfoBuilder {
	builder.backgroundCheckOrderStatus = backgroundCheckOrderStatus
	builder.backgroundCheckOrderStatusFlag = true
	return builder
}

// 司龄调整信息
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) SeniorityAdjustInformationList(seniorityAdjustInformationList []*PrehireSeniorityAdjustInformationQuery) *PreHireEmploymentInfoBuilder {
	builder.seniorityAdjustInformationList = seniorityAdjustInformationList
	builder.seniorityAdjustInformationListFlag = true
	return builder
}

// 转正后通知期（主动离职）
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) NoticePeriodPositiveVoluntary(noticePeriodPositiveVoluntary *NoticePeriodDetail) *PreHireEmploymentInfoBuilder {
	builder.noticePeriodPositiveVoluntary = noticePeriodPositiveVoluntary
	builder.noticePeriodPositiveVoluntaryFlag = true
	return builder
}

// 试用期内通知期（被动离职）
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) NoticePeriodProbationInvoluntary(noticePeriodProbationInvoluntary *NoticePeriodDetail) *PreHireEmploymentInfoBuilder {
	builder.noticePeriodProbationInvoluntary = noticePeriodProbationInvoluntary
	builder.noticePeriodProbationInvoluntaryFlag = true
	return builder
}

// 转正后通知期（被动离职）
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) NoticePeriodPositiveInvoluntary(noticePeriodPositiveInvoluntary *NoticePeriodDetail) *PreHireEmploymentInfoBuilder {
	builder.noticePeriodPositiveInvoluntary = noticePeriodPositiveInvoluntary
	builder.noticePeriodPositiveInvoluntaryFlag = true
	return builder
}

// 试用期内通知期（主动离职)
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) NoticePeriodProbationVoluntary(noticePeriodProbationVoluntary *NoticePeriodDetail) *PreHireEmploymentInfoBuilder {
	builder.noticePeriodProbationVoluntary = noticePeriodProbationVoluntary
	builder.noticePeriodProbationVoluntaryFlag = true
	return builder
}

// 工时制度是否被手动修改
//
// 示例值：true
func (builder *PreHireEmploymentInfoBuilder) WorkingHoursTypeManualUpdated(workingHoursTypeManualUpdated bool) *PreHireEmploymentInfoBuilder {
	builder.workingHoursTypeManualUpdated = workingHoursTypeManualUpdated
	builder.workingHoursTypeManualUpdatedFlag = true
	return builder
}

// 入职任务是否逾期
//
// 示例值：true
func (builder *PreHireEmploymentInfoBuilder) IsOverDue(isOverDue bool) *PreHireEmploymentInfoBuilder {
	builder.isOverDue = isOverDue
	builder.isOverDueFlag = true
	return builder
}

// 入职任务是否完成
//
// 示例值：true
func (builder *PreHireEmploymentInfoBuilder) TaskCompleted(taskCompleted bool) *PreHireEmploymentInfoBuilder {
	builder.taskCompleted = taskCompleted
	builder.taskCompletedFlag = true
	return builder
}

// 预计毕业日期
//
// 示例值：2023-01-10
func (builder *PreHireEmploymentInfoBuilder) ExpectedGraduateDate(expectedGraduateDate string) *PreHireEmploymentInfoBuilder {
	builder.expectedGraduateDate = expectedGraduateDate
	builder.expectedGraduateDateFlag = true
	return builder
}

// 任职公司 ID , 详细信息可通过【批量查询公司】接口获得
//
// 示例值：6738317738688661772
func (builder *PreHireEmploymentInfoBuilder) ServiceCompany(serviceCompany string) *PreHireEmploymentInfoBuilder {
	builder.serviceCompany = serviceCompany
	builder.serviceCompanyFlag = true
	return builder
}

// 通道
//
// 示例值：7460865381179115052
func (builder *PreHireEmploymentInfoBuilder) Pathway(pathway string) *PreHireEmploymentInfoBuilder {
	builder.pathway = pathway
	builder.pathwayFlag = true
	return builder
}

// 默认成本中心
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) DefaultCostCenter(defaultCostCenter *DefaultCostCenter) *PreHireEmploymentInfoBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *PreHireEmploymentInfoBuilder) CostAllocation(costAllocation *CostAllocation) *PreHireEmploymentInfoBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

// 是否复用飞书账号
//
// 示例值：reuse
func (builder *PreHireEmploymentInfoBuilder) ReuseFeishuAccount(reuseFeishuAccount string) *PreHireEmploymentInfoBuilder {
	builder.reuseFeishuAccount = reuseFeishuAccount
	builder.reuseFeishuAccountFlag = true
	return builder
}

// 复用的飞书账号
//
// 示例值：6738317738688661772
func (builder *PreHireEmploymentInfoBuilder) ReusedFeishuAccountId(reusedFeishuAccountId string) *PreHireEmploymentInfoBuilder {
	builder.reusedFeishuAccountId = reusedFeishuAccountId
	builder.reusedFeishuAccountIdFlag = true
	return builder
}

func (builder *PreHireEmploymentInfoBuilder) Build() *PreHireEmploymentInfo {
	req := &PreHireEmploymentInfo{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.costCenterRatesFlag {
		req.CostCenterRates = builder.costCenterRates
	}
	if builder.officeLocationIdFlag {
		req.OfficeLocationId = &builder.officeLocationId

	}
	if builder.workLocationIdFlag {
		req.WorkLocationId = &builder.workLocationId

	}
	if builder.workStationFlag {
		req.WorkStation = &builder.workStation

	}
	if builder.workerIdFlag {
		req.WorkerId = &builder.workerId

	}
	if builder.compensationTypeFlag {
		req.CompensationType = builder.compensationType
	}
	if builder.directLeaderIdFlag {
		req.DirectLeaderId = &builder.directLeaderId

	}
	if builder.dottedLineManagerIdFlag {
		req.DottedLineManagerId = &builder.dottedLineManagerId

	}
	if builder.jobIdFlag {
		req.JobId = &builder.jobId

	}
	if builder.jobFamilyIdFlag {
		req.JobFamilyId = &builder.jobFamilyId

	}
	if builder.jobLevelIdFlag {
		req.JobLevelId = &builder.jobLevelId

	}
	if builder.jobGradeIdFlag {
		req.JobGradeId = &builder.jobGradeId

	}
	if builder.jobTitleFlag {
		req.JobTitle = &builder.jobTitle

	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId

	}
	if builder.employeeSubtypeIdFlag {
		req.EmployeeSubtypeId = &builder.employeeSubtypeId

	}
	if builder.employmentTypeFlag {
		req.EmploymentType = &builder.employmentType

	}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail

	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.socialSecurityCityIdFlag {
		req.SocialSecurityCityId = &builder.socialSecurityCityId

	}
	if builder.nonCompeteCovenantFlag {
		req.NonCompeteCovenant = &builder.nonCompeteCovenant

	}
	if builder.weeklyWorkingHoursFlag {
		req.WeeklyWorkingHours = &builder.weeklyWorkingHours

	}
	if builder.rehireFlag {
		req.Rehire = &builder.rehire

	}
	if builder.rehireEmploymentIdFlag {
		req.RehireEmploymentId = &builder.rehireEmploymentId

	}
	if builder.workingHoursTypeFlag {
		req.WorkingHoursType = &builder.workingHoursType

	}
	if builder.weeklyWorkingHoursV2Flag {
		req.WeeklyWorkingHoursV2 = &builder.weeklyWorkingHoursV2

	}
	if builder.officeAddressFlag {
		req.OfficeAddress = builder.officeAddress
	}
	if builder.workingCalendarIdFlag {
		req.WorkingCalendarId = &builder.workingCalendarId

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.suspectedRehiringFlag {
		req.SuspectedRehiring = &builder.suspectedRehiring

	}
	if builder.conditionWorkerFlag {
		req.ConditionWorker = &builder.conditionWorker

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId

	}
	if builder.companyManualUpdatedFlag {
		req.CompanyManualUpdated = &builder.companyManualUpdated

	}
	if builder.payGroupFlag {
		req.PayGroup = builder.payGroup
	}
	if builder.whetherTheInformationIsAbnormalFlag {
		req.WhetherTheInformationIsAbnormal = &builder.whetherTheInformationIsAbnormal

	}
	if builder.abnormalReasonFlag {
		req.AbnormalReason = builder.abnormalReason
	}
	if builder.hasOfferSalaryFlag {
		req.HasOfferSalary = &builder.hasOfferSalary

	}
	if builder.recruitmentProjectIdFlag {
		req.RecruitmentProjectId = &builder.recruitmentProjectId

	}
	if builder.workShiftFlag {
		req.WorkShift = builder.workShift
	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.backgroundCheckOrderIdFlag {
		req.BackgroundCheckOrderId = &builder.backgroundCheckOrderId

	}
	if builder.backgroundCheckOrderNameFlag {
		req.BackgroundCheckOrderName = &builder.backgroundCheckOrderName

	}
	if builder.backgroundCheckOrderPackageNameFlag {
		req.BackgroundCheckOrderPackageName = &builder.backgroundCheckOrderPackageName

	}
	if builder.backgroundCheckOrderResultFlag {
		req.BackgroundCheckOrderResult = &builder.backgroundCheckOrderResult

	}
	if builder.backgroundCheckOrderSupplierNameFlag {
		req.BackgroundCheckOrderSupplierName = &builder.backgroundCheckOrderSupplierName

	}
	if builder.backgroundCheckOrderAccountNameFlag {
		req.BackgroundCheckOrderAccountName = &builder.backgroundCheckOrderAccountName

	}
	if builder.backgroundCheckOrderStartTimeFlag {
		req.BackgroundCheckOrderStartTime = &builder.backgroundCheckOrderStartTime

	}
	if builder.backgroundCheckOrderCompleteTimeFlag {
		req.BackgroundCheckOrderCompleteTime = &builder.backgroundCheckOrderCompleteTime

	}
	if builder.backgroundCheckOrderStatusFlag {
		req.BackgroundCheckOrderStatus = builder.backgroundCheckOrderStatus
	}
	if builder.seniorityAdjustInformationListFlag {
		req.SeniorityAdjustInformationList = builder.seniorityAdjustInformationList
	}
	if builder.noticePeriodPositiveVoluntaryFlag {
		req.NoticePeriodPositiveVoluntary = builder.noticePeriodPositiveVoluntary
	}
	if builder.noticePeriodProbationInvoluntaryFlag {
		req.NoticePeriodProbationInvoluntary = builder.noticePeriodProbationInvoluntary
	}
	if builder.noticePeriodPositiveInvoluntaryFlag {
		req.NoticePeriodPositiveInvoluntary = builder.noticePeriodPositiveInvoluntary
	}
	if builder.noticePeriodProbationVoluntaryFlag {
		req.NoticePeriodProbationVoluntary = builder.noticePeriodProbationVoluntary
	}
	if builder.workingHoursTypeManualUpdatedFlag {
		req.WorkingHoursTypeManualUpdated = &builder.workingHoursTypeManualUpdated

	}
	if builder.isOverDueFlag {
		req.IsOverDue = &builder.isOverDue

	}
	if builder.taskCompletedFlag {
		req.TaskCompleted = &builder.taskCompleted

	}
	if builder.expectedGraduateDateFlag {
		req.ExpectedGraduateDate = &builder.expectedGraduateDate

	}
	if builder.serviceCompanyFlag {
		req.ServiceCompany = &builder.serviceCompany

	}
	if builder.pathwayFlag {
		req.Pathway = &builder.pathway

	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	if builder.reuseFeishuAccountFlag {
		req.ReuseFeishuAccount = &builder.reuseFeishuAccount

	}
	if builder.reusedFeishuAccountIdFlag {
		req.ReusedFeishuAccountId = &builder.reusedFeishuAccountId

	}
	return req
}

type PreHireOnboardingInfo struct {
	OfferId *string `json:"offer_id,omitempty"` // Offer id , 可以通过招聘【获取 Offer 列表】接口获取

	OfferHrId *string `json:"offer_hr_id,omitempty"` // Offer hr 的 雇佣 ID

	OfferHrIdV2 *string `json:"offer_hr_id_v2,omitempty"` // Offer hr 的 雇佣 ID,ID可以根据user_id_type转换成对应ID

	EntryMode *string `json:"entry_mode,omitempty"` // -| 入职方式，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "onboarding_method"

	OnboardingDate *string `json:"onboarding_date,omitempty"` // 入职日期

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘投递 ID ，详细信息可以通过招聘【获取投递信息】接口查询获得

	RecruitmentType *string `json:"recruitment_type,omitempty"` // -| 招聘来源 ，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "recruitment_type"

	OnboardingLocationId *string `json:"onboarding_location_id,omitempty"` // -| 入职地点id , 详细信息可通过【批量查询地点】接口获得

	CompanySponsoredVisa *bool `json:"company_sponsored_visa,omitempty"` // -| 需要公司办理签证

	OnboardingStatus *string `json:"onboarding_status,omitempty"` // -| 入职状态

	OnboardingTaskList []*OnboardingTask `json:"onboarding_task_list,omitempty"` // 入职任务列表

	OnboardingAddress *Address `json:"onboarding_address,omitempty"` // 入职地址

	FlowName []*I18n `json:"flow_name,omitempty"` // 入职流程

	FlowId *string `json:"flow_id,omitempty"` // 入职流程 ID

	CheckInTime *string `json:"check_in_time,omitempty"` // 签到时间

	CheckInMethod *Enum `json:"check_in_method,omitempty"` // -| 招聘来源 ，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "check_in_method"

	WithdrawnReason *string `json:"withdrawn_reason,omitempty"` // 撤销原因：当流程状态为撤销时,在fields中传入onboarding_info.withdrawn_reason字段，可获取撤销原因
}

type PreHireOnboardingInfoBuilder struct {
	offerId     string // Offer id , 可以通过招聘【获取 Offer 列表】接口获取
	offerIdFlag bool

	offerHrId     string // Offer hr 的 雇佣 ID
	offerHrIdFlag bool

	offerHrIdV2     string // Offer hr 的 雇佣 ID,ID可以根据user_id_type转换成对应ID
	offerHrIdV2Flag bool

	entryMode     string // -| 入职方式，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "onboarding_method"
	entryModeFlag bool

	onboardingDate     string // 入职日期
	onboardingDateFlag bool

	atsApplicationId     string // 招聘投递 ID ，详细信息可以通过招聘【获取投递信息】接口查询获得
	atsApplicationIdFlag bool

	recruitmentType     string // -| 招聘来源 ，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "recruitment_type"
	recruitmentTypeFlag bool

	onboardingLocationId     string // -| 入职地点id , 详细信息可通过【批量查询地点】接口获得
	onboardingLocationIdFlag bool

	companySponsoredVisa     bool // -| 需要公司办理签证
	companySponsoredVisaFlag bool

	onboardingStatus     string // -| 入职状态
	onboardingStatusFlag bool

	onboardingTaskList     []*OnboardingTask // 入职任务列表
	onboardingTaskListFlag bool

	onboardingAddress     *Address // 入职地址
	onboardingAddressFlag bool

	flowName     []*I18n // 入职流程
	flowNameFlag bool

	flowId     string // 入职流程 ID
	flowIdFlag bool

	checkInTime     string // 签到时间
	checkInTimeFlag bool

	checkInMethod     *Enum // -| 招聘来源 ，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "check_in_method"
	checkInMethodFlag bool

	withdrawnReason     string // 撤销原因：当流程状态为撤销时,在fields中传入onboarding_info.withdrawn_reason字段，可获取撤销原因
	withdrawnReasonFlag bool
}

func NewPreHireOnboardingInfoBuilder() *PreHireOnboardingInfoBuilder {
	builder := &PreHireOnboardingInfoBuilder{}
	return builder
}

// Offer id , 可以通过招聘【获取 Offer 列表】接口获取
//
// 示例值：7032210902531327521
func (builder *PreHireOnboardingInfoBuilder) OfferId(offerId string) *PreHireOnboardingInfoBuilder {
	builder.offerId = offerId
	builder.offerIdFlag = true
	return builder
}

// Offer hr 的 雇佣 ID
//
// 示例值：7032210902531327521
func (builder *PreHireOnboardingInfoBuilder) OfferHrId(offerHrId string) *PreHireOnboardingInfoBuilder {
	builder.offerHrId = offerHrId
	builder.offerHrIdFlag = true
	return builder
}

// Offer hr 的 雇佣 ID,ID可以根据user_id_type转换成对应ID
//
// 示例值：7032210902531327521
func (builder *PreHireOnboardingInfoBuilder) OfferHrIdV2(offerHrIdV2 string) *PreHireOnboardingInfoBuilder {
	builder.offerHrIdV2 = offerHrIdV2
	builder.offerHrIdV2Flag = true
	return builder
}

// -| 入职方式，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "onboarding_method"
//
// 示例值：onsite
func (builder *PreHireOnboardingInfoBuilder) EntryMode(entryMode string) *PreHireOnboardingInfoBuilder {
	builder.entryMode = entryMode
	builder.entryModeFlag = true
	return builder
}

// 入职日期
//
// 示例值：2022-10-08
func (builder *PreHireOnboardingInfoBuilder) OnboardingDate(onboardingDate string) *PreHireOnboardingInfoBuilder {
	builder.onboardingDate = onboardingDate
	builder.onboardingDateFlag = true
	return builder
}

// 招聘投递 ID ，详细信息可以通过招聘【获取投递信息】接口查询获得
//
// 示例值：7140946969586010376
func (builder *PreHireOnboardingInfoBuilder) AtsApplicationId(atsApplicationId string) *PreHireOnboardingInfoBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// -| 招聘来源 ，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "recruitment_type"
//
// 示例值：recent_graduates
func (builder *PreHireOnboardingInfoBuilder) RecruitmentType(recruitmentType string) *PreHireOnboardingInfoBuilder {
	builder.recruitmentType = recruitmentType
	builder.recruitmentTypeFlag = true
	return builder
}

// -| 入职地点id , 详细信息可通过【批量查询地点】接口获得
//
// 示例值：6977976687350924832
func (builder *PreHireOnboardingInfoBuilder) OnboardingLocationId(onboardingLocationId string) *PreHireOnboardingInfoBuilder {
	builder.onboardingLocationId = onboardingLocationId
	builder.onboardingLocationIdFlag = true
	return builder
}

// -| 需要公司办理签证
//
// 示例值：true
func (builder *PreHireOnboardingInfoBuilder) CompanySponsoredVisa(companySponsoredVisa bool) *PreHireOnboardingInfoBuilder {
	builder.companySponsoredVisa = companySponsoredVisa
	builder.companySponsoredVisaFlag = true
	return builder
}

// -| 入职状态
//
// 示例值：
func (builder *PreHireOnboardingInfoBuilder) OnboardingStatus(onboardingStatus string) *PreHireOnboardingInfoBuilder {
	builder.onboardingStatus = onboardingStatus
	builder.onboardingStatusFlag = true
	return builder
}

// 入职任务列表
//
// 示例值：
func (builder *PreHireOnboardingInfoBuilder) OnboardingTaskList(onboardingTaskList []*OnboardingTask) *PreHireOnboardingInfoBuilder {
	builder.onboardingTaskList = onboardingTaskList
	builder.onboardingTaskListFlag = true
	return builder
}

// 入职地址
//
// 示例值：
func (builder *PreHireOnboardingInfoBuilder) OnboardingAddress(onboardingAddress *Address) *PreHireOnboardingInfoBuilder {
	builder.onboardingAddress = onboardingAddress
	builder.onboardingAddressFlag = true
	return builder
}

// 入职流程
//
// 示例值：
func (builder *PreHireOnboardingInfoBuilder) FlowName(flowName []*I18n) *PreHireOnboardingInfoBuilder {
	builder.flowName = flowName
	builder.flowNameFlag = true
	return builder
}

// 入职流程 ID
//
// 示例值：2342352325
func (builder *PreHireOnboardingInfoBuilder) FlowId(flowId string) *PreHireOnboardingInfoBuilder {
	builder.flowId = flowId
	builder.flowIdFlag = true
	return builder
}

// 签到时间
//
// 示例值：2023-09-01 13:21:12
func (builder *PreHireOnboardingInfoBuilder) CheckInTime(checkInTime string) *PreHireOnboardingInfoBuilder {
	builder.checkInTime = checkInTime
	builder.checkInTimeFlag = true
	return builder
}

// -| 招聘来源 ，枚举值可查询【获取字段详情】接口获取，按如下参数查询即可： - object_api_name = "pre_hire" - custom_api_name = "check_in_method"
//
// 示例值：
func (builder *PreHireOnboardingInfoBuilder) CheckInMethod(checkInMethod *Enum) *PreHireOnboardingInfoBuilder {
	builder.checkInMethod = checkInMethod
	builder.checkInMethodFlag = true
	return builder
}

// 撤销原因：当流程状态为撤销时,在fields中传入onboarding_info.withdrawn_reason字段，可获取撤销原因
//
// 示例值：撤销原因
func (builder *PreHireOnboardingInfoBuilder) WithdrawnReason(withdrawnReason string) *PreHireOnboardingInfoBuilder {
	builder.withdrawnReason = withdrawnReason
	builder.withdrawnReasonFlag = true
	return builder
}

func (builder *PreHireOnboardingInfoBuilder) Build() *PreHireOnboardingInfo {
	req := &PreHireOnboardingInfo{}
	if builder.offerIdFlag {
		req.OfferId = &builder.offerId

	}
	if builder.offerHrIdFlag {
		req.OfferHrId = &builder.offerHrId

	}
	if builder.offerHrIdV2Flag {
		req.OfferHrIdV2 = &builder.offerHrIdV2

	}
	if builder.entryModeFlag {
		req.EntryMode = &builder.entryMode

	}
	if builder.onboardingDateFlag {
		req.OnboardingDate = &builder.onboardingDate

	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.recruitmentTypeFlag {
		req.RecruitmentType = &builder.recruitmentType

	}
	if builder.onboardingLocationIdFlag {
		req.OnboardingLocationId = &builder.onboardingLocationId

	}
	if builder.companySponsoredVisaFlag {
		req.CompanySponsoredVisa = &builder.companySponsoredVisa

	}
	if builder.onboardingStatusFlag {
		req.OnboardingStatus = &builder.onboardingStatus

	}
	if builder.onboardingTaskListFlag {
		req.OnboardingTaskList = builder.onboardingTaskList
	}
	if builder.onboardingAddressFlag {
		req.OnboardingAddress = builder.onboardingAddress
	}
	if builder.flowNameFlag {
		req.FlowName = builder.flowName
	}
	if builder.flowIdFlag {
		req.FlowId = &builder.flowId

	}
	if builder.checkInTimeFlag {
		req.CheckInTime = &builder.checkInTime

	}
	if builder.checkInMethodFlag {
		req.CheckInMethod = builder.checkInMethod
	}
	if builder.withdrawnReasonFlag {
		req.WithdrawnReason = &builder.withdrawnReason

	}
	return req
}

type PreHirePayGroupInfo struct {
	Name []*I18n `json:"name,omitempty"` // 薪资组名称

	Id *string `json:"id,omitempty"` // 薪资组 ID
}

type PreHirePayGroupInfoBuilder struct {
	name     []*I18n // 薪资组名称
	nameFlag bool

	id     string // 薪资组 ID
	idFlag bool
}

func NewPreHirePayGroupInfoBuilder() *PreHirePayGroupInfoBuilder {
	builder := &PreHirePayGroupInfoBuilder{}
	return builder
}

// 薪资组名称
//
// 示例值：
func (builder *PreHirePayGroupInfoBuilder) Name(name []*I18n) *PreHirePayGroupInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 薪资组 ID
//
// 示例值：1234566
func (builder *PreHirePayGroupInfoBuilder) Id(id string) *PreHirePayGroupInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *PreHirePayGroupInfoBuilder) Build() *PreHirePayGroupInfo {
	req := &PreHirePayGroupInfo{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type PreHireProbationInfo struct {
	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationEndDate *string `json:"probation_end_date,omitempty"` // 试用期结束日期

	ProbationPeriod *int `json:"probation_period,omitempty"` // 试用期时长（单位：天）
}

type PreHireProbationInfoBuilder struct {
	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationEndDate     string // 试用期结束日期
	probationEndDateFlag bool

	probationPeriod     int // 试用期时长（单位：天）
	probationPeriodFlag bool
}

func NewPreHireProbationInfoBuilder() *PreHireProbationInfoBuilder {
	builder := &PreHireProbationInfoBuilder{}
	return builder
}

// 试用期开始日期
//
// 示例值：2022-07-29
func (builder *PreHireProbationInfoBuilder) ProbationStartDate(probationStartDate string) *PreHireProbationInfoBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期结束日期
//
// 示例值：2023-04-07
func (builder *PreHireProbationInfoBuilder) ProbationEndDate(probationEndDate string) *PreHireProbationInfoBuilder {
	builder.probationEndDate = probationEndDate
	builder.probationEndDateFlag = true
	return builder
}

// 试用期时长（单位：天）
//
// 示例值：6
func (builder *PreHireProbationInfoBuilder) ProbationPeriod(probationPeriod int) *PreHireProbationInfoBuilder {
	builder.probationPeriod = probationPeriod
	builder.probationPeriodFlag = true
	return builder
}

func (builder *PreHireProbationInfoBuilder) Build() *PreHireProbationInfo {
	req := &PreHireProbationInfo{}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationEndDateFlag {
		req.ProbationEndDate = &builder.probationEndDate

	}
	if builder.probationPeriodFlag {
		req.ProbationPeriod = &builder.probationPeriod

	}
	return req
}

type PrehireCreate struct {
	BasicInfo *BasicInfo `json:"basic_info,omitempty"` // 个人信息

	OfferInfo *OfferInfo `json:"offer_info,omitempty"` // 职位信息

	EducationInfo []*EducationInfo `json:"education_info,omitempty"` // 教育经历

	WorkExperience []*WorkExperience `json:"work_experience,omitempty"` // 工作经历

	AtsApplicationId *string `json:"ats_application_id,omitempty"` // 招聘应用ID

	Application *string `json:"application,omitempty"` // 查找类型招聘应用ID

	OutBizId *string `json:"out_biz_id,omitempty"` // 外部业务唯一编码
}

type PrehireCreateBuilder struct {
	basicInfo     *BasicInfo // 个人信息
	basicInfoFlag bool

	offerInfo     *OfferInfo // 职位信息
	offerInfoFlag bool

	educationInfo     []*EducationInfo // 教育经历
	educationInfoFlag bool

	workExperience     []*WorkExperience // 工作经历
	workExperienceFlag bool

	atsApplicationId     string // 招聘应用ID
	atsApplicationIdFlag bool

	application     string // 查找类型招聘应用ID
	applicationFlag bool

	outBizId     string // 外部业务唯一编码
	outBizIdFlag bool
}

func NewPrehireCreateBuilder() *PrehireCreateBuilder {
	builder := &PrehireCreateBuilder{}
	return builder
}

// 个人信息
//
// 示例值：
func (builder *PrehireCreateBuilder) BasicInfo(basicInfo *BasicInfo) *PrehireCreateBuilder {
	builder.basicInfo = basicInfo
	builder.basicInfoFlag = true
	return builder
}

// 职位信息
//
// 示例值：
func (builder *PrehireCreateBuilder) OfferInfo(offerInfo *OfferInfo) *PrehireCreateBuilder {
	builder.offerInfo = offerInfo
	builder.offerInfoFlag = true
	return builder
}

// 教育经历
//
// 示例值：
func (builder *PrehireCreateBuilder) EducationInfo(educationInfo []*EducationInfo) *PrehireCreateBuilder {
	builder.educationInfo = educationInfo
	builder.educationInfoFlag = true
	return builder
}

// 工作经历
//
// 示例值：
func (builder *PrehireCreateBuilder) WorkExperience(workExperience []*WorkExperience) *PrehireCreateBuilder {
	builder.workExperience = workExperience
	builder.workExperienceFlag = true
	return builder
}

// 招聘应用ID
//
// 示例值：7140946969586010376
func (builder *PrehireCreateBuilder) AtsApplicationId(atsApplicationId string) *PrehireCreateBuilder {
	builder.atsApplicationId = atsApplicationId
	builder.atsApplicationIdFlag = true
	return builder
}

// 查找类型招聘应用ID
//
// 示例值：7140946969586010376
func (builder *PrehireCreateBuilder) Application(application string) *PrehireCreateBuilder {
	builder.application = application
	builder.applicationFlag = true
	return builder
}

// 外部业务唯一编码
//
// 示例值：7140946969586010376
func (builder *PrehireCreateBuilder) OutBizId(outBizId string) *PrehireCreateBuilder {
	builder.outBizId = outBizId
	builder.outBizIdFlag = true
	return builder
}

func (builder *PrehireCreateBuilder) Build() *PrehireCreate {
	req := &PrehireCreate{}
	if builder.basicInfoFlag {
		req.BasicInfo = builder.basicInfo
	}
	if builder.offerInfoFlag {
		req.OfferInfo = builder.offerInfo
	}
	if builder.educationInfoFlag {
		req.EducationInfo = builder.educationInfo
	}
	if builder.workExperienceFlag {
		req.WorkExperience = builder.workExperience
	}
	if builder.atsApplicationIdFlag {
		req.AtsApplicationId = &builder.atsApplicationId

	}
	if builder.applicationFlag {
		req.Application = &builder.application

	}
	if builder.outBizIdFlag {
		req.OutBizId = &builder.outBizId

	}
	return req
}

type PrehireDefaultCostCenterUpdate struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息

	IsHerit *bool `json:"is_herit,omitempty"` // 是否继承岗位/部门的默认成本中心
}

type PrehireDefaultCostCenterUpdateBuilder struct {
	costCenterId     string // 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
	costCenterIdFlag bool

	isHerit     bool // 是否继承岗位/部门的默认成本中心
	isHeritFlag bool
}

func NewPrehireDefaultCostCenterUpdateBuilder() *PrehireDefaultCostCenterUpdateBuilder {
	builder := &PrehireDefaultCostCenterUpdateBuilder{}
	return builder
}

// 成本中心 ID，可以通过【查询单个成本中心信息】接口获取对应的成本中心信息
//
// 示例值：6950635856373745165
func (builder *PrehireDefaultCostCenterUpdateBuilder) CostCenterId(costCenterId string) *PrehireDefaultCostCenterUpdateBuilder {
	builder.costCenterId = costCenterId
	builder.costCenterIdFlag = true
	return builder
}

// 是否继承岗位/部门的默认成本中心
//
// 示例值：false
func (builder *PrehireDefaultCostCenterUpdateBuilder) IsHerit(isHerit bool) *PrehireDefaultCostCenterUpdateBuilder {
	builder.isHerit = isHerit
	builder.isHeritFlag = true
	return builder
}

func (builder *PrehireDefaultCostCenterUpdateBuilder) Build() *PrehireDefaultCostCenterUpdate {
	req := &PrehireDefaultCostCenterUpdate{}
	if builder.costCenterIdFlag {
		req.CostCenterId = &builder.costCenterId

	}
	if builder.isHeritFlag {
		req.IsHerit = &builder.isHerit

	}
	return req
}

type PrehireSeniorityAdjustInformation struct {
	SeniorityAdjustment *float64 `json:"seniority_adjustment,omitempty"` // 调整值;- 精确度：两位小数;- 单位：年;- 自动计算逻辑：如果这个值为空，司龄调整的开始日期和结束日期均不为空，会自动计算出调整值

	SeniorityAdjustmentType *string `json:"seniority_adjustment_type,omitempty"` // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type

	ReasonsForSeniorityAdjustment *string `json:"reasons_for_seniority_adjustment,omitempty"` // 司龄调整原因

	StartDate *string `json:"start_date,omitempty"` // 开始日期;- 格式： yyyy-mm-dd

	EndDate *string `json:"end_date,omitempty"` // 结束日期;- 格式： yyyy-mm-dd

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PrehireSeniorityAdjustInformationBuilder struct {
	seniorityAdjustment     float64 // 调整值;- 精确度：两位小数;- 单位：年;- 自动计算逻辑：如果这个值为空，司龄调整的开始日期和结束日期均不为空，会自动计算出调整值
	seniorityAdjustmentFlag bool

	seniorityAdjustmentType     string // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
	seniorityAdjustmentTypeFlag bool

	reasonsForSeniorityAdjustment     string // 司龄调整原因
	reasonsForSeniorityAdjustmentFlag bool

	startDate     string // 开始日期;- 格式： yyyy-mm-dd
	startDateFlag bool

	endDate     string // 结束日期;- 格式： yyyy-mm-dd
	endDateFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPrehireSeniorityAdjustInformationBuilder() *PrehireSeniorityAdjustInformationBuilder {
	builder := &PrehireSeniorityAdjustInformationBuilder{}
	return builder
}

// 调整值;- 精确度：两位小数;- 单位：年;- 自动计算逻辑：如果这个值为空，司龄调整的开始日期和结束日期均不为空，会自动计算出调整值
//
// 示例值：0.5
func (builder *PrehireSeniorityAdjustInformationBuilder) SeniorityAdjustment(seniorityAdjustment float64) *PrehireSeniorityAdjustInformationBuilder {
	builder.seniorityAdjustment = seniorityAdjustment
	builder.seniorityAdjustmentFlag = true
	return builder
}

// 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
//
// 示例值：增加
func (builder *PrehireSeniorityAdjustInformationBuilder) SeniorityAdjustmentType(seniorityAdjustmentType string) *PrehireSeniorityAdjustInformationBuilder {
	builder.seniorityAdjustmentType = seniorityAdjustmentType
	builder.seniorityAdjustmentTypeFlag = true
	return builder
}

// 司龄调整原因
//
// 示例值：工厂停产需要减去半年工龄
func (builder *PrehireSeniorityAdjustInformationBuilder) ReasonsForSeniorityAdjustment(reasonsForSeniorityAdjustment string) *PrehireSeniorityAdjustInformationBuilder {
	builder.reasonsForSeniorityAdjustment = reasonsForSeniorityAdjustment
	builder.reasonsForSeniorityAdjustmentFlag = true
	return builder
}

// 开始日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-05-19
func (builder *PrehireSeniorityAdjustInformationBuilder) StartDate(startDate string) *PrehireSeniorityAdjustInformationBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-11-18
func (builder *PrehireSeniorityAdjustInformationBuilder) EndDate(endDate string) *PrehireSeniorityAdjustInformationBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PrehireSeniorityAdjustInformationBuilder) CustomFields(customFields []*ObjectFieldData) *PrehireSeniorityAdjustInformationBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PrehireSeniorityAdjustInformationBuilder) Build() *PrehireSeniorityAdjustInformation {
	req := &PrehireSeniorityAdjustInformation{}
	if builder.seniorityAdjustmentFlag {
		req.SeniorityAdjustment = &builder.seniorityAdjustment

	}
	if builder.seniorityAdjustmentTypeFlag {
		req.SeniorityAdjustmentType = &builder.seniorityAdjustmentType

	}
	if builder.reasonsForSeniorityAdjustmentFlag {
		req.ReasonsForSeniorityAdjustment = &builder.reasonsForSeniorityAdjustment

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PrehireSeniorityAdjustInformationQuery struct {
	SeniorityAdjustment *float64 `json:"seniority_adjustment,omitempty"` // 调整值;- 精确度：两位小数;- 单位：年

	SeniorityAdjustmentType *Enum `json:"seniority_adjustment_type,omitempty"` // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type

	ReasonsForSeniorityAdjustment *string `json:"reasons_for_seniority_adjustment,omitempty"` // 司龄调整原因

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PrehireSeniorityAdjustInformationQueryBuilder struct {
	seniorityAdjustment     float64 // 调整值;- 精确度：两位小数;- 单位：年
	seniorityAdjustmentFlag bool

	seniorityAdjustmentType     *Enum // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
	seniorityAdjustmentTypeFlag bool

	reasonsForSeniorityAdjustment     string // 司龄调整原因
	reasonsForSeniorityAdjustmentFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPrehireSeniorityAdjustInformationQueryBuilder() *PrehireSeniorityAdjustInformationQueryBuilder {
	builder := &PrehireSeniorityAdjustInformationQueryBuilder{}
	return builder
}

// 调整值;- 精确度：两位小数;- 单位：年
//
// 示例值：0.5
func (builder *PrehireSeniorityAdjustInformationQueryBuilder) SeniorityAdjustment(seniorityAdjustment float64) *PrehireSeniorityAdjustInformationQueryBuilder {
	builder.seniorityAdjustment = seniorityAdjustment
	builder.seniorityAdjustmentFlag = true
	return builder
}

// 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
//
// 示例值：增加
func (builder *PrehireSeniorityAdjustInformationQueryBuilder) SeniorityAdjustmentType(seniorityAdjustmentType *Enum) *PrehireSeniorityAdjustInformationQueryBuilder {
	builder.seniorityAdjustmentType = seniorityAdjustmentType
	builder.seniorityAdjustmentTypeFlag = true
	return builder
}

// 司龄调整原因
//
// 示例值：工厂停产需要减去半年工龄
func (builder *PrehireSeniorityAdjustInformationQueryBuilder) ReasonsForSeniorityAdjustment(reasonsForSeniorityAdjustment string) *PrehireSeniorityAdjustInformationQueryBuilder {
	builder.reasonsForSeniorityAdjustment = reasonsForSeniorityAdjustment
	builder.reasonsForSeniorityAdjustmentFlag = true
	return builder
}

// 开始日期
//
// 示例值：2024-05-19
func (builder *PrehireSeniorityAdjustInformationQueryBuilder) StartDate(startDate string) *PrehireSeniorityAdjustInformationQueryBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：2024-11-18
func (builder *PrehireSeniorityAdjustInformationQueryBuilder) EndDate(endDate string) *PrehireSeniorityAdjustInformationQueryBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PrehireSeniorityAdjustInformationQueryBuilder) CustomFields(customFields []*CustomFieldData) *PrehireSeniorityAdjustInformationQueryBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PrehireSeniorityAdjustInformationQueryBuilder) Build() *PrehireSeniorityAdjustInformationQuery {
	req := &PrehireSeniorityAdjustInformationQuery{}
	if builder.seniorityAdjustmentFlag {
		req.SeniorityAdjustment = &builder.seniorityAdjustment

	}
	if builder.seniorityAdjustmentTypeFlag {
		req.SeniorityAdjustmentType = builder.seniorityAdjustmentType
	}
	if builder.reasonsForSeniorityAdjustmentFlag {
		req.ReasonsForSeniorityAdjustment = &builder.reasonsForSeniorityAdjustment

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PrehireSeniorityAdjustInformationUpdate struct {
	SeniorityAdjustment *float64 `json:"seniority_adjustment,omitempty"` // 调整值;- 精确度：两位小数;- 单位：年;- 自动计算逻辑：如果这个值为空，司龄调整的开始日期和结束日期均不为空，会自动计算出调整值

	SeniorityAdjustmentType *string `json:"seniority_adjustment_type,omitempty"` // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type

	ReasonsForSeniorityAdjustment *string `json:"reasons_for_seniority_adjustment,omitempty"` // 司龄调整原因

	StartDate *string `json:"start_date,omitempty"` // 开始日期;- 格式： yyyy-mm-dd

	EndDate *string `json:"end_date,omitempty"` // 结束日期;- 格式： yyyy-mm-dd

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type PrehireSeniorityAdjustInformationUpdateBuilder struct {
	seniorityAdjustment     float64 // 调整值;- 精确度：两位小数;- 单位：年;- 自动计算逻辑：如果这个值为空，司龄调整的开始日期和结束日期均不为空，会自动计算出调整值
	seniorityAdjustmentFlag bool

	seniorityAdjustmentType     string // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
	seniorityAdjustmentTypeFlag bool

	reasonsForSeniorityAdjustment     string // 司龄调整原因
	reasonsForSeniorityAdjustmentFlag bool

	startDate     string // 开始日期;- 格式： yyyy-mm-dd
	startDateFlag bool

	endDate     string // 结束日期;- 格式： yyyy-mm-dd
	endDateFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewPrehireSeniorityAdjustInformationUpdateBuilder() *PrehireSeniorityAdjustInformationUpdateBuilder {
	builder := &PrehireSeniorityAdjustInformationUpdateBuilder{}
	return builder
}

// 调整值;- 精确度：两位小数;- 单位：年;- 自动计算逻辑：如果这个值为空，司龄调整的开始日期和结束日期均不为空，会自动计算出调整值
//
// 示例值：0.5
func (builder *PrehireSeniorityAdjustInformationUpdateBuilder) SeniorityAdjustment(seniorityAdjustment float64) *PrehireSeniorityAdjustInformationUpdateBuilder {
	builder.seniorityAdjustment = seniorityAdjustment
	builder.seniorityAdjustmentFlag = true
	return builder
}

// 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
//
// 示例值：增加
func (builder *PrehireSeniorityAdjustInformationUpdateBuilder) SeniorityAdjustmentType(seniorityAdjustmentType string) *PrehireSeniorityAdjustInformationUpdateBuilder {
	builder.seniorityAdjustmentType = seniorityAdjustmentType
	builder.seniorityAdjustmentTypeFlag = true
	return builder
}

// 司龄调整原因
//
// 示例值：工厂停产需要减去半年工龄
func (builder *PrehireSeniorityAdjustInformationUpdateBuilder) ReasonsForSeniorityAdjustment(reasonsForSeniorityAdjustment string) *PrehireSeniorityAdjustInformationUpdateBuilder {
	builder.reasonsForSeniorityAdjustment = reasonsForSeniorityAdjustment
	builder.reasonsForSeniorityAdjustmentFlag = true
	return builder
}

// 开始日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-05-19
func (builder *PrehireSeniorityAdjustInformationUpdateBuilder) StartDate(startDate string) *PrehireSeniorityAdjustInformationUpdateBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-11-18
func (builder *PrehireSeniorityAdjustInformationUpdateBuilder) EndDate(endDate string) *PrehireSeniorityAdjustInformationUpdateBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *PrehireSeniorityAdjustInformationUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *PrehireSeniorityAdjustInformationUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *PrehireSeniorityAdjustInformationUpdateBuilder) Build() *PrehireSeniorityAdjustInformationUpdate {
	req := &PrehireSeniorityAdjustInformationUpdate{}
	if builder.seniorityAdjustmentFlag {
		req.SeniorityAdjustment = &builder.seniorityAdjustment

	}
	if builder.seniorityAdjustmentTypeFlag {
		req.SeniorityAdjustmentType = &builder.seniorityAdjustmentType

	}
	if builder.reasonsForSeniorityAdjustmentFlag {
		req.ReasonsForSeniorityAdjustment = &builder.reasonsForSeniorityAdjustment

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type PrehireUpdate struct {
	BasicInfoUpdate *BasicInfoUpdate `json:"basic_info_update,omitempty"` // 更新个人（person）信息

	OfferInfoUpdate *OfferInfoUpdate `json:"offer_info_update,omitempty"` // 更新待入职（prehire）信息

	StandardUpdateFields []string `json:"standard_update_fields,omitempty"` // 指定需要更新的系统字段，只支持最多下钻一层，格式如下：; - basic_info_update字段：basic_info_update.name（对name整体进行覆盖更新）；basic_info_update.emails（对邮箱整体进行更新）; - offer_info_update字段：offer_info_update.onboarding_method; - 招聘ID：ats_application_id

	CustomUpdateFields []string `json:"custom_update_fields,omitempty"` // 指定需要更新的PreHire对象上的自定义字段，格式如下：; - custom_field1__c

	PersonCustomUpdateFields []string `json:"person_custom_update_fields,omitempty"` // 指定需要更新的Person对象上的自定义字段，格式如下：; - custom_field1__c
}

type PrehireUpdateBuilder struct {
	basicInfoUpdate     *BasicInfoUpdate // 更新个人（person）信息
	basicInfoUpdateFlag bool

	offerInfoUpdate     *OfferInfoUpdate // 更新待入职（prehire）信息
	offerInfoUpdateFlag bool

	standardUpdateFields     []string // 指定需要更新的系统字段，只支持最多下钻一层，格式如下：; - basic_info_update字段：basic_info_update.name（对name整体进行覆盖更新）；basic_info_update.emails（对邮箱整体进行更新）; - offer_info_update字段：offer_info_update.onboarding_method; - 招聘ID：ats_application_id
	standardUpdateFieldsFlag bool

	customUpdateFields     []string // 指定需要更新的PreHire对象上的自定义字段，格式如下：; - custom_field1__c
	customUpdateFieldsFlag bool

	personCustomUpdateFields     []string // 指定需要更新的Person对象上的自定义字段，格式如下：; - custom_field1__c
	personCustomUpdateFieldsFlag bool
}

func NewPrehireUpdateBuilder() *PrehireUpdateBuilder {
	builder := &PrehireUpdateBuilder{}
	return builder
}

// 更新个人（person）信息
//
// 示例值：
func (builder *PrehireUpdateBuilder) BasicInfoUpdate(basicInfoUpdate *BasicInfoUpdate) *PrehireUpdateBuilder {
	builder.basicInfoUpdate = basicInfoUpdate
	builder.basicInfoUpdateFlag = true
	return builder
}

// 更新待入职（prehire）信息
//
// 示例值：
func (builder *PrehireUpdateBuilder) OfferInfoUpdate(offerInfoUpdate *OfferInfoUpdate) *PrehireUpdateBuilder {
	builder.offerInfoUpdate = offerInfoUpdate
	builder.offerInfoUpdateFlag = true
	return builder
}

// 指定需要更新的系统字段，只支持最多下钻一层，格式如下：; - basic_info_update字段：basic_info_update.name（对name整体进行覆盖更新）；basic_info_update.emails（对邮箱整体进行更新）; - offer_info_update字段：offer_info_update.onboarding_method; - 招聘ID：ats_application_id
//
// 示例值：\["basic_info_update.names","offer_info_update.onboarding_method"\]
func (builder *PrehireUpdateBuilder) StandardUpdateFields(standardUpdateFields []string) *PrehireUpdateBuilder {
	builder.standardUpdateFields = standardUpdateFields
	builder.standardUpdateFieldsFlag = true
	return builder
}

// 指定需要更新的PreHire对象上的自定义字段，格式如下：; - custom_field1__c
//
// 示例值：\["custom_field1__c","custom_field2__c"\]
func (builder *PrehireUpdateBuilder) CustomUpdateFields(customUpdateFields []string) *PrehireUpdateBuilder {
	builder.customUpdateFields = customUpdateFields
	builder.customUpdateFieldsFlag = true
	return builder
}

// 指定需要更新的Person对象上的自定义字段，格式如下：; - custom_field1__c
//
// 示例值：\["custom_field1__c","custom_field2__c"\]
func (builder *PrehireUpdateBuilder) PersonCustomUpdateFields(personCustomUpdateFields []string) *PrehireUpdateBuilder {
	builder.personCustomUpdateFields = personCustomUpdateFields
	builder.personCustomUpdateFieldsFlag = true
	return builder
}

func (builder *PrehireUpdateBuilder) Build() *PrehireUpdate {
	req := &PrehireUpdate{}
	if builder.basicInfoUpdateFlag {
		req.BasicInfoUpdate = builder.basicInfoUpdate
	}
	if builder.offerInfoUpdateFlag {
		req.OfferInfoUpdate = builder.offerInfoUpdate
	}
	if builder.standardUpdateFieldsFlag {
		req.StandardUpdateFields = builder.standardUpdateFields
	}
	if builder.customUpdateFieldsFlag {
		req.CustomUpdateFields = builder.customUpdateFields
	}
	if builder.personCustomUpdateFieldsFlag {
		req.PersonCustomUpdateFields = builder.personCustomUpdateFields
	}
	return req
}

type ProbationInfo struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID

	ProbationId *string `json:"probation_id,omitempty"` // 试用期信息 ID

	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationExpectedEndDate *string `json:"probation_expected_end_date,omitempty"` // 试用期预计结束日期

	ActualProbationEndDate *string `json:"actual_probation_end_date,omitempty"` // 试用期实际结束日期

	InitiatingTime *string `json:"initiating_time,omitempty"` // 转正发起日期

	SubmissionType *Enum `json:"submission_type,omitempty"` // 发起方

	InitiatorId *string `json:"initiator_id,omitempty"` // 转正发起人的雇佣 ID，当系统发起转正时该字段为空

	ProbationStatus *Enum `json:"probation_status,omitempty"` // 试用期状态

	SelfReview *string `json:"self_review,omitempty"` // 员工自评

	Notes *string `json:"notes,omitempty"` // 备注

	ProcessId *string `json:"process_id,omitempty"` // 流程实例 ID

	ConvertedViaBpm *bool `json:"converted_via_bpm,omitempty"` // 是否通过 BPM 转正

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	FinalAssessmentStatus *Enum `json:"final_assessment_status,omitempty"` // 试用期考核最终状态

	FinalAssessmentResult *Enum `json:"final_assessment_result,omitempty"` // 试用期考核最终结果

	FinalAssessmentScore *float64 `json:"final_assessment_score,omitempty"` // 试用期考核最终得分

	FinalAssessmentGrade *Enum `json:"final_assessment_grade,omitempty"` // 试用期考核最终等级

	FinalAssessmentComment *string `json:"final_assessment_comment,omitempty"` // 试用期考核最终评语

	FinalAssessmentDetail *string `json:"final_assessment_detail,omitempty"` // 最终考核结果页面超链接

	Assessments []*Assessment `json:"assessments,omitempty"` // 试用期考核结果列表

	ProbationExtendExpectedEndDate *string `json:"probation_extend_expected_end_date,omitempty"` // 试用期延长后的预计结束日期

	ExtendedProbationPeriodDuration *int `json:"extended_probation_period_duration,omitempty"` // 试用期延长时间

	ExtendedProbationPeriodUnit *Enum `json:"extended_probation_period_unit,omitempty"` // 试用期延长时间单位

	ProbationOutcome *Enum `json:"probation_outcome,omitempty"` // 试用期结果
}

type ProbationInfoBuilder struct {
	employmentId     string // 雇佣 ID
	employmentIdFlag bool

	probationId     string // 试用期信息 ID
	probationIdFlag bool

	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationExpectedEndDate     string // 试用期预计结束日期
	probationExpectedEndDateFlag bool

	actualProbationEndDate     string // 试用期实际结束日期
	actualProbationEndDateFlag bool

	initiatingTime     string // 转正发起日期
	initiatingTimeFlag bool

	submissionType     *Enum // 发起方
	submissionTypeFlag bool

	initiatorId     string // 转正发起人的雇佣 ID，当系统发起转正时该字段为空
	initiatorIdFlag bool

	probationStatus     *Enum // 试用期状态
	probationStatusFlag bool

	selfReview     string // 员工自评
	selfReviewFlag bool

	notes     string // 备注
	notesFlag bool

	processId     string // 流程实例 ID
	processIdFlag bool

	convertedViaBpm     bool // 是否通过 BPM 转正
	convertedViaBpmFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	finalAssessmentStatus     *Enum // 试用期考核最终状态
	finalAssessmentStatusFlag bool

	finalAssessmentResult     *Enum // 试用期考核最终结果
	finalAssessmentResultFlag bool

	finalAssessmentScore     float64 // 试用期考核最终得分
	finalAssessmentScoreFlag bool

	finalAssessmentGrade     *Enum // 试用期考核最终等级
	finalAssessmentGradeFlag bool

	finalAssessmentComment     string // 试用期考核最终评语
	finalAssessmentCommentFlag bool

	finalAssessmentDetail     string // 最终考核结果页面超链接
	finalAssessmentDetailFlag bool

	assessments     []*Assessment // 试用期考核结果列表
	assessmentsFlag bool

	probationExtendExpectedEndDate     string // 试用期延长后的预计结束日期
	probationExtendExpectedEndDateFlag bool

	extendedProbationPeriodDuration     int // 试用期延长时间
	extendedProbationPeriodDurationFlag bool

	extendedProbationPeriodUnit     *Enum // 试用期延长时间单位
	extendedProbationPeriodUnitFlag bool

	probationOutcome     *Enum // 试用期结果
	probationOutcomeFlag bool
}

func NewProbationInfoBuilder() *ProbationInfoBuilder {
	builder := &ProbationInfoBuilder{}
	return builder
}

// 雇佣 ID
//
// 示例值：6893014062142064135
func (builder *ProbationInfoBuilder) EmploymentId(employmentId string) *ProbationInfoBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 试用期信息 ID
//
// 示例值：6893014062142064132
func (builder *ProbationInfoBuilder) ProbationId(probationId string) *ProbationInfoBuilder {
	builder.probationId = probationId
	builder.probationIdFlag = true
	return builder
}

// 试用期开始日期
//
// 示例值：2022-05-20
func (builder *ProbationInfoBuilder) ProbationStartDate(probationStartDate string) *ProbationInfoBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期预计结束日期
//
// 示例值：2022-05-28
func (builder *ProbationInfoBuilder) ProbationExpectedEndDate(probationExpectedEndDate string) *ProbationInfoBuilder {
	builder.probationExpectedEndDate = probationExpectedEndDate
	builder.probationExpectedEndDateFlag = true
	return builder
}

// 试用期实际结束日期
//
// 示例值：2022-06-28
func (builder *ProbationInfoBuilder) ActualProbationEndDate(actualProbationEndDate string) *ProbationInfoBuilder {
	builder.actualProbationEndDate = actualProbationEndDate
	builder.actualProbationEndDateFlag = true
	return builder
}

// 转正发起日期
//
// 示例值：2022-07-28
func (builder *ProbationInfoBuilder) InitiatingTime(initiatingTime string) *ProbationInfoBuilder {
	builder.initiatingTime = initiatingTime
	builder.initiatingTimeFlag = true
	return builder
}

// 发起方
//
// 示例值：hr_submission
func (builder *ProbationInfoBuilder) SubmissionType(submissionType *Enum) *ProbationInfoBuilder {
	builder.submissionType = submissionType
	builder.submissionTypeFlag = true
	return builder
}

// 转正发起人的雇佣 ID，当系统发起转正时该字段为空
//
// 示例值：6893014062142061135
func (builder *ProbationInfoBuilder) InitiatorId(initiatorId string) *ProbationInfoBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 试用期状态
//
// 示例值：converted
func (builder *ProbationInfoBuilder) ProbationStatus(probationStatus *Enum) *ProbationInfoBuilder {
	builder.probationStatus = probationStatus
	builder.probationStatusFlag = true
	return builder
}

// 员工自评
//
// 示例值：符合预期
func (builder *ProbationInfoBuilder) SelfReview(selfReview string) *ProbationInfoBuilder {
	builder.selfReview = selfReview
	builder.selfReviewFlag = true
	return builder
}

// 备注
//
// 示例值：高潜
func (builder *ProbationInfoBuilder) Notes(notes string) *ProbationInfoBuilder {
	builder.notes = notes
	builder.notesFlag = true
	return builder
}

// 流程实例 ID
//
// 示例值：6893014062142164135
func (builder *ProbationInfoBuilder) ProcessId(processId string) *ProbationInfoBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 是否通过 BPM 转正
//
// 示例值：false
func (builder *ProbationInfoBuilder) ConvertedViaBpm(convertedViaBpm bool) *ProbationInfoBuilder {
	builder.convertedViaBpm = convertedViaBpm
	builder.convertedViaBpmFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProbationInfoBuilder) CustomFields(customFields []*CustomFieldData) *ProbationInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 试用期考核最终状态
//
// 示例值：completed
func (builder *ProbationInfoBuilder) FinalAssessmentStatus(finalAssessmentStatus *Enum) *ProbationInfoBuilder {
	builder.finalAssessmentStatus = finalAssessmentStatus
	builder.finalAssessmentStatusFlag = true
	return builder
}

// 试用期考核最终结果
//
// 示例值：approved
func (builder *ProbationInfoBuilder) FinalAssessmentResult(finalAssessmentResult *Enum) *ProbationInfoBuilder {
	builder.finalAssessmentResult = finalAssessmentResult
	builder.finalAssessmentResultFlag = true
	return builder
}

// 试用期考核最终得分
//
// 示例值：99.9
func (builder *ProbationInfoBuilder) FinalAssessmentScore(finalAssessmentScore float64) *ProbationInfoBuilder {
	builder.finalAssessmentScore = finalAssessmentScore
	builder.finalAssessmentScoreFlag = true
	return builder
}

// 试用期考核最终等级
//
// 示例值：grade_a
func (builder *ProbationInfoBuilder) FinalAssessmentGrade(finalAssessmentGrade *Enum) *ProbationInfoBuilder {
	builder.finalAssessmentGrade = finalAssessmentGrade
	builder.finalAssessmentGradeFlag = true
	return builder
}

// 试用期考核最终评语
//
// 示例值：超出预期
func (builder *ProbationInfoBuilder) FinalAssessmentComment(finalAssessmentComment string) *ProbationInfoBuilder {
	builder.finalAssessmentComment = finalAssessmentComment
	builder.finalAssessmentCommentFlag = true
	return builder
}

// 最终考核结果页面超链接
//
// 示例值：https://qwe112233.feishuapp.bytedance.net/ae/ui/apps//122265873393330/recordPages/1/records/1767139312?objectId=17661180522543&recordPageId=173330728118312
func (builder *ProbationInfoBuilder) FinalAssessmentDetail(finalAssessmentDetail string) *ProbationInfoBuilder {
	builder.finalAssessmentDetail = finalAssessmentDetail
	builder.finalAssessmentDetailFlag = true
	return builder
}

// 试用期考核结果列表
//
// 示例值：
func (builder *ProbationInfoBuilder) Assessments(assessments []*Assessment) *ProbationInfoBuilder {
	builder.assessments = assessments
	builder.assessmentsFlag = true
	return builder
}

// 试用期延长后的预计结束日期
//
// 示例值：2022-05-20
func (builder *ProbationInfoBuilder) ProbationExtendExpectedEndDate(probationExtendExpectedEndDate string) *ProbationInfoBuilder {
	builder.probationExtendExpectedEndDate = probationExtendExpectedEndDate
	builder.probationExtendExpectedEndDateFlag = true
	return builder
}

// 试用期延长时间
//
// 示例值：1
func (builder *ProbationInfoBuilder) ExtendedProbationPeriodDuration(extendedProbationPeriodDuration int) *ProbationInfoBuilder {
	builder.extendedProbationPeriodDuration = extendedProbationPeriodDuration
	builder.extendedProbationPeriodDurationFlag = true
	return builder
}

// 试用期延长时间单位
//
// 示例值：month
func (builder *ProbationInfoBuilder) ExtendedProbationPeriodUnit(extendedProbationPeriodUnit *Enum) *ProbationInfoBuilder {
	builder.extendedProbationPeriodUnit = extendedProbationPeriodUnit
	builder.extendedProbationPeriodUnitFlag = true
	return builder
}

// 试用期结果
//
// 示例值：passed
func (builder *ProbationInfoBuilder) ProbationOutcome(probationOutcome *Enum) *ProbationInfoBuilder {
	builder.probationOutcome = probationOutcome
	builder.probationOutcomeFlag = true
	return builder
}

func (builder *ProbationInfoBuilder) Build() *ProbationInfo {
	req := &ProbationInfo{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.probationIdFlag {
		req.ProbationId = &builder.probationId

	}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationExpectedEndDateFlag {
		req.ProbationExpectedEndDate = &builder.probationExpectedEndDate

	}
	if builder.actualProbationEndDateFlag {
		req.ActualProbationEndDate = &builder.actualProbationEndDate

	}
	if builder.initiatingTimeFlag {
		req.InitiatingTime = &builder.initiatingTime

	}
	if builder.submissionTypeFlag {
		req.SubmissionType = builder.submissionType
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId

	}
	if builder.probationStatusFlag {
		req.ProbationStatus = builder.probationStatus
	}
	if builder.selfReviewFlag {
		req.SelfReview = &builder.selfReview

	}
	if builder.notesFlag {
		req.Notes = &builder.notes

	}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.convertedViaBpmFlag {
		req.ConvertedViaBpm = &builder.convertedViaBpm

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.finalAssessmentStatusFlag {
		req.FinalAssessmentStatus = builder.finalAssessmentStatus
	}
	if builder.finalAssessmentResultFlag {
		req.FinalAssessmentResult = builder.finalAssessmentResult
	}
	if builder.finalAssessmentScoreFlag {
		req.FinalAssessmentScore = &builder.finalAssessmentScore

	}
	if builder.finalAssessmentGradeFlag {
		req.FinalAssessmentGrade = builder.finalAssessmentGrade
	}
	if builder.finalAssessmentCommentFlag {
		req.FinalAssessmentComment = &builder.finalAssessmentComment

	}
	if builder.finalAssessmentDetailFlag {
		req.FinalAssessmentDetail = &builder.finalAssessmentDetail

	}
	if builder.assessmentsFlag {
		req.Assessments = builder.assessments
	}
	if builder.probationExtendExpectedEndDateFlag {
		req.ProbationExtendExpectedEndDate = &builder.probationExtendExpectedEndDate

	}
	if builder.extendedProbationPeriodDurationFlag {
		req.ExtendedProbationPeriodDuration = &builder.extendedProbationPeriodDuration

	}
	if builder.extendedProbationPeriodUnitFlag {
		req.ExtendedProbationPeriodUnit = builder.extendedProbationPeriodUnit
	}
	if builder.probationOutcomeFlag {
		req.ProbationOutcome = builder.probationOutcome
	}
	return req
}

type ProbationInfoForSubmit struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID

	ProbationId *string `json:"probation_id,omitempty"` // 试用期信息 ID

	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationExpectedEndDate *string `json:"probation_expected_end_date,omitempty"` // 试用期预计结束日期

	ActualProbationEndDate *string `json:"actual_probation_end_date,omitempty"` // 试用期实际结束日期

	InitiatingTime *string `json:"initiating_time,omitempty"` // 转正发起日期

	SubmissionType *Enum `json:"submission_type,omitempty"` // 发起方

	InitiatorId *string `json:"initiator_id,omitempty"` // 转正发起人的雇佣 ID，当系统发起转正时该字段为空

	ProbationStatus *Enum `json:"probation_status,omitempty"` // 试用期状态

	SelfReview *string `json:"self_review,omitempty"` // 员工自评

	Notes *string `json:"notes,omitempty"` // 备注

	ProcessId *string `json:"process_id,omitempty"` // 流程实例 ID

	ConvertedViaBpm *bool `json:"converted_via_bpm,omitempty"` // 是否通过 BPM 转正

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段

	FinalAssessmentStatus *Enum `json:"final_assessment_status,omitempty"` // 试用期考核最终状态

	FinalAssessmentResult *Enum `json:"final_assessment_result,omitempty"` // 试用期考核最终结果

	FinalAssessmentScore *float64 `json:"final_assessment_score,omitempty"` // 试用期考核最终得分

	FinalAssessmentGrade *Enum `json:"final_assessment_grade,omitempty"` // 试用期考核最终等级

	FinalAssessmentComment *string `json:"final_assessment_comment,omitempty"` // 试用期考核最终评语

	FinalAssessmentDetail *string `json:"final_assessment_detail,omitempty"` // 最终考核结果页面超链接
}

type ProbationInfoForSubmitBuilder struct {
	employmentId     string // 雇佣 ID
	employmentIdFlag bool

	probationId     string // 试用期信息 ID
	probationIdFlag bool

	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationExpectedEndDate     string // 试用期预计结束日期
	probationExpectedEndDateFlag bool

	actualProbationEndDate     string // 试用期实际结束日期
	actualProbationEndDateFlag bool

	initiatingTime     string // 转正发起日期
	initiatingTimeFlag bool

	submissionType     *Enum // 发起方
	submissionTypeFlag bool

	initiatorId     string // 转正发起人的雇佣 ID，当系统发起转正时该字段为空
	initiatorIdFlag bool

	probationStatus     *Enum // 试用期状态
	probationStatusFlag bool

	selfReview     string // 员工自评
	selfReviewFlag bool

	notes     string // 备注
	notesFlag bool

	processId     string // 流程实例 ID
	processIdFlag bool

	convertedViaBpm     bool // 是否通过 BPM 转正
	convertedViaBpmFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool

	finalAssessmentStatus     *Enum // 试用期考核最终状态
	finalAssessmentStatusFlag bool

	finalAssessmentResult     *Enum // 试用期考核最终结果
	finalAssessmentResultFlag bool

	finalAssessmentScore     float64 // 试用期考核最终得分
	finalAssessmentScoreFlag bool

	finalAssessmentGrade     *Enum // 试用期考核最终等级
	finalAssessmentGradeFlag bool

	finalAssessmentComment     string // 试用期考核最终评语
	finalAssessmentCommentFlag bool

	finalAssessmentDetail     string // 最终考核结果页面超链接
	finalAssessmentDetailFlag bool
}

func NewProbationInfoForSubmitBuilder() *ProbationInfoForSubmitBuilder {
	builder := &ProbationInfoForSubmitBuilder{}
	return builder
}

// 雇佣 ID
//
// 示例值：6893014062142064135
func (builder *ProbationInfoForSubmitBuilder) EmploymentId(employmentId string) *ProbationInfoForSubmitBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 试用期信息 ID
//
// 示例值：6893014062142064132
func (builder *ProbationInfoForSubmitBuilder) ProbationId(probationId string) *ProbationInfoForSubmitBuilder {
	builder.probationId = probationId
	builder.probationIdFlag = true
	return builder
}

// 试用期开始日期
//
// 示例值：2022-05-20
func (builder *ProbationInfoForSubmitBuilder) ProbationStartDate(probationStartDate string) *ProbationInfoForSubmitBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期预计结束日期
//
// 示例值：2022-05-28
func (builder *ProbationInfoForSubmitBuilder) ProbationExpectedEndDate(probationExpectedEndDate string) *ProbationInfoForSubmitBuilder {
	builder.probationExpectedEndDate = probationExpectedEndDate
	builder.probationExpectedEndDateFlag = true
	return builder
}

// 试用期实际结束日期
//
// 示例值：2022-06-28
func (builder *ProbationInfoForSubmitBuilder) ActualProbationEndDate(actualProbationEndDate string) *ProbationInfoForSubmitBuilder {
	builder.actualProbationEndDate = actualProbationEndDate
	builder.actualProbationEndDateFlag = true
	return builder
}

// 转正发起日期
//
// 示例值：2022-07-28
func (builder *ProbationInfoForSubmitBuilder) InitiatingTime(initiatingTime string) *ProbationInfoForSubmitBuilder {
	builder.initiatingTime = initiatingTime
	builder.initiatingTimeFlag = true
	return builder
}

// 发起方
//
// 示例值：hr_submission
func (builder *ProbationInfoForSubmitBuilder) SubmissionType(submissionType *Enum) *ProbationInfoForSubmitBuilder {
	builder.submissionType = submissionType
	builder.submissionTypeFlag = true
	return builder
}

// 转正发起人的雇佣 ID，当系统发起转正时该字段为空
//
// 示例值：6893014062142061135
func (builder *ProbationInfoForSubmitBuilder) InitiatorId(initiatorId string) *ProbationInfoForSubmitBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 试用期状态
//
// 示例值：converted
func (builder *ProbationInfoForSubmitBuilder) ProbationStatus(probationStatus *Enum) *ProbationInfoForSubmitBuilder {
	builder.probationStatus = probationStatus
	builder.probationStatusFlag = true
	return builder
}

// 员工自评
//
// 示例值：符合预期
func (builder *ProbationInfoForSubmitBuilder) SelfReview(selfReview string) *ProbationInfoForSubmitBuilder {
	builder.selfReview = selfReview
	builder.selfReviewFlag = true
	return builder
}

// 备注
//
// 示例值：高潜
func (builder *ProbationInfoForSubmitBuilder) Notes(notes string) *ProbationInfoForSubmitBuilder {
	builder.notes = notes
	builder.notesFlag = true
	return builder
}

// 流程实例 ID
//
// 示例值：6893014062142164135
func (builder *ProbationInfoForSubmitBuilder) ProcessId(processId string) *ProbationInfoForSubmitBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 是否通过 BPM 转正
//
// 示例值：false
func (builder *ProbationInfoForSubmitBuilder) ConvertedViaBpm(convertedViaBpm bool) *ProbationInfoForSubmitBuilder {
	builder.convertedViaBpm = convertedViaBpm
	builder.convertedViaBpmFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProbationInfoForSubmitBuilder) CustomFields(customFields []*CustomFieldData) *ProbationInfoForSubmitBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 试用期考核最终状态
//
// 示例值：completed
func (builder *ProbationInfoForSubmitBuilder) FinalAssessmentStatus(finalAssessmentStatus *Enum) *ProbationInfoForSubmitBuilder {
	builder.finalAssessmentStatus = finalAssessmentStatus
	builder.finalAssessmentStatusFlag = true
	return builder
}

// 试用期考核最终结果
//
// 示例值：approved
func (builder *ProbationInfoForSubmitBuilder) FinalAssessmentResult(finalAssessmentResult *Enum) *ProbationInfoForSubmitBuilder {
	builder.finalAssessmentResult = finalAssessmentResult
	builder.finalAssessmentResultFlag = true
	return builder
}

// 试用期考核最终得分
//
// 示例值：99.9
func (builder *ProbationInfoForSubmitBuilder) FinalAssessmentScore(finalAssessmentScore float64) *ProbationInfoForSubmitBuilder {
	builder.finalAssessmentScore = finalAssessmentScore
	builder.finalAssessmentScoreFlag = true
	return builder
}

// 试用期考核最终等级
//
// 示例值：grade_a
func (builder *ProbationInfoForSubmitBuilder) FinalAssessmentGrade(finalAssessmentGrade *Enum) *ProbationInfoForSubmitBuilder {
	builder.finalAssessmentGrade = finalAssessmentGrade
	builder.finalAssessmentGradeFlag = true
	return builder
}

// 试用期考核最终评语
//
// 示例值：超出预期
func (builder *ProbationInfoForSubmitBuilder) FinalAssessmentComment(finalAssessmentComment string) *ProbationInfoForSubmitBuilder {
	builder.finalAssessmentComment = finalAssessmentComment
	builder.finalAssessmentCommentFlag = true
	return builder
}

// 最终考核结果页面超链接
//
// 示例值：暂无示例
func (builder *ProbationInfoForSubmitBuilder) FinalAssessmentDetail(finalAssessmentDetail string) *ProbationInfoForSubmitBuilder {
	builder.finalAssessmentDetail = finalAssessmentDetail
	builder.finalAssessmentDetailFlag = true
	return builder
}

func (builder *ProbationInfoForSubmitBuilder) Build() *ProbationInfoForSubmit {
	req := &ProbationInfoForSubmit{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.probationIdFlag {
		req.ProbationId = &builder.probationId

	}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationExpectedEndDateFlag {
		req.ProbationExpectedEndDate = &builder.probationExpectedEndDate

	}
	if builder.actualProbationEndDateFlag {
		req.ActualProbationEndDate = &builder.actualProbationEndDate

	}
	if builder.initiatingTimeFlag {
		req.InitiatingTime = &builder.initiatingTime

	}
	if builder.submissionTypeFlag {
		req.SubmissionType = builder.submissionType
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId

	}
	if builder.probationStatusFlag {
		req.ProbationStatus = builder.probationStatus
	}
	if builder.selfReviewFlag {
		req.SelfReview = &builder.selfReview

	}
	if builder.notesFlag {
		req.Notes = &builder.notes

	}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.convertedViaBpmFlag {
		req.ConvertedViaBpm = &builder.convertedViaBpm

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.finalAssessmentStatusFlag {
		req.FinalAssessmentStatus = builder.finalAssessmentStatus
	}
	if builder.finalAssessmentResultFlag {
		req.FinalAssessmentResult = builder.finalAssessmentResult
	}
	if builder.finalAssessmentScoreFlag {
		req.FinalAssessmentScore = &builder.finalAssessmentScore

	}
	if builder.finalAssessmentGradeFlag {
		req.FinalAssessmentGrade = builder.finalAssessmentGrade
	}
	if builder.finalAssessmentCommentFlag {
		req.FinalAssessmentComment = &builder.finalAssessmentComment

	}
	if builder.finalAssessmentDetailFlag {
		req.FinalAssessmentDetail = &builder.finalAssessmentDetail

	}
	return req
}

type ProcessApprover struct {
	Status *int `json:"status,omitempty"` // 将审批任务修改为同意/拒绝

	UserId *string `json:"user_id,omitempty"` // 按user_id_type类型传递。如果system_approval为false，则必填。否则非必填。

	SystemApproval *bool `json:"system_approval,omitempty"` // true - 使用系统身份审批

	Reason *string `json:"reason,omitempty"` // 通过原因，长度限制为1000

	FieldValuesV2 []*ProcessFormVariableV2 `json:"field_values_v2,omitempty"` // 表单数据
}

type ProcessApproverBuilder struct {
	status     int // 将审批任务修改为同意/拒绝
	statusFlag bool

	userId     string // 按user_id_type类型传递。如果system_approval为false，则必填。否则非必填。
	userIdFlag bool

	systemApproval     bool // true - 使用系统身份审批
	systemApprovalFlag bool

	reason     string // 通过原因，长度限制为1000
	reasonFlag bool

	fieldValuesV2     []*ProcessFormVariableV2 // 表单数据
	fieldValuesV2Flag bool
}

func NewProcessApproverBuilder() *ProcessApproverBuilder {
	builder := &ProcessApproverBuilder{}
	return builder
}

// 将审批任务修改为同意/拒绝
//
// 示例值：2
func (builder *ProcessApproverBuilder) Status(status int) *ProcessApproverBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 按user_id_type类型传递。如果system_approval为false，则必填。否则非必填。
//
// 示例值：ou_91791271921729102012
func (builder *ProcessApproverBuilder) UserId(userId string) *ProcessApproverBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// true - 使用系统身份审批
//
// 示例值：true
func (builder *ProcessApproverBuilder) SystemApproval(systemApproval bool) *ProcessApproverBuilder {
	builder.systemApproval = systemApproval
	builder.systemApprovalFlag = true
	return builder
}

// 通过原因，长度限制为1000
//
// 示例值：原因自定义字符串
func (builder *ProcessApproverBuilder) Reason(reason string) *ProcessApproverBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 表单数据
//
// 示例值：
func (builder *ProcessApproverBuilder) FieldValuesV2(fieldValuesV2 []*ProcessFormVariableV2) *ProcessApproverBuilder {
	builder.fieldValuesV2 = fieldValuesV2
	builder.fieldValuesV2Flag = true
	return builder
}

func (builder *ProcessApproverBuilder) Build() *ProcessApprover {
	req := &ProcessApprover{}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.systemApprovalFlag {
		req.SystemApproval = &builder.systemApproval

	}
	if builder.reasonFlag {
		req.Reason = &builder.reason

	}
	if builder.fieldValuesV2Flag {
		req.FieldValuesV2 = builder.fieldValuesV2
	}
	return req
}

type ProcessRevokeAndWithdraw struct {
	UserId *string `json:"user_id,omitempty"` // 按照指定的用户ID类型传递对应的用户ID。

	Reason *string `json:"reason,omitempty"` // 原因

	SystemUser *bool `json:"system_user,omitempty"` // true-系统身份操作
}

type ProcessRevokeAndWithdrawBuilder struct {
	userId     string // 按照指定的用户ID类型传递对应的用户ID。
	userIdFlag bool

	reason     string // 原因
	reasonFlag bool

	systemUser     bool // true-系统身份操作
	systemUserFlag bool
}

func NewProcessRevokeAndWithdrawBuilder() *ProcessRevokeAndWithdrawBuilder {
	builder := &ProcessRevokeAndWithdrawBuilder{}
	return builder
}

// 按照指定的用户ID类型传递对应的用户ID。
//
// 示例值：ou_91791271921729102012
func (builder *ProcessRevokeAndWithdrawBuilder) UserId(userId string) *ProcessRevokeAndWithdrawBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 原因
//
// 示例值：原因自定义字符串
func (builder *ProcessRevokeAndWithdrawBuilder) Reason(reason string) *ProcessRevokeAndWithdrawBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// true-系统身份操作
//
// 示例值：true
func (builder *ProcessRevokeAndWithdrawBuilder) SystemUser(systemUser bool) *ProcessRevokeAndWithdrawBuilder {
	builder.systemUser = systemUser
	builder.systemUserFlag = true
	return builder
}

func (builder *ProcessRevokeAndWithdrawBuilder) Build() *ProcessRevokeAndWithdraw {
	req := &ProcessRevokeAndWithdraw{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.reasonFlag {
		req.Reason = &builder.reason

	}
	if builder.systemUserFlag {
		req.SystemUser = &builder.systemUser

	}
	return req
}

type ProcessAbstractItem struct {
	Name *DataengineI18n `json:"name,omitempty"` // 摘要标题

	Value *DataengineI18n `json:"value,omitempty"` // 摘要值
}

type ProcessAbstractItemBuilder struct {
	name     *DataengineI18n // 摘要标题
	nameFlag bool

	value     *DataengineI18n // 摘要值
	valueFlag bool
}

func NewProcessAbstractItemBuilder() *ProcessAbstractItemBuilder {
	builder := &ProcessAbstractItemBuilder{}
	return builder
}

// 摘要标题
//
// 示例值：
func (builder *ProcessAbstractItemBuilder) Name(name *DataengineI18n) *ProcessAbstractItemBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 摘要值
//
// 示例值：
func (builder *ProcessAbstractItemBuilder) Value(value *DataengineI18n) *ProcessAbstractItemBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *ProcessAbstractItemBuilder) Build() *ProcessAbstractItem {
	req := &ProcessAbstractItem{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type ProcessCcItem struct {
	ApproverId *string `json:"approver_id,omitempty"` // 单据ID

	Links *ProcessLink `json:"links,omitempty"` // 单据地址

	OperatorId *string `json:"operator_id,omitempty"` // 抄送人ID

	OperatorName *DataengineI18n `json:"operator_name,omitempty"` // 抄送人姓名

	NodeName *DataengineI18n `json:"node_name,omitempty"` // 节点名称

	CreateTime *string `json:"create_time,omitempty"` // 抄送时间，Unix毫秒时间戳

	NodeDefinitionId *string `json:"node_definition_id,omitempty"` // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
}

type ProcessCcItemBuilder struct {
	approverId     string // 单据ID
	approverIdFlag bool

	links     *ProcessLink // 单据地址
	linksFlag bool

	operatorId     string // 抄送人ID
	operatorIdFlag bool

	operatorName     *DataengineI18n // 抄送人姓名
	operatorNameFlag bool

	nodeName     *DataengineI18n // 节点名称
	nodeNameFlag bool

	createTime     string // 抄送时间，Unix毫秒时间戳
	createTimeFlag bool

	nodeDefinitionId     string // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
	nodeDefinitionIdFlag bool
}

func NewProcessCcItemBuilder() *ProcessCcItemBuilder {
	builder := &ProcessCcItemBuilder{}
	return builder
}

// 单据ID
//
// 示例值：7278949005675988535
func (builder *ProcessCcItemBuilder) ApproverId(approverId string) *ProcessCcItemBuilder {
	builder.approverId = approverId
	builder.approverIdFlag = true
	return builder
}

// 单据地址
//
// 示例值：
func (builder *ProcessCcItemBuilder) Links(links *ProcessLink) *ProcessCcItemBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

// 抄送人ID
//
// 示例值：7124991993901827628
func (builder *ProcessCcItemBuilder) OperatorId(operatorId string) *ProcessCcItemBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 抄送人姓名
//
// 示例值：
func (builder *ProcessCcItemBuilder) OperatorName(operatorName *DataengineI18n) *ProcessCcItemBuilder {
	builder.operatorName = operatorName
	builder.operatorNameFlag = true
	return builder
}

// 节点名称
//
// 示例值：
func (builder *ProcessCcItemBuilder) NodeName(nodeName *DataengineI18n) *ProcessCcItemBuilder {
	builder.nodeName = nodeName
	builder.nodeNameFlag = true
	return builder
}

// 抄送时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessCcItemBuilder) CreateTime(createTime string) *ProcessCcItemBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
//
// 示例值：approval_d25b5eddfef
func (builder *ProcessCcItemBuilder) NodeDefinitionId(nodeDefinitionId string) *ProcessCcItemBuilder {
	builder.nodeDefinitionId = nodeDefinitionId
	builder.nodeDefinitionIdFlag = true
	return builder
}

func (builder *ProcessCcItemBuilder) Build() *ProcessCcItem {
	req := &ProcessCcItem{}
	if builder.approverIdFlag {
		req.ApproverId = &builder.approverId

	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId

	}
	if builder.operatorNameFlag {
		req.OperatorName = builder.operatorName
	}
	if builder.nodeNameFlag {
		req.NodeName = builder.nodeName
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.nodeDefinitionIdFlag {
		req.NodeDefinitionId = &builder.nodeDefinitionId

	}
	return req
}

type ProcessCommentInfo struct {
	CommentorId *string `json:"commentor_id,omitempty"` // 评论人id

	CommentorName *DataengineI18n `json:"commentor_name,omitempty"` // 评论人姓名

	CommentTime *string `json:"comment_time,omitempty"` // 评论时间,Unix毫秒时间戳

	CommentMsg *string `json:"comment_msg,omitempty"` // 评论内容

	AtUserIds []string `json:"at_user_ids,omitempty"` // 在评论中被提及（@）到的人的id列表

	FileCount *int `json:"file_count,omitempty"` // 评论中附件数量

	ImageCount *int `json:"image_count,omitempty"` // 评论中图片数量

	CommentId *string `json:"comment_id,omitempty"` // 一条评论的唯一id
}

type ProcessCommentInfoBuilder struct {
	commentorId     string // 评论人id
	commentorIdFlag bool

	commentorName     *DataengineI18n // 评论人姓名
	commentorNameFlag bool

	commentTime     string // 评论时间,Unix毫秒时间戳
	commentTimeFlag bool

	commentMsg     string // 评论内容
	commentMsgFlag bool

	atUserIds     []string // 在评论中被提及（@）到的人的id列表
	atUserIdsFlag bool

	fileCount     int // 评论中附件数量
	fileCountFlag bool

	imageCount     int // 评论中图片数量
	imageCountFlag bool

	commentId     string // 一条评论的唯一id
	commentIdFlag bool
}

func NewProcessCommentInfoBuilder() *ProcessCommentInfoBuilder {
	builder := &ProcessCommentInfoBuilder{}
	return builder
}

// 评论人id
//
// 示例值：7355397217231831060
func (builder *ProcessCommentInfoBuilder) CommentorId(commentorId string) *ProcessCommentInfoBuilder {
	builder.commentorId = commentorId
	builder.commentorIdFlag = true
	return builder
}

// 评论人姓名
//
// 示例值：
func (builder *ProcessCommentInfoBuilder) CommentorName(commentorName *DataengineI18n) *ProcessCommentInfoBuilder {
	builder.commentorName = commentorName
	builder.commentorNameFlag = true
	return builder
}

// 评论时间,Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessCommentInfoBuilder) CommentTime(commentTime string) *ProcessCommentInfoBuilder {
	builder.commentTime = commentTime
	builder.commentTimeFlag = true
	return builder
}

// 评论内容
//
// 示例值：评论内容
func (builder *ProcessCommentInfoBuilder) CommentMsg(commentMsg string) *ProcessCommentInfoBuilder {
	builder.commentMsg = commentMsg
	builder.commentMsgFlag = true
	return builder
}

// 在评论中被提及（@）到的人的id列表
//
// 示例值：
func (builder *ProcessCommentInfoBuilder) AtUserIds(atUserIds []string) *ProcessCommentInfoBuilder {
	builder.atUserIds = atUserIds
	builder.atUserIdsFlag = true
	return builder
}

// 评论中附件数量
//
// 示例值：10
func (builder *ProcessCommentInfoBuilder) FileCount(fileCount int) *ProcessCommentInfoBuilder {
	builder.fileCount = fileCount
	builder.fileCountFlag = true
	return builder
}

// 评论中图片数量
//
// 示例值：10
func (builder *ProcessCommentInfoBuilder) ImageCount(imageCount int) *ProcessCommentInfoBuilder {
	builder.imageCount = imageCount
	builder.imageCountFlag = true
	return builder
}

// 一条评论的唯一id
//
// 示例值：7355397217231831060
func (builder *ProcessCommentInfoBuilder) CommentId(commentId string) *ProcessCommentInfoBuilder {
	builder.commentId = commentId
	builder.commentIdFlag = true
	return builder
}

func (builder *ProcessCommentInfoBuilder) Build() *ProcessCommentInfo {
	req := &ProcessCommentInfo{}
	if builder.commentorIdFlag {
		req.CommentorId = &builder.commentorId

	}
	if builder.commentorNameFlag {
		req.CommentorName = builder.commentorName
	}
	if builder.commentTimeFlag {
		req.CommentTime = &builder.commentTime

	}
	if builder.commentMsgFlag {
		req.CommentMsg = &builder.commentMsg

	}
	if builder.atUserIdsFlag {
		req.AtUserIds = builder.atUserIds
	}
	if builder.fileCountFlag {
		req.FileCount = &builder.fileCount

	}
	if builder.imageCountFlag {
		req.ImageCount = &builder.imageCount

	}
	if builder.commentIdFlag {
		req.CommentId = &builder.commentId

	}
	return req
}

type ProcessDoneItem struct {
	ApproverId *string `json:"approver_id,omitempty"` // 单据ID

	Type *int `json:"type,omitempty"` // 单据类型

	Status *int `json:"status,omitempty"` // 单据状态

	Links *ProcessLink `json:"links,omitempty"` // 单据地址

	OperatorId *string `json:"operator_id,omitempty"` // 操作人ID

	OperatorName *DataengineI18n `json:"operator_name,omitempty"` // 操作人姓名

	NodeName *DataengineI18n `json:"node_name,omitempty"` // 节点名称

	CreateTime *string `json:"create_time,omitempty"` // 创建时间，Unix毫秒时间戳

	CompleteTime *string `json:"complete_time,omitempty"` // 完成时间，Unix毫秒时间戳

	NodeDefinitionId *string `json:"node_definition_id,omitempty"` // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）

	ApprovalOpinion *string `json:"approval_opinion,omitempty"` // 审批意见
}

type ProcessDoneItemBuilder struct {
	approverId     string // 单据ID
	approverIdFlag bool

	type_    int // 单据类型
	typeFlag bool

	status     int // 单据状态
	statusFlag bool

	links     *ProcessLink // 单据地址
	linksFlag bool

	operatorId     string // 操作人ID
	operatorIdFlag bool

	operatorName     *DataengineI18n // 操作人姓名
	operatorNameFlag bool

	nodeName     *DataengineI18n // 节点名称
	nodeNameFlag bool

	createTime     string // 创建时间，Unix毫秒时间戳
	createTimeFlag bool

	completeTime     string // 完成时间，Unix毫秒时间戳
	completeTimeFlag bool

	nodeDefinitionId     string // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
	nodeDefinitionIdFlag bool

	approvalOpinion     string // 审批意见
	approvalOpinionFlag bool
}

func NewProcessDoneItemBuilder() *ProcessDoneItemBuilder {
	builder := &ProcessDoneItemBuilder{}
	return builder
}

// 单据ID
//
// 示例值：7278949005675988535
func (builder *ProcessDoneItemBuilder) ApproverId(approverId string) *ProcessDoneItemBuilder {
	builder.approverId = approverId
	builder.approverIdFlag = true
	return builder
}

// 单据类型
//
// 示例值：1
func (builder *ProcessDoneItemBuilder) Type(type_ int) *ProcessDoneItemBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 单据状态
//
// 示例值：3
func (builder *ProcessDoneItemBuilder) Status(status int) *ProcessDoneItemBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 单据地址
//
// 示例值：
func (builder *ProcessDoneItemBuilder) Links(links *ProcessLink) *ProcessDoneItemBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

// 操作人ID
//
// 示例值：7124991993901827628
func (builder *ProcessDoneItemBuilder) OperatorId(operatorId string) *ProcessDoneItemBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 操作人姓名
//
// 示例值：
func (builder *ProcessDoneItemBuilder) OperatorName(operatorName *DataengineI18n) *ProcessDoneItemBuilder {
	builder.operatorName = operatorName
	builder.operatorNameFlag = true
	return builder
}

// 节点名称
//
// 示例值：
func (builder *ProcessDoneItemBuilder) NodeName(nodeName *DataengineI18n) *ProcessDoneItemBuilder {
	builder.nodeName = nodeName
	builder.nodeNameFlag = true
	return builder
}

// 创建时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessDoneItemBuilder) CreateTime(createTime string) *ProcessDoneItemBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 完成时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessDoneItemBuilder) CompleteTime(completeTime string) *ProcessDoneItemBuilder {
	builder.completeTime = completeTime
	builder.completeTimeFlag = true
	return builder
}

// 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
//
// 示例值：approval_d25b5eddfef
func (builder *ProcessDoneItemBuilder) NodeDefinitionId(nodeDefinitionId string) *ProcessDoneItemBuilder {
	builder.nodeDefinitionId = nodeDefinitionId
	builder.nodeDefinitionIdFlag = true
	return builder
}

// 审批意见
//
// 示例值：审批意见
func (builder *ProcessDoneItemBuilder) ApprovalOpinion(approvalOpinion string) *ProcessDoneItemBuilder {
	builder.approvalOpinion = approvalOpinion
	builder.approvalOpinionFlag = true
	return builder
}

func (builder *ProcessDoneItemBuilder) Build() *ProcessDoneItem {
	req := &ProcessDoneItem{}
	if builder.approverIdFlag {
		req.ApproverId = &builder.approverId

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId

	}
	if builder.operatorNameFlag {
		req.OperatorName = builder.operatorName
	}
	if builder.nodeNameFlag {
		req.NodeName = builder.nodeName
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.completeTimeFlag {
		req.CompleteTime = &builder.completeTime

	}
	if builder.nodeDefinitionIdFlag {
		req.NodeDefinitionId = &builder.nodeDefinitionId

	}
	if builder.approvalOpinionFlag {
		req.ApprovalOpinion = &builder.approvalOpinion

	}
	return req
}

type ProcessExtra struct {
	Operator *string `json:"operator,omitempty"` // 操作人，当system_user为true时，可以不传值

	NodeId *string `json:"node_id,omitempty"` // 流程节点id，与approver_id二选一传入，都传以node_id为准

	ApproverId *string `json:"approver_id,omitempty"` // 审批任务id，与node_id二选一传入，都传以node_id为准

	ExtraType *int `json:"extra_type,omitempty"` // 加签方式

	ApprovalType *int `json:"approval_type,omitempty"` // 多人加签时的审批方式

	ExtraUserIds []string `json:"extra_user_ids,omitempty"` // 加签人员id列表

	Remark *string `json:"remark,omitempty"` // 备注

	SystemUser *bool `json:"system_user,omitempty"` // true-以系统身份操作
}

type ProcessExtraBuilder struct {
	operator     string // 操作人，当system_user为true时，可以不传值
	operatorFlag bool

	nodeId     string // 流程节点id，与approver_id二选一传入，都传以node_id为准
	nodeIdFlag bool

	approverId     string // 审批任务id，与node_id二选一传入，都传以node_id为准
	approverIdFlag bool

	extraType     int // 加签方式
	extraTypeFlag bool

	approvalType     int // 多人加签时的审批方式
	approvalTypeFlag bool

	extraUserIds     []string // 加签人员id列表
	extraUserIdsFlag bool

	remark     string // 备注
	remarkFlag bool

	systemUser     bool // true-以系统身份操作
	systemUserFlag bool
}

func NewProcessExtraBuilder() *ProcessExtraBuilder {
	builder := &ProcessExtraBuilder{}
	return builder
}

// 操作人，当system_user为true时，可以不传值
//
// 示例值：7184703091806602796
func (builder *ProcessExtraBuilder) Operator(operator string) *ProcessExtraBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 流程节点id，与approver_id二选一传入，都传以node_id为准
//
// 示例值：7414045453433439788
func (builder *ProcessExtraBuilder) NodeId(nodeId string) *ProcessExtraBuilder {
	builder.nodeId = nodeId
	builder.nodeIdFlag = true
	return builder
}

// 审批任务id，与node_id二选一传入，都传以node_id为准
//
// 示例值：7424452160928106028
func (builder *ProcessExtraBuilder) ApproverId(approverId string) *ProcessExtraBuilder {
	builder.approverId = approverId
	builder.approverIdFlag = true
	return builder
}

// 加签方式
//
// 示例值：1
func (builder *ProcessExtraBuilder) ExtraType(extraType int) *ProcessExtraBuilder {
	builder.extraType = extraType
	builder.extraTypeFlag = true
	return builder
}

// 多人加签时的审批方式
//
// 示例值：1
func (builder *ProcessExtraBuilder) ApprovalType(approvalType int) *ProcessExtraBuilder {
	builder.approvalType = approvalType
	builder.approvalTypeFlag = true
	return builder
}

// 加签人员id列表
//
// 示例值：
func (builder *ProcessExtraBuilder) ExtraUserIds(extraUserIds []string) *ProcessExtraBuilder {
	builder.extraUserIds = extraUserIds
	builder.extraUserIdsFlag = true
	return builder
}

// 备注
//
// 示例值：备注
func (builder *ProcessExtraBuilder) Remark(remark string) *ProcessExtraBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// true-以系统身份操作
//
// 示例值：true
func (builder *ProcessExtraBuilder) SystemUser(systemUser bool) *ProcessExtraBuilder {
	builder.systemUser = systemUser
	builder.systemUserFlag = true
	return builder
}

func (builder *ProcessExtraBuilder) Build() *ProcessExtra {
	req := &ProcessExtra{}
	if builder.operatorFlag {
		req.Operator = &builder.operator

	}
	if builder.nodeIdFlag {
		req.NodeId = &builder.nodeId

	}
	if builder.approverIdFlag {
		req.ApproverId = &builder.approverId

	}
	if builder.extraTypeFlag {
		req.ExtraType = &builder.extraType

	}
	if builder.approvalTypeFlag {
		req.ApprovalType = &builder.approvalType

	}
	if builder.extraUserIdsFlag {
		req.ExtraUserIds = builder.extraUserIds
	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.systemUserFlag {
		req.SystemUser = &builder.systemUser

	}
	return req
}

type ProcessFormVariable struct {
	VariableApiName *string `json:"variable_api_name,omitempty"` // 变量的apiName

	VariableValue *FormVariableValueInfo `json:"variable_value,omitempty"` // 变量值
}

type ProcessFormVariableBuilder struct {
	variableApiName     string // 变量的apiName
	variableApiNameFlag bool

	variableValue     *FormVariableValueInfo // 变量值
	variableValueFlag bool
}

func NewProcessFormVariableBuilder() *ProcessFormVariableBuilder {
	builder := &ProcessFormVariableBuilder{}
	return builder
}

// 变量的apiName
//
// 示例值：custom590dbafb84a
func (builder *ProcessFormVariableBuilder) VariableApiName(variableApiName string) *ProcessFormVariableBuilder {
	builder.variableApiName = variableApiName
	builder.variableApiNameFlag = true
	return builder
}

// 变量值
//
// 示例值：
func (builder *ProcessFormVariableBuilder) VariableValue(variableValue *FormVariableValueInfo) *ProcessFormVariableBuilder {
	builder.variableValue = variableValue
	builder.variableValueFlag = true
	return builder
}

func (builder *ProcessFormVariableBuilder) Build() *ProcessFormVariable {
	req := &ProcessFormVariable{}
	if builder.variableApiNameFlag {
		req.VariableApiName = &builder.variableApiName

	}
	if builder.variableValueFlag {
		req.VariableValue = builder.variableValue
	}
	return req
}

type ProcessFormVariableV2 struct {
	VariableApiName *string `json:"variable_api_name,omitempty"` // 变量唯一标识

	VariableValue *FieldVariableValueToForReview `json:"variable_value,omitempty"` // 变量值

	SubValues []*FieldVariableSubVlaueForReview `json:"sub_values,omitempty"` // 在list_values和record_values中引用的变量
}

type ProcessFormVariableV2Builder struct {
	variableApiName     string // 变量唯一标识
	variableApiNameFlag bool

	variableValue     *FieldVariableValueToForReview // 变量值
	variableValueFlag bool

	subValues     []*FieldVariableSubVlaueForReview // 在list_values和record_values中引用的变量
	subValuesFlag bool
}

func NewProcessFormVariableV2Builder() *ProcessFormVariableV2Builder {
	builder := &ProcessFormVariableV2Builder{}
	return builder
}

// 变量唯一标识
//
// 示例值：custom123
func (builder *ProcessFormVariableV2Builder) VariableApiName(variableApiName string) *ProcessFormVariableV2Builder {
	builder.variableApiName = variableApiName
	builder.variableApiNameFlag = true
	return builder
}

// 变量值
//
// 示例值：
func (builder *ProcessFormVariableV2Builder) VariableValue(variableValue *FieldVariableValueToForReview) *ProcessFormVariableV2Builder {
	builder.variableValue = variableValue
	builder.variableValueFlag = true
	return builder
}

// 在list_values和record_values中引用的变量
//
// 示例值：
func (builder *ProcessFormVariableV2Builder) SubValues(subValues []*FieldVariableSubVlaueForReview) *ProcessFormVariableV2Builder {
	builder.subValues = subValues
	builder.subValuesFlag = true
	return builder
}

func (builder *ProcessFormVariableV2Builder) Build() *ProcessFormVariableV2 {
	req := &ProcessFormVariableV2{}
	if builder.variableApiNameFlag {
		req.VariableApiName = &builder.variableApiName

	}
	if builder.variableValueFlag {
		req.VariableValue = builder.variableValue
	}
	if builder.subValuesFlag {
		req.SubValues = builder.subValues
	}
	return req
}

type ProcessInfo struct {
	ProcessId *string `json:"process_id,omitempty"` // 组织架构调整流程 ID

	ApprovalGroupStatus *string `json:"approval_group_status,omitempty"` // 组织架构调整流程状态
}

type ProcessInfoBuilder struct {
	processId     string // 组织架构调整流程 ID
	processIdFlag bool

	approvalGroupStatus     string // 组织架构调整流程状态
	approvalGroupStatusFlag bool
}

func NewProcessInfoBuilder() *ProcessInfoBuilder {
	builder := &ProcessInfoBuilder{}
	return builder
}

// 组织架构调整流程 ID
//
// 示例值：6991776076699549697
func (builder *ProcessInfoBuilder) ProcessId(processId string) *ProcessInfoBuilder {
	builder.processId = processId
	builder.processIdFlag = true
	return builder
}

// 组织架构调整流程状态
//
// 示例值：
func (builder *ProcessInfoBuilder) ApprovalGroupStatus(approvalGroupStatus string) *ProcessInfoBuilder {
	builder.approvalGroupStatus = approvalGroupStatus
	builder.approvalGroupStatusFlag = true
	return builder
}

func (builder *ProcessInfoBuilder) Build() *ProcessInfo {
	req := &ProcessInfo{}
	if builder.processIdFlag {
		req.ProcessId = &builder.processId

	}
	if builder.approvalGroupStatusFlag {
		req.ApprovalGroupStatus = &builder.approvalGroupStatus

	}
	return req
}

type ProcessLink struct {
	WebLink *string `json:"web_link,omitempty"` // web端单据详情页地址

	PcLink *string `json:"pc_link,omitempty"` // 飞书pc端单据详情页地址

	MobileLink *string `json:"mobile_link,omitempty"` // 飞书移动端单据详情页地址
}

type ProcessLinkBuilder struct {
	webLink     string // web端单据详情页地址
	webLinkFlag bool

	pcLink     string // 飞书pc端单据详情页地址
	pcLinkFlag bool

	mobileLink     string // 飞书移动端单据详情页地址
	mobileLinkFlag bool
}

func NewProcessLinkBuilder() *ProcessLinkBuilder {
	builder := &ProcessLinkBuilder{}
	return builder
}

// web端单据详情页地址
//
// 示例值：http://xxxx.com/xxx/xxx?a=b
func (builder *ProcessLinkBuilder) WebLink(webLink string) *ProcessLinkBuilder {
	builder.webLink = webLink
	builder.webLinkFlag = true
	return builder
}

// 飞书pc端单据详情页地址
//
// 示例值：https://applink.feishu.cn/client/mini_program/open?appId=xxx
func (builder *ProcessLinkBuilder) PcLink(pcLink string) *ProcessLinkBuilder {
	builder.pcLink = pcLink
	builder.pcLinkFlag = true
	return builder
}

// 飞书移动端单据详情页地址
//
// 示例值：https://applink.feishu.cn/client/mini_program/open?appId=xxx
func (builder *ProcessLinkBuilder) MobileLink(mobileLink string) *ProcessLinkBuilder {
	builder.mobileLink = mobileLink
	builder.mobileLinkFlag = true
	return builder
}

func (builder *ProcessLinkBuilder) Build() *ProcessLink {
	req := &ProcessLink{}
	if builder.webLinkFlag {
		req.WebLink = &builder.webLink

	}
	if builder.pcLinkFlag {
		req.PcLink = &builder.pcLink

	}
	if builder.mobileLinkFlag {
		req.MobileLink = &builder.mobileLink

	}
	return req
}

type ProcessSystemDoneItem struct {
	ApproverId *string `json:"approver_id,omitempty"` // 单据ID

	Type *int `json:"type,omitempty"` // 单据类型

	Status *int `json:"status,omitempty"` // 单据状态

	Links *ProcessLink `json:"links,omitempty"` // 单据地址

	OperatorName *DataengineI18n `json:"operator_name,omitempty"` // 操作人姓名

	NodeName *DataengineI18n `json:"node_name,omitempty"` // 节点名称

	CreateTime *string `json:"create_time,omitempty"` // 创建时间，Unix毫秒时间戳

	CompleteTime *string `json:"complete_time,omitempty"` // 完成时间，Unix毫秒时间戳

	NodeDefinitionId *string `json:"node_definition_id,omitempty"` // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）

	ApprovalOpinion *string `json:"approval_opinion,omitempty"` // 审批意见
}

type ProcessSystemDoneItemBuilder struct {
	approverId     string // 单据ID
	approverIdFlag bool

	type_    int // 单据类型
	typeFlag bool

	status     int // 单据状态
	statusFlag bool

	links     *ProcessLink // 单据地址
	linksFlag bool

	operatorName     *DataengineI18n // 操作人姓名
	operatorNameFlag bool

	nodeName     *DataengineI18n // 节点名称
	nodeNameFlag bool

	createTime     string // 创建时间，Unix毫秒时间戳
	createTimeFlag bool

	completeTime     string // 完成时间，Unix毫秒时间戳
	completeTimeFlag bool

	nodeDefinitionId     string // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
	nodeDefinitionIdFlag bool

	approvalOpinion     string // 审批意见
	approvalOpinionFlag bool
}

func NewProcessSystemDoneItemBuilder() *ProcessSystemDoneItemBuilder {
	builder := &ProcessSystemDoneItemBuilder{}
	return builder
}

// 单据ID
//
// 示例值：7278949005675988535
func (builder *ProcessSystemDoneItemBuilder) ApproverId(approverId string) *ProcessSystemDoneItemBuilder {
	builder.approverId = approverId
	builder.approverIdFlag = true
	return builder
}

// 单据类型
//
// 示例值：1
func (builder *ProcessSystemDoneItemBuilder) Type(type_ int) *ProcessSystemDoneItemBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 单据状态
//
// 示例值：3
func (builder *ProcessSystemDoneItemBuilder) Status(status int) *ProcessSystemDoneItemBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 单据地址
//
// 示例值：
func (builder *ProcessSystemDoneItemBuilder) Links(links *ProcessLink) *ProcessSystemDoneItemBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

// 操作人姓名
//
// 示例值：7124991993901827628
func (builder *ProcessSystemDoneItemBuilder) OperatorName(operatorName *DataengineI18n) *ProcessSystemDoneItemBuilder {
	builder.operatorName = operatorName
	builder.operatorNameFlag = true
	return builder
}

// 节点名称
//
// 示例值：
func (builder *ProcessSystemDoneItemBuilder) NodeName(nodeName *DataengineI18n) *ProcessSystemDoneItemBuilder {
	builder.nodeName = nodeName
	builder.nodeNameFlag = true
	return builder
}

// 创建时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessSystemDoneItemBuilder) CreateTime(createTime string) *ProcessSystemDoneItemBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 完成时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessSystemDoneItemBuilder) CompleteTime(completeTime string) *ProcessSystemDoneItemBuilder {
	builder.completeTime = completeTime
	builder.completeTimeFlag = true
	return builder
}

// 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
//
// 示例值：approval_d25b5eddfef
func (builder *ProcessSystemDoneItemBuilder) NodeDefinitionId(nodeDefinitionId string) *ProcessSystemDoneItemBuilder {
	builder.nodeDefinitionId = nodeDefinitionId
	builder.nodeDefinitionIdFlag = true
	return builder
}

// 审批意见
//
// 示例值：审批意见
func (builder *ProcessSystemDoneItemBuilder) ApprovalOpinion(approvalOpinion string) *ProcessSystemDoneItemBuilder {
	builder.approvalOpinion = approvalOpinion
	builder.approvalOpinionFlag = true
	return builder
}

func (builder *ProcessSystemDoneItemBuilder) Build() *ProcessSystemDoneItem {
	req := &ProcessSystemDoneItem{}
	if builder.approverIdFlag {
		req.ApproverId = &builder.approverId

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	if builder.operatorNameFlag {
		req.OperatorName = builder.operatorName
	}
	if builder.nodeNameFlag {
		req.NodeName = builder.nodeName
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.completeTimeFlag {
		req.CompleteTime = &builder.completeTime

	}
	if builder.nodeDefinitionIdFlag {
		req.NodeDefinitionId = &builder.nodeDefinitionId

	}
	if builder.approvalOpinionFlag {
		req.ApprovalOpinion = &builder.approvalOpinion

	}
	return req
}

type ProcessSystemTodoItem struct {
	ApproverId *string `json:"approver_id,omitempty"` // 单据ID

	Type *int `json:"type,omitempty"` // 单据类型

	Links *ProcessLink `json:"links,omitempty"` // 单据地址

	OperatorName *DataengineI18n `json:"operator_name,omitempty"` // 操作人姓名

	NodeName *DataengineI18n `json:"node_name,omitempty"` // 节点名称

	CreateTime *string `json:"create_time,omitempty"` // 创建时间，Unix毫秒时间戳

	NodeDefinitionId *string `json:"node_definition_id,omitempty"` // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
}

type ProcessSystemTodoItemBuilder struct {
	approverId     string // 单据ID
	approverIdFlag bool

	type_    int // 单据类型
	typeFlag bool

	links     *ProcessLink // 单据地址
	linksFlag bool

	operatorName     *DataengineI18n // 操作人姓名
	operatorNameFlag bool

	nodeName     *DataengineI18n // 节点名称
	nodeNameFlag bool

	createTime     string // 创建时间，Unix毫秒时间戳
	createTimeFlag bool

	nodeDefinitionId     string // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
	nodeDefinitionIdFlag bool
}

func NewProcessSystemTodoItemBuilder() *ProcessSystemTodoItemBuilder {
	builder := &ProcessSystemTodoItemBuilder{}
	return builder
}

// 单据ID
//
// 示例值：7278949005675988535
func (builder *ProcessSystemTodoItemBuilder) ApproverId(approverId string) *ProcessSystemTodoItemBuilder {
	builder.approverId = approverId
	builder.approverIdFlag = true
	return builder
}

// 单据类型
//
// 示例值：1
func (builder *ProcessSystemTodoItemBuilder) Type(type_ int) *ProcessSystemTodoItemBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 单据地址
//
// 示例值：
func (builder *ProcessSystemTodoItemBuilder) Links(links *ProcessLink) *ProcessSystemTodoItemBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

// 操作人姓名
//
// 示例值：
func (builder *ProcessSystemTodoItemBuilder) OperatorName(operatorName *DataengineI18n) *ProcessSystemTodoItemBuilder {
	builder.operatorName = operatorName
	builder.operatorNameFlag = true
	return builder
}

// 节点名称
//
// 示例值：
func (builder *ProcessSystemTodoItemBuilder) NodeName(nodeName *DataengineI18n) *ProcessSystemTodoItemBuilder {
	builder.nodeName = nodeName
	builder.nodeNameFlag = true
	return builder
}

// 创建时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessSystemTodoItemBuilder) CreateTime(createTime string) *ProcessSystemTodoItemBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
//
// 示例值：approval_d25b5eddfef
func (builder *ProcessSystemTodoItemBuilder) NodeDefinitionId(nodeDefinitionId string) *ProcessSystemTodoItemBuilder {
	builder.nodeDefinitionId = nodeDefinitionId
	builder.nodeDefinitionIdFlag = true
	return builder
}

func (builder *ProcessSystemTodoItemBuilder) Build() *ProcessSystemTodoItem {
	req := &ProcessSystemTodoItem{}
	if builder.approverIdFlag {
		req.ApproverId = &builder.approverId

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	if builder.operatorNameFlag {
		req.OperatorName = builder.operatorName
	}
	if builder.nodeNameFlag {
		req.NodeName = builder.nodeName
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.nodeDefinitionIdFlag {
		req.NodeDefinitionId = &builder.nodeDefinitionId

	}
	return req
}

type ProcessTodoItem struct {
	ApproverId *string `json:"approver_id,omitempty"` // 单据ID

	Type *int `json:"type,omitempty"` // 单据类型

	Links *ProcessLink `json:"links,omitempty"` // 单据地址

	OperatorId *string `json:"operator_id,omitempty"` // 操作人ID

	OperatorName *DataengineI18n `json:"operator_name,omitempty"` // 操作人姓名

	NodeName *DataengineI18n `json:"node_name,omitempty"` // 节点名称

	CreateTime *string `json:"create_time,omitempty"` // 创建时间，Unix毫秒时间戳

	NodeDefinitionId *string `json:"node_definition_id,omitempty"` // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
}

type ProcessTodoItemBuilder struct {
	approverId     string // 单据ID
	approverIdFlag bool

	type_    int // 单据类型
	typeFlag bool

	links     *ProcessLink // 单据地址
	linksFlag bool

	operatorId     string // 操作人ID
	operatorIdFlag bool

	operatorName     *DataengineI18n // 操作人姓名
	operatorNameFlag bool

	nodeName     *DataengineI18n // 节点名称
	nodeNameFlag bool

	createTime     string // 创建时间，Unix毫秒时间戳
	createTimeFlag bool

	nodeDefinitionId     string // 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
	nodeDefinitionIdFlag bool
}

func NewProcessTodoItemBuilder() *ProcessTodoItemBuilder {
	builder := &ProcessTodoItemBuilder{}
	return builder
}

// 单据ID
//
// 示例值：7278949005675988535
func (builder *ProcessTodoItemBuilder) ApproverId(approverId string) *ProcessTodoItemBuilder {
	builder.approverId = approverId
	builder.approverIdFlag = true
	return builder
}

// 单据类型
//
// 示例值：1
func (builder *ProcessTodoItemBuilder) Type(type_ int) *ProcessTodoItemBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 单据地址
//
// 示例值：
func (builder *ProcessTodoItemBuilder) Links(links *ProcessLink) *ProcessTodoItemBuilder {
	builder.links = links
	builder.linksFlag = true
	return builder
}

// 操作人ID
//
// 示例值：7124991993901827628
func (builder *ProcessTodoItemBuilder) OperatorId(operatorId string) *ProcessTodoItemBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 操作人姓名
//
// 示例值：
func (builder *ProcessTodoItemBuilder) OperatorName(operatorName *DataengineI18n) *ProcessTodoItemBuilder {
	builder.operatorName = operatorName
	builder.operatorNameFlag = true
	return builder
}

// 节点名称
//
// 示例值：
func (builder *ProcessTodoItemBuilder) NodeName(nodeName *DataengineI18n) *ProcessTodoItemBuilder {
	builder.nodeName = nodeName
	builder.nodeNameFlag = true
	return builder
}

// 创建时间，Unix毫秒时间戳
//
// 示例值：1694769814036
func (builder *ProcessTodoItemBuilder) CreateTime(createTime string) *ProcessTodoItemBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 节点定义ID（注：在回退场景，同一个节点会对应多个节点实例）
//
// 示例值：approval_d25b5eddfef
func (builder *ProcessTodoItemBuilder) NodeDefinitionId(nodeDefinitionId string) *ProcessTodoItemBuilder {
	builder.nodeDefinitionId = nodeDefinitionId
	builder.nodeDefinitionIdFlag = true
	return builder
}

func (builder *ProcessTodoItemBuilder) Build() *ProcessTodoItem {
	req := &ProcessTodoItem{}
	if builder.approverIdFlag {
		req.ApproverId = &builder.approverId

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.linksFlag {
		req.Links = builder.links
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId

	}
	if builder.operatorNameFlag {
		req.OperatorName = builder.operatorName
	}
	if builder.nodeNameFlag {
		req.NodeName = builder.nodeName
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.nodeDefinitionIdFlag {
		req.NodeDefinitionId = &builder.nodeDefinitionId

	}
	return req
}

type ProcessTransfer struct {
	Operator *string `json:"operator,omitempty"` // 操作人，当system_user为true，可不传值

	ToUserId *string `json:"to_user_id,omitempty"` // 被转交人id

	ApproverIds []string `json:"approver_ids,omitempty"` // 待转交审批任务id列表

	Remark *string `json:"remark,omitempty"` // 备注

	SystemUser *bool `json:"system_user,omitempty"` // true-以系统身份操作
}

type ProcessTransferBuilder struct {
	operator     string // 操作人，当system_user为true，可不传值
	operatorFlag bool

	toUserId     string // 被转交人id
	toUserIdFlag bool

	approverIds     []string // 待转交审批任务id列表
	approverIdsFlag bool

	remark     string // 备注
	remarkFlag bool

	systemUser     bool // true-以系统身份操作
	systemUserFlag bool
}

func NewProcessTransferBuilder() *ProcessTransferBuilder {
	builder := &ProcessTransferBuilder{}
	return builder
}

// 操作人，当system_user为true，可不传值
//
// 示例值：7184703091806602796
func (builder *ProcessTransferBuilder) Operator(operator string) *ProcessTransferBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 被转交人id
//
// 示例值：7184703091806602796
func (builder *ProcessTransferBuilder) ToUserId(toUserId string) *ProcessTransferBuilder {
	builder.toUserId = toUserId
	builder.toUserIdFlag = true
	return builder
}

// 待转交审批任务id列表
//
// 示例值：
func (builder *ProcessTransferBuilder) ApproverIds(approverIds []string) *ProcessTransferBuilder {
	builder.approverIds = approverIds
	builder.approverIdsFlag = true
	return builder
}

// 备注
//
// 示例值：备注
func (builder *ProcessTransferBuilder) Remark(remark string) *ProcessTransferBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// true-以系统身份操作
//
// 示例值：true
func (builder *ProcessTransferBuilder) SystemUser(systemUser bool) *ProcessTransferBuilder {
	builder.systemUser = systemUser
	builder.systemUserFlag = true
	return builder
}

func (builder *ProcessTransferBuilder) Build() *ProcessTransfer {
	req := &ProcessTransfer{}
	if builder.operatorFlag {
		req.Operator = &builder.operator

	}
	if builder.toUserIdFlag {
		req.ToUserId = &builder.toUserId

	}
	if builder.approverIdsFlag {
		req.ApproverIds = builder.approverIds
	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.systemUserFlag {
		req.SystemUser = &builder.systemUser

	}
	return req
}

type ProfileSettingAddress struct {
	AddressType *string `json:"address_type,omitempty"` // 地址类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "address" custom_api_name = "address_type"

	CountryRegion *string `json:"country_region,omitempty"` // 国家 / 地区ID

	Region *string `json:"region,omitempty"` // 主要行政区ID

	RegionSubdivision1 *string `json:"region_subdivision_1,omitempty"` // 主要行政区往下细分 1 层的行政区

	RegionSubdivision2 *string `json:"region_subdivision_2,omitempty"` // 主要行政区往下细分 2 层的行政区

	CityV2 *string `json:"city_v2,omitempty"` // 城市V2 ID

	CityText *string `json:"city_text,omitempty"` // 城市（文本）

	LocalCityText *string `json:"local_city_text,omitempty"` // 城市（仅文本，非拉丁语系的本地文字）

	CitySubdivision1 *string `json:"city_subdivision_1,omitempty"` // 城市往下细分 1 层的行政区

	CitySubdivision2 *string `json:"city_subdivision_2,omitempty"` // 城市往下细分 2 层的行政区

	DistrictV2 *string `json:"district_v2,omitempty"` // 区/县V2 ID

	PostalCode *string `json:"postal_code,omitempty"` // 邮政编码

	AddressLine1 *string `json:"address_line_1,omitempty"` // 地址行 1

	LocalAddressLine1 *string `json:"local_address_line_1,omitempty"` // 地址行 1（非拉丁语系的本地文字）

	AddressLine2 *string `json:"address_line_2,omitempty"` // 地址行 2

	LocalAddressLine2 *string `json:"local_address_line_2,omitempty"` // 地址行 2（非拉丁语系的本地文字）

	AddressLine3 *string `json:"address_line_3,omitempty"` // 地址行 3

	LocalAddressLine3 *string `json:"local_address_line_3,omitempty"` // 地址行 3（非拉丁语系的本地文字）

	AddressLine4 *string `json:"address_line_4,omitempty"` // 地址行 4

	LocalAddressLine5 *string `json:"local_address_line_5,omitempty"` // 地址行 5（非拉丁语系的本地文字）

	AddressLine6 *string `json:"address_line_6,omitempty"` // 地址行 6

	LocalAddressLine6 *string `json:"local_address_line_6,omitempty"` // 地址行 6（非拉丁语系的本地文字）

	AddressLine7 *string `json:"address_line_7,omitempty"` // 地址行 7

	LocalAddressLine7 *string `json:"local_address_line_7,omitempty"` // 地址行 7（非拉丁语系的本地文字）

	AddressLine8 *string `json:"address_line_8,omitempty"` // 地址行 8

	LocalAddressLine8 *string `json:"local_address_line_8,omitempty"` // 地址行 8（非拉丁语系的本地文字）

	AddressLine9 *string `json:"address_line_9,omitempty"` // 地址行 9

	LocalAddressLine9 *string `json:"local_address_line_9,omitempty"` // 地址行 9（非拉丁语系的本地文字）

	LocalAddressLine4 *string `json:"local_address_line_4,omitempty"` // 地址行 4（非拉丁语系的本地文字）

	AddressLine5 *string `json:"address_line_5,omitempty"` // 地址行 5
}

type ProfileSettingAddressBuilder struct {
	addressType     string // 地址类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "address" custom_api_name = "address_type"
	addressTypeFlag bool

	countryRegion     string // 国家 / 地区ID
	countryRegionFlag bool

	region     string // 主要行政区ID
	regionFlag bool

	regionSubdivision1     string // 主要行政区往下细分 1 层的行政区
	regionSubdivision1Flag bool

	regionSubdivision2     string // 主要行政区往下细分 2 层的行政区
	regionSubdivision2Flag bool

	cityV2     string // 城市V2 ID
	cityV2Flag bool

	cityText     string // 城市（文本）
	cityTextFlag bool

	localCityText     string // 城市（仅文本，非拉丁语系的本地文字）
	localCityTextFlag bool

	citySubdivision1     string // 城市往下细分 1 层的行政区
	citySubdivision1Flag bool

	citySubdivision2     string // 城市往下细分 2 层的行政区
	citySubdivision2Flag bool

	districtV2     string // 区/县V2 ID
	districtV2Flag bool

	postalCode     string // 邮政编码
	postalCodeFlag bool

	addressLine1     string // 地址行 1
	addressLine1Flag bool

	localAddressLine1     string // 地址行 1（非拉丁语系的本地文字）
	localAddressLine1Flag bool

	addressLine2     string // 地址行 2
	addressLine2Flag bool

	localAddressLine2     string // 地址行 2（非拉丁语系的本地文字）
	localAddressLine2Flag bool

	addressLine3     string // 地址行 3
	addressLine3Flag bool

	localAddressLine3     string // 地址行 3（非拉丁语系的本地文字）
	localAddressLine3Flag bool

	addressLine4     string // 地址行 4
	addressLine4Flag bool

	localAddressLine5     string // 地址行 5（非拉丁语系的本地文字）
	localAddressLine5Flag bool

	addressLine6     string // 地址行 6
	addressLine6Flag bool

	localAddressLine6     string // 地址行 6（非拉丁语系的本地文字）
	localAddressLine6Flag bool

	addressLine7     string // 地址行 7
	addressLine7Flag bool

	localAddressLine7     string // 地址行 7（非拉丁语系的本地文字）
	localAddressLine7Flag bool

	addressLine8     string // 地址行 8
	addressLine8Flag bool

	localAddressLine8     string // 地址行 8（非拉丁语系的本地文字）
	localAddressLine8Flag bool

	addressLine9     string // 地址行 9
	addressLine9Flag bool

	localAddressLine9     string // 地址行 9（非拉丁语系的本地文字）
	localAddressLine9Flag bool

	localAddressLine4     string // 地址行 4（非拉丁语系的本地文字）
	localAddressLine4Flag bool

	addressLine5     string // 地址行 5
	addressLine5Flag bool
}

func NewProfileSettingAddressBuilder() *ProfileSettingAddressBuilder {
	builder := &ProfileSettingAddressBuilder{}
	return builder
}

// 地址类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "address" custom_api_name = "address_type"
//
// 示例值：home_address
func (builder *ProfileSettingAddressBuilder) AddressType(addressType string) *ProfileSettingAddressBuilder {
	builder.addressType = addressType
	builder.addressTypeFlag = true
	return builder
}

// 国家 / 地区ID
//
// 示例值：6862995757234914824
func (builder *ProfileSettingAddressBuilder) CountryRegion(countryRegion string) *ProfileSettingAddressBuilder {
	builder.countryRegion = countryRegion
	builder.countryRegionFlag = true
	return builder
}

// 主要行政区ID
//
// 示例值：6863326815667095047
func (builder *ProfileSettingAddressBuilder) Region(region string) *ProfileSettingAddressBuilder {
	builder.region = region
	builder.regionFlag = true
	return builder
}

// 主要行政区往下细分 1 层的行政区
//
// 示例值：行政区1
func (builder *ProfileSettingAddressBuilder) RegionSubdivision1(regionSubdivision1 string) *ProfileSettingAddressBuilder {
	builder.regionSubdivision1 = regionSubdivision1
	builder.regionSubdivision1Flag = true
	return builder
}

// 主要行政区往下细分 2 层的行政区
//
// 示例值：行政区2
func (builder *ProfileSettingAddressBuilder) RegionSubdivision2(regionSubdivision2 string) *ProfileSettingAddressBuilder {
	builder.regionSubdivision2 = regionSubdivision2
	builder.regionSubdivision2Flag = true
	return builder
}

// 城市V2 ID
//
// 示例值：6862995757234914829
func (builder *ProfileSettingAddressBuilder) CityV2(cityV2 string) *ProfileSettingAddressBuilder {
	builder.cityV2 = cityV2
	builder.cityV2Flag = true
	return builder
}

// 城市（文本）
//
// 示例值：北京市
func (builder *ProfileSettingAddressBuilder) CityText(cityText string) *ProfileSettingAddressBuilder {
	builder.cityText = cityText
	builder.cityTextFlag = true
	return builder
}

// 城市（仅文本，非拉丁语系的本地文字）
//
// 示例值：北京市
func (builder *ProfileSettingAddressBuilder) LocalCityText(localCityText string) *ProfileSettingAddressBuilder {
	builder.localCityText = localCityText
	builder.localCityTextFlag = true
	return builder
}

// 城市往下细分 1 层的行政区
//
// 示例值：行政区1
func (builder *ProfileSettingAddressBuilder) CitySubdivision1(citySubdivision1 string) *ProfileSettingAddressBuilder {
	builder.citySubdivision1 = citySubdivision1
	builder.citySubdivision1Flag = true
	return builder
}

// 城市往下细分 2 层的行政区
//
// 示例值：行政区2
func (builder *ProfileSettingAddressBuilder) CitySubdivision2(citySubdivision2 string) *ProfileSettingAddressBuilder {
	builder.citySubdivision2 = citySubdivision2
	builder.citySubdivision2Flag = true
	return builder
}

// 区/县V2 ID
//
// 示例值：6862995757234914831
func (builder *ProfileSettingAddressBuilder) DistrictV2(districtV2 string) *ProfileSettingAddressBuilder {
	builder.districtV2 = districtV2
	builder.districtV2Flag = true
	return builder
}

// 邮政编码
//
// 示例值：611530
func (builder *ProfileSettingAddressBuilder) PostalCode(postalCode string) *ProfileSettingAddressBuilder {
	builder.postalCode = postalCode
	builder.postalCodeFlag = true
	return builder
}

// 地址行 1
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *ProfileSettingAddressBuilder) AddressLine1(addressLine1 string) *ProfileSettingAddressBuilder {
	builder.addressLine1 = addressLine1
	builder.addressLine1Flag = true
	return builder
}

// 地址行 1（非拉丁语系的本地文字）
//
// 示例值：丹佛测试地址-纽埃时区
func (builder *ProfileSettingAddressBuilder) LocalAddressLine1(localAddressLine1 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine1 = localAddressLine1
	builder.localAddressLine1Flag = true
	return builder
}

// 地址行 2
//
// 示例值：PoewH
func (builder *ProfileSettingAddressBuilder) AddressLine2(addressLine2 string) *ProfileSettingAddressBuilder {
	builder.addressLine2 = addressLine2
	builder.addressLine2Flag = true
	return builder
}

// 地址行 2（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *ProfileSettingAddressBuilder) LocalAddressLine2(localAddressLine2 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine2 = localAddressLine2
	builder.localAddressLine2Flag = true
	return builder
}

// 地址行 3
//
// 示例值：PoewH
func (builder *ProfileSettingAddressBuilder) AddressLine3(addressLine3 string) *ProfileSettingAddressBuilder {
	builder.addressLine3 = addressLine3
	builder.addressLine3Flag = true
	return builder
}

// 地址行 3（非拉丁语系的本地文字）
//
// 示例值：PoewH
func (builder *ProfileSettingAddressBuilder) LocalAddressLine3(localAddressLine3 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine3 = localAddressLine3
	builder.localAddressLine3Flag = true
	return builder
}

// 地址行 4
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) AddressLine4(addressLine4 string) *ProfileSettingAddressBuilder {
	builder.addressLine4 = addressLine4
	builder.addressLine4Flag = true
	return builder
}

// 地址行 5（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) LocalAddressLine5(localAddressLine5 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine5 = localAddressLine5
	builder.localAddressLine5Flag = true
	return builder
}

// 地址行 6
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) AddressLine6(addressLine6 string) *ProfileSettingAddressBuilder {
	builder.addressLine6 = addressLine6
	builder.addressLine6Flag = true
	return builder
}

// 地址行 6（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) LocalAddressLine6(localAddressLine6 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine6 = localAddressLine6
	builder.localAddressLine6Flag = true
	return builder
}

// 地址行 7
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) AddressLine7(addressLine7 string) *ProfileSettingAddressBuilder {
	builder.addressLine7 = addressLine7
	builder.addressLine7Flag = true
	return builder
}

// 地址行 7（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) LocalAddressLine7(localAddressLine7 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine7 = localAddressLine7
	builder.localAddressLine7Flag = true
	return builder
}

// 地址行 8
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) AddressLine8(addressLine8 string) *ProfileSettingAddressBuilder {
	builder.addressLine8 = addressLine8
	builder.addressLine8Flag = true
	return builder
}

// 地址行 8（非拉丁语系的本地文字）
//
// 示例值：rafSu
func (builder *ProfileSettingAddressBuilder) LocalAddressLine8(localAddressLine8 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine8 = localAddressLine8
	builder.localAddressLine8Flag = true
	return builder
}

// 地址行 9
//
// 示例值：McPRG
func (builder *ProfileSettingAddressBuilder) AddressLine9(addressLine9 string) *ProfileSettingAddressBuilder {
	builder.addressLine9 = addressLine9
	builder.addressLine9Flag = true
	return builder
}

// 地址行 9（非拉丁语系的本地文字）
//
// 示例值：McPRG
func (builder *ProfileSettingAddressBuilder) LocalAddressLine9(localAddressLine9 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine9 = localAddressLine9
	builder.localAddressLine9Flag = true
	return builder
}

// 地址行 4（非拉丁语系的本地文字）
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) LocalAddressLine4(localAddressLine4 string) *ProfileSettingAddressBuilder {
	builder.localAddressLine4 = localAddressLine4
	builder.localAddressLine4Flag = true
	return builder
}

// 地址行 5
//
// 示例值：jmwJc
func (builder *ProfileSettingAddressBuilder) AddressLine5(addressLine5 string) *ProfileSettingAddressBuilder {
	builder.addressLine5 = addressLine5
	builder.addressLine5Flag = true
	return builder
}

func (builder *ProfileSettingAddressBuilder) Build() *ProfileSettingAddress {
	req := &ProfileSettingAddress{}
	if builder.addressTypeFlag {
		req.AddressType = &builder.addressType

	}
	if builder.countryRegionFlag {
		req.CountryRegion = &builder.countryRegion

	}
	if builder.regionFlag {
		req.Region = &builder.region

	}
	if builder.regionSubdivision1Flag {
		req.RegionSubdivision1 = &builder.regionSubdivision1

	}
	if builder.regionSubdivision2Flag {
		req.RegionSubdivision2 = &builder.regionSubdivision2

	}
	if builder.cityV2Flag {
		req.CityV2 = &builder.cityV2

	}
	if builder.cityTextFlag {
		req.CityText = &builder.cityText

	}
	if builder.localCityTextFlag {
		req.LocalCityText = &builder.localCityText

	}
	if builder.citySubdivision1Flag {
		req.CitySubdivision1 = &builder.citySubdivision1

	}
	if builder.citySubdivision2Flag {
		req.CitySubdivision2 = &builder.citySubdivision2

	}
	if builder.districtV2Flag {
		req.DistrictV2 = &builder.districtV2

	}
	if builder.postalCodeFlag {
		req.PostalCode = &builder.postalCode

	}
	if builder.addressLine1Flag {
		req.AddressLine1 = &builder.addressLine1

	}
	if builder.localAddressLine1Flag {
		req.LocalAddressLine1 = &builder.localAddressLine1

	}
	if builder.addressLine2Flag {
		req.AddressLine2 = &builder.addressLine2

	}
	if builder.localAddressLine2Flag {
		req.LocalAddressLine2 = &builder.localAddressLine2

	}
	if builder.addressLine3Flag {
		req.AddressLine3 = &builder.addressLine3

	}
	if builder.localAddressLine3Flag {
		req.LocalAddressLine3 = &builder.localAddressLine3

	}
	if builder.addressLine4Flag {
		req.AddressLine4 = &builder.addressLine4

	}
	if builder.localAddressLine5Flag {
		req.LocalAddressLine5 = &builder.localAddressLine5

	}
	if builder.addressLine6Flag {
		req.AddressLine6 = &builder.addressLine6

	}
	if builder.localAddressLine6Flag {
		req.LocalAddressLine6 = &builder.localAddressLine6

	}
	if builder.addressLine7Flag {
		req.AddressLine7 = &builder.addressLine7

	}
	if builder.localAddressLine7Flag {
		req.LocalAddressLine7 = &builder.localAddressLine7

	}
	if builder.addressLine8Flag {
		req.AddressLine8 = &builder.addressLine8

	}
	if builder.localAddressLine8Flag {
		req.LocalAddressLine8 = &builder.localAddressLine8

	}
	if builder.addressLine9Flag {
		req.AddressLine9 = &builder.addressLine9

	}
	if builder.localAddressLine9Flag {
		req.LocalAddressLine9 = &builder.localAddressLine9

	}
	if builder.localAddressLine4Flag {
		req.LocalAddressLine4 = &builder.localAddressLine4

	}
	if builder.addressLine5Flag {
		req.AddressLine5 = &builder.addressLine5

	}
	return req
}

type ProfileSettingBankAccount struct {
	CountryRegion *string `json:"country_region,omitempty"` // 国家 / 地区ID

	BankName *string `json:"bank_name,omitempty"` // 银行名称

	BranchName *string `json:"branch_name,omitempty"` // 支行名称

	AccountHolder *string `json:"account_holder,omitempty"` // 开户人姓名

	BankAccountNumber *string `json:"bank_account_number,omitempty"` // 银行账号

	BankAccountUsages []string `json:"bank_account_usages,omitempty"` // 银行卡用途，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "bank_account" custom_api_name = "bank_account_usage"

	BankAccountType *string `json:"bank_account_type,omitempty"` // 银行卡类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "bank_account" custom_api_name = "bank_account_type"

	BankId *string `json:"bank_id,omitempty"` // 银行ID

	BranchId *string `json:"branch_id,omitempty"` // 银行支行ID

	PaymentType *string `json:"payment_type,omitempty"` // 分配方式，枚举值

	PaymentRate *string `json:"payment_rate,omitempty"` // 分配比例，0～100，保留两位小数

	PaymentAmount *string `json:"payment_amount,omitempty"` // 分配金额，保留两位小数

	Priority *string `json:"priority,omitempty"` // 优先级，不能低于0
}

type ProfileSettingBankAccountBuilder struct {
	countryRegion     string // 国家 / 地区ID
	countryRegionFlag bool

	bankName     string // 银行名称
	bankNameFlag bool

	branchName     string // 支行名称
	branchNameFlag bool

	accountHolder     string // 开户人姓名
	accountHolderFlag bool

	bankAccountNumber     string // 银行账号
	bankAccountNumberFlag bool

	bankAccountUsages     []string // 银行卡用途，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "bank_account" custom_api_name = "bank_account_usage"
	bankAccountUsagesFlag bool

	bankAccountType     string // 银行卡类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "bank_account" custom_api_name = "bank_account_type"
	bankAccountTypeFlag bool

	bankId     string // 银行ID
	bankIdFlag bool

	branchId     string // 银行支行ID
	branchIdFlag bool

	paymentType     string // 分配方式，枚举值
	paymentTypeFlag bool

	paymentRate     string // 分配比例，0～100，保留两位小数
	paymentRateFlag bool

	paymentAmount     string // 分配金额，保留两位小数
	paymentAmountFlag bool

	priority     string // 优先级，不能低于0
	priorityFlag bool
}

func NewProfileSettingBankAccountBuilder() *ProfileSettingBankAccountBuilder {
	builder := &ProfileSettingBankAccountBuilder{}
	return builder
}

// 国家 / 地区ID
//
// 示例值：6862995757234914824
func (builder *ProfileSettingBankAccountBuilder) CountryRegion(countryRegion string) *ProfileSettingBankAccountBuilder {
	builder.countryRegion = countryRegion
	builder.countryRegionFlag = true
	return builder
}

// 银行名称
//
// 示例值：中国农业银行
func (builder *ProfileSettingBankAccountBuilder) BankName(bankName string) *ProfileSettingBankAccountBuilder {
	builder.bankName = bankName
	builder.bankNameFlag = true
	return builder
}

// 支行名称
//
// 示例值：中国农业银行支行
func (builder *ProfileSettingBankAccountBuilder) BranchName(branchName string) *ProfileSettingBankAccountBuilder {
	builder.branchName = branchName
	builder.branchNameFlag = true
	return builder
}

// 开户人姓名
//
// 示例值：孟十五
func (builder *ProfileSettingBankAccountBuilder) AccountHolder(accountHolder string) *ProfileSettingBankAccountBuilder {
	builder.accountHolder = accountHolder
	builder.accountHolderFlag = true
	return builder
}

// 银行账号
//
// 示例值：6231200000001223
func (builder *ProfileSettingBankAccountBuilder) BankAccountNumber(bankAccountNumber string) *ProfileSettingBankAccountBuilder {
	builder.bankAccountNumber = bankAccountNumber
	builder.bankAccountNumberFlag = true
	return builder
}

// 银行卡用途，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "bank_account" custom_api_name = "bank_account_usage"
//
// 示例值：payment
func (builder *ProfileSettingBankAccountBuilder) BankAccountUsages(bankAccountUsages []string) *ProfileSettingBankAccountBuilder {
	builder.bankAccountUsages = bankAccountUsages
	builder.bankAccountUsagesFlag = true
	return builder
}

// 银行卡类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "bank_account" custom_api_name = "bank_account_type"
//
// 示例值：savings
func (builder *ProfileSettingBankAccountBuilder) BankAccountType(bankAccountType string) *ProfileSettingBankAccountBuilder {
	builder.bankAccountType = bankAccountType
	builder.bankAccountTypeFlag = true
	return builder
}

// 银行ID
//
// 示例值：6862995757234914832
func (builder *ProfileSettingBankAccountBuilder) BankId(bankId string) *ProfileSettingBankAccountBuilder {
	builder.bankId = bankId
	builder.bankIdFlag = true
	return builder
}

// 银行支行ID
//
// 示例值：6862995757234914833
func (builder *ProfileSettingBankAccountBuilder) BranchId(branchId string) *ProfileSettingBankAccountBuilder {
	builder.branchId = branchId
	builder.branchIdFlag = true
	return builder
}

// 分配方式，枚举值
//
// 示例值：percent,balance,amount
func (builder *ProfileSettingBankAccountBuilder) PaymentType(paymentType string) *ProfileSettingBankAccountBuilder {
	builder.paymentType = paymentType
	builder.paymentTypeFlag = true
	return builder
}

// 分配比例，0～100，保留两位小数
//
// 示例值：80.28
func (builder *ProfileSettingBankAccountBuilder) PaymentRate(paymentRate string) *ProfileSettingBankAccountBuilder {
	builder.paymentRate = paymentRate
	builder.paymentRateFlag = true
	return builder
}

// 分配金额，保留两位小数
//
// 示例值：5000
func (builder *ProfileSettingBankAccountBuilder) PaymentAmount(paymentAmount string) *ProfileSettingBankAccountBuilder {
	builder.paymentAmount = paymentAmount
	builder.paymentAmountFlag = true
	return builder
}

// 优先级，不能低于0
//
// 示例值：1
func (builder *ProfileSettingBankAccountBuilder) Priority(priority string) *ProfileSettingBankAccountBuilder {
	builder.priority = priority
	builder.priorityFlag = true
	return builder
}

func (builder *ProfileSettingBankAccountBuilder) Build() *ProfileSettingBankAccount {
	req := &ProfileSettingBankAccount{}
	if builder.countryRegionFlag {
		req.CountryRegion = &builder.countryRegion

	}
	if builder.bankNameFlag {
		req.BankName = &builder.bankName

	}
	if builder.branchNameFlag {
		req.BranchName = &builder.branchName

	}
	if builder.accountHolderFlag {
		req.AccountHolder = &builder.accountHolder

	}
	if builder.bankAccountNumberFlag {
		req.BankAccountNumber = &builder.bankAccountNumber

	}
	if builder.bankAccountUsagesFlag {
		req.BankAccountUsages = builder.bankAccountUsages
	}
	if builder.bankAccountTypeFlag {
		req.BankAccountType = &builder.bankAccountType

	}
	if builder.bankIdFlag {
		req.BankId = &builder.bankId

	}
	if builder.branchIdFlag {
		req.BranchId = &builder.branchId

	}
	if builder.paymentTypeFlag {
		req.PaymentType = &builder.paymentType

	}
	if builder.paymentRateFlag {
		req.PaymentRate = &builder.paymentRate

	}
	if builder.paymentAmountFlag {
		req.PaymentAmount = &builder.paymentAmount

	}
	if builder.priorityFlag {
		req.Priority = &builder.priority

	}
	return req
}

type ProfileSettingCareer struct {
	Educations []*ProfileSettingEducation `json:"educations,omitempty"` // 教育经历

	WorkExperiences []*ProfileSettingWorkExperience `json:"work_experiences,omitempty"` // 工作经历

	CustomGroups []*ProfileSettingCustomGroup `json:"custom_groups,omitempty"` // 自定义分组
}

type ProfileSettingCareerBuilder struct {
	educations     []*ProfileSettingEducation // 教育经历
	educationsFlag bool

	workExperiences     []*ProfileSettingWorkExperience // 工作经历
	workExperiencesFlag bool

	customGroups     []*ProfileSettingCustomGroup // 自定义分组
	customGroupsFlag bool
}

func NewProfileSettingCareerBuilder() *ProfileSettingCareerBuilder {
	builder := &ProfileSettingCareerBuilder{}
	return builder
}

// 教育经历
//
// 示例值：
func (builder *ProfileSettingCareerBuilder) Educations(educations []*ProfileSettingEducation) *ProfileSettingCareerBuilder {
	builder.educations = educations
	builder.educationsFlag = true
	return builder
}

// 工作经历
//
// 示例值：
func (builder *ProfileSettingCareerBuilder) WorkExperiences(workExperiences []*ProfileSettingWorkExperience) *ProfileSettingCareerBuilder {
	builder.workExperiences = workExperiences
	builder.workExperiencesFlag = true
	return builder
}

// 自定义分组
//
// 示例值：
func (builder *ProfileSettingCareerBuilder) CustomGroups(customGroups []*ProfileSettingCustomGroup) *ProfileSettingCareerBuilder {
	builder.customGroups = customGroups
	builder.customGroupsFlag = true
	return builder
}

func (builder *ProfileSettingCareerBuilder) Build() *ProfileSettingCareer {
	req := &ProfileSettingCareer{}
	if builder.educationsFlag {
		req.Educations = builder.educations
	}
	if builder.workExperiencesFlag {
		req.WorkExperiences = builder.workExperiences
	}
	if builder.customGroupsFlag {
		req.CustomGroups = builder.customGroups
	}
	return req
}

type ProfileSettingCitizenshipStatus struct {
	CountryRegion *string `json:"country_region,omitempty"` // 国家/地区ID

	CitizenshipStatus *string `json:"citizenship_status,omitempty"` // 公民身份类型
}

type ProfileSettingCitizenshipStatusBuilder struct {
	countryRegion     string // 国家/地区ID
	countryRegionFlag bool

	citizenshipStatus     string // 公民身份类型
	citizenshipStatusFlag bool
}

func NewProfileSettingCitizenshipStatusBuilder() *ProfileSettingCitizenshipStatusBuilder {
	builder := &ProfileSettingCitizenshipStatusBuilder{}
	return builder
}

// 国家/地区ID
//
// 示例值：7324333990030034476
func (builder *ProfileSettingCitizenshipStatusBuilder) CountryRegion(countryRegion string) *ProfileSettingCitizenshipStatusBuilder {
	builder.countryRegion = countryRegion
	builder.countryRegionFlag = true
	return builder
}

// 公民身份类型
//
// 示例值：公民
func (builder *ProfileSettingCitizenshipStatusBuilder) CitizenshipStatus(citizenshipStatus string) *ProfileSettingCitizenshipStatusBuilder {
	builder.citizenshipStatus = citizenshipStatus
	builder.citizenshipStatusFlag = true
	return builder
}

func (builder *ProfileSettingCitizenshipStatusBuilder) Build() *ProfileSettingCitizenshipStatus {
	req := &ProfileSettingCitizenshipStatus{}
	if builder.countryRegionFlag {
		req.CountryRegion = &builder.countryRegion

	}
	if builder.citizenshipStatusFlag {
		req.CitizenshipStatus = &builder.citizenshipStatus

	}
	return req
}

type ProfileSettingCostCenter struct {
	Id *string `json:"id,omitempty"` // 100

	Rate *int `json:"rate,omitempty"` // 分摊比例
}

type ProfileSettingCostCenterBuilder struct {
	id     string // 100
	idFlag bool

	rate     int // 分摊比例
	rateFlag bool
}

func NewProfileSettingCostCenterBuilder() *ProfileSettingCostCenterBuilder {
	builder := &ProfileSettingCostCenterBuilder{}
	return builder
}

// 100
//
// 示例值：6950635856373745165
func (builder *ProfileSettingCostCenterBuilder) Id(id string) *ProfileSettingCostCenterBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 分摊比例
//
// 示例值：100
func (builder *ProfileSettingCostCenterBuilder) Rate(rate int) *ProfileSettingCostCenterBuilder {
	builder.rate = rate
	builder.rateFlag = true
	return builder
}

func (builder *ProfileSettingCostCenterBuilder) Build() *ProfileSettingCostCenter {
	req := &ProfileSettingCostCenter{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.rateFlag {
		req.Rate = &builder.rate

	}
	return req
}

type ProfileSettingCustomField struct {
	FieldName *string `json:"field_name,omitempty"` // 字段名

	Value *string `json:"value,omitempty"` // 字段值, 是 json 转义后的字符串，根据元数据定义不同，字段格式不同。使用方式可参考【操作手册】如何通过 OpenAPI 维护自定义字段
}

type ProfileSettingCustomFieldBuilder struct {
	fieldName     string // 字段名
	fieldNameFlag bool

	value     string // 字段值, 是 json 转义后的字符串，根据元数据定义不同，字段格式不同。使用方式可参考【操作手册】如何通过 OpenAPI 维护自定义字段
	valueFlag bool
}

func NewProfileSettingCustomFieldBuilder() *ProfileSettingCustomFieldBuilder {
	builder := &ProfileSettingCustomFieldBuilder{}
	return builder
}

// 字段名
//
// 示例值：custom_field_1__c
func (builder *ProfileSettingCustomFieldBuilder) FieldName(fieldName string) *ProfileSettingCustomFieldBuilder {
	builder.fieldName = fieldName
	builder.fieldNameFlag = true
	return builder
}

// 字段值, 是 json 转义后的字符串，根据元数据定义不同，字段格式不同。使用方式可参考【操作手册】如何通过 OpenAPI 维护自定义字段
//
// 示例值：[\"custom_enum_0__c\"]
func (builder *ProfileSettingCustomFieldBuilder) Value(value string) *ProfileSettingCustomFieldBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *ProfileSettingCustomFieldBuilder) Build() *ProfileSettingCustomField {
	req := &ProfileSettingCustomField{}
	if builder.fieldNameFlag {
		req.FieldName = &builder.fieldName

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type ProfileSettingCustomGroup struct {
	GroupName *string `json:"group_name,omitempty"` // 分组名

	Items []*ProfileSettingCustomGroupItem `json:"items,omitempty"` // 分组数据
}

type ProfileSettingCustomGroupBuilder struct {
	groupName     string // 分组名
	groupNameFlag bool

	items     []*ProfileSettingCustomGroupItem // 分组数据
	itemsFlag bool
}

func NewProfileSettingCustomGroupBuilder() *ProfileSettingCustomGroupBuilder {
	builder := &ProfileSettingCustomGroupBuilder{}
	return builder
}

// 分组名
//
// 示例值：custom_obj__c
func (builder *ProfileSettingCustomGroupBuilder) GroupName(groupName string) *ProfileSettingCustomGroupBuilder {
	builder.groupName = groupName
	builder.groupNameFlag = true
	return builder
}

// 分组数据
//
// 示例值：
func (builder *ProfileSettingCustomGroupBuilder) Items(items []*ProfileSettingCustomGroupItem) *ProfileSettingCustomGroupBuilder {
	builder.items = items
	builder.itemsFlag = true
	return builder
}

func (builder *ProfileSettingCustomGroupBuilder) Build() *ProfileSettingCustomGroup {
	req := &ProfileSettingCustomGroup{}
	if builder.groupNameFlag {
		req.GroupName = &builder.groupName

	}
	if builder.itemsFlag {
		req.Items = builder.items
	}
	return req
}

type ProfileSettingCustomGroupItem struct {
	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingCustomGroupItemBuilder struct {
	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingCustomGroupItemBuilder() *ProfileSettingCustomGroupItemBuilder {
	builder := &ProfileSettingCustomGroupItemBuilder{}
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingCustomGroupItemBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingCustomGroupItemBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingCustomGroupItemBuilder) Build() *ProfileSettingCustomGroupItem {
	req := &ProfileSettingCustomGroupItem{}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingDataAttachment struct {
	PersonalRecords []*ProfileSettingPersonalRecord `json:"personal_records,omitempty"` // 资料附件记录

	CustomGroups []*ProfileSettingCustomGroup `json:"custom_groups,omitempty"` // 自定义分组
}

type ProfileSettingDataAttachmentBuilder struct {
	personalRecords     []*ProfileSettingPersonalRecord // 资料附件记录
	personalRecordsFlag bool

	customGroups     []*ProfileSettingCustomGroup // 自定义分组
	customGroupsFlag bool
}

func NewProfileSettingDataAttachmentBuilder() *ProfileSettingDataAttachmentBuilder {
	builder := &ProfileSettingDataAttachmentBuilder{}
	return builder
}

// 资料附件记录
//
// 示例值：
func (builder *ProfileSettingDataAttachmentBuilder) PersonalRecords(personalRecords []*ProfileSettingPersonalRecord) *ProfileSettingDataAttachmentBuilder {
	builder.personalRecords = personalRecords
	builder.personalRecordsFlag = true
	return builder
}

// 自定义分组
//
// 示例值：
func (builder *ProfileSettingDataAttachmentBuilder) CustomGroups(customGroups []*ProfileSettingCustomGroup) *ProfileSettingDataAttachmentBuilder {
	builder.customGroups = customGroups
	builder.customGroupsFlag = true
	return builder
}

func (builder *ProfileSettingDataAttachmentBuilder) Build() *ProfileSettingDataAttachment {
	req := &ProfileSettingDataAttachment{}
	if builder.personalRecordsFlag {
		req.PersonalRecords = builder.personalRecords
	}
	if builder.customGroupsFlag {
		req.CustomGroups = builder.customGroups
	}
	return req
}

type ProfileSettingDependent struct {
	LegalName *string `json:"legal_name,omitempty"` // 姓名

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 生日

	RelationshipWithDependent *string `json:"relationship_with_dependent,omitempty"` // 关系，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "dependent" custom_api_name ="relationship_with_dependent"

	Gender *string `json:"gender,omitempty"` // 性别，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "dependent" custom_api_name = "gender"

	Phone *ProfileSettingPhone `json:"phone,omitempty"` // 电话

	Job *string `json:"job,omitempty"` // 岗位

	ChildBirthCertificates []*ProfileSettingFile `json:"child_birth_certificates,omitempty"` // 出生证明

	Employer *string `json:"employer,omitempty"` // 工作单位

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段

	Address *ProfileSettingAddress `json:"address,omitempty"` // 联系地址
}

type ProfileSettingDependentBuilder struct {
	legalName     string // 姓名
	legalNameFlag bool

	dateOfBirth     string // 生日
	dateOfBirthFlag bool

	relationshipWithDependent     string // 关系，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "dependent" custom_api_name ="relationship_with_dependent"
	relationshipWithDependentFlag bool

	gender     string // 性别，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "dependent" custom_api_name = "gender"
	genderFlag bool

	phone     *ProfileSettingPhone // 电话
	phoneFlag bool

	job     string // 岗位
	jobFlag bool

	childBirthCertificates     []*ProfileSettingFile // 出生证明
	childBirthCertificatesFlag bool

	employer     string // 工作单位
	employerFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool

	address     *ProfileSettingAddress // 联系地址
	addressFlag bool
}

func NewProfileSettingDependentBuilder() *ProfileSettingDependentBuilder {
	builder := &ProfileSettingDependentBuilder{}
	return builder
}

// 姓名
//
// 示例值：王大帅
func (builder *ProfileSettingDependentBuilder) LegalName(legalName string) *ProfileSettingDependentBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 生日
//
// 示例值：2006-01-02
func (builder *ProfileSettingDependentBuilder) DateOfBirth(dateOfBirth string) *ProfileSettingDependentBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 关系，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "dependent" custom_api_name ="relationship_with_dependent"
//
// 示例值：parent
func (builder *ProfileSettingDependentBuilder) RelationshipWithDependent(relationshipWithDependent string) *ProfileSettingDependentBuilder {
	builder.relationshipWithDependent = relationshipWithDependent
	builder.relationshipWithDependentFlag = true
	return builder
}

// 性别，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "dependent" custom_api_name = "gender"
//
// 示例值：female
func (builder *ProfileSettingDependentBuilder) Gender(gender string) *ProfileSettingDependentBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *ProfileSettingDependentBuilder) Phone(phone *ProfileSettingPhone) *ProfileSettingDependentBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 岗位
//
// 示例值：岗位
func (builder *ProfileSettingDependentBuilder) Job(job string) *ProfileSettingDependentBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 出生证明
//
// 示例值：
func (builder *ProfileSettingDependentBuilder) ChildBirthCertificates(childBirthCertificates []*ProfileSettingFile) *ProfileSettingDependentBuilder {
	builder.childBirthCertificates = childBirthCertificates
	builder.childBirthCertificatesFlag = true
	return builder
}

// 工作单位
//
// 示例值：飞书
func (builder *ProfileSettingDependentBuilder) Employer(employer string) *ProfileSettingDependentBuilder {
	builder.employer = employer
	builder.employerFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingDependentBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingDependentBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *ProfileSettingDependentBuilder) Address(address *ProfileSettingAddress) *ProfileSettingDependentBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

func (builder *ProfileSettingDependentBuilder) Build() *ProfileSettingDependent {
	req := &ProfileSettingDependent{}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.relationshipWithDependentFlag {
		req.RelationshipWithDependent = &builder.relationshipWithDependent

	}
	if builder.genderFlag {
		req.Gender = &builder.gender

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.jobFlag {
		req.Job = &builder.job

	}
	if builder.childBirthCertificatesFlag {
		req.ChildBirthCertificates = builder.childBirthCertificates
	}
	if builder.employerFlag {
		req.Employer = &builder.employer

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	return req
}

type ProfileSettingEducation struct {
	School *string `json:"school,omitempty"` // 学校

	SchoolEnum *string `json:"school_enum,omitempty"` // "学校, 枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = ""education"" custom_api_name = ""school_name"""

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	LevelOfEducation *string `json:"level_of_education,omitempty"` // 学历, 枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "education" custom_api_name = "level_of_education"

	FieldOfStudy *string `json:"field_of_study,omitempty"` // 专业

	Degree *string `json:"degree,omitempty"` // 学位,枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "education" custom_api_name = "degree"

	FieldOfStudyEnum *string `json:"field_of_study_enum,omitempty"` // "专业，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = ""education"" custom_api_name = ""field_of_study_name"""

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingEducationBuilder struct {
	school     string // 学校
	schoolFlag bool

	schoolEnum     string // "学校, 枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = ""education"" custom_api_name = ""school_name"""
	schoolEnumFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	levelOfEducation     string // 学历, 枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "education" custom_api_name = "level_of_education"
	levelOfEducationFlag bool

	fieldOfStudy     string // 专业
	fieldOfStudyFlag bool

	degree     string // 学位,枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "education" custom_api_name = "degree"
	degreeFlag bool

	fieldOfStudyEnum     string // "专业，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = ""education"" custom_api_name = ""field_of_study_name"""
	fieldOfStudyEnumFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingEducationBuilder() *ProfileSettingEducationBuilder {
	builder := &ProfileSettingEducationBuilder{}
	return builder
}

// 学校
//
// 示例值：北京大学
func (builder *ProfileSettingEducationBuilder) School(school string) *ProfileSettingEducationBuilder {
	builder.school = school
	builder.schoolFlag = true
	return builder
}

// "学校, 枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = ""education"" custom_api_name = ""school_name"""
//
// 示例值：school-177
func (builder *ProfileSettingEducationBuilder) SchoolEnum(schoolEnum string) *ProfileSettingEducationBuilder {
	builder.schoolEnum = schoolEnum
	builder.schoolEnumFlag = true
	return builder
}

// 开始日期
//
// 示例值：2011-09-01
func (builder *ProfileSettingEducationBuilder) StartDate(startDate string) *ProfileSettingEducationBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：2015-06-30
func (builder *ProfileSettingEducationBuilder) EndDate(endDate string) *ProfileSettingEducationBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 学历, 枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "education" custom_api_name = "level_of_education"
//
// 示例值：masters_degree
func (builder *ProfileSettingEducationBuilder) LevelOfEducation(levelOfEducation string) *ProfileSettingEducationBuilder {
	builder.levelOfEducation = levelOfEducation
	builder.levelOfEducationFlag = true
	return builder
}

// 专业
//
// 示例值：软件工程
func (builder *ProfileSettingEducationBuilder) FieldOfStudy(fieldOfStudy string) *ProfileSettingEducationBuilder {
	builder.fieldOfStudy = fieldOfStudy
	builder.fieldOfStudyFlag = true
	return builder
}

// 学位,枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "education" custom_api_name = "degree"
//
// 示例值：bachelors_degree
func (builder *ProfileSettingEducationBuilder) Degree(degree string) *ProfileSettingEducationBuilder {
	builder.degree = degree
	builder.degreeFlag = true
	return builder
}

// "专业，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = ""education"" custom_api_name = ""field_of_study_name"""
//
// 示例值：field_of_study-2
func (builder *ProfileSettingEducationBuilder) FieldOfStudyEnum(fieldOfStudyEnum string) *ProfileSettingEducationBuilder {
	builder.fieldOfStudyEnum = fieldOfStudyEnum
	builder.fieldOfStudyEnumFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingEducationBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingEducationBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingEducationBuilder) Build() *ProfileSettingEducation {
	req := &ProfileSettingEducation{}
	if builder.schoolFlag {
		req.School = &builder.school

	}
	if builder.schoolEnumFlag {
		req.SchoolEnum = &builder.schoolEnum

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.levelOfEducationFlag {
		req.LevelOfEducation = &builder.levelOfEducation

	}
	if builder.fieldOfStudyFlag {
		req.FieldOfStudy = &builder.fieldOfStudy

	}
	if builder.degreeFlag {
		req.Degree = &builder.degree

	}
	if builder.fieldOfStudyEnumFlag {
		req.FieldOfStudyEnum = &builder.fieldOfStudyEnum

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingEmergencyContact struct {
	LegalName *string `json:"legal_name,omitempty"` // 姓名

	Relationship *string `json:"relationship,omitempty"` // 关系，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "emergency_contract" custom_api_name = "relationship"

	IsPrimary *bool `json:"is_primary,omitempty"` // 主要联系人

	Phone *ProfileSettingPhone `json:"phone,omitempty"` // 电话

	Email *string `json:"email,omitempty"` // 邮箱

	Address *ProfileSettingAddress `json:"address,omitempty"` // 地址

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingEmergencyContactBuilder struct {
	legalName     string // 姓名
	legalNameFlag bool

	relationship     string // 关系，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "emergency_contract" custom_api_name = "relationship"
	relationshipFlag bool

	isPrimary     bool // 主要联系人
	isPrimaryFlag bool

	phone     *ProfileSettingPhone // 电话
	phoneFlag bool

	email     string // 邮箱
	emailFlag bool

	address     *ProfileSettingAddress // 地址
	addressFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingEmergencyContactBuilder() *ProfileSettingEmergencyContactBuilder {
	builder := &ProfileSettingEmergencyContactBuilder{}
	return builder
}

// 姓名
//
// 示例值：王大帅
func (builder *ProfileSettingEmergencyContactBuilder) LegalName(legalName string) *ProfileSettingEmergencyContactBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 关系，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "emergency_contract" custom_api_name = "relationship"
//
// 示例值：parent
func (builder *ProfileSettingEmergencyContactBuilder) Relationship(relationship string) *ProfileSettingEmergencyContactBuilder {
	builder.relationship = relationship
	builder.relationshipFlag = true
	return builder
}

// 主要联系人
//
// 示例值：true
func (builder *ProfileSettingEmergencyContactBuilder) IsPrimary(isPrimary bool) *ProfileSettingEmergencyContactBuilder {
	builder.isPrimary = isPrimary
	builder.isPrimaryFlag = true
	return builder
}

// 电话
//
// 示例值：
func (builder *ProfileSettingEmergencyContactBuilder) Phone(phone *ProfileSettingPhone) *ProfileSettingEmergencyContactBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 邮箱
//
// 示例值：1234567@example.feishu.cn
func (builder *ProfileSettingEmergencyContactBuilder) Email(email string) *ProfileSettingEmergencyContactBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 地址
//
// 示例值：
func (builder *ProfileSettingEmergencyContactBuilder) Address(address *ProfileSettingAddress) *ProfileSettingEmergencyContactBuilder {
	builder.address = address
	builder.addressFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingEmergencyContactBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingEmergencyContactBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingEmergencyContactBuilder) Build() *ProfileSettingEmergencyContact {
	req := &ProfileSettingEmergencyContact{}
	if builder.legalNameFlag {
		req.LegalName = &builder.legalName

	}
	if builder.relationshipFlag {
		req.Relationship = &builder.relationship

	}
	if builder.isPrimaryFlag {
		req.IsPrimary = &builder.isPrimary

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.addressFlag {
		req.Address = builder.address
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingEmpBasicInfoForUpdate struct {
	EmployeeNumber *string `json:"employee_number,omitempty"` // 员工工号

	RegularEmployeeStartDate *string `json:"regular_employee_start_date,omitempty"` // 转正式员工日期

	SeniorityDate *string `json:"seniority_date,omitempty"` // 资历起算日期

	WorkEmail *string `json:"work_email,omitempty"` // 工作邮箱

	Phone *ProfileSettingPhone `json:"phone,omitempty"` // 工作电话

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingEmpBasicInfoForUpdateBuilder struct {
	employeeNumber     string // 员工工号
	employeeNumberFlag bool

	regularEmployeeStartDate     string // 转正式员工日期
	regularEmployeeStartDateFlag bool

	seniorityDate     string // 资历起算日期
	seniorityDateFlag bool

	workEmail     string // 工作邮箱
	workEmailFlag bool

	phone     *ProfileSettingPhone // 工作电话
	phoneFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingEmpBasicInfoForUpdateBuilder() *ProfileSettingEmpBasicInfoForUpdateBuilder {
	builder := &ProfileSettingEmpBasicInfoForUpdateBuilder{}
	return builder
}

// 员工工号
//
// 示例值：1000000
func (builder *ProfileSettingEmpBasicInfoForUpdateBuilder) EmployeeNumber(employeeNumber string) *ProfileSettingEmpBasicInfoForUpdateBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 转正式员工日期
//
// 示例值：2021-02-01
func (builder *ProfileSettingEmpBasicInfoForUpdateBuilder) RegularEmployeeStartDate(regularEmployeeStartDate string) *ProfileSettingEmpBasicInfoForUpdateBuilder {
	builder.regularEmployeeStartDate = regularEmployeeStartDate
	builder.regularEmployeeStartDateFlag = true
	return builder
}

// 资历起算日期
//
// 示例值：2021-02-01
func (builder *ProfileSettingEmpBasicInfoForUpdateBuilder) SeniorityDate(seniorityDate string) *ProfileSettingEmpBasicInfoForUpdateBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 工作邮箱
//
// 示例值：12456@test.com
func (builder *ProfileSettingEmpBasicInfoForUpdateBuilder) WorkEmail(workEmail string) *ProfileSettingEmpBasicInfoForUpdateBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 工作电话
//
// 示例值：
func (builder *ProfileSettingEmpBasicInfoForUpdateBuilder) Phone(phone *ProfileSettingPhone) *ProfileSettingEmpBasicInfoForUpdateBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingEmpBasicInfoForUpdateBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingEmpBasicInfoForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingEmpBasicInfoForUpdateBuilder) Build() *ProfileSettingEmpBasicInfoForUpdate {
	req := &ProfileSettingEmpBasicInfoForUpdate{}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.regularEmployeeStartDateFlag {
		req.RegularEmployeeStartDate = &builder.regularEmployeeStartDate

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingEmpContractRecord struct {
	ContractNumber *string `json:"contract_number,omitempty"` // 合同协议编号

	ContractType *string `json:"contract_type,omitempty"` // 合同类型，枚举值可选项 可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "contract" custom_api_name = "contract_type"

	FirstParty *string `json:"first_party,omitempty"` // 甲方公司 ID, 引用Company的ID，详细信息可通过【查询单个公司】接口查询获得

	EffectiveTime *string `json:"effective_time,omitempty"` // 合同开始日期

	DurationType *string `json:"duration_type,omitempty"` // 期限类型，枚举值可选项 可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "contract" custom_api_name = "duration_type"

	ContractEndDate *string `json:"contract_end_date,omitempty"` // 合同结束日期
}

type ProfileSettingEmpContractRecordBuilder struct {
	contractNumber     string // 合同协议编号
	contractNumberFlag bool

	contractType     string // 合同类型，枚举值可选项 可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "contract" custom_api_name = "contract_type"
	contractTypeFlag bool

	firstParty     string // 甲方公司 ID, 引用Company的ID，详细信息可通过【查询单个公司】接口查询获得
	firstPartyFlag bool

	effectiveTime     string // 合同开始日期
	effectiveTimeFlag bool

	durationType     string // 期限类型，枚举值可选项 可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "contract" custom_api_name = "duration_type"
	durationTypeFlag bool

	contractEndDate     string // 合同结束日期
	contractEndDateFlag bool
}

func NewProfileSettingEmpContractRecordBuilder() *ProfileSettingEmpContractRecordBuilder {
	builder := &ProfileSettingEmpContractRecordBuilder{}
	return builder
}

// 合同协议编号
//
// 示例值：6919737965274990093
func (builder *ProfileSettingEmpContractRecordBuilder) ContractNumber(contractNumber string) *ProfileSettingEmpContractRecordBuilder {
	builder.contractNumber = contractNumber
	builder.contractNumberFlag = true
	return builder
}

// 合同类型，枚举值可选项 可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "contract" custom_api_name = "contract_type"
//
// 示例值：labor_contract
func (builder *ProfileSettingEmpContractRecordBuilder) ContractType(contractType string) *ProfileSettingEmpContractRecordBuilder {
	builder.contractType = contractType
	builder.contractTypeFlag = true
	return builder
}

// 甲方公司 ID, 引用Company的ID，详细信息可通过【查询单个公司】接口查询获得
//
// 示例值：6892686614112241165
func (builder *ProfileSettingEmpContractRecordBuilder) FirstParty(firstParty string) *ProfileSettingEmpContractRecordBuilder {
	builder.firstParty = firstParty
	builder.firstPartyFlag = true
	return builder
}

// 合同开始日期
//
// 示例值：2006-01-02
func (builder *ProfileSettingEmpContractRecordBuilder) EffectiveTime(effectiveTime string) *ProfileSettingEmpContractRecordBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 期限类型，枚举值可选项 可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "contract" custom_api_name = "duration_type"
//
// 示例值：fixed_term
func (builder *ProfileSettingEmpContractRecordBuilder) DurationType(durationType string) *ProfileSettingEmpContractRecordBuilder {
	builder.durationType = durationType
	builder.durationTypeFlag = true
	return builder
}

// 合同结束日期
//
// 示例值：2050-01-01
func (builder *ProfileSettingEmpContractRecordBuilder) ContractEndDate(contractEndDate string) *ProfileSettingEmpContractRecordBuilder {
	builder.contractEndDate = contractEndDate
	builder.contractEndDateFlag = true
	return builder
}

func (builder *ProfileSettingEmpContractRecordBuilder) Build() *ProfileSettingEmpContractRecord {
	req := &ProfileSettingEmpContractRecord{}
	if builder.contractNumberFlag {
		req.ContractNumber = &builder.contractNumber

	}
	if builder.contractTypeFlag {
		req.ContractType = &builder.contractType

	}
	if builder.firstPartyFlag {
		req.FirstParty = &builder.firstParty

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.durationTypeFlag {
		req.DurationType = &builder.durationType

	}
	if builder.contractEndDateFlag {
		req.ContractEndDate = &builder.contractEndDate

	}
	return req
}

type ProfileSettingEmpInfoForUpdate struct {
	BasicInfo *ProfileSettingEmpBasicInfoForUpdate `json:"basic_info,omitempty"` // 基本信息

	ProbationInfo *ProfileSettingProbationInfo `json:"probation_info,omitempty"` // 试用期信息

	CustomGroups []*ProfileSettingCustomGroup `json:"custom_groups,omitempty"` // 自定义分组

	SeniorityAdjustInformations []*SeniorityAdjustInformationEdit `json:"seniority_adjust_informations,omitempty"` // 司龄调整信息
}

type ProfileSettingEmpInfoForUpdateBuilder struct {
	basicInfo     *ProfileSettingEmpBasicInfoForUpdate // 基本信息
	basicInfoFlag bool

	probationInfo     *ProfileSettingProbationInfo // 试用期信息
	probationInfoFlag bool

	customGroups     []*ProfileSettingCustomGroup // 自定义分组
	customGroupsFlag bool

	seniorityAdjustInformations     []*SeniorityAdjustInformationEdit // 司龄调整信息
	seniorityAdjustInformationsFlag bool
}

func NewProfileSettingEmpInfoForUpdateBuilder() *ProfileSettingEmpInfoForUpdateBuilder {
	builder := &ProfileSettingEmpInfoForUpdateBuilder{}
	return builder
}

// 基本信息
//
// 示例值：
func (builder *ProfileSettingEmpInfoForUpdateBuilder) BasicInfo(basicInfo *ProfileSettingEmpBasicInfoForUpdate) *ProfileSettingEmpInfoForUpdateBuilder {
	builder.basicInfo = basicInfo
	builder.basicInfoFlag = true
	return builder
}

// 试用期信息
//
// 示例值：
func (builder *ProfileSettingEmpInfoForUpdateBuilder) ProbationInfo(probationInfo *ProfileSettingProbationInfo) *ProfileSettingEmpInfoForUpdateBuilder {
	builder.probationInfo = probationInfo
	builder.probationInfoFlag = true
	return builder
}

// 自定义分组
//
// 示例值：
func (builder *ProfileSettingEmpInfoForUpdateBuilder) CustomGroups(customGroups []*ProfileSettingCustomGroup) *ProfileSettingEmpInfoForUpdateBuilder {
	builder.customGroups = customGroups
	builder.customGroupsFlag = true
	return builder
}

// 司龄调整信息
//
// 示例值：
func (builder *ProfileSettingEmpInfoForUpdateBuilder) SeniorityAdjustInformations(seniorityAdjustInformations []*SeniorityAdjustInformationEdit) *ProfileSettingEmpInfoForUpdateBuilder {
	builder.seniorityAdjustInformations = seniorityAdjustInformations
	builder.seniorityAdjustInformationsFlag = true
	return builder
}

func (builder *ProfileSettingEmpInfoForUpdateBuilder) Build() *ProfileSettingEmpInfoForUpdate {
	req := &ProfileSettingEmpInfoForUpdate{}
	if builder.basicInfoFlag {
		req.BasicInfo = builder.basicInfo
	}
	if builder.probationInfoFlag {
		req.ProbationInfo = builder.probationInfo
	}
	if builder.customGroupsFlag {
		req.CustomGroups = builder.customGroups
	}
	if builder.seniorityAdjustInformationsFlag {
		req.SeniorityAdjustInformations = builder.seniorityAdjustInformations
	}
	return req
}

type ProfileSettingEmploymentBasicInfo struct {
	EmployeeNumber *string `json:"employee_number,omitempty"` // 员工编号

	Rehire *bool `json:"rehire,omitempty"` // 是否离职重聘

	EmploymentInfoBeforeRehire *string `json:"employment_info_before_rehire,omitempty"` // 重聘前雇佣ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 入职日期

	RegularEmployeeStartDate *string `json:"regular_employee_start_date,omitempty"` // 转正式员工日期

	SeniorityDate *string `json:"seniority_date,omitempty"` // 资历起算日期

	WorkEmail *string `json:"work_email,omitempty"` // 工作邮箱

	Phone *ProfileSettingPhone `json:"phone,omitempty"` // 工作电话

	UserGeo *string `json:"user_geo,omitempty"` // 数据驻留地，开通了飞书数据驻留服务的企业，该字段为必填

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingEmploymentBasicInfoBuilder struct {
	employeeNumber     string // 员工编号
	employeeNumberFlag bool

	rehire     bool // 是否离职重聘
	rehireFlag bool

	employmentInfoBeforeRehire     string // 重聘前雇佣ID
	employmentInfoBeforeRehireFlag bool

	effectiveTime     string // 入职日期
	effectiveTimeFlag bool

	regularEmployeeStartDate     string // 转正式员工日期
	regularEmployeeStartDateFlag bool

	seniorityDate     string // 资历起算日期
	seniorityDateFlag bool

	workEmail     string // 工作邮箱
	workEmailFlag bool

	phone     *ProfileSettingPhone // 工作电话
	phoneFlag bool

	userGeo     string // 数据驻留地，开通了飞书数据驻留服务的企业，该字段为必填
	userGeoFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingEmploymentBasicInfoBuilder() *ProfileSettingEmploymentBasicInfoBuilder {
	builder := &ProfileSettingEmploymentBasicInfoBuilder{}
	return builder
}

// 员工编号
//
// 示例值：1000000
func (builder *ProfileSettingEmploymentBasicInfoBuilder) EmployeeNumber(employeeNumber string) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 是否离职重聘
//
// 示例值：true
func (builder *ProfileSettingEmploymentBasicInfoBuilder) Rehire(rehire bool) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// 重聘前雇佣ID
//
// 示例值：7140964208476371111
func (builder *ProfileSettingEmploymentBasicInfoBuilder) EmploymentInfoBeforeRehire(employmentInfoBeforeRehire string) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.employmentInfoBeforeRehire = employmentInfoBeforeRehire
	builder.employmentInfoBeforeRehireFlag = true
	return builder
}

// 入职日期
//
// 示例值：2021-01-01
func (builder *ProfileSettingEmploymentBasicInfoBuilder) EffectiveTime(effectiveTime string) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 转正式员工日期
//
// 示例值：2021-02-01
func (builder *ProfileSettingEmploymentBasicInfoBuilder) RegularEmployeeStartDate(regularEmployeeStartDate string) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.regularEmployeeStartDate = regularEmployeeStartDate
	builder.regularEmployeeStartDateFlag = true
	return builder
}

// 资历起算日期
//
// 示例值：2020-01-01
func (builder *ProfileSettingEmploymentBasicInfoBuilder) SeniorityDate(seniorityDate string) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 工作邮箱
//
// 示例值：12456@test.com
func (builder *ProfileSettingEmploymentBasicInfoBuilder) WorkEmail(workEmail string) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 工作电话
//
// 示例值：
func (builder *ProfileSettingEmploymentBasicInfoBuilder) Phone(phone *ProfileSettingPhone) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 数据驻留地，开通了飞书数据驻留服务的企业，该字段为必填
//
// 示例值：cn
func (builder *ProfileSettingEmploymentBasicInfoBuilder) UserGeo(userGeo string) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.userGeo = userGeo
	builder.userGeoFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingEmploymentBasicInfoBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingEmploymentBasicInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingEmploymentBasicInfoBuilder) Build() *ProfileSettingEmploymentBasicInfo {
	req := &ProfileSettingEmploymentBasicInfo{}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.rehireFlag {
		req.Rehire = &builder.rehire

	}
	if builder.employmentInfoBeforeRehireFlag {
		req.EmploymentInfoBeforeRehire = &builder.employmentInfoBeforeRehire

	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.regularEmployeeStartDateFlag {
		req.RegularEmployeeStartDate = &builder.regularEmployeeStartDate

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.userGeoFlag {
		req.UserGeo = &builder.userGeo

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingEmploymentInfo struct {
	BasicInfo *ProfileSettingEmploymentBasicInfo `json:"basic_info,omitempty"` // 基本信息

	ProbationInfo *ProfileSettingProbationInfo `json:"probation_info,omitempty"` // 试用期信息

	EmploymentRecord *ProfileSettingEmploymentRecord `json:"employment_record,omitempty"` // 任职记录

	EmpContractRecord *ProfileSettingEmpContractRecord `json:"emp_contract_record,omitempty"` // 合同记录

	CustomGroups []*ProfileSettingCustomGroup `json:"custom_groups,omitempty"` // 自定义分组

	CustomOrgGroups []*JobDataCustomOrg `json:"custom_org_groups,omitempty"` // 自定义组织记录

	SeniorityAdjustInformations []*SeniorityAdjustInformationEdit `json:"seniority_adjust_informations,omitempty"` // 司龄调整信息

	DefaultCostCenter *DefaultCostCenterRecord `json:"default_cost_center,omitempty"` // 默认成本中心

	CostAllocation *CostAllocation `json:"cost_allocation,omitempty"` // 成本分摊
}

type ProfileSettingEmploymentInfoBuilder struct {
	basicInfo     *ProfileSettingEmploymentBasicInfo // 基本信息
	basicInfoFlag bool

	probationInfo     *ProfileSettingProbationInfo // 试用期信息
	probationInfoFlag bool

	employmentRecord     *ProfileSettingEmploymentRecord // 任职记录
	employmentRecordFlag bool

	empContractRecord     *ProfileSettingEmpContractRecord // 合同记录
	empContractRecordFlag bool

	customGroups     []*ProfileSettingCustomGroup // 自定义分组
	customGroupsFlag bool

	customOrgGroups     []*JobDataCustomOrg // 自定义组织记录
	customOrgGroupsFlag bool

	seniorityAdjustInformations     []*SeniorityAdjustInformationEdit // 司龄调整信息
	seniorityAdjustInformationsFlag bool

	defaultCostCenter     *DefaultCostCenterRecord // 默认成本中心
	defaultCostCenterFlag bool

	costAllocation     *CostAllocation // 成本分摊
	costAllocationFlag bool
}

func NewProfileSettingEmploymentInfoBuilder() *ProfileSettingEmploymentInfoBuilder {
	builder := &ProfileSettingEmploymentInfoBuilder{}
	return builder
}

// 基本信息
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) BasicInfo(basicInfo *ProfileSettingEmploymentBasicInfo) *ProfileSettingEmploymentInfoBuilder {
	builder.basicInfo = basicInfo
	builder.basicInfoFlag = true
	return builder
}

// 试用期信息
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) ProbationInfo(probationInfo *ProfileSettingProbationInfo) *ProfileSettingEmploymentInfoBuilder {
	builder.probationInfo = probationInfo
	builder.probationInfoFlag = true
	return builder
}

// 任职记录
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) EmploymentRecord(employmentRecord *ProfileSettingEmploymentRecord) *ProfileSettingEmploymentInfoBuilder {
	builder.employmentRecord = employmentRecord
	builder.employmentRecordFlag = true
	return builder
}

// 合同记录
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) EmpContractRecord(empContractRecord *ProfileSettingEmpContractRecord) *ProfileSettingEmploymentInfoBuilder {
	builder.empContractRecord = empContractRecord
	builder.empContractRecordFlag = true
	return builder
}

// 自定义分组
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) CustomGroups(customGroups []*ProfileSettingCustomGroup) *ProfileSettingEmploymentInfoBuilder {
	builder.customGroups = customGroups
	builder.customGroupsFlag = true
	return builder
}

// 自定义组织记录
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) CustomOrgGroups(customOrgGroups []*JobDataCustomOrg) *ProfileSettingEmploymentInfoBuilder {
	builder.customOrgGroups = customOrgGroups
	builder.customOrgGroupsFlag = true
	return builder
}

// 司龄调整信息
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) SeniorityAdjustInformations(seniorityAdjustInformations []*SeniorityAdjustInformationEdit) *ProfileSettingEmploymentInfoBuilder {
	builder.seniorityAdjustInformations = seniorityAdjustInformations
	builder.seniorityAdjustInformationsFlag = true
	return builder
}

// 默认成本中心
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) DefaultCostCenter(defaultCostCenter *DefaultCostCenterRecord) *ProfileSettingEmploymentInfoBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *ProfileSettingEmploymentInfoBuilder) CostAllocation(costAllocation *CostAllocation) *ProfileSettingEmploymentInfoBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

func (builder *ProfileSettingEmploymentInfoBuilder) Build() *ProfileSettingEmploymentInfo {
	req := &ProfileSettingEmploymentInfo{}
	if builder.basicInfoFlag {
		req.BasicInfo = builder.basicInfo
	}
	if builder.probationInfoFlag {
		req.ProbationInfo = builder.probationInfo
	}
	if builder.employmentRecordFlag {
		req.EmploymentRecord = builder.employmentRecord
	}
	if builder.empContractRecordFlag {
		req.EmpContractRecord = builder.empContractRecord
	}
	if builder.customGroupsFlag {
		req.CustomGroups = builder.customGroups
	}
	if builder.customOrgGroupsFlag {
		req.CustomOrgGroups = builder.customOrgGroups
	}
	if builder.seniorityAdjustInformationsFlag {
		req.SeniorityAdjustInformations = builder.seniorityAdjustInformations
	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	return req
}

type ProfileSettingEmploymentRecord struct {
	EmployeeType *string `json:"employee_type,omitempty"` // 人员类型 ID

	Department *string `json:"department,omitempty"` // 部门 ID

	DirectManager *string `json:"direct_manager,omitempty"` // 实线主管雇佣ID

	WorkingHoursType *string `json:"working_hours_type,omitempty"` // 工时制度 ID

	CostCenters []*ProfileSettingCostCenter `json:"cost_centers,omitempty"` // 成本中心分摊信息

	DirectManagerEffectiveTime *string `json:"direct_manager_effective_time,omitempty"` // 实线主管入职日期

	DottedLineManager *string `json:"dotted_line_manager,omitempty"` // 虚线主管雇佣ID

	DottedLineManagerEffectiveTime *string `json:"dotted_line_manager_effective_time,omitempty"` // 虚线主管入职日期

	Job *string `json:"job,omitempty"` // 职务 ID

	JobFamily *string `json:"job_family,omitempty"` // 职务序列 ID

	JobLevel *string `json:"job_level,omitempty"` // 职务级别 ID

	JobGrade *string `json:"job_grade,omitempty"` // 职等 ID

	WorkLocation *string `json:"work_location,omitempty"` // 工作地点 ID

	WeeklyWorkingHours *int `json:"weekly_working_hours,omitempty"` // 周工作时长

	Position *string `json:"position,omitempty"` // 岗位ID

	Pathway *string `json:"pathway,omitempty"` // 通道ID
}

type ProfileSettingEmploymentRecordBuilder struct {
	employeeType     string // 人员类型 ID
	employeeTypeFlag bool

	department     string // 部门 ID
	departmentFlag bool

	directManager     string // 实线主管雇佣ID
	directManagerFlag bool

	workingHoursType     string // 工时制度 ID
	workingHoursTypeFlag bool

	costCenters     []*ProfileSettingCostCenter // 成本中心分摊信息
	costCentersFlag bool

	directManagerEffectiveTime     string // 实线主管入职日期
	directManagerEffectiveTimeFlag bool

	dottedLineManager     string // 虚线主管雇佣ID
	dottedLineManagerFlag bool

	dottedLineManagerEffectiveTime     string // 虚线主管入职日期
	dottedLineManagerEffectiveTimeFlag bool

	job     string // 职务 ID
	jobFlag bool

	jobFamily     string // 职务序列 ID
	jobFamilyFlag bool

	jobLevel     string // 职务级别 ID
	jobLevelFlag bool

	jobGrade     string // 职等 ID
	jobGradeFlag bool

	workLocation     string // 工作地点 ID
	workLocationFlag bool

	weeklyWorkingHours     int // 周工作时长
	weeklyWorkingHoursFlag bool

	position     string // 岗位ID
	positionFlag bool

	pathway     string // 通道ID
	pathwayFlag bool
}

func NewProfileSettingEmploymentRecordBuilder() *ProfileSettingEmploymentRecordBuilder {
	builder := &ProfileSettingEmploymentRecordBuilder{}
	return builder
}

// 人员类型 ID
//
// 示例值：6890452208593372679
func (builder *ProfileSettingEmploymentRecordBuilder) EmployeeType(employeeType string) *ProfileSettingEmploymentRecordBuilder {
	builder.employeeType = employeeType
	builder.employeeTypeFlag = true
	return builder
}

// 部门 ID
//
// 示例值：6890452208593372679
func (builder *ProfileSettingEmploymentRecordBuilder) Department(department string) *ProfileSettingEmploymentRecordBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 实线主管雇佣ID
//
// 示例值：6893014062142064135
func (builder *ProfileSettingEmploymentRecordBuilder) DirectManager(directManager string) *ProfileSettingEmploymentRecordBuilder {
	builder.directManager = directManager
	builder.directManagerFlag = true
	return builder
}

// 工时制度 ID
//
// 示例值：6890452208593372600
func (builder *ProfileSettingEmploymentRecordBuilder) WorkingHoursType(workingHoursType string) *ProfileSettingEmploymentRecordBuilder {
	builder.workingHoursType = workingHoursType
	builder.workingHoursTypeFlag = true
	return builder
}

// 成本中心分摊信息
//
// 示例值：
func (builder *ProfileSettingEmploymentRecordBuilder) CostCenters(costCenters []*ProfileSettingCostCenter) *ProfileSettingEmploymentRecordBuilder {
	builder.costCenters = costCenters
	builder.costCentersFlag = true
	return builder
}

// 实线主管入职日期
//
// 示例值：2020-01-01
func (builder *ProfileSettingEmploymentRecordBuilder) DirectManagerEffectiveTime(directManagerEffectiveTime string) *ProfileSettingEmploymentRecordBuilder {
	builder.directManagerEffectiveTime = directManagerEffectiveTime
	builder.directManagerEffectiveTimeFlag = true
	return builder
}

// 虚线主管雇佣ID
//
// 示例值：6893014062142064136
func (builder *ProfileSettingEmploymentRecordBuilder) DottedLineManager(dottedLineManager string) *ProfileSettingEmploymentRecordBuilder {
	builder.dottedLineManager = dottedLineManager
	builder.dottedLineManagerFlag = true
	return builder
}

// 虚线主管入职日期
//
// 示例值：2020-01-01
func (builder *ProfileSettingEmploymentRecordBuilder) DottedLineManagerEffectiveTime(dottedLineManagerEffectiveTime string) *ProfileSettingEmploymentRecordBuilder {
	builder.dottedLineManagerEffectiveTime = dottedLineManagerEffectiveTime
	builder.dottedLineManagerEffectiveTimeFlag = true
	return builder
}

// 职务 ID
//
// 示例值：6890452208593372679
func (builder *ProfileSettingEmploymentRecordBuilder) Job(job string) *ProfileSettingEmploymentRecordBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 职务序列 ID
//
// 示例值：6890452208593372680
func (builder *ProfileSettingEmploymentRecordBuilder) JobFamily(jobFamily string) *ProfileSettingEmploymentRecordBuilder {
	builder.jobFamily = jobFamily
	builder.jobFamilyFlag = true
	return builder
}

// 职务级别 ID
//
// 示例值：6890452208593372681
func (builder *ProfileSettingEmploymentRecordBuilder) JobLevel(jobLevel string) *ProfileSettingEmploymentRecordBuilder {
	builder.jobLevel = jobLevel
	builder.jobLevelFlag = true
	return builder
}

// 职等 ID
//
// 示例值：6890452208593372682
func (builder *ProfileSettingEmploymentRecordBuilder) JobGrade(jobGrade string) *ProfileSettingEmploymentRecordBuilder {
	builder.jobGrade = jobGrade
	builder.jobGradeFlag = true
	return builder
}

// 工作地点 ID
//
// 示例值：6890452208593372683
func (builder *ProfileSettingEmploymentRecordBuilder) WorkLocation(workLocation string) *ProfileSettingEmploymentRecordBuilder {
	builder.workLocation = workLocation
	builder.workLocationFlag = true
	return builder
}

// 周工作时长
//
// 示例值：100
func (builder *ProfileSettingEmploymentRecordBuilder) WeeklyWorkingHours(weeklyWorkingHours int) *ProfileSettingEmploymentRecordBuilder {
	builder.weeklyWorkingHours = weeklyWorkingHours
	builder.weeklyWorkingHoursFlag = true
	return builder
}

// 岗位ID
//
// 示例值：6890452208593372684
func (builder *ProfileSettingEmploymentRecordBuilder) Position(position string) *ProfileSettingEmploymentRecordBuilder {
	builder.position = position
	builder.positionFlag = true
	return builder
}

// 通道ID
//
// 示例值：6890452208593372684
func (builder *ProfileSettingEmploymentRecordBuilder) Pathway(pathway string) *ProfileSettingEmploymentRecordBuilder {
	builder.pathway = pathway
	builder.pathwayFlag = true
	return builder
}

func (builder *ProfileSettingEmploymentRecordBuilder) Build() *ProfileSettingEmploymentRecord {
	req := &ProfileSettingEmploymentRecord{}
	if builder.employeeTypeFlag {
		req.EmployeeType = &builder.employeeType

	}
	if builder.departmentFlag {
		req.Department = &builder.department

	}
	if builder.directManagerFlag {
		req.DirectManager = &builder.directManager

	}
	if builder.workingHoursTypeFlag {
		req.WorkingHoursType = &builder.workingHoursType

	}
	if builder.costCentersFlag {
		req.CostCenters = builder.costCenters
	}
	if builder.directManagerEffectiveTimeFlag {
		req.DirectManagerEffectiveTime = &builder.directManagerEffectiveTime

	}
	if builder.dottedLineManagerFlag {
		req.DottedLineManager = &builder.dottedLineManager

	}
	if builder.dottedLineManagerEffectiveTimeFlag {
		req.DottedLineManagerEffectiveTime = &builder.dottedLineManagerEffectiveTime

	}
	if builder.jobFlag {
		req.Job = &builder.job

	}
	if builder.jobFamilyFlag {
		req.JobFamily = &builder.jobFamily

	}
	if builder.jobLevelFlag {
		req.JobLevel = &builder.jobLevel

	}
	if builder.jobGradeFlag {
		req.JobGrade = &builder.jobGrade

	}
	if builder.workLocationFlag {
		req.WorkLocation = &builder.workLocation

	}
	if builder.weeklyWorkingHoursFlag {
		req.WeeklyWorkingHours = &builder.weeklyWorkingHours

	}
	if builder.positionFlag {
		req.Position = &builder.position

	}
	if builder.pathwayFlag {
		req.Pathway = &builder.pathway

	}
	return req
}

type ProfileSettingFieldError struct {
	FieldName *string `json:"field_name,omitempty"` // 字段路径

	ErrorMsg *string `json:"error_msg,omitempty"` // 报错信息
}

type ProfileSettingFieldErrorBuilder struct {
	fieldName     string // 字段路径
	fieldNameFlag bool

	errorMsg     string // 报错信息
	errorMsgFlag bool
}

func NewProfileSettingFieldErrorBuilder() *ProfileSettingFieldErrorBuilder {
	builder := &ProfileSettingFieldErrorBuilder{}
	return builder
}

// 字段路径
//
// 示例值：emp_contract_record.0.effective_time
func (builder *ProfileSettingFieldErrorBuilder) FieldName(fieldName string) *ProfileSettingFieldErrorBuilder {
	builder.fieldName = fieldName
	builder.fieldNameFlag = true
	return builder
}

// 报错信息
//
// 示例值：填写过程中新增以下必填信息 effective_time 等，请填写后重试
func (builder *ProfileSettingFieldErrorBuilder) ErrorMsg(errorMsg string) *ProfileSettingFieldErrorBuilder {
	builder.errorMsg = errorMsg
	builder.errorMsgFlag = true
	return builder
}

func (builder *ProfileSettingFieldErrorBuilder) Build() *ProfileSettingFieldError {
	req := &ProfileSettingFieldError{}
	if builder.fieldNameFlag {
		req.FieldName = &builder.fieldName

	}
	if builder.errorMsgFlag {
		req.ErrorMsg = &builder.errorMsg

	}
	return req
}

type ProfileSettingFile struct {
	FileId *string `json:"file_id,omitempty"` // 文件ID

	MimeType *string `json:"mime_type,omitempty"` // 文件MIME类型

	Name *string `json:"name,omitempty"` // 文件名

	Size *string `json:"size,omitempty"` // 文件大小(KB)

	Token *string `json:"token,omitempty"` // 文件token
}

type ProfileSettingFileBuilder struct {
	fileId     string // 文件ID
	fileIdFlag bool

	mimeType     string // 文件MIME类型
	mimeTypeFlag bool

	name     string // 文件名
	nameFlag bool

	size     string // 文件大小(KB)
	sizeFlag bool

	token     string // 文件token
	tokenFlag bool
}

func NewProfileSettingFileBuilder() *ProfileSettingFileBuilder {
	builder := &ProfileSettingFileBuilder{}
	return builder
}

// 文件ID
//
// 示例值：150018109586e8ea745e47ae8feb3722dbe1d03a181336393633393133303431393831343930373235150200
func (builder *ProfileSettingFileBuilder) FileId(fileId string) *ProfileSettingFileBuilder {
	builder.fileId = fileId
	builder.fileIdFlag = true
	return builder
}

// 文件MIME类型
//
// 示例值：zip
func (builder *ProfileSettingFileBuilder) MimeType(mimeType string) *ProfileSettingFileBuilder {
	builder.mimeType = mimeType
	builder.mimeTypeFlag = true
	return builder
}

// 文件名
//
// 示例值：附件.zip
func (builder *ProfileSettingFileBuilder) Name(name string) *ProfileSettingFileBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 文件大小(KB)
//
// 示例值：1000
func (builder *ProfileSettingFileBuilder) Size(size string) *ProfileSettingFileBuilder {
	builder.size = size
	builder.sizeFlag = true
	return builder
}

// 文件token
//
// 示例值：0a423bc7ea7c4a439d066bf070616782
func (builder *ProfileSettingFileBuilder) Token(token string) *ProfileSettingFileBuilder {
	builder.token = token
	builder.tokenFlag = true
	return builder
}

func (builder *ProfileSettingFileBuilder) Build() *ProfileSettingFile {
	req := &ProfileSettingFile{}
	if builder.fileIdFlag {
		req.FileId = &builder.fileId

	}
	if builder.mimeTypeFlag {
		req.MimeType = &builder.mimeType

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.sizeFlag {
		req.Size = &builder.size

	}
	if builder.tokenFlag {
		req.Token = &builder.token

	}
	return req
}

type ProfileSettingHukou struct {
	HukouType *string `json:"hukou_type,omitempty"` // 户口类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person_info_chn" custom_api_name = "hukou_type"

	HukouLocation *string `json:"hukou_location,omitempty"` // 户口所在地

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingHukouBuilder struct {
	hukouType     string // 户口类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person_info_chn" custom_api_name = "hukou_type"
	hukouTypeFlag bool

	hukouLocation     string // 户口所在地
	hukouLocationFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingHukouBuilder() *ProfileSettingHukouBuilder {
	builder := &ProfileSettingHukouBuilder{}
	return builder
}

// 户口类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person_info_chn" custom_api_name = "hukou_type"
//
// 示例值：local_urban_residence
func (builder *ProfileSettingHukouBuilder) HukouType(hukouType string) *ProfileSettingHukouBuilder {
	builder.hukouType = hukouType
	builder.hukouTypeFlag = true
	return builder
}

// 户口所在地
//
// 示例值：北京
func (builder *ProfileSettingHukouBuilder) HukouLocation(hukouLocation string) *ProfileSettingHukouBuilder {
	builder.hukouLocation = hukouLocation
	builder.hukouLocationFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingHukouBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingHukouBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingHukouBuilder) Build() *ProfileSettingHukou {
	req := &ProfileSettingHukou{}
	if builder.hukouTypeFlag {
		req.HukouType = &builder.hukouType

	}
	if builder.hukouLocationFlag {
		req.HukouLocation = &builder.hukouLocation

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingI18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文

	EnUs *string `json:"en_us,omitempty"` // 英文
}

type ProfileSettingI18nBuilder struct {
	zhCn     string // 中文
	zhCnFlag bool

	enUs     string // 英文
	enUsFlag bool
}

func NewProfileSettingI18nBuilder() *ProfileSettingI18nBuilder {
	builder := &ProfileSettingI18nBuilder{}
	return builder
}

// 中文
//
// 示例值：中文名
func (builder *ProfileSettingI18nBuilder) ZhCn(zhCn string) *ProfileSettingI18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文
//
// 示例值：english name
func (builder *ProfileSettingI18nBuilder) EnUs(enUs string) *ProfileSettingI18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *ProfileSettingI18nBuilder) Build() *ProfileSettingI18n {
	req := &ProfileSettingI18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type ProfileSettingName struct {
	AdditionalNameType *string `json:"additional_name_type,omitempty"` // 补充姓名类型, 枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "additional_name_type"

	CountryRegion *string `json:"country_region,omitempty"` // 国家 / 地区 ID

	FullName *string `json:"full_name,omitempty"` // 全名

	Hereditary *string `json:"hereditary,omitempty"` // 姓氏称谓

	MiddleName *string `json:"middle_name,omitempty"` // 中间名

	Secondary *string `json:"secondary,omitempty"` // 第二姓氏

	Social *string `json:"social,omitempty"` // 尊称,枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "social"

	Tertiary *string `json:"tertiary,omitempty"` // 婚后姓氏

	LocalFirstName2 *string `json:"local_first_name_2,omitempty"` // 名 - 第二本地文字

	LocalMiddleName *string `json:"local_middle_name,omitempty"` // 本地中间名

	LocalPrimary *string `json:"local_primary,omitempty"` // 姓 - 本地文字

	LocalPrimary2 *string `json:"local_primary_2,omitempty"` // 姓 - 第二本地文字

	LocalSecondary *string `json:"local_secondary,omitempty"` // 第二姓氏 - 本地文字

	Title *string `json:"title,omitempty"` // 头衔, 枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "title"

	LocalFirstName *string `json:"local_first_name,omitempty"` // 名 - 本地文字

	CustomLocalName *string `json:"custom_local_name,omitempty"` // 自定义姓名（本地文字）

	CustomWesternName *string `json:"custom_western_name,omitempty"` // 自定义姓名（西方文字）

	NameType *string `json:"name_type,omitempty"` // 姓名类型

	FirstName *string `json:"first_name,omitempty"` // 名

	NamePrimary *string `json:"name_primary,omitempty"` // 姓
}

type ProfileSettingNameBuilder struct {
	additionalNameType     string // 补充姓名类型, 枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "additional_name_type"
	additionalNameTypeFlag bool

	countryRegion     string // 国家 / 地区 ID
	countryRegionFlag bool

	fullName     string // 全名
	fullNameFlag bool

	hereditary     string // 姓氏称谓
	hereditaryFlag bool

	middleName     string // 中间名
	middleNameFlag bool

	secondary     string // 第二姓氏
	secondaryFlag bool

	social     string // 尊称,枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "social"
	socialFlag bool

	tertiary     string // 婚后姓氏
	tertiaryFlag bool

	localFirstName2     string // 名 - 第二本地文字
	localFirstName2Flag bool

	localMiddleName     string // 本地中间名
	localMiddleNameFlag bool

	localPrimary     string // 姓 - 本地文字
	localPrimaryFlag bool

	localPrimary2     string // 姓 - 第二本地文字
	localPrimary2Flag bool

	localSecondary     string // 第二姓氏 - 本地文字
	localSecondaryFlag bool

	title     string // 头衔, 枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "title"
	titleFlag bool

	localFirstName     string // 名 - 本地文字
	localFirstNameFlag bool

	customLocalName     string // 自定义姓名（本地文字）
	customLocalNameFlag bool

	customWesternName     string // 自定义姓名（西方文字）
	customWesternNameFlag bool

	nameType     string // 姓名类型
	nameTypeFlag bool

	firstName     string // 名
	firstNameFlag bool

	namePrimary     string // 姓
	namePrimaryFlag bool
}

func NewProfileSettingNameBuilder() *ProfileSettingNameBuilder {
	builder := &ProfileSettingNameBuilder{}
	return builder
}

// 补充姓名类型, 枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "additional_name_type"
//
// 示例值：emergency_contact_name
func (builder *ProfileSettingNameBuilder) AdditionalNameType(additionalNameType string) *ProfileSettingNameBuilder {
	builder.additionalNameType = additionalNameType
	builder.additionalNameTypeFlag = true
	return builder
}

// 国家 / 地区 ID
//
// 示例值：6862995757234914824
func (builder *ProfileSettingNameBuilder) CountryRegion(countryRegion string) *ProfileSettingNameBuilder {
	builder.countryRegion = countryRegion
	builder.countryRegionFlag = true
	return builder
}

// 全名
//
// 示例值：王大帅
func (builder *ProfileSettingNameBuilder) FullName(fullName string) *ProfileSettingNameBuilder {
	builder.fullName = fullName
	builder.fullNameFlag = true
	return builder
}

// 姓氏称谓
//
// 示例值：王
func (builder *ProfileSettingNameBuilder) Hereditary(hereditary string) *ProfileSettingNameBuilder {
	builder.hereditary = hereditary
	builder.hereditaryFlag = true
	return builder
}

// 中间名
//
// 示例值：大
func (builder *ProfileSettingNameBuilder) MiddleName(middleName string) *ProfileSettingNameBuilder {
	builder.middleName = middleName
	builder.middleNameFlag = true
	return builder
}

// 第二姓氏
//
// 示例值：王
func (builder *ProfileSettingNameBuilder) Secondary(secondary string) *ProfileSettingNameBuilder {
	builder.secondary = secondary
	builder.secondaryFlag = true
	return builder
}

// 尊称,枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "social"
//
// 示例值：ii
func (builder *ProfileSettingNameBuilder) Social(social string) *ProfileSettingNameBuilder {
	builder.social = social
	builder.socialFlag = true
	return builder
}

// 婚后姓氏
//
// 示例值：王
func (builder *ProfileSettingNameBuilder) Tertiary(tertiary string) *ProfileSettingNameBuilder {
	builder.tertiary = tertiary
	builder.tertiaryFlag = true
	return builder
}

// 名 - 第二本地文字
//
// 示例值：五
func (builder *ProfileSettingNameBuilder) LocalFirstName2(localFirstName2 string) *ProfileSettingNameBuilder {
	builder.localFirstName2 = localFirstName2
	builder.localFirstName2Flag = true
	return builder
}

// 本地中间名
//
// 示例值：大
func (builder *ProfileSettingNameBuilder) LocalMiddleName(localMiddleName string) *ProfileSettingNameBuilder {
	builder.localMiddleName = localMiddleName
	builder.localMiddleNameFlag = true
	return builder
}

// 姓 - 本地文字
//
// 示例值：黄
func (builder *ProfileSettingNameBuilder) LocalPrimary(localPrimary string) *ProfileSettingNameBuilder {
	builder.localPrimary = localPrimary
	builder.localPrimaryFlag = true
	return builder
}

// 姓 - 第二本地文字
//
// 示例值：王
func (builder *ProfileSettingNameBuilder) LocalPrimary2(localPrimary2 string) *ProfileSettingNameBuilder {
	builder.localPrimary2 = localPrimary2
	builder.localPrimary2Flag = true
	return builder
}

// 第二姓氏 - 本地文字
//
// 示例值：王
func (builder *ProfileSettingNameBuilder) LocalSecondary(localSecondary string) *ProfileSettingNameBuilder {
	builder.localSecondary = localSecondary
	builder.localSecondaryFlag = true
	return builder
}

// 头衔, 枚举值。可选项可以通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "person_name" - custom_api_name = "title"
//
// 示例值：mr
func (builder *ProfileSettingNameBuilder) Title(title string) *ProfileSettingNameBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 名 - 本地文字
//
// 示例值：四
func (builder *ProfileSettingNameBuilder) LocalFirstName(localFirstName string) *ProfileSettingNameBuilder {
	builder.localFirstName = localFirstName
	builder.localFirstNameFlag = true
	return builder
}

// 自定义姓名（本地文字）
//
// 示例值：王大帅
func (builder *ProfileSettingNameBuilder) CustomLocalName(customLocalName string) *ProfileSettingNameBuilder {
	builder.customLocalName = customLocalName
	builder.customLocalNameFlag = true
	return builder
}

// 自定义姓名（西方文字）
//
// 示例值：王大帅
func (builder *ProfileSettingNameBuilder) CustomWesternName(customWesternName string) *ProfileSettingNameBuilder {
	builder.customWesternName = customWesternName
	builder.customWesternNameFlag = true
	return builder
}

// 姓名类型
//
// 示例值：legal_name
func (builder *ProfileSettingNameBuilder) NameType(nameType string) *ProfileSettingNameBuilder {
	builder.nameType = nameType
	builder.nameTypeFlag = true
	return builder
}

// 名
//
// 示例值：帅
func (builder *ProfileSettingNameBuilder) FirstName(firstName string) *ProfileSettingNameBuilder {
	builder.firstName = firstName
	builder.firstNameFlag = true
	return builder
}

// 姓
//
// 示例值：王
func (builder *ProfileSettingNameBuilder) NamePrimary(namePrimary string) *ProfileSettingNameBuilder {
	builder.namePrimary = namePrimary
	builder.namePrimaryFlag = true
	return builder
}

func (builder *ProfileSettingNameBuilder) Build() *ProfileSettingName {
	req := &ProfileSettingName{}
	if builder.additionalNameTypeFlag {
		req.AdditionalNameType = &builder.additionalNameType

	}
	if builder.countryRegionFlag {
		req.CountryRegion = &builder.countryRegion

	}
	if builder.fullNameFlag {
		req.FullName = &builder.fullName

	}
	if builder.hereditaryFlag {
		req.Hereditary = &builder.hereditary

	}
	if builder.middleNameFlag {
		req.MiddleName = &builder.middleName

	}
	if builder.secondaryFlag {
		req.Secondary = &builder.secondary

	}
	if builder.socialFlag {
		req.Social = &builder.social

	}
	if builder.tertiaryFlag {
		req.Tertiary = &builder.tertiary

	}
	if builder.localFirstName2Flag {
		req.LocalFirstName2 = &builder.localFirstName2

	}
	if builder.localMiddleNameFlag {
		req.LocalMiddleName = &builder.localMiddleName

	}
	if builder.localPrimaryFlag {
		req.LocalPrimary = &builder.localPrimary

	}
	if builder.localPrimary2Flag {
		req.LocalPrimary2 = &builder.localPrimary2

	}
	if builder.localSecondaryFlag {
		req.LocalSecondary = &builder.localSecondary

	}
	if builder.titleFlag {
		req.Title = &builder.title

	}
	if builder.localFirstNameFlag {
		req.LocalFirstName = &builder.localFirstName

	}
	if builder.customLocalNameFlag {
		req.CustomLocalName = &builder.customLocalName

	}
	if builder.customWesternNameFlag {
		req.CustomWesternName = &builder.customWesternName

	}
	if builder.nameTypeFlag {
		req.NameType = &builder.nameType

	}
	if builder.firstNameFlag {
		req.FirstName = &builder.firstName

	}
	if builder.namePrimaryFlag {
		req.NamePrimary = &builder.namePrimary

	}
	return req
}

type ProfileSettingNational struct {
	CountryRegion *string `json:"country_region,omitempty"` // 国家/地区ID

	NationalIdType *string `json:"national_id_type,omitempty"` // 国家证件类型ID

	NationalIdNumber *string `json:"national_id_number,omitempty"` // 证件号码

	IssuedDate *string `json:"issued_date,omitempty"` // 证件签发日期

	IssuedBy *string `json:"issued_by,omitempty"` // 证件签发机构

	ExpirationDate *string `json:"expiration_date,omitempty"` // 证件到期日期

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingNationalBuilder struct {
	countryRegion     string // 国家/地区ID
	countryRegionFlag bool

	nationalIdType     string // 国家证件类型ID
	nationalIdTypeFlag bool

	nationalIdNumber     string // 证件号码
	nationalIdNumberFlag bool

	issuedDate     string // 证件签发日期
	issuedDateFlag bool

	issuedBy     string // 证件签发机构
	issuedByFlag bool

	expirationDate     string // 证件到期日期
	expirationDateFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingNationalBuilder() *ProfileSettingNationalBuilder {
	builder := &ProfileSettingNationalBuilder{}
	return builder
}

// 国家/地区ID
//
// 示例值：6862995757234914824
func (builder *ProfileSettingNationalBuilder) CountryRegion(countryRegion string) *ProfileSettingNationalBuilder {
	builder.countryRegion = countryRegion
	builder.countryRegionFlag = true
	return builder
}

// 国家证件类型ID
//
// 示例值：6863330041896371725
func (builder *ProfileSettingNationalBuilder) NationalIdType(nationalIdType string) *ProfileSettingNationalBuilder {
	builder.nationalIdType = nationalIdType
	builder.nationalIdTypeFlag = true
	return builder
}

// 证件号码
//
// 示例值：1231131333
func (builder *ProfileSettingNationalBuilder) NationalIdNumber(nationalIdNumber string) *ProfileSettingNationalBuilder {
	builder.nationalIdNumber = nationalIdNumber
	builder.nationalIdNumberFlag = true
	return builder
}

// 证件签发日期
//
// 示例值：2020-04-01
func (builder *ProfileSettingNationalBuilder) IssuedDate(issuedDate string) *ProfileSettingNationalBuilder {
	builder.issuedDate = issuedDate
	builder.issuedDateFlag = true
	return builder
}

// 证件签发机构
//
// 示例值：北京市公安局
func (builder *ProfileSettingNationalBuilder) IssuedBy(issuedBy string) *ProfileSettingNationalBuilder {
	builder.issuedBy = issuedBy
	builder.issuedByFlag = true
	return builder
}

// 证件到期日期
//
// 示例值：2020-05-21
func (builder *ProfileSettingNationalBuilder) ExpirationDate(expirationDate string) *ProfileSettingNationalBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingNationalBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingNationalBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingNationalBuilder) Build() *ProfileSettingNational {
	req := &ProfileSettingNational{}
	if builder.countryRegionFlag {
		req.CountryRegion = &builder.countryRegion

	}
	if builder.nationalIdTypeFlag {
		req.NationalIdType = &builder.nationalIdType

	}
	if builder.nationalIdNumberFlag {
		req.NationalIdNumber = &builder.nationalIdNumber

	}
	if builder.issuedDateFlag {
		req.IssuedDate = &builder.issuedDate

	}
	if builder.issuedByFlag {
		req.IssuedBy = &builder.issuedBy

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingPersonalBasicInfo struct {
	LegalName *ProfileSettingName `json:"legal_name,omitempty"` // 法定姓名

	PreferredName *ProfileSettingName `json:"preferred_name,omitempty"` // 常用姓名

	AdditionalName *string `json:"additional_name,omitempty"` // 别名

	Gender *string `json:"gender,omitempty"` // 性别，枚举值 。可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "gender"

	NationalityV2 *string `json:"nationality_v2,omitempty"` // 国籍ID

	EthnicityRace *string `json:"ethnicity_race,omitempty"` // 民族 / 种族，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "ethnicity_race"

	Phone *ProfileSettingPhone `json:"phone,omitempty"` // 个人电话

	Email *string `json:"email,omitempty"` // 个人邮箱

	DateOfBirth *string `json:"date_of_birth,omitempty"` // 出生日期

	MaritalStatus *string `json:"marital_status,omitempty"` // 婚姻状况，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "marital_status"

	IsDisabled *bool `json:"is_disabled,omitempty"` // 是否残疾

	DisableCardNumber *string `json:"disable_card_number,omitempty"` // 残疾证号，is_disabled 为 true 时必填

	IsMartyrFamily *bool `json:"is_martyr_family,omitempty"` // 是否为烈属

	MartyrCardNumber *string `json:"martyr_card_number,omitempty"` // 烈属证号，is_martyr_family 为 true 时必填

	IsOldAlone *bool `json:"is_old_alone,omitempty"` // 是否为孤老

	BornCountryRegion *string `json:"born_country_region,omitempty"` // 出生国家/地区

	PoliticalAffiliation *string `json:"political_affiliation,omitempty"` // 政治面貌，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person_info_chn" custom_api_name = "political_affiliation"

	NativeRegion *string `json:"native_region,omitempty"` // 籍贯(省份/行政区ID）

	DateEnteredWorkforce *string `json:"date_entered_workforce,omitempty"` // 参加工作日期

	FirstEntryTime *string `json:"first_entry_time,omitempty"` // 首次入境日期

	LeaveTime *string `json:"leave_time,omitempty"` // 预计离境日期

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段

	AdditionalNationalities []string `json:"additional_nationalities,omitempty"` // 其他国籍（地区）ID
}

type ProfileSettingPersonalBasicInfoBuilder struct {
	legalName     *ProfileSettingName // 法定姓名
	legalNameFlag bool

	preferredName     *ProfileSettingName // 常用姓名
	preferredNameFlag bool

	additionalName     string // 别名
	additionalNameFlag bool

	gender     string // 性别，枚举值 。可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "gender"
	genderFlag bool

	nationalityV2     string // 国籍ID
	nationalityV2Flag bool

	ethnicityRace     string // 民族 / 种族，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "ethnicity_race"
	ethnicityRaceFlag bool

	phone     *ProfileSettingPhone // 个人电话
	phoneFlag bool

	email     string // 个人邮箱
	emailFlag bool

	dateOfBirth     string // 出生日期
	dateOfBirthFlag bool

	maritalStatus     string // 婚姻状况，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "marital_status"
	maritalStatusFlag bool

	isDisabled     bool // 是否残疾
	isDisabledFlag bool

	disableCardNumber     string // 残疾证号，is_disabled 为 true 时必填
	disableCardNumberFlag bool

	isMartyrFamily     bool // 是否为烈属
	isMartyrFamilyFlag bool

	martyrCardNumber     string // 烈属证号，is_martyr_family 为 true 时必填
	martyrCardNumberFlag bool

	isOldAlone     bool // 是否为孤老
	isOldAloneFlag bool

	bornCountryRegion     string // 出生国家/地区
	bornCountryRegionFlag bool

	politicalAffiliation     string // 政治面貌，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person_info_chn" custom_api_name = "political_affiliation"
	politicalAffiliationFlag bool

	nativeRegion     string // 籍贯(省份/行政区ID）
	nativeRegionFlag bool

	dateEnteredWorkforce     string // 参加工作日期
	dateEnteredWorkforceFlag bool

	firstEntryTime     string // 首次入境日期
	firstEntryTimeFlag bool

	leaveTime     string // 预计离境日期
	leaveTimeFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool

	additionalNationalities     []string // 其他国籍（地区）ID
	additionalNationalitiesFlag bool
}

func NewProfileSettingPersonalBasicInfoBuilder() *ProfileSettingPersonalBasicInfoBuilder {
	builder := &ProfileSettingPersonalBasicInfoBuilder{}
	return builder
}

// 法定姓名
//
// 示例值：
func (builder *ProfileSettingPersonalBasicInfoBuilder) LegalName(legalName *ProfileSettingName) *ProfileSettingPersonalBasicInfoBuilder {
	builder.legalName = legalName
	builder.legalNameFlag = true
	return builder
}

// 常用姓名
//
// 示例值：
func (builder *ProfileSettingPersonalBasicInfoBuilder) PreferredName(preferredName *ProfileSettingName) *ProfileSettingPersonalBasicInfoBuilder {
	builder.preferredName = preferredName
	builder.preferredNameFlag = true
	return builder
}

// 别名
//
// 示例值：王帅
func (builder *ProfileSettingPersonalBasicInfoBuilder) AdditionalName(additionalName string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.additionalName = additionalName
	builder.additionalNameFlag = true
	return builder
}

// 性别，枚举值 。可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "gender"
//
// 示例值：female
func (builder *ProfileSettingPersonalBasicInfoBuilder) Gender(gender string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.gender = gender
	builder.genderFlag = true
	return builder
}

// 国籍ID
//
// 示例值：6862995757234914826
func (builder *ProfileSettingPersonalBasicInfoBuilder) NationalityV2(nationalityV2 string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.nationalityV2 = nationalityV2
	builder.nationalityV2Flag = true
	return builder
}

// 民族 / 种族，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "ethnicity_race"
//
// 示例值：han
func (builder *ProfileSettingPersonalBasicInfoBuilder) EthnicityRace(ethnicityRace string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.ethnicityRace = ethnicityRace
	builder.ethnicityRaceFlag = true
	return builder
}

// 个人电话
//
// 示例值：
func (builder *ProfileSettingPersonalBasicInfoBuilder) Phone(phone *ProfileSettingPhone) *ProfileSettingPersonalBasicInfoBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 个人邮箱
//
// 示例值：1234567@example.feishu.cn
func (builder *ProfileSettingPersonalBasicInfoBuilder) Email(email string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 出生日期
//
// 示例值：2006-01-02
func (builder *ProfileSettingPersonalBasicInfoBuilder) DateOfBirth(dateOfBirth string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.dateOfBirth = dateOfBirth
	builder.dateOfBirthFlag = true
	return builder
}

// 婚姻状况，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person" custom_api_name = "marital_status"
//
// 示例值：married
func (builder *ProfileSettingPersonalBasicInfoBuilder) MaritalStatus(maritalStatus string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.maritalStatus = maritalStatus
	builder.maritalStatusFlag = true
	return builder
}

// 是否残疾
//
// 示例值：false
func (builder *ProfileSettingPersonalBasicInfoBuilder) IsDisabled(isDisabled bool) *ProfileSettingPersonalBasicInfoBuilder {
	builder.isDisabled = isDisabled
	builder.isDisabledFlag = true
	return builder
}

// 残疾证号，is_disabled 为 true 时必填
//
// 示例值：92838277746172888312
func (builder *ProfileSettingPersonalBasicInfoBuilder) DisableCardNumber(disableCardNumber string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.disableCardNumber = disableCardNumber
	builder.disableCardNumberFlag = true
	return builder
}

// 是否为烈属
//
// 示例值：false
func (builder *ProfileSettingPersonalBasicInfoBuilder) IsMartyrFamily(isMartyrFamily bool) *ProfileSettingPersonalBasicInfoBuilder {
	builder.isMartyrFamily = isMartyrFamily
	builder.isMartyrFamilyFlag = true
	return builder
}

// 烈属证号，is_martyr_family 为 true 时必填
//
// 示例值：00001
func (builder *ProfileSettingPersonalBasicInfoBuilder) MartyrCardNumber(martyrCardNumber string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.martyrCardNumber = martyrCardNumber
	builder.martyrCardNumberFlag = true
	return builder
}

// 是否为孤老
//
// 示例值：false
func (builder *ProfileSettingPersonalBasicInfoBuilder) IsOldAlone(isOldAlone bool) *ProfileSettingPersonalBasicInfoBuilder {
	builder.isOldAlone = isOldAlone
	builder.isOldAloneFlag = true
	return builder
}

// 出生国家/地区
//
// 示例值：6862995757234914825
func (builder *ProfileSettingPersonalBasicInfoBuilder) BornCountryRegion(bornCountryRegion string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.bornCountryRegion = bornCountryRegion
	builder.bornCountryRegionFlag = true
	return builder
}

// 政治面貌，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "person_info_chn" custom_api_name = "political_affiliation"
//
// 示例值：other
func (builder *ProfileSettingPersonalBasicInfoBuilder) PoliticalAffiliation(politicalAffiliation string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.politicalAffiliation = politicalAffiliation
	builder.politicalAffiliationFlag = true
	return builder
}

// 籍贯(省份/行政区ID）
//
// 示例值：6862995757234914827
func (builder *ProfileSettingPersonalBasicInfoBuilder) NativeRegion(nativeRegion string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.nativeRegion = nativeRegion
	builder.nativeRegionFlag = true
	return builder
}

// 参加工作日期
//
// 示例值：2006-01-02
func (builder *ProfileSettingPersonalBasicInfoBuilder) DateEnteredWorkforce(dateEnteredWorkforce string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.dateEnteredWorkforce = dateEnteredWorkforce
	builder.dateEnteredWorkforceFlag = true
	return builder
}

// 首次入境日期
//
// 示例值：2006-01-02
func (builder *ProfileSettingPersonalBasicInfoBuilder) FirstEntryTime(firstEntryTime string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.firstEntryTime = firstEntryTime
	builder.firstEntryTimeFlag = true
	return builder
}

// 预计离境日期
//
// 示例值：2006-01-02
func (builder *ProfileSettingPersonalBasicInfoBuilder) LeaveTime(leaveTime string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.leaveTime = leaveTime
	builder.leaveTimeFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingPersonalBasicInfoBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingPersonalBasicInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 其他国籍（地区）ID
//
// 示例值：6862995757234914827
func (builder *ProfileSettingPersonalBasicInfoBuilder) AdditionalNationalities(additionalNationalities []string) *ProfileSettingPersonalBasicInfoBuilder {
	builder.additionalNationalities = additionalNationalities
	builder.additionalNationalitiesFlag = true
	return builder
}

func (builder *ProfileSettingPersonalBasicInfoBuilder) Build() *ProfileSettingPersonalBasicInfo {
	req := &ProfileSettingPersonalBasicInfo{}
	if builder.legalNameFlag {
		req.LegalName = builder.legalName
	}
	if builder.preferredNameFlag {
		req.PreferredName = builder.preferredName
	}
	if builder.additionalNameFlag {
		req.AdditionalName = &builder.additionalName

	}
	if builder.genderFlag {
		req.Gender = &builder.gender

	}
	if builder.nationalityV2Flag {
		req.NationalityV2 = &builder.nationalityV2

	}
	if builder.ethnicityRaceFlag {
		req.EthnicityRace = &builder.ethnicityRace

	}
	if builder.phoneFlag {
		req.Phone = builder.phone
	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.dateOfBirthFlag {
		req.DateOfBirth = &builder.dateOfBirth

	}
	if builder.maritalStatusFlag {
		req.MaritalStatus = &builder.maritalStatus

	}
	if builder.isDisabledFlag {
		req.IsDisabled = &builder.isDisabled

	}
	if builder.disableCardNumberFlag {
		req.DisableCardNumber = &builder.disableCardNumber

	}
	if builder.isMartyrFamilyFlag {
		req.IsMartyrFamily = &builder.isMartyrFamily

	}
	if builder.martyrCardNumberFlag {
		req.MartyrCardNumber = &builder.martyrCardNumber

	}
	if builder.isOldAloneFlag {
		req.IsOldAlone = &builder.isOldAlone

	}
	if builder.bornCountryRegionFlag {
		req.BornCountryRegion = &builder.bornCountryRegion

	}
	if builder.politicalAffiliationFlag {
		req.PoliticalAffiliation = &builder.politicalAffiliation

	}
	if builder.nativeRegionFlag {
		req.NativeRegion = &builder.nativeRegion

	}
	if builder.dateEnteredWorkforceFlag {
		req.DateEnteredWorkforce = &builder.dateEnteredWorkforce

	}
	if builder.firstEntryTimeFlag {
		req.FirstEntryTime = &builder.firstEntryTime

	}
	if builder.leaveTimeFlag {
		req.LeaveTime = &builder.leaveTime

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.additionalNationalitiesFlag {
		req.AdditionalNationalities = builder.additionalNationalities
	}
	return req
}

type ProfileSettingPersonalInfo struct {
	PersonalBasicInfo *ProfileSettingPersonalBasicInfo `json:"personal_basic_info,omitempty"` // 基本信息

	EmergencyContacts []*ProfileSettingEmergencyContact `json:"emergency_contacts,omitempty"` // 紧急联系人

	BankAccounts []*ProfileSettingBankAccount `json:"bank_accounts,omitempty"` // 银行账户

	Nationals []*ProfileSettingNational `json:"nationals,omitempty"` // 证件

	ResidentTaxes []*ProfileSettingResidentTax `json:"resident_taxes,omitempty"` // 居民身份信息

	Dependents []*ProfileSettingDependent `json:"dependents,omitempty"` // 家庭成员

	Hukou *ProfileSettingHukou `json:"hukou,omitempty"` // 户口

	ContactAddresses []*ProfileSettingAddress `json:"contact_addresses,omitempty"` // 联系地址

	CustomGroups []*ProfileSettingCustomGroup `json:"custom_groups,omitempty"` // 自定义分组

	CitizenshipStatuses []*ProfileSettingCitizenshipStatus `json:"citizenship_statuses,omitempty"` // 公民身份列表
}

type ProfileSettingPersonalInfoBuilder struct {
	personalBasicInfo     *ProfileSettingPersonalBasicInfo // 基本信息
	personalBasicInfoFlag bool

	emergencyContacts     []*ProfileSettingEmergencyContact // 紧急联系人
	emergencyContactsFlag bool

	bankAccounts     []*ProfileSettingBankAccount // 银行账户
	bankAccountsFlag bool

	nationals     []*ProfileSettingNational // 证件
	nationalsFlag bool

	residentTaxes     []*ProfileSettingResidentTax // 居民身份信息
	residentTaxesFlag bool

	dependents     []*ProfileSettingDependent // 家庭成员
	dependentsFlag bool

	hukou     *ProfileSettingHukou // 户口
	hukouFlag bool

	contactAddresses     []*ProfileSettingAddress // 联系地址
	contactAddressesFlag bool

	customGroups     []*ProfileSettingCustomGroup // 自定义分组
	customGroupsFlag bool

	citizenshipStatuses     []*ProfileSettingCitizenshipStatus // 公民身份列表
	citizenshipStatusesFlag bool
}

func NewProfileSettingPersonalInfoBuilder() *ProfileSettingPersonalInfoBuilder {
	builder := &ProfileSettingPersonalInfoBuilder{}
	return builder
}

// 基本信息
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) PersonalBasicInfo(personalBasicInfo *ProfileSettingPersonalBasicInfo) *ProfileSettingPersonalInfoBuilder {
	builder.personalBasicInfo = personalBasicInfo
	builder.personalBasicInfoFlag = true
	return builder
}

// 紧急联系人
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) EmergencyContacts(emergencyContacts []*ProfileSettingEmergencyContact) *ProfileSettingPersonalInfoBuilder {
	builder.emergencyContacts = emergencyContacts
	builder.emergencyContactsFlag = true
	return builder
}

// 银行账户
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) BankAccounts(bankAccounts []*ProfileSettingBankAccount) *ProfileSettingPersonalInfoBuilder {
	builder.bankAccounts = bankAccounts
	builder.bankAccountsFlag = true
	return builder
}

// 证件
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) Nationals(nationals []*ProfileSettingNational) *ProfileSettingPersonalInfoBuilder {
	builder.nationals = nationals
	builder.nationalsFlag = true
	return builder
}

// 居民身份信息
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) ResidentTaxes(residentTaxes []*ProfileSettingResidentTax) *ProfileSettingPersonalInfoBuilder {
	builder.residentTaxes = residentTaxes
	builder.residentTaxesFlag = true
	return builder
}

// 家庭成员
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) Dependents(dependents []*ProfileSettingDependent) *ProfileSettingPersonalInfoBuilder {
	builder.dependents = dependents
	builder.dependentsFlag = true
	return builder
}

// 户口
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) Hukou(hukou *ProfileSettingHukou) *ProfileSettingPersonalInfoBuilder {
	builder.hukou = hukou
	builder.hukouFlag = true
	return builder
}

// 联系地址
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) ContactAddresses(contactAddresses []*ProfileSettingAddress) *ProfileSettingPersonalInfoBuilder {
	builder.contactAddresses = contactAddresses
	builder.contactAddressesFlag = true
	return builder
}

// 自定义分组
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) CustomGroups(customGroups []*ProfileSettingCustomGroup) *ProfileSettingPersonalInfoBuilder {
	builder.customGroups = customGroups
	builder.customGroupsFlag = true
	return builder
}

// 公民身份列表
//
// 示例值：
func (builder *ProfileSettingPersonalInfoBuilder) CitizenshipStatuses(citizenshipStatuses []*ProfileSettingCitizenshipStatus) *ProfileSettingPersonalInfoBuilder {
	builder.citizenshipStatuses = citizenshipStatuses
	builder.citizenshipStatusesFlag = true
	return builder
}

func (builder *ProfileSettingPersonalInfoBuilder) Build() *ProfileSettingPersonalInfo {
	req := &ProfileSettingPersonalInfo{}
	if builder.personalBasicInfoFlag {
		req.PersonalBasicInfo = builder.personalBasicInfo
	}
	if builder.emergencyContactsFlag {
		req.EmergencyContacts = builder.emergencyContacts
	}
	if builder.bankAccountsFlag {
		req.BankAccounts = builder.bankAccounts
	}
	if builder.nationalsFlag {
		req.Nationals = builder.nationals
	}
	if builder.residentTaxesFlag {
		req.ResidentTaxes = builder.residentTaxes
	}
	if builder.dependentsFlag {
		req.Dependents = builder.dependents
	}
	if builder.hukouFlag {
		req.Hukou = builder.hukou
	}
	if builder.contactAddressesFlag {
		req.ContactAddresses = builder.contactAddresses
	}
	if builder.customGroupsFlag {
		req.CustomGroups = builder.customGroups
	}
	if builder.citizenshipStatusesFlag {
		req.CitizenshipStatuses = builder.citizenshipStatuses
	}
	return req
}

type ProfileSettingPersonalRecord struct {
	ProfileType *string `json:"profile_type,omitempty"` // 资料类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "personal_profile" custom_api_name = "profile_type"

	Files []*ProfileSettingFile `json:"files,omitempty"` // 文件列表
}

type ProfileSettingPersonalRecordBuilder struct {
	profileType     string // 资料类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "personal_profile" custom_api_name = "profile_type"
	profileTypeFlag bool

	files     []*ProfileSettingFile // 文件列表
	filesFlag bool
}

func NewProfileSettingPersonalRecordBuilder() *ProfileSettingPersonalRecordBuilder {
	builder := &ProfileSettingPersonalRecordBuilder{}
	return builder
}

// 资料类型，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "personal_profile" custom_api_name = "profile_type"
//
// 示例值：profile_type_1
func (builder *ProfileSettingPersonalRecordBuilder) ProfileType(profileType string) *ProfileSettingPersonalRecordBuilder {
	builder.profileType = profileType
	builder.profileTypeFlag = true
	return builder
}

// 文件列表
//
// 示例值：
func (builder *ProfileSettingPersonalRecordBuilder) Files(files []*ProfileSettingFile) *ProfileSettingPersonalRecordBuilder {
	builder.files = files
	builder.filesFlag = true
	return builder
}

func (builder *ProfileSettingPersonalRecordBuilder) Build() *ProfileSettingPersonalRecord {
	req := &ProfileSettingPersonalRecord{}
	if builder.profileTypeFlag {
		req.ProfileType = &builder.profileType

	}
	if builder.filesFlag {
		req.Files = builder.files
	}
	return req
}

type ProfileSettingPhone struct {
	InternationalAreaCode *string `json:"international_area_code,omitempty"` // 国际电话区号，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "phone" custom_api_name = "international_area_code"

	PhoneNumber *string `json:"phone_number,omitempty"` // 电话号码
}

type ProfileSettingPhoneBuilder struct {
	internationalAreaCode     string // 国际电话区号，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "phone" custom_api_name = "international_area_code"
	internationalAreaCodeFlag bool

	phoneNumber     string // 电话号码
	phoneNumberFlag bool
}

func NewProfileSettingPhoneBuilder() *ProfileSettingPhoneBuilder {
	builder := &ProfileSettingPhoneBuilder{}
	return builder
}

// 国际电话区号，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "phone" custom_api_name = "international_area_code"
//
// 示例值：86_china
func (builder *ProfileSettingPhoneBuilder) InternationalAreaCode(internationalAreaCode string) *ProfileSettingPhoneBuilder {
	builder.internationalAreaCode = internationalAreaCode
	builder.internationalAreaCodeFlag = true
	return builder
}

// 电话号码
//
// 示例值：13000000000
func (builder *ProfileSettingPhoneBuilder) PhoneNumber(phoneNumber string) *ProfileSettingPhoneBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

func (builder *ProfileSettingPhoneBuilder) Build() *ProfileSettingPhone {
	req := &ProfileSettingPhone{}
	if builder.internationalAreaCodeFlag {
		req.InternationalAreaCode = &builder.internationalAreaCode

	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber

	}
	return req
}

type ProfileSettingProbationInfo struct {
	ProbationStartDate *string `json:"probation_start_date,omitempty"` // 试用期开始日期

	ProbationExpectedEndDate *string `json:"probation_expected_end_date,omitempty"` // 试用期预计结束日期

	ActualProbationEndDate *string `json:"actual_probation_end_date,omitempty"` // 试用期实际结束日期
}

type ProfileSettingProbationInfoBuilder struct {
	probationStartDate     string // 试用期开始日期
	probationStartDateFlag bool

	probationExpectedEndDate     string // 试用期预计结束日期
	probationExpectedEndDateFlag bool

	actualProbationEndDate     string // 试用期实际结束日期
	actualProbationEndDateFlag bool
}

func NewProfileSettingProbationInfoBuilder() *ProfileSettingProbationInfoBuilder {
	builder := &ProfileSettingProbationInfoBuilder{}
	return builder
}

// 试用期开始日期
//
// 示例值：2021-01-01
func (builder *ProfileSettingProbationInfoBuilder) ProbationStartDate(probationStartDate string) *ProfileSettingProbationInfoBuilder {
	builder.probationStartDate = probationStartDate
	builder.probationStartDateFlag = true
	return builder
}

// 试用期预计结束日期
//
// 示例值：2021-02-01
func (builder *ProfileSettingProbationInfoBuilder) ProbationExpectedEndDate(probationExpectedEndDate string) *ProfileSettingProbationInfoBuilder {
	builder.probationExpectedEndDate = probationExpectedEndDate
	builder.probationExpectedEndDateFlag = true
	return builder
}

// 试用期实际结束日期
//
// 示例值：2021-02-01
func (builder *ProfileSettingProbationInfoBuilder) ActualProbationEndDate(actualProbationEndDate string) *ProfileSettingProbationInfoBuilder {
	builder.actualProbationEndDate = actualProbationEndDate
	builder.actualProbationEndDateFlag = true
	return builder
}

func (builder *ProfileSettingProbationInfoBuilder) Build() *ProfileSettingProbationInfo {
	req := &ProfileSettingProbationInfo{}
	if builder.probationStartDateFlag {
		req.ProbationStartDate = &builder.probationStartDate

	}
	if builder.probationExpectedEndDateFlag {
		req.ProbationExpectedEndDate = &builder.probationExpectedEndDate

	}
	if builder.actualProbationEndDateFlag {
		req.ActualProbationEndDate = &builder.actualProbationEndDate

	}
	return req
}

type ProfileSettingResidentTax struct {
	YearResidentTax *string `json:"year_resident_tax,omitempty"` // 年度

	TaxCountryRegion *string `json:"tax_country_region,omitempty"` // 国家 / 地区ID

	ResidentStatus *string `json:"resident_status,omitempty"` // 居民身份，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "resident_tax" custom_api_name = "resident_status"

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingResidentTaxBuilder struct {
	yearResidentTax     string // 年度
	yearResidentTaxFlag bool

	taxCountryRegion     string // 国家 / 地区ID
	taxCountryRegionFlag bool

	residentStatus     string // 居民身份，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "resident_tax" custom_api_name = "resident_status"
	residentStatusFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingResidentTaxBuilder() *ProfileSettingResidentTaxBuilder {
	builder := &ProfileSettingResidentTaxBuilder{}
	return builder
}

// 年度
//
// 示例值：2006-01-02
func (builder *ProfileSettingResidentTaxBuilder) YearResidentTax(yearResidentTax string) *ProfileSettingResidentTaxBuilder {
	builder.yearResidentTax = yearResidentTax
	builder.yearResidentTaxFlag = true
	return builder
}

// 国家 / 地区ID
//
// 示例值：6862995757234914824
func (builder *ProfileSettingResidentTaxBuilder) TaxCountryRegion(taxCountryRegion string) *ProfileSettingResidentTaxBuilder {
	builder.taxCountryRegion = taxCountryRegion
	builder.taxCountryRegionFlag = true
	return builder
}

// 居民身份，枚举值。 可选项可通过【获取字段详情】接口查询，查询参数如下： object_api_name = "resident_tax" custom_api_name = "resident_status"
//
// 示例值：tax_residence
func (builder *ProfileSettingResidentTaxBuilder) ResidentStatus(residentStatus string) *ProfileSettingResidentTaxBuilder {
	builder.residentStatus = residentStatus
	builder.residentStatusFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingResidentTaxBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingResidentTaxBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingResidentTaxBuilder) Build() *ProfileSettingResidentTax {
	req := &ProfileSettingResidentTax{}
	if builder.yearResidentTaxFlag {
		req.YearResidentTax = &builder.yearResidentTax

	}
	if builder.taxCountryRegionFlag {
		req.TaxCountryRegion = &builder.taxCountryRegion

	}
	if builder.residentStatusFlag {
		req.ResidentStatus = &builder.residentStatus

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ProfileSettingWorkExperience struct {
	CompanyOrganization *ProfileSettingI18n `json:"company_organization,omitempty"` // 公司 / 组织

	Department *ProfileSettingI18n `json:"department,omitempty"` // 部门

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	Job *ProfileSettingI18n `json:"job,omitempty"` // 岗位

	Description *ProfileSettingI18n `json:"description,omitempty"` // 工作描述

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段
}

type ProfileSettingWorkExperienceBuilder struct {
	companyOrganization     *ProfileSettingI18n // 公司 / 组织
	companyOrganizationFlag bool

	department     *ProfileSettingI18n // 部门
	departmentFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	job     *ProfileSettingI18n // 岗位
	jobFlag bool

	description     *ProfileSettingI18n // 工作描述
	descriptionFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段
	customFieldsFlag bool
}

func NewProfileSettingWorkExperienceBuilder() *ProfileSettingWorkExperienceBuilder {
	builder := &ProfileSettingWorkExperienceBuilder{}
	return builder
}

// 公司 / 组织
//
// 示例值：
func (builder *ProfileSettingWorkExperienceBuilder) CompanyOrganization(companyOrganization *ProfileSettingI18n) *ProfileSettingWorkExperienceBuilder {
	builder.companyOrganization = companyOrganization
	builder.companyOrganizationFlag = true
	return builder
}

// 部门
//
// 示例值：
func (builder *ProfileSettingWorkExperienceBuilder) Department(department *ProfileSettingI18n) *ProfileSettingWorkExperienceBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 开始日期
//
// 示例值：2020-01-01
func (builder *ProfileSettingWorkExperienceBuilder) StartDate(startDate string) *ProfileSettingWorkExperienceBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：2020-02-01
func (builder *ProfileSettingWorkExperienceBuilder) EndDate(endDate string) *ProfileSettingWorkExperienceBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 岗位
//
// 示例值：
func (builder *ProfileSettingWorkExperienceBuilder) Job(job *ProfileSettingI18n) *ProfileSettingWorkExperienceBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 工作描述
//
// 示例值：
func (builder *ProfileSettingWorkExperienceBuilder) Description(description *ProfileSettingI18n) *ProfileSettingWorkExperienceBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ProfileSettingWorkExperienceBuilder) CustomFields(customFields []*ProfileSettingCustomField) *ProfileSettingWorkExperienceBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ProfileSettingWorkExperienceBuilder) Build() *ProfileSettingWorkExperience {
	req := &ProfileSettingWorkExperience{}
	if builder.companyOrganizationFlag {
		req.CompanyOrganization = builder.companyOrganization
	}
	if builder.departmentFlag {
		req.Department = builder.department
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.jobFlag {
		req.Job = builder.job
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type QrCode struct {
	Id *string `json:"id,omitempty"` // 二维码id

	Png *string `json:"png,omitempty"` // 二维码图片链接,文件名区分语言

	Url *string `json:"url,omitempty"` // 二维码值链接

	Active *bool `json:"active,omitempty"` // 有效性

	CreatedBy *string `json:"created_by,omitempty"` // 创建人

	UpdatedBy *string `json:"updated_by,omitempty"` // 更新人

	CreatedAt *int `json:"created_at,omitempty"` // 创建时间

	UpdatedAt *int `json:"updated_at,omitempty"` // 更新时间

	DimensionValueList []*QrCodeDimensionValue `json:"dimension_value_list,omitempty"` // 维度值列表
}

type QrCodeBuilder struct {
	id     string // 二维码id
	idFlag bool

	png     string // 二维码图片链接,文件名区分语言
	pngFlag bool

	url     string // 二维码值链接
	urlFlag bool

	active     bool // 有效性
	activeFlag bool

	createdBy     string // 创建人
	createdByFlag bool

	updatedBy     string // 更新人
	updatedByFlag bool

	createdAt     int // 创建时间
	createdAtFlag bool

	updatedAt     int // 更新时间
	updatedAtFlag bool

	dimensionValueList     []*QrCodeDimensionValue // 维度值列表
	dimensionValueListFlag bool
}

func NewQrCodeBuilder() *QrCodeBuilder {
	builder := &QrCodeBuilder{}
	return builder
}

// 二维码id
//
// 示例值：6892698621939026184
func (builder *QrCodeBuilder) Id(id string) *QrCodeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 二维码图片链接,文件名区分语言
//
// 示例值：https://open.feishu-boe.cn
func (builder *QrCodeBuilder) Png(png string) *QrCodeBuilder {
	builder.png = png
	builder.pngFlag = true
	return builder
}

// 二维码值链接
//
// 示例值：https://open.feishu-boe.cn
func (builder *QrCodeBuilder) Url(url string) *QrCodeBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

// 有效性
//
// 示例值：
func (builder *QrCodeBuilder) Active(active bool) *QrCodeBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 创建人
//
// 示例值：7032210902531327521
func (builder *QrCodeBuilder) CreatedBy(createdBy string) *QrCodeBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 更新人
//
// 示例值：7032210902531327521
func (builder *QrCodeBuilder) UpdatedBy(updatedBy string) *QrCodeBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 创建时间
//
// 示例值：1704038400
func (builder *QrCodeBuilder) CreatedAt(createdAt int) *QrCodeBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 更新时间
//
// 示例值：1704038400
func (builder *QrCodeBuilder) UpdatedAt(updatedAt int) *QrCodeBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 维度值列表
//
// 示例值：
func (builder *QrCodeBuilder) DimensionValueList(dimensionValueList []*QrCodeDimensionValue) *QrCodeBuilder {
	builder.dimensionValueList = dimensionValueList
	builder.dimensionValueListFlag = true
	return builder
}

func (builder *QrCodeBuilder) Build() *QrCode {
	req := &QrCode{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.pngFlag {
		req.Png = &builder.png

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.createdByFlag {
		req.CreatedBy = &builder.createdBy

	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.dimensionValueListFlag {
		req.DimensionValueList = builder.dimensionValueList
	}
	return req
}

type QrCodeDimension struct {
	ApiName *string `json:"api_name,omitempty"` // 维度API name

	DisplayName *I18nV2 `json:"display_name,omitempty"` // 维度名称

	Type *int `json:"type,omitempty"` // 维度类型
}

type QrCodeDimensionBuilder struct {
	apiName     string // 维度API name
	apiNameFlag bool

	displayName     *I18nV2 // 维度名称
	displayNameFlag bool

	type_    int // 维度类型
	typeFlag bool
}

func NewQrCodeDimensionBuilder() *QrCodeDimensionBuilder {
	builder := &QrCodeDimensionBuilder{}
	return builder
}

// 维度API name
//
// 示例值：company
func (builder *QrCodeDimensionBuilder) ApiName(apiName string) *QrCodeDimensionBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 维度名称
//
// 示例值：
func (builder *QrCodeDimensionBuilder) DisplayName(displayName *I18nV2) *QrCodeDimensionBuilder {
	builder.displayName = displayName
	builder.displayNameFlag = true
	return builder
}

// 维度类型
//
// 示例值：1
func (builder *QrCodeDimensionBuilder) Type(type_ int) *QrCodeDimensionBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

func (builder *QrCodeDimensionBuilder) Build() *QrCodeDimension {
	req := &QrCodeDimension{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.displayNameFlag {
		req.DisplayName = builder.displayName
	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	return req
}

type QrCodeDimensionValue struct {
	Dimension *QrCodeDimension `json:"dimension,omitempty"` // 维度类型

	Value *QrCodeValue `json:"value,omitempty"` // 维度数据
}

type QrCodeDimensionValueBuilder struct {
	dimension     *QrCodeDimension // 维度类型
	dimensionFlag bool

	value     *QrCodeValue // 维度数据
	valueFlag bool
}

func NewQrCodeDimensionValueBuilder() *QrCodeDimensionValueBuilder {
	builder := &QrCodeDimensionValueBuilder{}
	return builder
}

// 维度类型
//
// 示例值：
func (builder *QrCodeDimensionValueBuilder) Dimension(dimension *QrCodeDimension) *QrCodeDimensionValueBuilder {
	builder.dimension = dimension
	builder.dimensionFlag = true
	return builder
}

// 维度数据
//
// 示例值：
func (builder *QrCodeDimensionValueBuilder) Value(value *QrCodeValue) *QrCodeDimensionValueBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *QrCodeDimensionValueBuilder) Build() *QrCodeDimensionValue {
	req := &QrCodeDimensionValue{}
	if builder.dimensionFlag {
		req.Dimension = builder.dimension
	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type QrCodeValue struct {
	SelectValue *string `json:"select_value,omitempty"` // 单选值

	MultiSelectValue []string `json:"multi_select_value,omitempty"` // 多选值

	BoolValue *bool `json:"bool_value,omitempty"` // 布尔值
}

type QrCodeValueBuilder struct {
	selectValue     string // 单选值
	selectValueFlag bool

	multiSelectValue     []string // 多选值
	multiSelectValueFlag bool

	boolValue     bool // 布尔值
	boolValueFlag bool
}

func NewQrCodeValueBuilder() *QrCodeValueBuilder {
	builder := &QrCodeValueBuilder{}
	return builder
}

// 单选值
//
// 示例值：7147562782945478177
func (builder *QrCodeValueBuilder) SelectValue(selectValue string) *QrCodeValueBuilder {
	builder.selectValue = selectValue
	builder.selectValueFlag = true
	return builder
}

// 多选值
//
// 示例值：
func (builder *QrCodeValueBuilder) MultiSelectValue(multiSelectValue []string) *QrCodeValueBuilder {
	builder.multiSelectValue = multiSelectValue
	builder.multiSelectValueFlag = true
	return builder
}

// 布尔值
//
// 示例值：
func (builder *QrCodeValueBuilder) BoolValue(boolValue bool) *QrCodeValueBuilder {
	builder.boolValue = boolValue
	builder.boolValueFlag = true
	return builder
}

func (builder *QrCodeValueBuilder) Build() *QrCodeValue {
	req := &QrCodeValue{}
	if builder.selectValueFlag {
		req.SelectValue = &builder.selectValue

	}
	if builder.multiSelectValueFlag {
		req.MultiSelectValue = builder.multiSelectValue
	}
	if builder.boolValueFlag {
		req.BoolValue = &builder.boolValue

	}
	return req
}

type QueryProcessFlowDataTemplateReq struct {
	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义ID

	VariableApiNames []string `json:"variable_api_names,omitempty"` // 需要传入的变量的ApiName。如果是多级下钻变量用"."分割
}

type QueryProcessFlowDataTemplateReqBuilder struct {
	flowDefinitionId     string // 流程定义ID
	flowDefinitionIdFlag bool

	variableApiNames     []string // 需要传入的变量的ApiName。如果是多级下钻变量用"."分割
	variableApiNamesFlag bool
}

func NewQueryProcessFlowDataTemplateReqBuilder() *QueryProcessFlowDataTemplateReqBuilder {
	builder := &QueryProcessFlowDataTemplateReqBuilder{}
	return builder
}

// 流程定义ID
//
// 示例值：people_7023711013443944467_7437160904904494892
func (builder *QueryProcessFlowDataTemplateReqBuilder) FlowDefinitionId(flowDefinitionId string) *QueryProcessFlowDataTemplateReqBuilder {
	builder.flowDefinitionId = flowDefinitionId
	builder.flowDefinitionIdFlag = true
	return builder
}

// 需要传入的变量的ApiName。如果是多级下钻变量用"."分割
//
// 示例值：
func (builder *QueryProcessFlowDataTemplateReqBuilder) VariableApiNames(variableApiNames []string) *QueryProcessFlowDataTemplateReqBuilder {
	builder.variableApiNames = variableApiNames
	builder.variableApiNamesFlag = true
	return builder
}

func (builder *QueryProcessFlowDataTemplateReqBuilder) Build() *QueryProcessFlowDataTemplateReq {
	req := &QueryProcessFlowDataTemplateReq{}
	if builder.flowDefinitionIdFlag {
		req.FlowDefinitionId = &builder.flowDefinitionId

	}
	if builder.variableApiNamesFlag {
		req.VariableApiNames = builder.variableApiNames
	}
	return req
}

type ReorganizationInfo struct {
	OriginalDepartmentNames []*I18n `json:"original_department_names,omitempty"` // 原部门名称

	TargetDepartmentNames []*I18n `json:"target_department_names,omitempty"` // 调整后部门名称

	OriginalDepartmentCode *string `json:"original_department_code,omitempty"` // 原部门编码

	TargetDepartmentCode *string `json:"target_department_code,omitempty"` // 调整后部门编码

	OriginalSubType *Enum `json:"original_sub_type,omitempty"` // 原部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得

	TargetSubType *Enum `json:"target_sub_type,omitempty"` // 调整后部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得

	OriginalDepartmentManager *string `json:"original_department_manager,omitempty"` // 原部门负责人

	TargetDepartmentManager *string `json:"target_department_manager,omitempty"` // 调整后部门负责人

	OriginalDescriptions []*I18n `json:"original_descriptions,omitempty"` // 原描述

	TargetDescriptions []*I18n `json:"target_descriptions,omitempty"` // 调整后描述

	OriginalCostCenter *CostCenter `json:"original_cost_center,omitempty"` // 原默认成本中心

	TargetCostCenter *CostCenter `json:"target_cost_center,omitempty"` // 调整后默认成本中心

	OriginalIsConfidential *bool `json:"original_is_confidential,omitempty"` // 原是否保密

	TargetIsConfidential *bool `json:"target_is_confidential,omitempty"` // 调整后是否保密

	OriginalStaffingModel *bool `json:"original_staffing_model,omitempty"` // 原是否使用职务

	TargetStaffingModel *bool `json:"target_staffing_model,omitempty"` // 调整后是否使用职务

	OriginalStaffingModeOption *Enum `json:"original_staffing_mode_option,omitempty"` // 原岗职模式

	TargetStaffingModeOption *Enum `json:"target_staffing_mode_option,omitempty"` // 调整后岗职模式

	OriginalParentDepartmentId *string `json:"original_parent_department_id,omitempty"` // 原上级部门

	TargetParentDepartmentId *string `json:"target_parent_department_id,omitempty"` // 调整后上级部门

	DraftTargetParentDepartmentId *string `json:"draft_target_parent_department_id,omitempty"` // 调整后上级部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID

	OriginalDepartmentIdPath []*OrgdraftDepartmentId `json:"original_department_id_path,omitempty"` // 原部门全路径

	TargetDepartmentIdPath []*OrgdraftDepartmentId `json:"target_department_id_path,omitempty"` // 调整后部门全路径

	CustomFields []*ChangeFieldPair `json:"custom_fields,omitempty"` // 自定义字段

	OrgroleInfos []*OrgroleInfo `json:"orgrole_infos,omitempty"` // 调整前后组织角色信息
}

type ReorganizationInfoBuilder struct {
	originalDepartmentNames     []*I18n // 原部门名称
	originalDepartmentNamesFlag bool

	targetDepartmentNames     []*I18n // 调整后部门名称
	targetDepartmentNamesFlag bool

	originalDepartmentCode     string // 原部门编码
	originalDepartmentCodeFlag bool

	targetDepartmentCode     string // 调整后部门编码
	targetDepartmentCodeFlag bool

	originalSubType     *Enum // 原部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
	originalSubTypeFlag bool

	targetSubType     *Enum // 调整后部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
	targetSubTypeFlag bool

	originalDepartmentManager     string // 原部门负责人
	originalDepartmentManagerFlag bool

	targetDepartmentManager     string // 调整后部门负责人
	targetDepartmentManagerFlag bool

	originalDescriptions     []*I18n // 原描述
	originalDescriptionsFlag bool

	targetDescriptions     []*I18n // 调整后描述
	targetDescriptionsFlag bool

	originalCostCenter     *CostCenter // 原默认成本中心
	originalCostCenterFlag bool

	targetCostCenter     *CostCenter // 调整后默认成本中心
	targetCostCenterFlag bool

	originalIsConfidential     bool // 原是否保密
	originalIsConfidentialFlag bool

	targetIsConfidential     bool // 调整后是否保密
	targetIsConfidentialFlag bool

	originalStaffingModel     bool // 原是否使用职务
	originalStaffingModelFlag bool

	targetStaffingModel     bool // 调整后是否使用职务
	targetStaffingModelFlag bool

	originalStaffingModeOption     *Enum // 原岗职模式
	originalStaffingModeOptionFlag bool

	targetStaffingModeOption     *Enum // 调整后岗职模式
	targetStaffingModeOptionFlag bool

	originalParentDepartmentId     string // 原上级部门
	originalParentDepartmentIdFlag bool

	targetParentDepartmentId     string // 调整后上级部门
	targetParentDepartmentIdFlag bool

	draftTargetParentDepartmentId     string // 调整后上级部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID
	draftTargetParentDepartmentIdFlag bool

	originalDepartmentIdPath     []*OrgdraftDepartmentId // 原部门全路径
	originalDepartmentIdPathFlag bool

	targetDepartmentIdPath     []*OrgdraftDepartmentId // 调整后部门全路径
	targetDepartmentIdPathFlag bool

	customFields     []*ChangeFieldPair // 自定义字段
	customFieldsFlag bool

	orgroleInfos     []*OrgroleInfo // 调整前后组织角色信息
	orgroleInfosFlag bool
}

func NewReorganizationInfoBuilder() *ReorganizationInfoBuilder {
	builder := &ReorganizationInfoBuilder{}
	return builder
}

// 原部门名称
//
// 示例值：
func (builder *ReorganizationInfoBuilder) OriginalDepartmentNames(originalDepartmentNames []*I18n) *ReorganizationInfoBuilder {
	builder.originalDepartmentNames = originalDepartmentNames
	builder.originalDepartmentNamesFlag = true
	return builder
}

// 调整后部门名称
//
// 示例值：
func (builder *ReorganizationInfoBuilder) TargetDepartmentNames(targetDepartmentNames []*I18n) *ReorganizationInfoBuilder {
	builder.targetDepartmentNames = targetDepartmentNames
	builder.targetDepartmentNamesFlag = true
	return builder
}

// 原部门编码
//
// 示例值：D00000456
func (builder *ReorganizationInfoBuilder) OriginalDepartmentCode(originalDepartmentCode string) *ReorganizationInfoBuilder {
	builder.originalDepartmentCode = originalDepartmentCode
	builder.originalDepartmentCodeFlag = true
	return builder
}

// 调整后部门编码
//
// 示例值：D00000456
func (builder *ReorganizationInfoBuilder) TargetDepartmentCode(targetDepartmentCode string) *ReorganizationInfoBuilder {
	builder.targetDepartmentCode = targetDepartmentCode
	builder.targetDepartmentCodeFlag = true
	return builder
}

// 原部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
//
// 示例值：
func (builder *ReorganizationInfoBuilder) OriginalSubType(originalSubType *Enum) *ReorganizationInfoBuilder {
	builder.originalSubType = originalSubType
	builder.originalSubTypeFlag = true
	return builder
}

// 调整后部门类型，枚举值可通过文档【飞书人事枚举常量】部门子类型（department_sub_type）枚举定义部分获得
//
// 示例值：
func (builder *ReorganizationInfoBuilder) TargetSubType(targetSubType *Enum) *ReorganizationInfoBuilder {
	builder.targetSubType = targetSubType
	builder.targetSubTypeFlag = true
	return builder
}

// 原部门负责人
//
// 示例值：6974648866876573198
func (builder *ReorganizationInfoBuilder) OriginalDepartmentManager(originalDepartmentManager string) *ReorganizationInfoBuilder {
	builder.originalDepartmentManager = originalDepartmentManager
	builder.originalDepartmentManagerFlag = true
	return builder
}

// 调整后部门负责人
//
// 示例值：7013328578351842852
func (builder *ReorganizationInfoBuilder) TargetDepartmentManager(targetDepartmentManager string) *ReorganizationInfoBuilder {
	builder.targetDepartmentManager = targetDepartmentManager
	builder.targetDepartmentManagerFlag = true
	return builder
}

// 原描述
//
// 示例值：
func (builder *ReorganizationInfoBuilder) OriginalDescriptions(originalDescriptions []*I18n) *ReorganizationInfoBuilder {
	builder.originalDescriptions = originalDescriptions
	builder.originalDescriptionsFlag = true
	return builder
}

// 调整后描述
//
// 示例值：
func (builder *ReorganizationInfoBuilder) TargetDescriptions(targetDescriptions []*I18n) *ReorganizationInfoBuilder {
	builder.targetDescriptions = targetDescriptions
	builder.targetDescriptionsFlag = true
	return builder
}

// 原默认成本中心
//
// 示例值：
func (builder *ReorganizationInfoBuilder) OriginalCostCenter(originalCostCenter *CostCenter) *ReorganizationInfoBuilder {
	builder.originalCostCenter = originalCostCenter
	builder.originalCostCenterFlag = true
	return builder
}

// 调整后默认成本中心
//
// 示例值：
func (builder *ReorganizationInfoBuilder) TargetCostCenter(targetCostCenter *CostCenter) *ReorganizationInfoBuilder {
	builder.targetCostCenter = targetCostCenter
	builder.targetCostCenterFlag = true
	return builder
}

// 原是否保密
//
// 示例值：true
func (builder *ReorganizationInfoBuilder) OriginalIsConfidential(originalIsConfidential bool) *ReorganizationInfoBuilder {
	builder.originalIsConfidential = originalIsConfidential
	builder.originalIsConfidentialFlag = true
	return builder
}

// 调整后是否保密
//
// 示例值：true
func (builder *ReorganizationInfoBuilder) TargetIsConfidential(targetIsConfidential bool) *ReorganizationInfoBuilder {
	builder.targetIsConfidential = targetIsConfidential
	builder.targetIsConfidentialFlag = true
	return builder
}

// 原是否使用职务
//
// 示例值：true
func (builder *ReorganizationInfoBuilder) OriginalStaffingModel(originalStaffingModel bool) *ReorganizationInfoBuilder {
	builder.originalStaffingModel = originalStaffingModel
	builder.originalStaffingModelFlag = true
	return builder
}

// 调整后是否使用职务
//
// 示例值：false
func (builder *ReorganizationInfoBuilder) TargetStaffingModel(targetStaffingModel bool) *ReorganizationInfoBuilder {
	builder.targetStaffingModel = targetStaffingModel
	builder.targetStaffingModelFlag = true
	return builder
}

// 原岗职模式
//
// 示例值：
func (builder *ReorganizationInfoBuilder) OriginalStaffingModeOption(originalStaffingModeOption *Enum) *ReorganizationInfoBuilder {
	builder.originalStaffingModeOption = originalStaffingModeOption
	builder.originalStaffingModeOptionFlag = true
	return builder
}

// 调整后岗职模式
//
// 示例值：
func (builder *ReorganizationInfoBuilder) TargetStaffingModeOption(targetStaffingModeOption *Enum) *ReorganizationInfoBuilder {
	builder.targetStaffingModeOption = targetStaffingModeOption
	builder.targetStaffingModeOptionFlag = true
	return builder
}

// 原上级部门
//
// 示例值：6974659700705068581
func (builder *ReorganizationInfoBuilder) OriginalParentDepartmentId(originalParentDepartmentId string) *ReorganizationInfoBuilder {
	builder.originalParentDepartmentId = originalParentDepartmentId
	builder.originalParentDepartmentIdFlag = true
	return builder
}

// 调整后上级部门
//
// 示例值：6974659700705068581
func (builder *ReorganizationInfoBuilder) TargetParentDepartmentId(targetParentDepartmentId string) *ReorganizationInfoBuilder {
	builder.targetParentDepartmentId = targetParentDepartmentId
	builder.targetParentDepartmentIdFlag = true
	return builder
}

// 调整后上级部门 ID ，调整审批未生效前会返回格式为 td_xxx 的临时 ID
//
// 示例值：6966236933198579208
func (builder *ReorganizationInfoBuilder) DraftTargetParentDepartmentId(draftTargetParentDepartmentId string) *ReorganizationInfoBuilder {
	builder.draftTargetParentDepartmentId = draftTargetParentDepartmentId
	builder.draftTargetParentDepartmentIdFlag = true
	return builder
}

// 原部门全路径
//
// 示例值：
func (builder *ReorganizationInfoBuilder) OriginalDepartmentIdPath(originalDepartmentIdPath []*OrgdraftDepartmentId) *ReorganizationInfoBuilder {
	builder.originalDepartmentIdPath = originalDepartmentIdPath
	builder.originalDepartmentIdPathFlag = true
	return builder
}

// 调整后部门全路径
//
// 示例值：
func (builder *ReorganizationInfoBuilder) TargetDepartmentIdPath(targetDepartmentIdPath []*OrgdraftDepartmentId) *ReorganizationInfoBuilder {
	builder.targetDepartmentIdPath = targetDepartmentIdPath
	builder.targetDepartmentIdPathFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ReorganizationInfoBuilder) CustomFields(customFields []*ChangeFieldPair) *ReorganizationInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 调整前后组织角色信息
//
// 示例值：
func (builder *ReorganizationInfoBuilder) OrgroleInfos(orgroleInfos []*OrgroleInfo) *ReorganizationInfoBuilder {
	builder.orgroleInfos = orgroleInfos
	builder.orgroleInfosFlag = true
	return builder
}

func (builder *ReorganizationInfoBuilder) Build() *ReorganizationInfo {
	req := &ReorganizationInfo{}
	if builder.originalDepartmentNamesFlag {
		req.OriginalDepartmentNames = builder.originalDepartmentNames
	}
	if builder.targetDepartmentNamesFlag {
		req.TargetDepartmentNames = builder.targetDepartmentNames
	}
	if builder.originalDepartmentCodeFlag {
		req.OriginalDepartmentCode = &builder.originalDepartmentCode

	}
	if builder.targetDepartmentCodeFlag {
		req.TargetDepartmentCode = &builder.targetDepartmentCode

	}
	if builder.originalSubTypeFlag {
		req.OriginalSubType = builder.originalSubType
	}
	if builder.targetSubTypeFlag {
		req.TargetSubType = builder.targetSubType
	}
	if builder.originalDepartmentManagerFlag {
		req.OriginalDepartmentManager = &builder.originalDepartmentManager

	}
	if builder.targetDepartmentManagerFlag {
		req.TargetDepartmentManager = &builder.targetDepartmentManager

	}
	if builder.originalDescriptionsFlag {
		req.OriginalDescriptions = builder.originalDescriptions
	}
	if builder.targetDescriptionsFlag {
		req.TargetDescriptions = builder.targetDescriptions
	}
	if builder.originalCostCenterFlag {
		req.OriginalCostCenter = builder.originalCostCenter
	}
	if builder.targetCostCenterFlag {
		req.TargetCostCenter = builder.targetCostCenter
	}
	if builder.originalIsConfidentialFlag {
		req.OriginalIsConfidential = &builder.originalIsConfidential

	}
	if builder.targetIsConfidentialFlag {
		req.TargetIsConfidential = &builder.targetIsConfidential

	}
	if builder.originalStaffingModelFlag {
		req.OriginalStaffingModel = &builder.originalStaffingModel

	}
	if builder.targetStaffingModelFlag {
		req.TargetStaffingModel = &builder.targetStaffingModel

	}
	if builder.originalStaffingModeOptionFlag {
		req.OriginalStaffingModeOption = builder.originalStaffingModeOption
	}
	if builder.targetStaffingModeOptionFlag {
		req.TargetStaffingModeOption = builder.targetStaffingModeOption
	}
	if builder.originalParentDepartmentIdFlag {
		req.OriginalParentDepartmentId = &builder.originalParentDepartmentId

	}
	if builder.targetParentDepartmentIdFlag {
		req.TargetParentDepartmentId = &builder.targetParentDepartmentId

	}
	if builder.draftTargetParentDepartmentIdFlag {
		req.DraftTargetParentDepartmentId = &builder.draftTargetParentDepartmentId

	}
	if builder.originalDepartmentIdPathFlag {
		req.OriginalDepartmentIdPath = builder.originalDepartmentIdPath
	}
	if builder.targetDepartmentIdPathFlag {
		req.TargetDepartmentIdPath = builder.targetDepartmentIdPath
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.orgroleInfosFlag {
		req.OrgroleInfos = builder.orgroleInfos
	}
	return req
}

type ReportDetailReq struct {
	WorkforcePlanId *string `json:"workforce_plan_id,omitempty"` // 编制规划id

	CentralizedReportingProjectId *string `json:"centralized_reporting_project_id,omitempty"` // 集中填报id

	Items []*WorkforcePlanDetailRow `json:"items,omitempty"` // 集中填报的一些填报行
}

type ReportDetailReqBuilder struct {
	workforcePlanId     string // 编制规划id
	workforcePlanIdFlag bool

	centralizedReportingProjectId     string // 集中填报id
	centralizedReportingProjectIdFlag bool

	items     []*WorkforcePlanDetailRow // 集中填报的一些填报行
	itemsFlag bool
}

func NewReportDetailReqBuilder() *ReportDetailReqBuilder {
	builder := &ReportDetailReqBuilder{}
	return builder
}

// 编制规划id
//
// 示例值：7430330781544564268
func (builder *ReportDetailReqBuilder) WorkforcePlanId(workforcePlanId string) *ReportDetailReqBuilder {
	builder.workforcePlanId = workforcePlanId
	builder.workforcePlanIdFlag = true
	return builder
}

// 集中填报id
//
// 示例值：7430470688844023340
func (builder *ReportDetailReqBuilder) CentralizedReportingProjectId(centralizedReportingProjectId string) *ReportDetailReqBuilder {
	builder.centralizedReportingProjectId = centralizedReportingProjectId
	builder.centralizedReportingProjectIdFlag = true
	return builder
}

// 集中填报的一些填报行
//
// 示例值：
func (builder *ReportDetailReqBuilder) Items(items []*WorkforcePlanDetailRow) *ReportDetailReqBuilder {
	builder.items = items
	builder.itemsFlag = true
	return builder
}

func (builder *ReportDetailReqBuilder) Build() *ReportDetailReq {
	req := &ReportDetailReq{}
	if builder.workforcePlanIdFlag {
		req.WorkforcePlanId = &builder.workforcePlanId

	}
	if builder.centralizedReportingProjectIdFlag {
		req.CentralizedReportingProjectId = &builder.centralizedReportingProjectId

	}
	if builder.itemsFlag {
		req.Items = builder.items
	}
	return req
}

type ResidentTax struct {
	YearResidentTax *string `json:"year_resident_tax,omitempty"` // 年度

	ResidentStatus *Enum `json:"resident_status,omitempty"` // -| 居民身份，枚举值 api_name 可通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "resident_tax" - custom_api_name = "resident_status"

	TaxCountryRegionId *string `json:"tax_country_region_id,omitempty"` // 国家/地区，可通过【查询国家/地区信息】 接口查询

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type ResidentTaxBuilder struct {
	yearResidentTax     string // 年度
	yearResidentTaxFlag bool

	residentStatus     *Enum // -| 居民身份，枚举值 api_name 可通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "resident_tax" - custom_api_name = "resident_status"
	residentStatusFlag bool

	taxCountryRegionId     string // 国家/地区，可通过【查询国家/地区信息】 接口查询
	taxCountryRegionIdFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewResidentTaxBuilder() *ResidentTaxBuilder {
	builder := &ResidentTaxBuilder{}
	return builder
}

// 年度
//
// 示例值：2023
func (builder *ResidentTaxBuilder) YearResidentTax(yearResidentTax string) *ResidentTaxBuilder {
	builder.yearResidentTax = yearResidentTax
	builder.yearResidentTaxFlag = true
	return builder
}

// -| 居民身份，枚举值 api_name 可通过【获取字段详情】接口查询，查询参数如下： - object_api_name = "resident_tax" - custom_api_name = "resident_status"
//
// 示例值：
func (builder *ResidentTaxBuilder) ResidentStatus(residentStatus *Enum) *ResidentTaxBuilder {
	builder.residentStatus = residentStatus
	builder.residentStatusFlag = true
	return builder
}

// 国家/地区，可通过【查询国家/地区信息】 接口查询
//
// 示例值：中国
func (builder *ResidentTaxBuilder) TaxCountryRegionId(taxCountryRegionId string) *ResidentTaxBuilder {
	builder.taxCountryRegionId = taxCountryRegionId
	builder.taxCountryRegionIdFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ResidentTaxBuilder) CustomFields(customFields []*ObjectFieldData) *ResidentTaxBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ResidentTaxBuilder) Build() *ResidentTax {
	req := &ResidentTax{}
	if builder.yearResidentTaxFlag {
		req.YearResidentTax = &builder.yearResidentTax

	}
	if builder.residentStatusFlag {
		req.ResidentStatus = builder.residentStatus
	}
	if builder.taxCountryRegionIdFlag {
		req.TaxCountryRegionId = &builder.taxCountryRegionId

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type ResidentTaxForUpdate struct {
	TaxCountryRegion *string `json:"tax_country_region,omitempty"` // 国家 / 地区ID

	ResidentStatus *string `json:"resident_status,omitempty"` // 居民身份

	TaxAddress *AddressForUpdate `json:"tax_address,omitempty"` // 纳税地址

	ResidentStatusSpecification *string `json:"resident_status_specification,omitempty"` // 居民纳税身份说明

	YearResidentTax *string `json:"year_resident_tax,omitempty"` // 年度

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type ResidentTaxForUpdateBuilder struct {
	taxCountryRegion     string // 国家 / 地区ID
	taxCountryRegionFlag bool

	residentStatus     string // 居民身份
	residentStatusFlag bool

	taxAddress     *AddressForUpdate // 纳税地址
	taxAddressFlag bool

	residentStatusSpecification     string // 居民纳税身份说明
	residentStatusSpecificationFlag bool

	yearResidentTax     string // 年度
	yearResidentTaxFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewResidentTaxForUpdateBuilder() *ResidentTaxForUpdateBuilder {
	builder := &ResidentTaxForUpdateBuilder{}
	return builder
}

// 国家 / 地区ID
//
// 示例值：6862995757234914824
func (builder *ResidentTaxForUpdateBuilder) TaxCountryRegion(taxCountryRegion string) *ResidentTaxForUpdateBuilder {
	builder.taxCountryRegion = taxCountryRegion
	builder.taxCountryRegionFlag = true
	return builder
}

// 居民身份
//
// 示例值：tax_residence
func (builder *ResidentTaxForUpdateBuilder) ResidentStatus(residentStatus string) *ResidentTaxForUpdateBuilder {
	builder.residentStatus = residentStatus
	builder.residentStatusFlag = true
	return builder
}

// 纳税地址
//
// 示例值：
func (builder *ResidentTaxForUpdateBuilder) TaxAddress(taxAddress *AddressForUpdate) *ResidentTaxForUpdateBuilder {
	builder.taxAddress = taxAddress
	builder.taxAddressFlag = true
	return builder
}

// 居民纳税身份说明
//
// 示例值：xxx
func (builder *ResidentTaxForUpdateBuilder) ResidentStatusSpecification(residentStatusSpecification string) *ResidentTaxForUpdateBuilder {
	builder.residentStatusSpecification = residentStatusSpecification
	builder.residentStatusSpecificationFlag = true
	return builder
}

// 年度
//
// 示例值：2006-01-01
func (builder *ResidentTaxForUpdateBuilder) YearResidentTax(yearResidentTax string) *ResidentTaxForUpdateBuilder {
	builder.yearResidentTax = yearResidentTax
	builder.yearResidentTaxFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *ResidentTaxForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *ResidentTaxForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *ResidentTaxForUpdateBuilder) Build() *ResidentTaxForUpdate {
	req := &ResidentTaxForUpdate{}
	if builder.taxCountryRegionFlag {
		req.TaxCountryRegion = &builder.taxCountryRegion

	}
	if builder.residentStatusFlag {
		req.ResidentStatus = &builder.residentStatus

	}
	if builder.taxAddressFlag {
		req.TaxAddress = builder.taxAddress
	}
	if builder.residentStatusSpecificationFlag {
		req.ResidentStatusSpecification = &builder.residentStatusSpecification

	}
	if builder.yearResidentTaxFlag {
		req.YearResidentTax = &builder.yearResidentTax

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type SelfService struct {
	Id *string `json:"id,omitempty"` // 唯一标识id
}

type SelfServiceBuilder struct {
	id     string // 唯一标识id
	idFlag bool
}

func NewSelfServiceBuilder() *SelfServiceBuilder {
	builder := &SelfServiceBuilder{}
	return builder
}

// 唯一标识id
//
// 示例值：7182881580136810028
func (builder *SelfServiceBuilder) Id(id string) *SelfServiceBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *SelfServiceBuilder) Build() *SelfService {
	req := &SelfService{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type SeniorityAdjustInformation struct {
	SeniorityAdjustmentType *Enum `json:"seniority_adjustment_type,omitempty"` // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type

	StartDate *string `json:"start_date,omitempty"` // 开始日期;- 格式： yyyy-mm-dd

	EndDate *string `json:"end_date,omitempty"` // 结束日期;- 格式： yyyy-mm-dd

	SeniorityAdjustment *float64 `json:"seniority_adjustment,omitempty"` // 调整值;- 精确度：两位小数;- 单位：年

	ReasonsForSeniorityAdjustment *string `json:"reasons_for_seniority_adjustment,omitempty"` // 调整原因

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段;- 具体支持的对象请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
}

type SeniorityAdjustInformationBuilder struct {
	seniorityAdjustmentType     *Enum // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
	seniorityAdjustmentTypeFlag bool

	startDate     string // 开始日期;- 格式： yyyy-mm-dd
	startDateFlag bool

	endDate     string // 结束日期;- 格式： yyyy-mm-dd
	endDateFlag bool

	seniorityAdjustment     float64 // 调整值;- 精确度：两位小数;- 单位：年
	seniorityAdjustmentFlag bool

	reasonsForSeniorityAdjustment     string // 调整原因
	reasonsForSeniorityAdjustmentFlag bool

	customFields     []*CustomFieldData // 自定义字段;- 具体支持的对象请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
	customFieldsFlag bool
}

func NewSeniorityAdjustInformationBuilder() *SeniorityAdjustInformationBuilder {
	builder := &SeniorityAdjustInformationBuilder{}
	return builder
}

// 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
//
// 示例值：
func (builder *SeniorityAdjustInformationBuilder) SeniorityAdjustmentType(seniorityAdjustmentType *Enum) *SeniorityAdjustInformationBuilder {
	builder.seniorityAdjustmentType = seniorityAdjustmentType
	builder.seniorityAdjustmentTypeFlag = true
	return builder
}

// 开始日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-01-01
func (builder *SeniorityAdjustInformationBuilder) StartDate(startDate string) *SeniorityAdjustInformationBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-10-01
func (builder *SeniorityAdjustInformationBuilder) EndDate(endDate string) *SeniorityAdjustInformationBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 调整值;- 精确度：两位小数;- 单位：年
//
// 示例值：1.01
func (builder *SeniorityAdjustInformationBuilder) SeniorityAdjustment(seniorityAdjustment float64) *SeniorityAdjustInformationBuilder {
	builder.seniorityAdjustment = seniorityAdjustment
	builder.seniorityAdjustmentFlag = true
	return builder
}

// 调整原因
//
// 示例值：工厂停产需要减去半年工龄
func (builder *SeniorityAdjustInformationBuilder) ReasonsForSeniorityAdjustment(reasonsForSeniorityAdjustment string) *SeniorityAdjustInformationBuilder {
	builder.reasonsForSeniorityAdjustment = reasonsForSeniorityAdjustment
	builder.reasonsForSeniorityAdjustmentFlag = true
	return builder
}

// 自定义字段;- 具体支持的对象请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
//
// 示例值：
func (builder *SeniorityAdjustInformationBuilder) CustomFields(customFields []*CustomFieldData) *SeniorityAdjustInformationBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *SeniorityAdjustInformationBuilder) Build() *SeniorityAdjustInformation {
	req := &SeniorityAdjustInformation{}
	if builder.seniorityAdjustmentTypeFlag {
		req.SeniorityAdjustmentType = builder.seniorityAdjustmentType
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.seniorityAdjustmentFlag {
		req.SeniorityAdjustment = &builder.seniorityAdjustment

	}
	if builder.reasonsForSeniorityAdjustmentFlag {
		req.ReasonsForSeniorityAdjustment = &builder.reasonsForSeniorityAdjustment

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type SeniorityAdjustInformationEdit struct {
	SeniorityAdjustmentType *string `json:"seniority_adjustment_type,omitempty"` // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type

	StartDate *string `json:"start_date,omitempty"` // 开始日期;- 格式： yyyy-mm-dd

	EndDate *string `json:"end_date,omitempty"` // 结束日期;- 格式： yyyy-mm-dd

	ReasonsForSeniorityAdjustment *string `json:"reasons_for_seniority_adjustment,omitempty"` // 调整原因

	SeniorityAdjustment *float64 `json:"seniority_adjustment,omitempty"` // 调整值;- 精确度：两位小数;- 单位：年

	CustomFields []*ProfileSettingCustomField `json:"custom_fields,omitempty"` // 自定义字段;- 具体支持的对象请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
}

type SeniorityAdjustInformationEditBuilder struct {
	seniorityAdjustmentType     string // 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
	seniorityAdjustmentTypeFlag bool

	startDate     string // 开始日期;- 格式： yyyy-mm-dd
	startDateFlag bool

	endDate     string // 结束日期;- 格式： yyyy-mm-dd
	endDateFlag bool

	reasonsForSeniorityAdjustment     string // 调整原因
	reasonsForSeniorityAdjustmentFlag bool

	seniorityAdjustment     float64 // 调整值;- 精确度：两位小数;- 单位：年
	seniorityAdjustmentFlag bool

	customFields     []*ProfileSettingCustomField // 自定义字段;- 具体支持的对象请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
	customFieldsFlag bool
}

func NewSeniorityAdjustInformationEditBuilder() *SeniorityAdjustInformationEditBuilder {
	builder := &SeniorityAdjustInformationEditBuilder{}
	return builder
}

// 调整类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：seniority_adjust_information;  - custom_api_name：seniority_adjustment_type
//
// 示例值：increase
func (builder *SeniorityAdjustInformationEditBuilder) SeniorityAdjustmentType(seniorityAdjustmentType string) *SeniorityAdjustInformationEditBuilder {
	builder.seniorityAdjustmentType = seniorityAdjustmentType
	builder.seniorityAdjustmentTypeFlag = true
	return builder
}

// 开始日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-01-01
func (builder *SeniorityAdjustInformationEditBuilder) StartDate(startDate string) *SeniorityAdjustInformationEditBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期;- 格式： yyyy-mm-dd
//
// 示例值：2024-01-02
func (builder *SeniorityAdjustInformationEditBuilder) EndDate(endDate string) *SeniorityAdjustInformationEditBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 调整原因
//
// 示例值：工厂停产需要减去半年工龄
func (builder *SeniorityAdjustInformationEditBuilder) ReasonsForSeniorityAdjustment(reasonsForSeniorityAdjustment string) *SeniorityAdjustInformationEditBuilder {
	builder.reasonsForSeniorityAdjustment = reasonsForSeniorityAdjustment
	builder.reasonsForSeniorityAdjustmentFlag = true
	return builder
}

// 调整值;- 精确度：两位小数;- 单位：年
//
// 示例值：1.01
func (builder *SeniorityAdjustInformationEditBuilder) SeniorityAdjustment(seniorityAdjustment float64) *SeniorityAdjustInformationEditBuilder {
	builder.seniorityAdjustment = seniorityAdjustment
	builder.seniorityAdjustmentFlag = true
	return builder
}

// 自定义字段;- 具体支持的对象请参考[【自定义字段说明】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom-fields-guide)
//
// 示例值：
func (builder *SeniorityAdjustInformationEditBuilder) CustomFields(customFields []*ProfileSettingCustomField) *SeniorityAdjustInformationEditBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *SeniorityAdjustInformationEditBuilder) Build() *SeniorityAdjustInformationEdit {
	req := &SeniorityAdjustInformationEdit{}
	if builder.seniorityAdjustmentTypeFlag {
		req.SeniorityAdjustmentType = &builder.seniorityAdjustmentType

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.reasonsForSeniorityAdjustmentFlag {
		req.ReasonsForSeniorityAdjustment = &builder.reasonsForSeniorityAdjustment

	}
	if builder.seniorityAdjustmentFlag {
		req.SeniorityAdjustment = &builder.seniorityAdjustment

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type SignatureCustomFieldV1 struct {
	Key *string `json:"key,omitempty"` // 模板自定义字段的key

	Value *string `json:"value,omitempty"` // 自定义字段的value
}

type SignatureCustomFieldV1Builder struct {
	key     string // 模板自定义字段的key
	keyFlag bool

	value     string // 自定义字段的value
	valueFlag bool
}

func NewSignatureCustomFieldV1Builder() *SignatureCustomFieldV1Builder {
	builder := &SignatureCustomFieldV1Builder{}
	return builder
}

// 模板自定义字段的key
//
// 示例值：ItImqNuDK
func (builder *SignatureCustomFieldV1Builder) Key(key string) *SignatureCustomFieldV1Builder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 自定义字段的value
//
// 示例值：000
func (builder *SignatureCustomFieldV1Builder) Value(value string) *SignatureCustomFieldV1Builder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *SignatureCustomFieldV1Builder) Build() *SignatureCustomFieldV1 {
	req := &SignatureCustomFieldV1{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type SignatureCustomFieldV2 struct {
	Key *string `json:"key,omitempty"` // v2自定义字段的key

	Value *SignatureCustomFieldValue `json:"value,omitempty"` // v2自定义字段的key对应的value(包含了多语)
}

type SignatureCustomFieldV2Builder struct {
	key     string // v2自定义字段的key
	keyFlag bool

	value     *SignatureCustomFieldValue // v2自定义字段的key对应的value(包含了多语)
	valueFlag bool
}

func NewSignatureCustomFieldV2Builder() *SignatureCustomFieldV2Builder {
	builder := &SignatureCustomFieldV2Builder{}
	return builder
}

// v2自定义字段的key
//
// 示例值：test
func (builder *SignatureCustomFieldV2Builder) Key(key string) *SignatureCustomFieldV2Builder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// v2自定义字段的key对应的value(包含了多语)
//
// 示例值：
func (builder *SignatureCustomFieldV2Builder) Value(value *SignatureCustomFieldValue) *SignatureCustomFieldV2Builder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *SignatureCustomFieldV2Builder) Build() *SignatureCustomFieldV2 {
	req := &SignatureCustomFieldV2{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.valueFlag {
		req.Value = builder.value
	}
	return req
}

type SignatureCustomFieldValue struct {
	TextValue *string `json:"text_value,omitempty"` // 自定义字段的值

	MultilingualValue *SignatureCustomFieldValueMultilingualValue `json:"multilingual_value,omitempty"` // 自定义字段的值对应的多语value
}

type SignatureCustomFieldValueBuilder struct {
	textValue     string // 自定义字段的值
	textValueFlag bool

	multilingualValue     *SignatureCustomFieldValueMultilingualValue // 自定义字段的值对应的多语value
	multilingualValueFlag bool
}

func NewSignatureCustomFieldValueBuilder() *SignatureCustomFieldValueBuilder {
	builder := &SignatureCustomFieldValueBuilder{}
	return builder
}

// 自定义字段的值
//
// 示例值：test
func (builder *SignatureCustomFieldValueBuilder) TextValue(textValue string) *SignatureCustomFieldValueBuilder {
	builder.textValue = textValue
	builder.textValueFlag = true
	return builder
}

// 自定义字段的值对应的多语value
//
// 示例值：
func (builder *SignatureCustomFieldValueBuilder) MultilingualValue(multilingualValue *SignatureCustomFieldValueMultilingualValue) *SignatureCustomFieldValueBuilder {
	builder.multilingualValue = multilingualValue
	builder.multilingualValueFlag = true
	return builder
}

func (builder *SignatureCustomFieldValueBuilder) Build() *SignatureCustomFieldValue {
	req := &SignatureCustomFieldValue{}
	if builder.textValueFlag {
		req.TextValue = &builder.textValue

	}
	if builder.multilingualValueFlag {
		req.MultilingualValue = builder.multilingualValue
	}
	return req
}

type SignatureCustomFieldValueMultilingualValue struct {
	Zh *string `json:"zh,omitempty"` // 电子签自定义字段(v2)的多语言value的中文

	En *string `json:"en,omitempty"` // 电子签自定义字段(v2)的多语言value的英文
}

type SignatureCustomFieldValueMultilingualValueBuilder struct {
	zh     string // 电子签自定义字段(v2)的多语言value的中文
	zhFlag bool

	en     string // 电子签自定义字段(v2)的多语言value的英文
	enFlag bool
}

func NewSignatureCustomFieldValueMultilingualValueBuilder() *SignatureCustomFieldValueMultilingualValueBuilder {
	builder := &SignatureCustomFieldValueMultilingualValueBuilder{}
	return builder
}

// 电子签自定义字段(v2)的多语言value的中文
//
// 示例值：中文
func (builder *SignatureCustomFieldValueMultilingualValueBuilder) Zh(zh string) *SignatureCustomFieldValueMultilingualValueBuilder {
	builder.zh = zh
	builder.zhFlag = true
	return builder
}

// 电子签自定义字段(v2)的多语言value的英文
//
// 示例值：英文
func (builder *SignatureCustomFieldValueMultilingualValueBuilder) En(en string) *SignatureCustomFieldValueMultilingualValueBuilder {
	builder.en = en
	builder.enFlag = true
	return builder
}

func (builder *SignatureCustomFieldValueMultilingualValueBuilder) Build() *SignatureCustomFieldValueMultilingualValue {
	req := &SignatureCustomFieldValueMultilingualValue{}
	if builder.zhFlag {
		req.Zh = &builder.zh

	}
	if builder.enFlag {
		req.En = &builder.en

	}
	return req
}

type SignatureEnumInfo struct {
	Label *SignatureEnumInfoLabel `json:"label,omitempty"` //

	Apiname *string `json:"apiname,omitempty"` // 主数据apiname

	Active *bool `json:"active,omitempty"` // 是否启用
}

type SignatureEnumInfoBuilder struct {
	label     *SignatureEnumInfoLabel //
	labelFlag bool

	apiname     string // 主数据apiname
	apinameFlag bool

	active     bool // 是否启用
	activeFlag bool
}

func NewSignatureEnumInfoBuilder() *SignatureEnumInfoBuilder {
	builder := &SignatureEnumInfoBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *SignatureEnumInfoBuilder) Label(label *SignatureEnumInfoLabel) *SignatureEnumInfoBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 主数据apiname
//
// 示例值：status
func (builder *SignatureEnumInfoBuilder) Apiname(apiname string) *SignatureEnumInfoBuilder {
	builder.apiname = apiname
	builder.apinameFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *SignatureEnumInfoBuilder) Active(active bool) *SignatureEnumInfoBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *SignatureEnumInfoBuilder) Build() *SignatureEnumInfo {
	req := &SignatureEnumInfo{}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.apinameFlag {
		req.Apiname = &builder.apiname

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	return req
}

type SignatureEnumInfoLabel struct {
	Zh *string `json:"zh,omitempty"` // zh-CN

	En *string `json:"en,omitempty"` // en-US
}

type SignatureEnumInfoLabelBuilder struct {
	zh     string // zh-CN
	zhFlag bool

	en     string // en-US
	enFlag bool
}

func NewSignatureEnumInfoLabelBuilder() *SignatureEnumInfoLabelBuilder {
	builder := &SignatureEnumInfoLabelBuilder{}
	return builder
}

// zh-CN
//
// 示例值：中文
func (builder *SignatureEnumInfoLabelBuilder) Zh(zh string) *SignatureEnumInfoLabelBuilder {
	builder.zh = zh
	builder.zhFlag = true
	return builder
}

// en-US
//
// 示例值：英文
func (builder *SignatureEnumInfoLabelBuilder) En(en string) *SignatureEnumInfoLabelBuilder {
	builder.en = en
	builder.enFlag = true
	return builder
}

func (builder *SignatureEnumInfoLabelBuilder) Build() *SignatureEnumInfoLabel {
	req := &SignatureEnumInfoLabel{}
	if builder.zhFlag {
		req.Zh = &builder.zh

	}
	if builder.enFlag {
		req.En = &builder.en

	}
	return req
}

type SignatureFile struct {
	SignatureFileId *string `json:"signature_file_id,omitempty"` // 电子签文件ID

	Names []*I18n `json:"names,omitempty"` // 名称

	CreateTime *string `json:"create_time,omitempty"` // 创建时间

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职 id

	SignatureFileState *Enum `json:"signature_file_state,omitempty"` // 电子签文件状态，枚举值可通过文档【飞书人事枚举常量】电子签文件状态（signature_file_state）枚举定义部分获得

	ContractCode *string `json:"contract_code,omitempty"` // 供应商侧的合同编号，作为幂等key

	EffectiveDate *string `json:"effective_date,omitempty"` // 电子签文件生效日期

	TemplateId *string `json:"template_id,omitempty"` // 电子签模板ID

	SignUrl *string `json:"sign_url,omitempty"` // 签署链接
}

type SignatureFileBuilder struct {
	signatureFileId     string // 电子签文件ID
	signatureFileIdFlag bool

	names     []*I18n // 名称
	namesFlag bool

	createTime     string // 创建时间
	createTimeFlag bool

	updateTime     string // 更新时间
	updateTimeFlag bool

	employmentId     string // 雇员 id
	employmentIdFlag bool

	preHireId     string // 待入职 id
	preHireIdFlag bool

	signatureFileState     *Enum // 电子签文件状态，枚举值可通过文档【飞书人事枚举常量】电子签文件状态（signature_file_state）枚举定义部分获得
	signatureFileStateFlag bool

	contractCode     string // 供应商侧的合同编号，作为幂等key
	contractCodeFlag bool

	effectiveDate     string // 电子签文件生效日期
	effectiveDateFlag bool

	templateId     string // 电子签模板ID
	templateIdFlag bool

	signUrl     string // 签署链接
	signUrlFlag bool
}

func NewSignatureFileBuilder() *SignatureFileBuilder {
	builder := &SignatureFileBuilder{}
	return builder
}

// 电子签文件ID
//
// 示例值：7147527056140813828
func (builder *SignatureFileBuilder) SignatureFileId(signatureFileId string) *SignatureFileBuilder {
	builder.signatureFileId = signatureFileId
	builder.signatureFileIdFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *SignatureFileBuilder) Names(names []*I18n) *SignatureFileBuilder {
	builder.names = names
	builder.namesFlag = true
	return builder
}

// 创建时间
//
// 示例值：2023-01-01 00:00:00
func (builder *SignatureFileBuilder) CreateTime(createTime string) *SignatureFileBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2023-01-01 00:00:00
func (builder *SignatureFileBuilder) UpdateTime(updateTime string) *SignatureFileBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

// 雇员 id
//
// 示例值：7123132668099919891
func (builder *SignatureFileBuilder) EmploymentId(employmentId string) *SignatureFileBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 待入职 id
//
// 示例值：7123132668099919891
func (builder *SignatureFileBuilder) PreHireId(preHireId string) *SignatureFileBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 电子签文件状态，枚举值可通过文档【飞书人事枚举常量】电子签文件状态（signature_file_state）枚举定义部分获得
//
// 示例值：
func (builder *SignatureFileBuilder) SignatureFileState(signatureFileState *Enum) *SignatureFileBuilder {
	builder.signatureFileState = signatureFileState
	builder.signatureFileStateFlag = true
	return builder
}

// 供应商侧的合同编号，作为幂等key
//
// 示例值：48793beea04f4e2583d50732e481d507
func (builder *SignatureFileBuilder) ContractCode(contractCode string) *SignatureFileBuilder {
	builder.contractCode = contractCode
	builder.contractCodeFlag = true
	return builder
}

// 电子签文件生效日期
//
// 示例值：2024-12-01
func (builder *SignatureFileBuilder) EffectiveDate(effectiveDate string) *SignatureFileBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 电子签模板ID
//
// 示例值：7147527056140813828
func (builder *SignatureFileBuilder) TemplateId(templateId string) *SignatureFileBuilder {
	builder.templateId = templateId
	builder.templateIdFlag = true
	return builder
}

// 签署链接
//
// 示例值：123213
func (builder *SignatureFileBuilder) SignUrl(signUrl string) *SignatureFileBuilder {
	builder.signUrl = signUrl
	builder.signUrlFlag = true
	return builder
}

func (builder *SignatureFileBuilder) Build() *SignatureFile {
	req := &SignatureFile{}
	if builder.signatureFileIdFlag {
		req.SignatureFileId = &builder.signatureFileId

	}
	if builder.namesFlag {
		req.Names = builder.names
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId

	}
	if builder.signatureFileStateFlag {
		req.SignatureFileState = builder.signatureFileState
	}
	if builder.contractCodeFlag {
		req.ContractCode = &builder.contractCode

	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.templateIdFlag {
		req.TemplateId = &builder.templateId

	}
	if builder.signUrlFlag {
		req.SignUrl = &builder.signUrl

	}
	return req
}

type SignatureFileSystemField struct {
	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	Deadline *string `json:"deadline,omitempty"` // 过期时间

	OrderedNodeKeys []string `json:"ordered_node_keys,omitempty"` // 签署节点顺序，可以不传，不传会按照默认顺序发起。 如果传了的话 要求值一定和模板的签署方(TemplateInfo.TemplateBriefInfo.SignatoryLabelList表示的是模板的签署方)里的apiname保持一致

	DeadlineTimestamp *string `json:"deadline_timestamp,omitempty"` // DDL时间戳,精确到秒 10位

	AutoStampTimestamp *string `json:"auto_stamp_timestamp,omitempty"` // 自动盖章时间 精确到秒 10位 如1650339376

	ApprovalRole *string `json:"approval_role,omitempty"` // 审批角色--HR管理员审批
}

type SignatureFileSystemFieldBuilder struct {
	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	deadline     string // 过期时间
	deadlineFlag bool

	orderedNodeKeys     []string // 签署节点顺序，可以不传，不传会按照默认顺序发起。 如果传了的话 要求值一定和模板的签署方(TemplateInfo.TemplateBriefInfo.SignatoryLabelList表示的是模板的签署方)里的apiname保持一致
	orderedNodeKeysFlag bool

	deadlineTimestamp     string // DDL时间戳,精确到秒 10位
	deadlineTimestampFlag bool

	autoStampTimestamp     string // 自动盖章时间 精确到秒 10位 如1650339376
	autoStampTimestampFlag bool

	approvalRole     string // 审批角色--HR管理员审批
	approvalRoleFlag bool
}

func NewSignatureFileSystemFieldBuilder() *SignatureFileSystemFieldBuilder {
	builder := &SignatureFileSystemFieldBuilder{}
	return builder
}

// 生效日期
//
// 示例值：2018-01-02
func (builder *SignatureFileSystemFieldBuilder) EffectiveDate(effectiveDate string) *SignatureFileSystemFieldBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 过期时间
//
// 示例值：2018-01-02 11:11:11
func (builder *SignatureFileSystemFieldBuilder) Deadline(deadline string) *SignatureFileSystemFieldBuilder {
	builder.deadline = deadline
	builder.deadlineFlag = true
	return builder
}

// 签署节点顺序，可以不传，不传会按照默认顺序发起。 如果传了的话 要求值一定和模板的签署方(TemplateInfo.TemplateBriefInfo.SignatoryLabelList表示的是模板的签署方)里的apiname保持一致
//
// 示例值：
func (builder *SignatureFileSystemFieldBuilder) OrderedNodeKeys(orderedNodeKeys []string) *SignatureFileSystemFieldBuilder {
	builder.orderedNodeKeys = orderedNodeKeys
	builder.orderedNodeKeysFlag = true
	return builder
}

// DDL时间戳,精确到秒 10位
//
// 示例值：1,001,231,231
func (builder *SignatureFileSystemFieldBuilder) DeadlineTimestamp(deadlineTimestamp string) *SignatureFileSystemFieldBuilder {
	builder.deadlineTimestamp = deadlineTimestamp
	builder.deadlineTimestampFlag = true
	return builder
}

// 自动盖章时间 精确到秒 10位 如1650339376
//
// 示例值：1,023,123,213
func (builder *SignatureFileSystemFieldBuilder) AutoStampTimestamp(autoStampTimestamp string) *SignatureFileSystemFieldBuilder {
	builder.autoStampTimestamp = autoStampTimestamp
	builder.autoStampTimestampFlag = true
	return builder
}

// 审批角色--HR管理员审批
//
// 示例值：signature_admin_approval
func (builder *SignatureFileSystemFieldBuilder) ApprovalRole(approvalRole string) *SignatureFileSystemFieldBuilder {
	builder.approvalRole = approvalRole
	builder.approvalRoleFlag = true
	return builder
}

func (builder *SignatureFileSystemFieldBuilder) Build() *SignatureFileSystemField {
	req := &SignatureFileSystemField{}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.deadlineFlag {
		req.Deadline = &builder.deadline

	}
	if builder.orderedNodeKeysFlag {
		req.OrderedNodeKeys = builder.orderedNodeKeys
	}
	if builder.deadlineTimestampFlag {
		req.DeadlineTimestamp = &builder.deadlineTimestamp

	}
	if builder.autoStampTimestampFlag {
		req.AutoStampTimestamp = &builder.autoStampTimestamp

	}
	if builder.approvalRoleFlag {
		req.ApprovalRole = &builder.approvalRole

	}
	return req
}

type SignatureFolder struct {
	BizType *Enum `json:"biz_type,omitempty"` // 业务 会对应不同的topic

	OwnerInfo *SignatureHumanInfo `json:"owner_info,omitempty"` // 归属人信息

	SignatureTemplateFields []*SignatureTemplateIdWithSystemAndCustomField `json:"signature_template_fields,omitempty"` // 电子签模板字段列表

	UniqueKey *int `json:"unique_key,omitempty"` // 某个业务的唯一key，用于幂等。相同key不会重复发起文件，但会返回对应TaskID，并给发起成功回调

	BizProcessId *string `json:"biz_process_id,omitempty"` // 业务流程对应id 可不传
}

type SignatureFolderBuilder struct {
	bizType     *Enum // 业务 会对应不同的topic
	bizTypeFlag bool

	ownerInfo     *SignatureHumanInfo // 归属人信息
	ownerInfoFlag bool

	signatureTemplateFields     []*SignatureTemplateIdWithSystemAndCustomField // 电子签模板字段列表
	signatureTemplateFieldsFlag bool

	uniqueKey     int // 某个业务的唯一key，用于幂等。相同key不会重复发起文件，但会返回对应TaskID，并给发起成功回调
	uniqueKeyFlag bool

	bizProcessId     string // 业务流程对应id 可不传
	bizProcessIdFlag bool
}

func NewSignatureFolderBuilder() *SignatureFolderBuilder {
	builder := &SignatureFolderBuilder{}
	return builder
}

// 业务 会对应不同的topic
//
// 示例值：
func (builder *SignatureFolderBuilder) BizType(bizType *Enum) *SignatureFolderBuilder {
	builder.bizType = bizType
	builder.bizTypeFlag = true
	return builder
}

// 归属人信息
//
// 示例值：
func (builder *SignatureFolderBuilder) OwnerInfo(ownerInfo *SignatureHumanInfo) *SignatureFolderBuilder {
	builder.ownerInfo = ownerInfo
	builder.ownerInfoFlag = true
	return builder
}

// 电子签模板字段列表
//
// 示例值：
func (builder *SignatureFolderBuilder) SignatureTemplateFields(signatureTemplateFields []*SignatureTemplateIdWithSystemAndCustomField) *SignatureFolderBuilder {
	builder.signatureTemplateFields = signatureTemplateFields
	builder.signatureTemplateFieldsFlag = true
	return builder
}

// 某个业务的唯一key，用于幂等。相同key不会重复发起文件，但会返回对应TaskID，并给发起成功回调
//
// 示例值：1000
func (builder *SignatureFolderBuilder) UniqueKey(uniqueKey int) *SignatureFolderBuilder {
	builder.uniqueKey = uniqueKey
	builder.uniqueKeyFlag = true
	return builder
}

// 业务流程对应id 可不传
//
// 示例值：123123232
func (builder *SignatureFolderBuilder) BizProcessId(bizProcessId string) *SignatureFolderBuilder {
	builder.bizProcessId = bizProcessId
	builder.bizProcessIdFlag = true
	return builder
}

func (builder *SignatureFolderBuilder) Build() *SignatureFolder {
	req := &SignatureFolder{}
	if builder.bizTypeFlag {
		req.BizType = builder.bizType
	}
	if builder.ownerInfoFlag {
		req.OwnerInfo = builder.ownerInfo
	}
	if builder.signatureTemplateFieldsFlag {
		req.SignatureTemplateFields = builder.signatureTemplateFields
	}
	if builder.uniqueKeyFlag {
		req.UniqueKey = &builder.uniqueKey

	}
	if builder.bizProcessIdFlag {
		req.BizProcessId = &builder.bizProcessId

	}
	return req
}

type SignatureHumanInfo struct {
	EmployeeId *string `json:"employee_id,omitempty"` // 在职员工ID

	PreHireId *string `json:"pre_hire_id,omitempty"` // 员工待入职id

	UserIdType *string `json:"user_id_type,omitempty"` // 用户 ID 类型，适用于employee_id

	HumanType *Enum `json:"human_type,omitempty"` // 归属人类型
}

type SignatureHumanInfoBuilder struct {
	employeeId     string // 在职员工ID
	employeeIdFlag bool

	preHireId     string // 员工待入职id
	preHireIdFlag bool

	userIdType     string // 用户 ID 类型，适用于employee_id
	userIdTypeFlag bool

	humanType     *Enum // 归属人类型
	humanTypeFlag bool
}

func NewSignatureHumanInfoBuilder() *SignatureHumanInfoBuilder {
	builder := &SignatureHumanInfoBuilder{}
	return builder
}

// 在职员工ID
//
// 示例值：5ce6cd12
func (builder *SignatureHumanInfoBuilder) EmployeeId(employeeId string) *SignatureHumanInfoBuilder {
	builder.employeeId = employeeId
	builder.employeeIdFlag = true
	return builder
}

// 员工待入职id
//
// 示例值：7278880340130022956
func (builder *SignatureHumanInfoBuilder) PreHireId(preHireId string) *SignatureHumanInfoBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 用户 ID 类型，适用于employee_id
//
// 示例值：people_corehr_id
func (builder *SignatureHumanInfoBuilder) UserIdType(userIdType string) *SignatureHumanInfoBuilder {
	builder.userIdType = userIdType
	builder.userIdTypeFlag = true
	return builder
}

// 归属人类型
//
// 示例值：
func (builder *SignatureHumanInfoBuilder) HumanType(humanType *Enum) *SignatureHumanInfoBuilder {
	builder.humanType = humanType
	builder.humanTypeFlag = true
	return builder
}

func (builder *SignatureHumanInfoBuilder) Build() *SignatureHumanInfo {
	req := &SignatureHumanInfo{}
	if builder.employeeIdFlag {
		req.EmployeeId = &builder.employeeId

	}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId

	}
	if builder.userIdTypeFlag {
		req.UserIdType = &builder.userIdType

	}
	if builder.humanTypeFlag {
		req.HumanType = builder.humanType
	}
	return req
}

type SignatureMetaInfo struct {
	ApiName *string `json:"api_name,omitempty"` // 元数据api_name

	WkId *string `json:"wk_id,omitempty"` // wukong id

	Label []*I18n `json:"label,omitempty"` // 多语描述
}

type SignatureMetaInfoBuilder struct {
	apiName     string // 元数据api_name
	apiNameFlag bool

	wkId     string // wukong id
	wkIdFlag bool

	label     []*I18n // 多语描述
	labelFlag bool
}

func NewSignatureMetaInfoBuilder() *SignatureMetaInfoBuilder {
	builder := &SignatureMetaInfoBuilder{}
	return builder
}

// 元数据api_name
//
// 示例值：status
func (builder *SignatureMetaInfoBuilder) ApiName(apiName string) *SignatureMetaInfoBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// wukong id
//
// 示例值：123124124124123
func (builder *SignatureMetaInfoBuilder) WkId(wkId string) *SignatureMetaInfoBuilder {
	builder.wkId = wkId
	builder.wkIdFlag = true
	return builder
}

// 多语描述
//
// 示例值：
func (builder *SignatureMetaInfoBuilder) Label(label []*I18n) *SignatureMetaInfoBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

func (builder *SignatureMetaInfoBuilder) Build() *SignatureMetaInfo {
	req := &SignatureMetaInfo{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.wkIdFlag {
		req.WkId = &builder.wkId

	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	return req
}

type SignatureNode struct {
	UserInfos []*SignatureUserInfo `json:"user_infos,omitempty"` // 电子签节点列表

	State *string `json:"state,omitempty"` // 电子签文件节点状态

	FinishTime *string `json:"finish_time,omitempty"` // 节点完成时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 节点最近更新时间

	IsOngoing *bool `json:"is_ongoing,omitempty"` // 当前节点是否为正在处理的节点

	RoleLabel *SignatureEnumInfoLabel `json:"role_label,omitempty"` // 当前操作节点的角色名称

	SignRole *string `json:"sign_role,omitempty"` // 签署角色
}

type SignatureNodeBuilder struct {
	userInfos     []*SignatureUserInfo // 电子签节点列表
	userInfosFlag bool

	state     string // 电子签文件节点状态
	stateFlag bool

	finishTime     string // 节点完成时间
	finishTimeFlag bool

	updatedTime     string // 节点最近更新时间
	updatedTimeFlag bool

	isOngoing     bool // 当前节点是否为正在处理的节点
	isOngoingFlag bool

	roleLabel     *SignatureEnumInfoLabel // 当前操作节点的角色名称
	roleLabelFlag bool

	signRole     string // 签署角色
	signRoleFlag bool
}

func NewSignatureNodeBuilder() *SignatureNodeBuilder {
	builder := &SignatureNodeBuilder{}
	return builder
}

// 电子签节点列表
//
// 示例值：
func (builder *SignatureNodeBuilder) UserInfos(userInfos []*SignatureUserInfo) *SignatureNodeBuilder {
	builder.userInfos = userInfos
	builder.userInfosFlag = true
	return builder
}

// 电子签文件节点状态
//
// 示例值：Initiated
func (builder *SignatureNodeBuilder) State(state string) *SignatureNodeBuilder {
	builder.state = state
	builder.stateFlag = true
	return builder
}

// 节点完成时间
//
// 示例值：2021-12-31 12:21:10
func (builder *SignatureNodeBuilder) FinishTime(finishTime string) *SignatureNodeBuilder {
	builder.finishTime = finishTime
	builder.finishTimeFlag = true
	return builder
}

// 节点最近更新时间
//
// 示例值：2021-12-31 12:21:10
func (builder *SignatureNodeBuilder) UpdatedTime(updatedTime string) *SignatureNodeBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

// 当前节点是否为正在处理的节点
//
// 示例值：
func (builder *SignatureNodeBuilder) IsOngoing(isOngoing bool) *SignatureNodeBuilder {
	builder.isOngoing = isOngoing
	builder.isOngoingFlag = true
	return builder
}

// 当前操作节点的角色名称
//
// 示例值：
func (builder *SignatureNodeBuilder) RoleLabel(roleLabel *SignatureEnumInfoLabel) *SignatureNodeBuilder {
	builder.roleLabel = roleLabel
	builder.roleLabelFlag = true
	return builder
}

// 签署角色
//
// 示例值：Initiator,发起人
func (builder *SignatureNodeBuilder) SignRole(signRole string) *SignatureNodeBuilder {
	builder.signRole = signRole
	builder.signRoleFlag = true
	return builder
}

func (builder *SignatureNodeBuilder) Build() *SignatureNode {
	req := &SignatureNode{}
	if builder.userInfosFlag {
		req.UserInfos = builder.userInfos
	}
	if builder.stateFlag {
		req.State = &builder.state

	}
	if builder.finishTimeFlag {
		req.FinishTime = &builder.finishTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	if builder.isOngoingFlag {
		req.IsOngoing = &builder.isOngoing

	}
	if builder.roleLabelFlag {
		req.RoleLabel = builder.roleLabel
	}
	if builder.signRoleFlag {
		req.SignRole = &builder.signRole

	}
	return req
}

type SignatureSignatoryLabel struct {
	TemplateSignatoryType *Enum `json:"template_signatory_type,omitempty"` // 电子签模板签订人类型

	Label []*I18n `json:"label,omitempty"` // 中英文描述

	Apiname *string `json:"apiname,omitempty"` // 主数据apiname
}

type SignatureSignatoryLabelBuilder struct {
	templateSignatoryType     *Enum // 电子签模板签订人类型
	templateSignatoryTypeFlag bool

	label     []*I18n // 中英文描述
	labelFlag bool

	apiname     string // 主数据apiname
	apinameFlag bool
}

func NewSignatureSignatoryLabelBuilder() *SignatureSignatoryLabelBuilder {
	builder := &SignatureSignatoryLabelBuilder{}
	return builder
}

// 电子签模板签订人类型
//
// 示例值：
func (builder *SignatureSignatoryLabelBuilder) TemplateSignatoryType(templateSignatoryType *Enum) *SignatureSignatoryLabelBuilder {
	builder.templateSignatoryType = templateSignatoryType
	builder.templateSignatoryTypeFlag = true
	return builder
}

// 中英文描述
//
// 示例值：
func (builder *SignatureSignatoryLabelBuilder) Label(label []*I18n) *SignatureSignatoryLabelBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 主数据apiname
//
// 示例值：status
func (builder *SignatureSignatoryLabelBuilder) Apiname(apiname string) *SignatureSignatoryLabelBuilder {
	builder.apiname = apiname
	builder.apinameFlag = true
	return builder
}

func (builder *SignatureSignatoryLabelBuilder) Build() *SignatureSignatoryLabel {
	req := &SignatureSignatoryLabel{}
	if builder.templateSignatoryTypeFlag {
		req.TemplateSignatoryType = builder.templateSignatoryType
	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.apinameFlag {
		req.Apiname = &builder.apiname

	}
	return req
}

type SignatureTemplate struct {
	Id *string `json:"id,omitempty"` // 电子签模板id

	BriefInfo *SignatureTemplateBriefInfo `json:"brief_info,omitempty"` // 简略信息

	ContentInfo *SignatureTemplateContentInfo `json:"content_info,omitempty"` // 模板内容信息
}

type SignatureTemplateBuilder struct {
	id     string // 电子签模板id
	idFlag bool

	briefInfo     *SignatureTemplateBriefInfo // 简略信息
	briefInfoFlag bool

	contentInfo     *SignatureTemplateContentInfo // 模板内容信息
	contentInfoFlag bool
}

func NewSignatureTemplateBuilder() *SignatureTemplateBuilder {
	builder := &SignatureTemplateBuilder{}
	return builder
}

// 电子签模板id
//
// 示例值：12313
func (builder *SignatureTemplateBuilder) Id(id string) *SignatureTemplateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 简略信息
//
// 示例值：
func (builder *SignatureTemplateBuilder) BriefInfo(briefInfo *SignatureTemplateBriefInfo) *SignatureTemplateBuilder {
	builder.briefInfo = briefInfo
	builder.briefInfoFlag = true
	return builder
}

// 模板内容信息
//
// 示例值：
func (builder *SignatureTemplateBuilder) ContentInfo(contentInfo *SignatureTemplateContentInfo) *SignatureTemplateBuilder {
	builder.contentInfo = contentInfo
	builder.contentInfoFlag = true
	return builder
}

func (builder *SignatureTemplateBuilder) Build() *SignatureTemplate {
	req := &SignatureTemplate{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.briefInfoFlag {
		req.BriefInfo = builder.briefInfo
	}
	if builder.contentInfoFlag {
		req.ContentInfo = builder.contentInfo
	}
	return req
}

type SignatureTemplateAttachmentInfo struct {
	Id *string `json:"id,omitempty"` // 附件id

	Name *string `json:"name,omitempty"` // 附件名称

	Size *int `json:"size,omitempty"` // 附件大小
}

type SignatureTemplateAttachmentInfoBuilder struct {
	id     string // 附件id
	idFlag bool

	name     string // 附件名称
	nameFlag bool

	size     int // 附件大小
	sizeFlag bool
}

func NewSignatureTemplateAttachmentInfoBuilder() *SignatureTemplateAttachmentInfoBuilder {
	builder := &SignatureTemplateAttachmentInfoBuilder{}
	return builder
}

// 附件id
//
// 示例值：131233213
func (builder *SignatureTemplateAttachmentInfoBuilder) Id(id string) *SignatureTemplateAttachmentInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 附件名称
//
// 示例值：附件test
func (builder *SignatureTemplateAttachmentInfoBuilder) Name(name string) *SignatureTemplateAttachmentInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 附件大小
//
// 示例值：1000
func (builder *SignatureTemplateAttachmentInfoBuilder) Size(size int) *SignatureTemplateAttachmentInfoBuilder {
	builder.size = size
	builder.sizeFlag = true
	return builder
}

func (builder *SignatureTemplateAttachmentInfoBuilder) Build() *SignatureTemplateAttachmentInfo {
	req := &SignatureTemplateAttachmentInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.sizeFlag {
		req.Size = &builder.size

	}
	return req
}

type SignatureTemplateBriefInfo struct {
	Id *string `json:"id,omitempty"` // id

	Label []*I18n `json:"label,omitempty"` // 名称 支持多语

	Category *Enum `json:"category,omitempty"` // 模版类别

	Usage *Enum `json:"usage,omitempty"` // 模版用法

	SignatoryLabels []*SignatureSignatoryLabel `json:"signatory_labels,omitempty"` // 模版签署人标签

	Active *bool `json:"active,omitempty"` // 是否激活

	CreateBy *string `json:"create_by,omitempty"` // 创建人

	ModifyBy *string `json:"modify_by,omitempty"` // 修改人

	Applicability *Enum `json:"applicability,omitempty"` // 适用范围

	CreationMethod *string `json:"creation_method,omitempty"` // 创建方法

	Version *string `json:"version,omitempty"` // 版本

	UpdateTime *string `json:"update_time,omitempty"` // 更新时间

	CreateTime *string `json:"create_time,omitempty"` // 创建时间

	TemplateSetting *SignatureTemplateSetting `json:"template_setting,omitempty"` // 模板设置，包含开启骑缝章的类型等

	TemplateRegionInfo *SignatureTemplateRegionInfo `json:"template_region_info,omitempty"` // 模板适用区域

	TemplateCode *string `json:"template_code,omitempty"` // 模板编码

	TemplateDesc []*I18n `json:"template_desc,omitempty"` // 模板描述 支持多语
}

type SignatureTemplateBriefInfoBuilder struct {
	id     string // id
	idFlag bool

	label     []*I18n // 名称 支持多语
	labelFlag bool

	category     *Enum // 模版类别
	categoryFlag bool

	usage     *Enum // 模版用法
	usageFlag bool

	signatoryLabels     []*SignatureSignatoryLabel // 模版签署人标签
	signatoryLabelsFlag bool

	active     bool // 是否激活
	activeFlag bool

	createBy     string // 创建人
	createByFlag bool

	modifyBy     string // 修改人
	modifyByFlag bool

	applicability     *Enum // 适用范围
	applicabilityFlag bool

	creationMethod     string // 创建方法
	creationMethodFlag bool

	version     string // 版本
	versionFlag bool

	updateTime     string // 更新时间
	updateTimeFlag bool

	createTime     string // 创建时间
	createTimeFlag bool

	templateSetting     *SignatureTemplateSetting // 模板设置，包含开启骑缝章的类型等
	templateSettingFlag bool

	templateRegionInfo     *SignatureTemplateRegionInfo // 模板适用区域
	templateRegionInfoFlag bool

	templateCode     string // 模板编码
	templateCodeFlag bool

	templateDesc     []*I18n // 模板描述 支持多语
	templateDescFlag bool
}

func NewSignatureTemplateBriefInfoBuilder() *SignatureTemplateBriefInfoBuilder {
	builder := &SignatureTemplateBriefInfoBuilder{}
	return builder
}

// id
//
// 示例值：1
func (builder *SignatureTemplateBriefInfoBuilder) Id(id string) *SignatureTemplateBriefInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 名称 支持多语
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) Label(label []*I18n) *SignatureTemplateBriefInfoBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 模版类别
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) Category(category *Enum) *SignatureTemplateBriefInfoBuilder {
	builder.category = category
	builder.categoryFlag = true
	return builder
}

// 模版用法
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) Usage(usage *Enum) *SignatureTemplateBriefInfoBuilder {
	builder.usage = usage
	builder.usageFlag = true
	return builder
}

// 模版签署人标签
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) SignatoryLabels(signatoryLabels []*SignatureSignatoryLabel) *SignatureTemplateBriefInfoBuilder {
	builder.signatoryLabels = signatoryLabels
	builder.signatoryLabelsFlag = true
	return builder
}

// 是否激活
//
// 示例值：true
func (builder *SignatureTemplateBriefInfoBuilder) Active(active bool) *SignatureTemplateBriefInfoBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 创建人
//
// 示例值：123123123123123123
func (builder *SignatureTemplateBriefInfoBuilder) CreateBy(createBy string) *SignatureTemplateBriefInfoBuilder {
	builder.createBy = createBy
	builder.createByFlag = true
	return builder
}

// 修改人
//
// 示例值：123123123123123123
func (builder *SignatureTemplateBriefInfoBuilder) ModifyBy(modifyBy string) *SignatureTemplateBriefInfoBuilder {
	builder.modifyBy = modifyBy
	builder.modifyByFlag = true
	return builder
}

// 适用范围
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) Applicability(applicability *Enum) *SignatureTemplateBriefInfoBuilder {
	builder.applicability = applicability
	builder.applicabilityFlag = true
	return builder
}

// 创建方法
//
// 示例值：online_edit
func (builder *SignatureTemplateBriefInfoBuilder) CreationMethod(creationMethod string) *SignatureTemplateBriefInfoBuilder {
	builder.creationMethod = creationMethod
	builder.creationMethodFlag = true
	return builder
}

// 版本
//
// 示例值：v1
func (builder *SignatureTemplateBriefInfoBuilder) Version(version string) *SignatureTemplateBriefInfoBuilder {
	builder.version = version
	builder.versionFlag = true
	return builder
}

// 更新时间
//
// 示例值：31231232123
func (builder *SignatureTemplateBriefInfoBuilder) UpdateTime(updateTime string) *SignatureTemplateBriefInfoBuilder {
	builder.updateTime = updateTime
	builder.updateTimeFlag = true
	return builder
}

// 创建时间
//
// 示例值：3123123211
func (builder *SignatureTemplateBriefInfoBuilder) CreateTime(createTime string) *SignatureTemplateBriefInfoBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 模板设置，包含开启骑缝章的类型等
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) TemplateSetting(templateSetting *SignatureTemplateSetting) *SignatureTemplateBriefInfoBuilder {
	builder.templateSetting = templateSetting
	builder.templateSettingFlag = true
	return builder
}

// 模板适用区域
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) TemplateRegionInfo(templateRegionInfo *SignatureTemplateRegionInfo) *SignatureTemplateBriefInfoBuilder {
	builder.templateRegionInfo = templateRegionInfo
	builder.templateRegionInfoFlag = true
	return builder
}

// 模板编码
//
// 示例值：1234
func (builder *SignatureTemplateBriefInfoBuilder) TemplateCode(templateCode string) *SignatureTemplateBriefInfoBuilder {
	builder.templateCode = templateCode
	builder.templateCodeFlag = true
	return builder
}

// 模板描述 支持多语
//
// 示例值：
func (builder *SignatureTemplateBriefInfoBuilder) TemplateDesc(templateDesc []*I18n) *SignatureTemplateBriefInfoBuilder {
	builder.templateDesc = templateDesc
	builder.templateDescFlag = true
	return builder
}

func (builder *SignatureTemplateBriefInfoBuilder) Build() *SignatureTemplateBriefInfo {
	req := &SignatureTemplateBriefInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.categoryFlag {
		req.Category = builder.category
	}
	if builder.usageFlag {
		req.Usage = builder.usage
	}
	if builder.signatoryLabelsFlag {
		req.SignatoryLabels = builder.signatoryLabels
	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.createByFlag {
		req.CreateBy = &builder.createBy

	}
	if builder.modifyByFlag {
		req.ModifyBy = &builder.modifyBy

	}
	if builder.applicabilityFlag {
		req.Applicability = builder.applicability
	}
	if builder.creationMethodFlag {
		req.CreationMethod = &builder.creationMethod

	}
	if builder.versionFlag {
		req.Version = &builder.version

	}
	if builder.updateTimeFlag {
		req.UpdateTime = &builder.updateTime

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.templateSettingFlag {
		req.TemplateSetting = builder.templateSetting
	}
	if builder.templateRegionInfoFlag {
		req.TemplateRegionInfo = builder.templateRegionInfo
	}
	if builder.templateCodeFlag {
		req.TemplateCode = &builder.templateCode

	}
	if builder.templateDescFlag {
		req.TemplateDesc = builder.templateDesc
	}
	return req
}

type SignatureTemplateCombinationFieldInfo struct {
	TotalApiname *string `json:"total_apiname,omitempty"` // total_apiname

	Apiname *string `json:"apiname,omitempty"` // apiname

	Title []*I18n `json:"title,omitempty"` // 中英文描述

	Contents [][]*SignatureTemplateCombinationSubFieldInfo `json:"contents,omitempty"` // 适用区域名称

	Source *Enum `json:"source,omitempty"` // 电子签模板字段源类型
}

type SignatureTemplateCombinationFieldInfoBuilder struct {
	totalApiname     string // total_apiname
	totalApinameFlag bool

	apiname     string // apiname
	apinameFlag bool

	title     []*I18n // 中英文描述
	titleFlag bool

	contents     [][]*SignatureTemplateCombinationSubFieldInfo // 适用区域名称
	contentsFlag bool

	source     *Enum // 电子签模板字段源类型
	sourceFlag bool
}

func NewSignatureTemplateCombinationFieldInfoBuilder() *SignatureTemplateCombinationFieldInfoBuilder {
	builder := &SignatureTemplateCombinationFieldInfoBuilder{}
	return builder
}

// total_apiname
//
// 示例值：status
func (builder *SignatureTemplateCombinationFieldInfoBuilder) TotalApiname(totalApiname string) *SignatureTemplateCombinationFieldInfoBuilder {
	builder.totalApiname = totalApiname
	builder.totalApinameFlag = true
	return builder
}

// apiname
//
// 示例值：status
func (builder *SignatureTemplateCombinationFieldInfoBuilder) Apiname(apiname string) *SignatureTemplateCombinationFieldInfoBuilder {
	builder.apiname = apiname
	builder.apinameFlag = true
	return builder
}

// 中英文描述
//
// 示例值：
func (builder *SignatureTemplateCombinationFieldInfoBuilder) Title(title []*I18n) *SignatureTemplateCombinationFieldInfoBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 适用区域名称
//
// 示例值：
func (builder *SignatureTemplateCombinationFieldInfoBuilder) Contents(contents [][]*SignatureTemplateCombinationSubFieldInfo) *SignatureTemplateCombinationFieldInfoBuilder {
	builder.contents = contents
	builder.contentsFlag = true
	return builder
}

// 电子签模板字段源类型
//
// 示例值：
func (builder *SignatureTemplateCombinationFieldInfoBuilder) Source(source *Enum) *SignatureTemplateCombinationFieldInfoBuilder {
	builder.source = source
	builder.sourceFlag = true
	return builder
}

func (builder *SignatureTemplateCombinationFieldInfoBuilder) Build() *SignatureTemplateCombinationFieldInfo {
	req := &SignatureTemplateCombinationFieldInfo{}
	if builder.totalApinameFlag {
		req.TotalApiname = &builder.totalApiname

	}
	if builder.apinameFlag {
		req.Apiname = &builder.apiname

	}
	if builder.titleFlag {
		req.Title = builder.title
	}
	if builder.contentsFlag {
		req.Contents = builder.contents
	}
	if builder.sourceFlag {
		req.Source = builder.source
	}
	return req
}

type SignatureTemplateCombinationFieldInfoV2 struct {
	TotalApiname *string `json:"total_apiname,omitempty"` // total_apiname

	Apiname *string `json:"apiname,omitempty"` // apiname

	Source *Enum `json:"source,omitempty"` // 电子签模板字段源类型
}

type SignatureTemplateCombinationFieldInfoV2Builder struct {
	totalApiname     string // total_apiname
	totalApinameFlag bool

	apiname     string // apiname
	apinameFlag bool

	source     *Enum // 电子签模板字段源类型
	sourceFlag bool
}

func NewSignatureTemplateCombinationFieldInfoV2Builder() *SignatureTemplateCombinationFieldInfoV2Builder {
	builder := &SignatureTemplateCombinationFieldInfoV2Builder{}
	return builder
}

// total_apiname
//
// 示例值：status
func (builder *SignatureTemplateCombinationFieldInfoV2Builder) TotalApiname(totalApiname string) *SignatureTemplateCombinationFieldInfoV2Builder {
	builder.totalApiname = totalApiname
	builder.totalApinameFlag = true
	return builder
}

// apiname
//
// 示例值：status
func (builder *SignatureTemplateCombinationFieldInfoV2Builder) Apiname(apiname string) *SignatureTemplateCombinationFieldInfoV2Builder {
	builder.apiname = apiname
	builder.apinameFlag = true
	return builder
}

// 电子签模板字段源类型
//
// 示例值：
func (builder *SignatureTemplateCombinationFieldInfoV2Builder) Source(source *Enum) *SignatureTemplateCombinationFieldInfoV2Builder {
	builder.source = source
	builder.sourceFlag = true
	return builder
}

func (builder *SignatureTemplateCombinationFieldInfoV2Builder) Build() *SignatureTemplateCombinationFieldInfoV2 {
	req := &SignatureTemplateCombinationFieldInfoV2{}
	if builder.totalApinameFlag {
		req.TotalApiname = &builder.totalApiname

	}
	if builder.apinameFlag {
		req.Apiname = &builder.apiname

	}
	if builder.sourceFlag {
		req.Source = builder.source
	}
	return req
}

type SignatureTemplateCombinationSubFieldInfo struct {
	FieldType *Enum `json:"field_type,omitempty"` // 字段类型枚举

	Info *SignatureTemplateCommonFieldInfo `json:"info,omitempty"` // 公共字段信息

	Label []*I18n `json:"label,omitempty"` // 双语描述
}

type SignatureTemplateCombinationSubFieldInfoBuilder struct {
	fieldType     *Enum // 字段类型枚举
	fieldTypeFlag bool

	info     *SignatureTemplateCommonFieldInfo // 公共字段信息
	infoFlag bool

	label     []*I18n // 双语描述
	labelFlag bool
}

func NewSignatureTemplateCombinationSubFieldInfoBuilder() *SignatureTemplateCombinationSubFieldInfoBuilder {
	builder := &SignatureTemplateCombinationSubFieldInfoBuilder{}
	return builder
}

// 字段类型枚举
//
// 示例值：
func (builder *SignatureTemplateCombinationSubFieldInfoBuilder) FieldType(fieldType *Enum) *SignatureTemplateCombinationSubFieldInfoBuilder {
	builder.fieldType = fieldType
	builder.fieldTypeFlag = true
	return builder
}

// 公共字段信息
//
// 示例值：
func (builder *SignatureTemplateCombinationSubFieldInfoBuilder) Info(info *SignatureTemplateCommonFieldInfo) *SignatureTemplateCombinationSubFieldInfoBuilder {
	builder.info = info
	builder.infoFlag = true
	return builder
}

// 双语描述
//
// 示例值：
func (builder *SignatureTemplateCombinationSubFieldInfoBuilder) Label(label []*I18n) *SignatureTemplateCombinationSubFieldInfoBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

func (builder *SignatureTemplateCombinationSubFieldInfoBuilder) Build() *SignatureTemplateCombinationSubFieldInfo {
	req := &SignatureTemplateCombinationSubFieldInfo{}
	if builder.fieldTypeFlag {
		req.FieldType = builder.fieldType
	}
	if builder.infoFlag {
		req.Info = builder.info
	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	return req
}

type SignatureTemplateCommonFieldInfo struct {
	Source *Enum `json:"source,omitempty"` // 模板字段源类型；枚举值填到enum_name中，如："System" "MainData"

	Apiname *string `json:"apiname,omitempty"` // 主数据apiname
}

type SignatureTemplateCommonFieldInfoBuilder struct {
	source     *Enum // 模板字段源类型；枚举值填到enum_name中，如："System" "MainData"
	sourceFlag bool

	apiname     string // 主数据apiname
	apinameFlag bool
}

func NewSignatureTemplateCommonFieldInfoBuilder() *SignatureTemplateCommonFieldInfoBuilder {
	builder := &SignatureTemplateCommonFieldInfoBuilder{}
	return builder
}

// 模板字段源类型；枚举值填到enum_name中，如："System" "MainData"
//
// 示例值：
func (builder *SignatureTemplateCommonFieldInfoBuilder) Source(source *Enum) *SignatureTemplateCommonFieldInfoBuilder {
	builder.source = source
	builder.sourceFlag = true
	return builder
}

// 主数据apiname
//
// 示例值：status
func (builder *SignatureTemplateCommonFieldInfoBuilder) Apiname(apiname string) *SignatureTemplateCommonFieldInfoBuilder {
	builder.apiname = apiname
	builder.apinameFlag = true
	return builder
}

func (builder *SignatureTemplateCommonFieldInfoBuilder) Build() *SignatureTemplateCommonFieldInfo {
	req := &SignatureTemplateCommonFieldInfo{}
	if builder.sourceFlag {
		req.Source = builder.source
	}
	if builder.apinameFlag {
		req.Apiname = &builder.apiname

	}
	return req
}

type SignatureTemplateContentInfo struct {
	Contents []*SignatureTemplateContentItem `json:"contents,omitempty"` // 模版内容list

	CustomFields []*SignatureTemplateCustomField `json:"custom_fields,omitempty"` // 自定义字段列表

	FilterFields []*SignatureTemplateFilter `json:"filter_fields,omitempty"` // 筛选条件列表

	UsingFields []*SignatureTemplateCommonFieldInfo `json:"using_fields,omitempty"` // 模板公共字段信息列表

	SystemSettingFields []*SignatureTemplateField `json:"system_setting_fields,omitempty"` // 系统设置字段列表
}

type SignatureTemplateContentInfoBuilder struct {
	contents     []*SignatureTemplateContentItem // 模版内容list
	contentsFlag bool

	customFields     []*SignatureTemplateCustomField // 自定义字段列表
	customFieldsFlag bool

	filterFields     []*SignatureTemplateFilter // 筛选条件列表
	filterFieldsFlag bool

	usingFields     []*SignatureTemplateCommonFieldInfo // 模板公共字段信息列表
	usingFieldsFlag bool

	systemSettingFields     []*SignatureTemplateField // 系统设置字段列表
	systemSettingFieldsFlag bool
}

func NewSignatureTemplateContentInfoBuilder() *SignatureTemplateContentInfoBuilder {
	builder := &SignatureTemplateContentInfoBuilder{}
	return builder
}

// 模版内容list
//
// 示例值：
func (builder *SignatureTemplateContentInfoBuilder) Contents(contents []*SignatureTemplateContentItem) *SignatureTemplateContentInfoBuilder {
	builder.contents = contents
	builder.contentsFlag = true
	return builder
}

// 自定义字段列表
//
// 示例值：
func (builder *SignatureTemplateContentInfoBuilder) CustomFields(customFields []*SignatureTemplateCustomField) *SignatureTemplateContentInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 筛选条件列表
//
// 示例值：
func (builder *SignatureTemplateContentInfoBuilder) FilterFields(filterFields []*SignatureTemplateFilter) *SignatureTemplateContentInfoBuilder {
	builder.filterFields = filterFields
	builder.filterFieldsFlag = true
	return builder
}

// 模板公共字段信息列表
//
// 示例值：
func (builder *SignatureTemplateContentInfoBuilder) UsingFields(usingFields []*SignatureTemplateCommonFieldInfo) *SignatureTemplateContentInfoBuilder {
	builder.usingFields = usingFields
	builder.usingFieldsFlag = true
	return builder
}

// 系统设置字段列表
//
// 示例值：
func (builder *SignatureTemplateContentInfoBuilder) SystemSettingFields(systemSettingFields []*SignatureTemplateField) *SignatureTemplateContentInfoBuilder {
	builder.systemSettingFields = systemSettingFields
	builder.systemSettingFieldsFlag = true
	return builder
}

func (builder *SignatureTemplateContentInfoBuilder) Build() *SignatureTemplateContentInfo {
	req := &SignatureTemplateContentInfo{}
	if builder.contentsFlag {
		req.Contents = builder.contents
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.filterFieldsFlag {
		req.FilterFields = builder.filterFields
	}
	if builder.usingFieldsFlag {
		req.UsingFields = builder.usingFields
	}
	if builder.systemSettingFieldsFlag {
		req.SystemSettingFields = builder.systemSettingFields
	}
	return req
}

type SignatureTemplateContentItem struct {
	ContentType *Enum `json:"content_type,omitempty"` // 电子签模版内容的类型

	FilterApiname *string `json:"filter_apiname,omitempty"` // 显示规则左值

	Content *string `json:"content,omitempty"` // 模版内容

	Label []*I18n `json:"label,omitempty"` // 中英文描述

	ContentDesc *string `json:"content_desc,omitempty"` // 内容描述
}

type SignatureTemplateContentItemBuilder struct {
	contentType     *Enum // 电子签模版内容的类型
	contentTypeFlag bool

	filterApiname     string // 显示规则左值
	filterApinameFlag bool

	content     string // 模版内容
	contentFlag bool

	label     []*I18n // 中英文描述
	labelFlag bool

	contentDesc     string // 内容描述
	contentDescFlag bool
}

func NewSignatureTemplateContentItemBuilder() *SignatureTemplateContentItemBuilder {
	builder := &SignatureTemplateContentItemBuilder{}
	return builder
}

// 电子签模版内容的类型
//
// 示例值：
func (builder *SignatureTemplateContentItemBuilder) ContentType(contentType *Enum) *SignatureTemplateContentItemBuilder {
	builder.contentType = contentType
	builder.contentTypeFlag = true
	return builder
}

// 显示规则左值
//
// 示例值：111
func (builder *SignatureTemplateContentItemBuilder) FilterApiname(filterApiname string) *SignatureTemplateContentItemBuilder {
	builder.filterApiname = filterApiname
	builder.filterApinameFlag = true
	return builder
}

// 模版内容
//
// 示例值：111
func (builder *SignatureTemplateContentItemBuilder) Content(content string) *SignatureTemplateContentItemBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

// 中英文描述
//
// 示例值：
func (builder *SignatureTemplateContentItemBuilder) Label(label []*I18n) *SignatureTemplateContentItemBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 内容描述
//
// 示例值：111
func (builder *SignatureTemplateContentItemBuilder) ContentDesc(contentDesc string) *SignatureTemplateContentItemBuilder {
	builder.contentDesc = contentDesc
	builder.contentDescFlag = true
	return builder
}

func (builder *SignatureTemplateContentItemBuilder) Build() *SignatureTemplateContentItem {
	req := &SignatureTemplateContentItem{}
	if builder.contentTypeFlag {
		req.ContentType = builder.contentType
	}
	if builder.filterApinameFlag {
		req.FilterApiname = &builder.filterApiname

	}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.contentDescFlag {
		req.ContentDesc = &builder.contentDesc

	}
	return req
}

type SignatureTemplateCustomField struct {
	Label []*I18n `json:"label,omitempty"` // 中英文描述

	Apiname *string `json:"apiname,omitempty"` // 主数据apiname

	CustomFieldType *Enum `json:"custom_field_type,omitempty"` // 用户自定义字段类型

	Used *bool `json:"used,omitempty"` // 是否使用到

	IsRequired *bool `json:"is_required,omitempty"` // 是否需要

	CustomDesc *string `json:"custom_desc,omitempty"` // 自定义描述

	CommonInfo *SignatureTemplateCommonFieldInfo `json:"common_info,omitempty"` // 电子签模版公共字段信息
}

type SignatureTemplateCustomFieldBuilder struct {
	label     []*I18n // 中英文描述
	labelFlag bool

	apiname     string // 主数据apiname
	apinameFlag bool

	customFieldType     *Enum // 用户自定义字段类型
	customFieldTypeFlag bool

	used     bool // 是否使用到
	usedFlag bool

	isRequired     bool // 是否需要
	isRequiredFlag bool

	customDesc     string // 自定义描述
	customDescFlag bool

	commonInfo     *SignatureTemplateCommonFieldInfo // 电子签模版公共字段信息
	commonInfoFlag bool
}

func NewSignatureTemplateCustomFieldBuilder() *SignatureTemplateCustomFieldBuilder {
	builder := &SignatureTemplateCustomFieldBuilder{}
	return builder
}

// 中英文描述
//
// 示例值：
func (builder *SignatureTemplateCustomFieldBuilder) Label(label []*I18n) *SignatureTemplateCustomFieldBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 主数据apiname
//
// 示例值：status
func (builder *SignatureTemplateCustomFieldBuilder) Apiname(apiname string) *SignatureTemplateCustomFieldBuilder {
	builder.apiname = apiname
	builder.apinameFlag = true
	return builder
}

// 用户自定义字段类型
//
// 示例值：
func (builder *SignatureTemplateCustomFieldBuilder) CustomFieldType(customFieldType *Enum) *SignatureTemplateCustomFieldBuilder {
	builder.customFieldType = customFieldType
	builder.customFieldTypeFlag = true
	return builder
}

// 是否使用到
//
// 示例值：
func (builder *SignatureTemplateCustomFieldBuilder) Used(used bool) *SignatureTemplateCustomFieldBuilder {
	builder.used = used
	builder.usedFlag = true
	return builder
}

// 是否需要
//
// 示例值：
func (builder *SignatureTemplateCustomFieldBuilder) IsRequired(isRequired bool) *SignatureTemplateCustomFieldBuilder {
	builder.isRequired = isRequired
	builder.isRequiredFlag = true
	return builder
}

// 自定义描述
//
// 示例值：desc
func (builder *SignatureTemplateCustomFieldBuilder) CustomDesc(customDesc string) *SignatureTemplateCustomFieldBuilder {
	builder.customDesc = customDesc
	builder.customDescFlag = true
	return builder
}

// 电子签模版公共字段信息
//
// 示例值：
func (builder *SignatureTemplateCustomFieldBuilder) CommonInfo(commonInfo *SignatureTemplateCommonFieldInfo) *SignatureTemplateCustomFieldBuilder {
	builder.commonInfo = commonInfo
	builder.commonInfoFlag = true
	return builder
}

func (builder *SignatureTemplateCustomFieldBuilder) Build() *SignatureTemplateCustomField {
	req := &SignatureTemplateCustomField{}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.apinameFlag {
		req.Apiname = &builder.apiname

	}
	if builder.customFieldTypeFlag {
		req.CustomFieldType = builder.customFieldType
	}
	if builder.usedFlag {
		req.Used = &builder.used

	}
	if builder.isRequiredFlag {
		req.IsRequired = &builder.isRequired

	}
	if builder.customDescFlag {
		req.CustomDesc = &builder.customDesc

	}
	if builder.commonInfoFlag {
		req.CommonInfo = builder.commonInfo
	}
	return req
}

type SignatureTemplateField struct {
	FieldType *Enum `json:"field_type,omitempty"` // 模板字段值类型枚举

	Label []*I18n `json:"label,omitempty"` // 双语描述

	CommonInfo *SignatureTemplateCommonFieldInfo `json:"common_info,omitempty"` // 通用字段信息

	CombinationInfo *SignatureTemplateCombinationFieldInfo `json:"combination_info,omitempty"` // 组合字段信息

	Children *string `json:"children,omitempty"` // 子模板配置信息列表对应的string，避免循环引用问题

	CombinationInfoV2 *SignatureTemplateCombinationFieldInfoV2 `json:"combination_info_v2,omitempty"` // 组合字段信息v2
}

type SignatureTemplateFieldBuilder struct {
	fieldType     *Enum // 模板字段值类型枚举
	fieldTypeFlag bool

	label     []*I18n // 双语描述
	labelFlag bool

	commonInfo     *SignatureTemplateCommonFieldInfo // 通用字段信息
	commonInfoFlag bool

	combinationInfo     *SignatureTemplateCombinationFieldInfo // 组合字段信息
	combinationInfoFlag bool

	children     string // 子模板配置信息列表对应的string，避免循环引用问题
	childrenFlag bool

	combinationInfoV2     *SignatureTemplateCombinationFieldInfoV2 // 组合字段信息v2
	combinationInfoV2Flag bool
}

func NewSignatureTemplateFieldBuilder() *SignatureTemplateFieldBuilder {
	builder := &SignatureTemplateFieldBuilder{}
	return builder
}

// 模板字段值类型枚举
//
// 示例值：
func (builder *SignatureTemplateFieldBuilder) FieldType(fieldType *Enum) *SignatureTemplateFieldBuilder {
	builder.fieldType = fieldType
	builder.fieldTypeFlag = true
	return builder
}

// 双语描述
//
// 示例值：
func (builder *SignatureTemplateFieldBuilder) Label(label []*I18n) *SignatureTemplateFieldBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 通用字段信息
//
// 示例值：
func (builder *SignatureTemplateFieldBuilder) CommonInfo(commonInfo *SignatureTemplateCommonFieldInfo) *SignatureTemplateFieldBuilder {
	builder.commonInfo = commonInfo
	builder.commonInfoFlag = true
	return builder
}

// 组合字段信息
//
// 示例值：
func (builder *SignatureTemplateFieldBuilder) CombinationInfo(combinationInfo *SignatureTemplateCombinationFieldInfo) *SignatureTemplateFieldBuilder {
	builder.combinationInfo = combinationInfo
	builder.combinationInfoFlag = true
	return builder
}

// 子模板配置信息列表对应的string，避免循环引用问题
//
// 示例值：[]
func (builder *SignatureTemplateFieldBuilder) Children(children string) *SignatureTemplateFieldBuilder {
	builder.children = children
	builder.childrenFlag = true
	return builder
}

// 组合字段信息v2
//
// 示例值：
func (builder *SignatureTemplateFieldBuilder) CombinationInfoV2(combinationInfoV2 *SignatureTemplateCombinationFieldInfoV2) *SignatureTemplateFieldBuilder {
	builder.combinationInfoV2 = combinationInfoV2
	builder.combinationInfoV2Flag = true
	return builder
}

func (builder *SignatureTemplateFieldBuilder) Build() *SignatureTemplateField {
	req := &SignatureTemplateField{}
	if builder.fieldTypeFlag {
		req.FieldType = builder.fieldType
	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.commonInfoFlag {
		req.CommonInfo = builder.commonInfo
	}
	if builder.combinationInfoFlag {
		req.CombinationInfo = builder.combinationInfo
	}
	if builder.childrenFlag {
		req.Children = &builder.children

	}
	if builder.combinationInfoV2Flag {
		req.CombinationInfoV2 = builder.combinationInfoV2
	}
	return req
}

type SignatureTemplateFilter struct {
	Label []*I18n `json:"label,omitempty"` // 双语描述

	Apiname *string `json:"apiname,omitempty"` // 主数据apiname

	Filters []*SignatureTemplateFilterItem `json:"filters,omitempty"` // 过滤条件列表

	Logic *Enum `json:"logic,omitempty"` // 多个生效条件的logic

	IsChecked *bool `json:"is_checked,omitempty"` // 是否被校验

	FilterDesc *string `json:"filter_desc,omitempty"` // 过滤条件描述

	CriterionList *string `json:"criterion_list,omitempty"` // 过滤条件列表，使用string类型描述list的原因是为了避免循环引用问题，因为该list的item类型就是这个数据类型
}

type SignatureTemplateFilterBuilder struct {
	label     []*I18n // 双语描述
	labelFlag bool

	apiname     string // 主数据apiname
	apinameFlag bool

	filters     []*SignatureTemplateFilterItem // 过滤条件列表
	filtersFlag bool

	logic     *Enum // 多个生效条件的logic
	logicFlag bool

	isChecked     bool // 是否被校验
	isCheckedFlag bool

	filterDesc     string // 过滤条件描述
	filterDescFlag bool

	criterionList     string // 过滤条件列表，使用string类型描述list的原因是为了避免循环引用问题，因为该list的item类型就是这个数据类型
	criterionListFlag bool
}

func NewSignatureTemplateFilterBuilder() *SignatureTemplateFilterBuilder {
	builder := &SignatureTemplateFilterBuilder{}
	return builder
}

// 双语描述
//
// 示例值：
func (builder *SignatureTemplateFilterBuilder) Label(label []*I18n) *SignatureTemplateFilterBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 主数据apiname
//
// 示例值：status
func (builder *SignatureTemplateFilterBuilder) Apiname(apiname string) *SignatureTemplateFilterBuilder {
	builder.apiname = apiname
	builder.apinameFlag = true
	return builder
}

// 过滤条件列表
//
// 示例值：
func (builder *SignatureTemplateFilterBuilder) Filters(filters []*SignatureTemplateFilterItem) *SignatureTemplateFilterBuilder {
	builder.filters = filters
	builder.filtersFlag = true
	return builder
}

// 多个生效条件的logic
//
// 示例值：
func (builder *SignatureTemplateFilterBuilder) Logic(logic *Enum) *SignatureTemplateFilterBuilder {
	builder.logic = logic
	builder.logicFlag = true
	return builder
}

// 是否被校验
//
// 示例值：
func (builder *SignatureTemplateFilterBuilder) IsChecked(isChecked bool) *SignatureTemplateFilterBuilder {
	builder.isChecked = isChecked
	builder.isCheckedFlag = true
	return builder
}

// 过滤条件描述
//
// 示例值：desc
func (builder *SignatureTemplateFilterBuilder) FilterDesc(filterDesc string) *SignatureTemplateFilterBuilder {
	builder.filterDesc = filterDesc
	builder.filterDescFlag = true
	return builder
}

// 过滤条件列表，使用string类型描述list的原因是为了避免循环引用问题，因为该list的item类型就是这个数据类型
//
// 示例值：[]
func (builder *SignatureTemplateFilterBuilder) CriterionList(criterionList string) *SignatureTemplateFilterBuilder {
	builder.criterionList = criterionList
	builder.criterionListFlag = true
	return builder
}

func (builder *SignatureTemplateFilterBuilder) Build() *SignatureTemplateFilter {
	req := &SignatureTemplateFilter{}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.apinameFlag {
		req.Apiname = &builder.apiname

	}
	if builder.filtersFlag {
		req.Filters = builder.filters
	}
	if builder.logicFlag {
		req.Logic = builder.logic
	}
	if builder.isCheckedFlag {
		req.IsChecked = &builder.isChecked

	}
	if builder.filterDescFlag {
		req.FilterDesc = &builder.filterDesc

	}
	if builder.criterionListFlag {
		req.CriterionList = &builder.criterionList

	}
	return req
}

type SignatureTemplateFilterItem struct {
	Left *string `json:"left,omitempty"` // 左值

	Rights []string `json:"rights,omitempty"` // 右值列表

	Op *Enum `json:"op,omitempty"` // 操作符
}

type SignatureTemplateFilterItemBuilder struct {
	left     string // 左值
	leftFlag bool

	rights     []string // 右值列表
	rightsFlag bool

	op     *Enum // 操作符
	opFlag bool
}

func NewSignatureTemplateFilterItemBuilder() *SignatureTemplateFilterItemBuilder {
	builder := &SignatureTemplateFilterItemBuilder{}
	return builder
}

// 左值
//
// 示例值：aa
func (builder *SignatureTemplateFilterItemBuilder) Left(left string) *SignatureTemplateFilterItemBuilder {
	builder.left = left
	builder.leftFlag = true
	return builder
}

// 右值列表
//
// 示例值：
func (builder *SignatureTemplateFilterItemBuilder) Rights(rights []string) *SignatureTemplateFilterItemBuilder {
	builder.rights = rights
	builder.rightsFlag = true
	return builder
}

// 操作符
//
// 示例值：
func (builder *SignatureTemplateFilterItemBuilder) Op(op *Enum) *SignatureTemplateFilterItemBuilder {
	builder.op = op
	builder.opFlag = true
	return builder
}

func (builder *SignatureTemplateFilterItemBuilder) Build() *SignatureTemplateFilterItem {
	req := &SignatureTemplateFilterItem{}
	if builder.leftFlag {
		req.Left = &builder.left

	}
	if builder.rightsFlag {
		req.Rights = builder.rights
	}
	if builder.opFlag {
		req.Op = builder.op
	}
	return req
}

type SignatureTemplateIdWithSystemAndCustomField struct {
	Id *string `json:"id,omitempty"` // 电子签模板id

	SystemFieldInfo *SignatureFileSystemField `json:"system_field_info,omitempty"` // 该电子签模板对应的系统字段

	CustomFields []*SignatureCustomFieldV1 `json:"custom_fields,omitempty"` // 该电子签模板对应的自定义字段列表 v1版本, 不支持多语类型

	CustomFieldsV2 []*SignatureCustomFieldV2 `json:"custom_fields_v2,omitempty"` // 该电子签模板对应的自定义字段列表 v2 版本, 支持多语类型
}

type SignatureTemplateIdWithSystemAndCustomFieldBuilder struct {
	id     string // 电子签模板id
	idFlag bool

	systemFieldInfo     *SignatureFileSystemField // 该电子签模板对应的系统字段
	systemFieldInfoFlag bool

	customFields     []*SignatureCustomFieldV1 // 该电子签模板对应的自定义字段列表 v1版本, 不支持多语类型
	customFieldsFlag bool

	customFieldsV2     []*SignatureCustomFieldV2 // 该电子签模板对应的自定义字段列表 v2 版本, 支持多语类型
	customFieldsV2Flag bool
}

func NewSignatureTemplateIdWithSystemAndCustomFieldBuilder() *SignatureTemplateIdWithSystemAndCustomFieldBuilder {
	builder := &SignatureTemplateIdWithSystemAndCustomFieldBuilder{}
	return builder
}

// 电子签模板id
//
// 示例值：1231241
func (builder *SignatureTemplateIdWithSystemAndCustomFieldBuilder) Id(id string) *SignatureTemplateIdWithSystemAndCustomFieldBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 该电子签模板对应的系统字段
//
// 示例值：
func (builder *SignatureTemplateIdWithSystemAndCustomFieldBuilder) SystemFieldInfo(systemFieldInfo *SignatureFileSystemField) *SignatureTemplateIdWithSystemAndCustomFieldBuilder {
	builder.systemFieldInfo = systemFieldInfo
	builder.systemFieldInfoFlag = true
	return builder
}

// 该电子签模板对应的自定义字段列表 v1版本, 不支持多语类型
//
// 示例值：
func (builder *SignatureTemplateIdWithSystemAndCustomFieldBuilder) CustomFields(customFields []*SignatureCustomFieldV1) *SignatureTemplateIdWithSystemAndCustomFieldBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 该电子签模板对应的自定义字段列表 v2 版本, 支持多语类型
//
// 示例值：
func (builder *SignatureTemplateIdWithSystemAndCustomFieldBuilder) CustomFieldsV2(customFieldsV2 []*SignatureCustomFieldV2) *SignatureTemplateIdWithSystemAndCustomFieldBuilder {
	builder.customFieldsV2 = customFieldsV2
	builder.customFieldsV2Flag = true
	return builder
}

func (builder *SignatureTemplateIdWithSystemAndCustomFieldBuilder) Build() *SignatureTemplateIdWithSystemAndCustomField {
	req := &SignatureTemplateIdWithSystemAndCustomField{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.systemFieldInfoFlag {
		req.SystemFieldInfo = builder.systemFieldInfo
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.customFieldsV2Flag {
		req.CustomFieldsV2 = builder.customFieldsV2
	}
	return req
}

type SignatureTemplateInfo struct {
	Id *string `json:"id,omitempty"` // 电子签模板id

	BriefInfo *SignatureTemplateBriefInfo `json:"brief_info,omitempty"` // 简略信息

	ContentInfo *SignatureTemplateContentInfo `json:"content_info,omitempty"` // 模板内容信息
}

type SignatureTemplateInfoBuilder struct {
	id     string // 电子签模板id
	idFlag bool

	briefInfo     *SignatureTemplateBriefInfo // 简略信息
	briefInfoFlag bool

	contentInfo     *SignatureTemplateContentInfo // 模板内容信息
	contentInfoFlag bool
}

func NewSignatureTemplateInfoBuilder() *SignatureTemplateInfoBuilder {
	builder := &SignatureTemplateInfoBuilder{}
	return builder
}

// 电子签模板id
//
// 示例值：12313
func (builder *SignatureTemplateInfoBuilder) Id(id string) *SignatureTemplateInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 简略信息
//
// 示例值：
func (builder *SignatureTemplateInfoBuilder) BriefInfo(briefInfo *SignatureTemplateBriefInfo) *SignatureTemplateInfoBuilder {
	builder.briefInfo = briefInfo
	builder.briefInfoFlag = true
	return builder
}

// 模板内容信息
//
// 示例值：
func (builder *SignatureTemplateInfoBuilder) ContentInfo(contentInfo *SignatureTemplateContentInfo) *SignatureTemplateInfoBuilder {
	builder.contentInfo = contentInfo
	builder.contentInfoFlag = true
	return builder
}

func (builder *SignatureTemplateInfoBuilder) Build() *SignatureTemplateInfo {
	req := &SignatureTemplateInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.briefInfoFlag {
		req.BriefInfo = builder.briefInfo
	}
	if builder.contentInfoFlag {
		req.ContentInfo = builder.contentInfo
	}
	return req
}

type SignatureTemplateInfoWithThumbnail struct {
	Id *string `json:"id,omitempty"` // id

	Label []*I18n `json:"label,omitempty"` // 名称 支持多语

	Category *Enum `json:"category,omitempty"` // 模版类别

	Usage *Enum `json:"usage,omitempty"` // 模版用法

	CreateTime *string `json:"create_time,omitempty"` // 创建日期

	ModifyTime *string `json:"modify_time,omitempty"` // 修改日期

	CreatedBy *SignatureUserInfo `json:"created_by,omitempty"` // 创建人

	UpdatedBy *SignatureUserInfo `json:"updated_by,omitempty"` // 修改人

	ThumbnailUrl *string `json:"thumbnail_url,omitempty"` // 缩略图url

	SignatoryLabels []*SignatureSignatoryLabel `json:"signatory_labels,omitempty"` // 模版签署人标签

	TemplateCode *string `json:"template_code,omitempty"` // 模板编码

	TemplateDesc *string `json:"template_desc,omitempty"` // 模板描述

	TemplateRegionInfo *SignatureTemplateRegionInfo `json:"template_region_info,omitempty"` // 模板适用区域
}

type SignatureTemplateInfoWithThumbnailBuilder struct {
	id     string // id
	idFlag bool

	label     []*I18n // 名称 支持多语
	labelFlag bool

	category     *Enum // 模版类别
	categoryFlag bool

	usage     *Enum // 模版用法
	usageFlag bool

	createTime     string // 创建日期
	createTimeFlag bool

	modifyTime     string // 修改日期
	modifyTimeFlag bool

	createdBy     *SignatureUserInfo // 创建人
	createdByFlag bool

	updatedBy     *SignatureUserInfo // 修改人
	updatedByFlag bool

	thumbnailUrl     string // 缩略图url
	thumbnailUrlFlag bool

	signatoryLabels     []*SignatureSignatoryLabel // 模版签署人标签
	signatoryLabelsFlag bool

	templateCode     string // 模板编码
	templateCodeFlag bool

	templateDesc     string // 模板描述
	templateDescFlag bool

	templateRegionInfo     *SignatureTemplateRegionInfo // 模板适用区域
	templateRegionInfoFlag bool
}

func NewSignatureTemplateInfoWithThumbnailBuilder() *SignatureTemplateInfoWithThumbnailBuilder {
	builder := &SignatureTemplateInfoWithThumbnailBuilder{}
	return builder
}

// id
//
// 示例值：1
func (builder *SignatureTemplateInfoWithThumbnailBuilder) Id(id string) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 名称 支持多语
//
// 示例值：
func (builder *SignatureTemplateInfoWithThumbnailBuilder) Label(label []*I18n) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

// 模版类别
//
// 示例值：
func (builder *SignatureTemplateInfoWithThumbnailBuilder) Category(category *Enum) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.category = category
	builder.categoryFlag = true
	return builder
}

// 模版用法
//
// 示例值：
func (builder *SignatureTemplateInfoWithThumbnailBuilder) Usage(usage *Enum) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.usage = usage
	builder.usageFlag = true
	return builder
}

// 创建日期
//
// 示例值：2021-12-21
func (builder *SignatureTemplateInfoWithThumbnailBuilder) CreateTime(createTime string) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 修改日期
//
// 示例值：2021-12-21
func (builder *SignatureTemplateInfoWithThumbnailBuilder) ModifyTime(modifyTime string) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.modifyTime = modifyTime
	builder.modifyTimeFlag = true
	return builder
}

// 创建人
//
// 示例值：
func (builder *SignatureTemplateInfoWithThumbnailBuilder) CreatedBy(createdBy *SignatureUserInfo) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 修改人
//
// 示例值：
func (builder *SignatureTemplateInfoWithThumbnailBuilder) UpdatedBy(updatedBy *SignatureUserInfo) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 缩略图url
//
// 示例值：1
func (builder *SignatureTemplateInfoWithThumbnailBuilder) ThumbnailUrl(thumbnailUrl string) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.thumbnailUrl = thumbnailUrl
	builder.thumbnailUrlFlag = true
	return builder
}

// 模版签署人标签
//
// 示例值：
func (builder *SignatureTemplateInfoWithThumbnailBuilder) SignatoryLabels(signatoryLabels []*SignatureSignatoryLabel) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.signatoryLabels = signatoryLabels
	builder.signatoryLabelsFlag = true
	return builder
}

// 模板编码
//
// 示例值：1234
func (builder *SignatureTemplateInfoWithThumbnailBuilder) TemplateCode(templateCode string) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.templateCode = templateCode
	builder.templateCodeFlag = true
	return builder
}

// 模板描述
//
// 示例值：desc
func (builder *SignatureTemplateInfoWithThumbnailBuilder) TemplateDesc(templateDesc string) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.templateDesc = templateDesc
	builder.templateDescFlag = true
	return builder
}

// 模板适用区域
//
// 示例值：
func (builder *SignatureTemplateInfoWithThumbnailBuilder) TemplateRegionInfo(templateRegionInfo *SignatureTemplateRegionInfo) *SignatureTemplateInfoWithThumbnailBuilder {
	builder.templateRegionInfo = templateRegionInfo
	builder.templateRegionInfoFlag = true
	return builder
}

func (builder *SignatureTemplateInfoWithThumbnailBuilder) Build() *SignatureTemplateInfoWithThumbnail {
	req := &SignatureTemplateInfoWithThumbnail{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	if builder.categoryFlag {
		req.Category = builder.category
	}
	if builder.usageFlag {
		req.Usage = builder.usage
	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.modifyTimeFlag {
		req.ModifyTime = &builder.modifyTime

	}
	if builder.createdByFlag {
		req.CreatedBy = builder.createdBy
	}
	if builder.updatedByFlag {
		req.UpdatedBy = builder.updatedBy
	}
	if builder.thumbnailUrlFlag {
		req.ThumbnailUrl = &builder.thumbnailUrl

	}
	if builder.signatoryLabelsFlag {
		req.SignatoryLabels = builder.signatoryLabels
	}
	if builder.templateCodeFlag {
		req.TemplateCode = &builder.templateCode

	}
	if builder.templateDescFlag {
		req.TemplateDesc = &builder.templateDesc

	}
	if builder.templateRegionInfoFlag {
		req.TemplateRegionInfo = builder.templateRegionInfo
	}
	return req
}

type SignatureTemplatePermissionInfo struct {
	ReadPermission *bool `json:"read_permission,omitempty"` // 读权限

	WritePermission *bool `json:"write_permission,omitempty"` // 写权限

	SwitchPermission *bool `json:"switch_permission,omitempty"` // 转换权限

	CopyPermission *bool `json:"copy_permission,omitempty"` // 复制权限

	DeletePermission *bool `json:"delete_permission,omitempty"` // 删除权限
}

type SignatureTemplatePermissionInfoBuilder struct {
	readPermission     bool // 读权限
	readPermissionFlag bool

	writePermission     bool // 写权限
	writePermissionFlag bool

	switchPermission     bool // 转换权限
	switchPermissionFlag bool

	copyPermission     bool // 复制权限
	copyPermissionFlag bool

	deletePermission     bool // 删除权限
	deletePermissionFlag bool
}

func NewSignatureTemplatePermissionInfoBuilder() *SignatureTemplatePermissionInfoBuilder {
	builder := &SignatureTemplatePermissionInfoBuilder{}
	return builder
}

// 读权限
//
// 示例值：
func (builder *SignatureTemplatePermissionInfoBuilder) ReadPermission(readPermission bool) *SignatureTemplatePermissionInfoBuilder {
	builder.readPermission = readPermission
	builder.readPermissionFlag = true
	return builder
}

// 写权限
//
// 示例值：
func (builder *SignatureTemplatePermissionInfoBuilder) WritePermission(writePermission bool) *SignatureTemplatePermissionInfoBuilder {
	builder.writePermission = writePermission
	builder.writePermissionFlag = true
	return builder
}

// 转换权限
//
// 示例值：
func (builder *SignatureTemplatePermissionInfoBuilder) SwitchPermission(switchPermission bool) *SignatureTemplatePermissionInfoBuilder {
	builder.switchPermission = switchPermission
	builder.switchPermissionFlag = true
	return builder
}

// 复制权限
//
// 示例值：
func (builder *SignatureTemplatePermissionInfoBuilder) CopyPermission(copyPermission bool) *SignatureTemplatePermissionInfoBuilder {
	builder.copyPermission = copyPermission
	builder.copyPermissionFlag = true
	return builder
}

// 删除权限
//
// 示例值：
func (builder *SignatureTemplatePermissionInfoBuilder) DeletePermission(deletePermission bool) *SignatureTemplatePermissionInfoBuilder {
	builder.deletePermission = deletePermission
	builder.deletePermissionFlag = true
	return builder
}

func (builder *SignatureTemplatePermissionInfoBuilder) Build() *SignatureTemplatePermissionInfo {
	req := &SignatureTemplatePermissionInfo{}
	if builder.readPermissionFlag {
		req.ReadPermission = &builder.readPermission

	}
	if builder.writePermissionFlag {
		req.WritePermission = &builder.writePermission

	}
	if builder.switchPermissionFlag {
		req.SwitchPermission = &builder.switchPermission

	}
	if builder.copyPermissionFlag {
		req.CopyPermission = &builder.copyPermission

	}
	if builder.deletePermissionFlag {
		req.DeletePermission = &builder.deletePermission

	}
	return req
}

type SignatureTemplateRegionInfo struct {
	IsGlobalScope *string `json:"is_global_scope,omitempty"` // 是否全球适用

	MetaInfos []*SignatureMetaInfo `json:"meta_infos,omitempty"` // 适用区域名称
}

type SignatureTemplateRegionInfoBuilder struct {
	isGlobalScope     string // 是否全球适用
	isGlobalScopeFlag bool

	metaInfos     []*SignatureMetaInfo // 适用区域名称
	metaInfosFlag bool
}

func NewSignatureTemplateRegionInfoBuilder() *SignatureTemplateRegionInfoBuilder {
	builder := &SignatureTemplateRegionInfoBuilder{}
	return builder
}

// 是否全球适用
//
// 示例值：global
func (builder *SignatureTemplateRegionInfoBuilder) IsGlobalScope(isGlobalScope string) *SignatureTemplateRegionInfoBuilder {
	builder.isGlobalScope = isGlobalScope
	builder.isGlobalScopeFlag = true
	return builder
}

// 适用区域名称
//
// 示例值：
func (builder *SignatureTemplateRegionInfoBuilder) MetaInfos(metaInfos []*SignatureMetaInfo) *SignatureTemplateRegionInfoBuilder {
	builder.metaInfos = metaInfos
	builder.metaInfosFlag = true
	return builder
}

func (builder *SignatureTemplateRegionInfoBuilder) Build() *SignatureTemplateRegionInfo {
	req := &SignatureTemplateRegionInfo{}
	if builder.isGlobalScopeFlag {
		req.IsGlobalScope = &builder.isGlobalScope

	}
	if builder.metaInfosFlag {
		req.MetaInfos = builder.metaInfos
	}
	return req
}

type SignatureTemplateSetting struct {
	PageSealTypes []string `json:"page_seal_types,omitempty"` // 骑缝章类型
}

type SignatureTemplateSettingBuilder struct {
	pageSealTypes     []string // 骑缝章类型
	pageSealTypesFlag bool
}

func NewSignatureTemplateSettingBuilder() *SignatureTemplateSettingBuilder {
	builder := &SignatureTemplateSettingBuilder{}
	return builder
}

// 骑缝章类型
//
// 示例值：
func (builder *SignatureTemplateSettingBuilder) PageSealTypes(pageSealTypes []string) *SignatureTemplateSettingBuilder {
	builder.pageSealTypes = pageSealTypes
	builder.pageSealTypesFlag = true
	return builder
}

func (builder *SignatureTemplateSettingBuilder) Build() *SignatureTemplateSetting {
	req := &SignatureTemplateSetting{}
	if builder.pageSealTypesFlag {
		req.PageSealTypes = builder.pageSealTypes
	}
	return req
}

type SignatureUserInfo struct {
	Id *string `json:"id,omitempty"` // employmentID
}

type SignatureUserInfoBuilder struct {
	id     string // employmentID
	idFlag bool
}

func NewSignatureUserInfoBuilder() *SignatureUserInfoBuilder {
	builder := &SignatureUserInfoBuilder{}
	return builder
}

// employmentID
//
// 示例值：7300476612163913260
func (builder *SignatureUserInfoBuilder) Id(id string) *SignatureUserInfoBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *SignatureUserInfoBuilder) Build() *SignatureUserInfo {
	req := &SignatureUserInfo{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type StartProcessParam struct {
	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义ID

	InitiatorId *string `json:"initiator_id,omitempty"` // 发起人用户ID，按user_id_type类型传递。如果system_initiator为false，则必填；为true时非必填。

	SystemInitiator *bool `json:"system_initiator,omitempty"` // 是否为系统身份发起流程。 true - 使用系统身份发起，若使用系统身份；false - 按照所传的人员身份审批

	FlowData []*ProcessFormVariableV2 `json:"flow_data,omitempty"` // 业务数据
}

type StartProcessParamBuilder struct {
	flowDefinitionId     string // 流程定义ID
	flowDefinitionIdFlag bool

	initiatorId     string // 发起人用户ID，按user_id_type类型传递。如果system_initiator为false，则必填；为true时非必填。
	initiatorIdFlag bool

	systemInitiator     bool // 是否为系统身份发起流程。 true - 使用系统身份发起，若使用系统身份；false - 按照所传的人员身份审批
	systemInitiatorFlag bool

	flowData     []*ProcessFormVariableV2 // 业务数据
	flowDataFlag bool
}

func NewStartProcessParamBuilder() *StartProcessParamBuilder {
	builder := &StartProcessParamBuilder{}
	return builder
}

// 流程定义ID
//
// 示例值：people_7023711013443944467_7437160904904494892
func (builder *StartProcessParamBuilder) FlowDefinitionId(flowDefinitionId string) *StartProcessParamBuilder {
	builder.flowDefinitionId = flowDefinitionId
	builder.flowDefinitionIdFlag = true
	return builder
}

// 发起人用户ID，按user_id_type类型传递。如果system_initiator为false，则必填；为true时非必填。
//
// 示例值：ou_91791271921729102012
func (builder *StartProcessParamBuilder) InitiatorId(initiatorId string) *StartProcessParamBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 是否为系统身份发起流程。 true - 使用系统身份发起，若使用系统身份；false - 按照所传的人员身份审批
//
// 示例值：true
func (builder *StartProcessParamBuilder) SystemInitiator(systemInitiator bool) *StartProcessParamBuilder {
	builder.systemInitiator = systemInitiator
	builder.systemInitiatorFlag = true
	return builder
}

// 业务数据
//
// 示例值：
func (builder *StartProcessParamBuilder) FlowData(flowData []*ProcessFormVariableV2) *StartProcessParamBuilder {
	builder.flowData = flowData
	builder.flowDataFlag = true
	return builder
}

func (builder *StartProcessParamBuilder) Build() *StartProcessParam {
	req := &StartProcessParam{}
	if builder.flowDefinitionIdFlag {
		req.FlowDefinitionId = &builder.flowDefinitionId

	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId

	}
	if builder.systemInitiatorFlag {
		req.SystemInitiator = &builder.systemInitiator

	}
	if builder.flowDataFlag {
		req.FlowData = builder.flowData
	}
	return req
}

type TalentPoolMemberOpReqItem struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	Date *string `json:"date,omitempty"` // 出入池日期

	Reason []*I18n `json:"reason,omitempty"` // 出入池原因

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段列表
}

type TalentPoolMemberOpReqItemBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	date     string // 出入池日期
	dateFlag bool

	reason     []*I18n // 出入池原因
	reasonFlag bool

	customFields     []*ObjectFieldData // 自定义字段列表
	customFieldsFlag bool
}

func NewTalentPoolMemberOpReqItemBuilder() *TalentPoolMemberOpReqItemBuilder {
	builder := &TalentPoolMemberOpReqItemBuilder{}
	return builder
}

// 员工ID
//
// 示例值：7345313696725172304
func (builder *TalentPoolMemberOpReqItemBuilder) EmploymentId(employmentId string) *TalentPoolMemberOpReqItemBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 出入池日期
//
// 示例值：2025-01-15
func (builder *TalentPoolMemberOpReqItemBuilder) Date(date string) *TalentPoolMemberOpReqItemBuilder {
	builder.date = date
	builder.dateFlag = true
	return builder
}

// 出入池原因
//
// 示例值：
func (builder *TalentPoolMemberOpReqItemBuilder) Reason(reason []*I18n) *TalentPoolMemberOpReqItemBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

// 自定义字段列表
//
// 示例值：
func (builder *TalentPoolMemberOpReqItemBuilder) CustomFields(customFields []*ObjectFieldData) *TalentPoolMemberOpReqItemBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *TalentPoolMemberOpReqItemBuilder) Build() *TalentPoolMemberOpReqItem {
	req := &TalentPoolMemberOpReqItem{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.dateFlag {
		req.Date = &builder.date

	}
	if builder.reasonFlag {
		req.Reason = builder.reason
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type TalentPoolMemberOpRespItem struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工id

	TalentPoolRef *string `json:"talent_pool_ref,omitempty"` // 人才池ref id

	Success *bool `json:"success,omitempty"` // 操作是否成功

	Errs []*ErrorInfo `json:"errs,omitempty"` // 错误信息列表
}

type TalentPoolMemberOpRespItemBuilder struct {
	employmentId     string // 员工id
	employmentIdFlag bool

	talentPoolRef     string // 人才池ref id
	talentPoolRefFlag bool

	success     bool // 操作是否成功
	successFlag bool

	errs     []*ErrorInfo // 错误信息列表
	errsFlag bool
}

func NewTalentPoolMemberOpRespItemBuilder() *TalentPoolMemberOpRespItemBuilder {
	builder := &TalentPoolMemberOpRespItemBuilder{}
	return builder
}

// 员工id
//
// 示例值：7345313696725173804
func (builder *TalentPoolMemberOpRespItemBuilder) EmploymentId(employmentId string) *TalentPoolMemberOpRespItemBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 人才池ref id
//
// 示例值：7345313696725173123
func (builder *TalentPoolMemberOpRespItemBuilder) TalentPoolRef(talentPoolRef string) *TalentPoolMemberOpRespItemBuilder {
	builder.talentPoolRef = talentPoolRef
	builder.talentPoolRefFlag = true
	return builder
}

// 操作是否成功
//
// 示例值：true
func (builder *TalentPoolMemberOpRespItemBuilder) Success(success bool) *TalentPoolMemberOpRespItemBuilder {
	builder.success = success
	builder.successFlag = true
	return builder
}

// 错误信息列表
//
// 示例值：
func (builder *TalentPoolMemberOpRespItemBuilder) Errs(errs []*ErrorInfo) *TalentPoolMemberOpRespItemBuilder {
	builder.errs = errs
	builder.errsFlag = true
	return builder
}

func (builder *TalentPoolMemberOpRespItemBuilder) Build() *TalentPoolMemberOpRespItem {
	req := &TalentPoolMemberOpRespItem{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.talentPoolRefFlag {
		req.TalentPoolRef = &builder.talentPoolRef

	}
	if builder.successFlag {
		req.Success = &builder.success

	}
	if builder.errsFlag {
		req.Errs = builder.errs
	}
	return req
}

type TalentPoolMemberRefReqItem struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	TaggedAtDate *string `json:"tagged_at_date,omitempty"` // 入池日期

	ReasonForJoining []*I18n `json:"reason_for_joining,omitempty"` // 入池原因

	RemovedAtDate *string `json:"removed_at_date,omitempty"` // 出池日期

	ReasonForRemoval []*I18n `json:"reason_for_removal,omitempty"` // 出池原因

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段列表

	TalentPoolRef *string `json:"talent_pool_ref,omitempty"` // 人才池与员工关联记录 ID ，添加记录时无需填写
}

type TalentPoolMemberRefReqItemBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	taggedAtDate     string // 入池日期
	taggedAtDateFlag bool

	reasonForJoining     []*I18n // 入池原因
	reasonForJoiningFlag bool

	removedAtDate     string // 出池日期
	removedAtDateFlag bool

	reasonForRemoval     []*I18n // 出池原因
	reasonForRemovalFlag bool

	customFields     []*ObjectFieldData // 自定义字段列表
	customFieldsFlag bool

	talentPoolRef     string // 人才池与员工关联记录 ID ，添加记录时无需填写
	talentPoolRefFlag bool
}

func NewTalentPoolMemberRefReqItemBuilder() *TalentPoolMemberRefReqItemBuilder {
	builder := &TalentPoolMemberRefReqItemBuilder{}
	return builder
}

// 员工ID
//
// 示例值：7345313696725172404
func (builder *TalentPoolMemberRefReqItemBuilder) EmploymentId(employmentId string) *TalentPoolMemberRefReqItemBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 入池日期
//
// 示例值：2025-01-15
func (builder *TalentPoolMemberRefReqItemBuilder) TaggedAtDate(taggedAtDate string) *TalentPoolMemberRefReqItemBuilder {
	builder.taggedAtDate = taggedAtDate
	builder.taggedAtDateFlag = true
	return builder
}

// 入池原因
//
// 示例值：
func (builder *TalentPoolMemberRefReqItemBuilder) ReasonForJoining(reasonForJoining []*I18n) *TalentPoolMemberRefReqItemBuilder {
	builder.reasonForJoining = reasonForJoining
	builder.reasonForJoiningFlag = true
	return builder
}

// 出池日期
//
// 示例值：2025-01-16
func (builder *TalentPoolMemberRefReqItemBuilder) RemovedAtDate(removedAtDate string) *TalentPoolMemberRefReqItemBuilder {
	builder.removedAtDate = removedAtDate
	builder.removedAtDateFlag = true
	return builder
}

// 出池原因
//
// 示例值：
func (builder *TalentPoolMemberRefReqItemBuilder) ReasonForRemoval(reasonForRemoval []*I18n) *TalentPoolMemberRefReqItemBuilder {
	builder.reasonForRemoval = reasonForRemoval
	builder.reasonForRemovalFlag = true
	return builder
}

// 自定义字段列表
//
// 示例值：
func (builder *TalentPoolMemberRefReqItemBuilder) CustomFields(customFields []*ObjectFieldData) *TalentPoolMemberRefReqItemBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 人才池与员工关联记录 ID ，添加记录时无需填写
//
// 示例值：7345313696725173123
func (builder *TalentPoolMemberRefReqItemBuilder) TalentPoolRef(talentPoolRef string) *TalentPoolMemberRefReqItemBuilder {
	builder.talentPoolRef = talentPoolRef
	builder.talentPoolRefFlag = true
	return builder
}

func (builder *TalentPoolMemberRefReqItemBuilder) Build() *TalentPoolMemberRefReqItem {
	req := &TalentPoolMemberRefReqItem{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.taggedAtDateFlag {
		req.TaggedAtDate = &builder.taggedAtDate

	}
	if builder.reasonForJoiningFlag {
		req.ReasonForJoining = builder.reasonForJoining
	}
	if builder.removedAtDateFlag {
		req.RemovedAtDate = &builder.removedAtDate

	}
	if builder.reasonForRemovalFlag {
		req.ReasonForRemoval = builder.reasonForRemoval
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.talentPoolRefFlag {
		req.TalentPoolRef = &builder.talentPoolRef

	}
	return req
}

type TalentPoolUpdateRefsReqMask struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	TaggedAtDate *string `json:"tagged_at_date,omitempty"` // 入池日期

	ReasonForJoining []*I18n `json:"reason_for_joining,omitempty"` // 入池原因

	RemovedAtDate *string `json:"removed_at_date,omitempty"` // 出池日期

	ReasonForRemoval []*I18n `json:"reason_for_removal,omitempty"` // 出池原因

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段列表

	TalentPoolRef *string `json:"talent_pool_ref,omitempty"` // 人才池与员工关联记录 ID ，添加记录时无需填写，更新记录时必填
}

type TalentPoolUpdateRefsReqMaskBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	taggedAtDate     string // 入池日期
	taggedAtDateFlag bool

	reasonForJoining     []*I18n // 入池原因
	reasonForJoiningFlag bool

	removedAtDate     string // 出池日期
	removedAtDateFlag bool

	reasonForRemoval     []*I18n // 出池原因
	reasonForRemovalFlag bool

	customFields     []*ObjectFieldData // 自定义字段列表
	customFieldsFlag bool

	talentPoolRef     string // 人才池与员工关联记录 ID ，添加记录时无需填写，更新记录时必填
	talentPoolRefFlag bool
}

func NewTalentPoolUpdateRefsReqMaskBuilder() *TalentPoolUpdateRefsReqMaskBuilder {
	builder := &TalentPoolUpdateRefsReqMaskBuilder{}
	return builder
}

// 员工ID
//
// 示例值：7345313696725172404
func (builder *TalentPoolUpdateRefsReqMaskBuilder) EmploymentId(employmentId string) *TalentPoolUpdateRefsReqMaskBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 入池日期
//
// 示例值：2025-01-15
func (builder *TalentPoolUpdateRefsReqMaskBuilder) TaggedAtDate(taggedAtDate string) *TalentPoolUpdateRefsReqMaskBuilder {
	builder.taggedAtDate = taggedAtDate
	builder.taggedAtDateFlag = true
	return builder
}

// 入池原因
//
// 示例值：
func (builder *TalentPoolUpdateRefsReqMaskBuilder) ReasonForJoining(reasonForJoining []*I18n) *TalentPoolUpdateRefsReqMaskBuilder {
	builder.reasonForJoining = reasonForJoining
	builder.reasonForJoiningFlag = true
	return builder
}

// 出池日期
//
// 示例值：2025-01-16
func (builder *TalentPoolUpdateRefsReqMaskBuilder) RemovedAtDate(removedAtDate string) *TalentPoolUpdateRefsReqMaskBuilder {
	builder.removedAtDate = removedAtDate
	builder.removedAtDateFlag = true
	return builder
}

// 出池原因
//
// 示例值：
func (builder *TalentPoolUpdateRefsReqMaskBuilder) ReasonForRemoval(reasonForRemoval []*I18n) *TalentPoolUpdateRefsReqMaskBuilder {
	builder.reasonForRemoval = reasonForRemoval
	builder.reasonForRemovalFlag = true
	return builder
}

// 自定义字段列表
//
// 示例值：
func (builder *TalentPoolUpdateRefsReqMaskBuilder) CustomFields(customFields []*ObjectFieldData) *TalentPoolUpdateRefsReqMaskBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 人才池与员工关联记录 ID ，添加记录时无需填写，更新记录时必填
//
// 示例值：7345313696725173123
func (builder *TalentPoolUpdateRefsReqMaskBuilder) TalentPoolRef(talentPoolRef string) *TalentPoolUpdateRefsReqMaskBuilder {
	builder.talentPoolRef = talentPoolRef
	builder.talentPoolRefFlag = true
	return builder
}

func (builder *TalentPoolUpdateRefsReqMaskBuilder) Build() *TalentPoolUpdateRefsReqMask {
	req := &TalentPoolUpdateRefsReqMask{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId

	}
	if builder.taggedAtDateFlag {
		req.TaggedAtDate = &builder.taggedAtDate

	}
	if builder.reasonForJoiningFlag {
		req.ReasonForJoining = builder.reasonForJoining
	}
	if builder.removedAtDateFlag {
		req.RemovedAtDate = &builder.removedAtDate

	}
	if builder.reasonForRemovalFlag {
		req.ReasonForRemoval = builder.reasonForRemoval
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.talentPoolRefFlag {
		req.TalentPoolRef = &builder.talentPoolRef

	}
	return req
}

type TerminateSignatureFailIdAndReason struct {
	SignatureFileId *string `json:"signature_file_id,omitempty"` // 终止操作失败的文件ID

	FailReason *string `json:"fail_reason,omitempty"` // 终止失败的原因
}

type TerminateSignatureFailIdAndReasonBuilder struct {
	signatureFileId     string // 终止操作失败的文件ID
	signatureFileIdFlag bool

	failReason     string // 终止失败的原因
	failReasonFlag bool
}

func NewTerminateSignatureFailIdAndReasonBuilder() *TerminateSignatureFailIdAndReasonBuilder {
	builder := &TerminateSignatureFailIdAndReasonBuilder{}
	return builder
}

// 终止操作失败的文件ID
//
// 示例值：7345403447803379731
func (builder *TerminateSignatureFailIdAndReasonBuilder) SignatureFileId(signatureFileId string) *TerminateSignatureFailIdAndReasonBuilder {
	builder.signatureFileId = signatureFileId
	builder.signatureFileIdFlag = true
	return builder
}

// 终止失败的原因
//
// 示例值：文件状态不允许终止
func (builder *TerminateSignatureFailIdAndReasonBuilder) FailReason(failReason string) *TerminateSignatureFailIdAndReasonBuilder {
	builder.failReason = failReason
	builder.failReasonFlag = true
	return builder
}

func (builder *TerminateSignatureFailIdAndReasonBuilder) Build() *TerminateSignatureFailIdAndReason {
	req := &TerminateSignatureFailIdAndReason{}
	if builder.signatureFileIdFlag {
		req.SignatureFileId = &builder.signatureFileId

	}
	if builder.failReasonFlag {
		req.FailReason = &builder.failReason

	}
	return req
}

type TimeZone struct {
	TimeZoneId *string `json:"time_zone_id,omitempty"` // 时区 ID

	Name []*I18n `json:"name,omitempty"` // 时区名称

	TimeZoneCode *string `json:"time_zone_code,omitempty"` // 编码

	UtcOffset *string `json:"utc_offset,omitempty"` // UTC 时区偏移量

	Status *int `json:"status,omitempty"` // 状态
}

type TimeZoneBuilder struct {
	timeZoneId     string // 时区 ID
	timeZoneIdFlag bool

	name     []*I18n // 时区名称
	nameFlag bool

	timeZoneCode     string // 编码
	timeZoneCodeFlag bool

	utcOffset     string // UTC 时区偏移量
	utcOffsetFlag bool

	status     int // 状态
	statusFlag bool
}

func NewTimeZoneBuilder() *TimeZoneBuilder {
	builder := &TimeZoneBuilder{}
	return builder
}

// 时区 ID
//
// 示例值：6862995813451171342
func (builder *TimeZoneBuilder) TimeZoneId(timeZoneId string) *TimeZoneBuilder {
	builder.timeZoneId = timeZoneId
	builder.timeZoneIdFlag = true
	return builder
}

// 时区名称
//
// 示例值：
func (builder *TimeZoneBuilder) Name(name []*I18n) *TimeZoneBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 编码
//
// 示例值：Pacific/Niue
func (builder *TimeZoneBuilder) TimeZoneCode(timeZoneCode string) *TimeZoneBuilder {
	builder.timeZoneCode = timeZoneCode
	builder.timeZoneCodeFlag = true
	return builder
}

// UTC 时区偏移量
//
// 示例值：-660
func (builder *TimeZoneBuilder) UtcOffset(utcOffset string) *TimeZoneBuilder {
	builder.utcOffset = utcOffset
	builder.utcOffsetFlag = true
	return builder
}

// 状态
//
// 示例值：1
func (builder *TimeZoneBuilder) Status(status int) *TimeZoneBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *TimeZoneBuilder) Build() *TimeZone {
	req := &TimeZone{}
	if builder.timeZoneIdFlag {
		req.TimeZoneId = &builder.timeZoneId

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.timeZoneCodeFlag {
		req.TimeZoneCode = &builder.timeZoneCode

	}
	if builder.utcOffsetFlag {
		req.UtcOffset = &builder.utcOffset

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type TranferEmploymentInfo struct {
	RegularEmployeeStartDate *string `json:"regular_employee_start_date,omitempty"` // 转正式员工日期

	SeniorityDate *string `json:"seniority_date,omitempty"` // 司龄起算日期

	EmployeeNumber *string `json:"employee_number,omitempty"` // 员工编号

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type TranferEmploymentInfoBuilder struct {
	regularEmployeeStartDate     string // 转正式员工日期
	regularEmployeeStartDateFlag bool

	seniorityDate     string // 司龄起算日期
	seniorityDateFlag bool

	employeeNumber     string // 员工编号
	employeeNumberFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewTranferEmploymentInfoBuilder() *TranferEmploymentInfoBuilder {
	builder := &TranferEmploymentInfoBuilder{}
	return builder
}

// 转正式员工日期
//
// 示例值：2023-01-01
func (builder *TranferEmploymentInfoBuilder) RegularEmployeeStartDate(regularEmployeeStartDate string) *TranferEmploymentInfoBuilder {
	builder.regularEmployeeStartDate = regularEmployeeStartDate
	builder.regularEmployeeStartDateFlag = true
	return builder
}

// 司龄起算日期
//
// 示例值：2023-01-01
func (builder *TranferEmploymentInfoBuilder) SeniorityDate(seniorityDate string) *TranferEmploymentInfoBuilder {
	builder.seniorityDate = seniorityDate
	builder.seniorityDateFlag = true
	return builder
}

// 员工编号
//
// 示例值：1111111
func (builder *TranferEmploymentInfoBuilder) EmployeeNumber(employeeNumber string) *TranferEmploymentInfoBuilder {
	builder.employeeNumber = employeeNumber
	builder.employeeNumberFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *TranferEmploymentInfoBuilder) CustomFields(customFields []*CustomFieldData) *TranferEmploymentInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *TranferEmploymentInfoBuilder) Build() *TranferEmploymentInfo {
	req := &TranferEmploymentInfo{}
	if builder.regularEmployeeStartDateFlag {
		req.RegularEmployeeStartDate = &builder.regularEmployeeStartDate

	}
	if builder.seniorityDateFlag {
		req.SeniorityDate = &builder.seniorityDate

	}
	if builder.employeeNumberFlag {
		req.EmployeeNumber = &builder.employeeNumber

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type TransferInfo struct {
	Remark *string `json:"remark,omitempty"` // 备注

	OfferInfo *string `json:"offer_info,omitempty"` // offer信息

	TargetDottedManagerClean *bool `json:"target_dotted_manager_clean,omitempty"` // 是否撤销虚线上级

	ProbationExist *bool `json:"probation_exist,omitempty"` // 是否有试用期

	OriginalDepartment *string `json:"original_department,omitempty"` // 原部门

	TargetDepartment *string `json:"target_department,omitempty"` // 新部门

	TargetDraftDepartment *string `json:"target_draft_department,omitempty"` // 新部门，新建部门审批完成前会返回 td_xxx 的临时 ID

	OriginalDepartmentIdPath []*OrgdraftDepartmentId `json:"original_department_id_path,omitempty"` // 原部门全路径

	TargetDepartmentIdPath []*OrgdraftDepartmentId `json:"target_department_id_path,omitempty"` // 新部门全路径

	OriginalWorkLocation *string `json:"original_work_location,omitempty"` // 原工作地点

	TargetWorkLocation *string `json:"target_work_location,omitempty"` // 新工作地点

	OriginalDirectManager *string `json:"original_direct_manager,omitempty"` // 原直属上级

	TargetDirectManager *string `json:"target_direct_manager,omitempty"` // 新直属上级

	OriginalDottedManager *string `json:"original_dotted_manager,omitempty"` // 原虚线上级

	TargetDottedManager *string `json:"target_dotted_manager,omitempty"` // 新虚线上级

	OriginalJob *string `json:"original_job,omitempty"` // 原职务

	TargetJob *string `json:"target_job,omitempty"` // 新职务

	OriginalJobFamily *string `json:"original_job_family,omitempty"` // 原序列

	TargetJobFamily *string `json:"target_job_family,omitempty"` // 新序列

	OriginalJobLevel *string `json:"original_job_level,omitempty"` // 原级别

	TargetJobLevel *string `json:"target_job_level,omitempty"` // 新级别

	OriginalWorkforceType *string `json:"original_workforce_type,omitempty"` // 原人员类型

	TargetWorkforceType *string `json:"target_workforce_type,omitempty"` // 新人员类型

	OriginalEmployeeSubtype *string `json:"original_employee_subtype,omitempty"` // 原人员子类型

	TargetEmployeeSubtype *string `json:"target_employee_subtype,omitempty"` // 新人员子类型

	OriginalCompany *string `json:"original_company,omitempty"` // 原公司

	TargetCompany *string `json:"target_company,omitempty"` // 新公司

	OriginalContractNumber *string `json:"original_contract_number,omitempty"` // 原合同编号

	TargetContractNumber *string `json:"target_contract_number,omitempty"` // 新合同编号

	OriginalContractType *string `json:"original_contract_type,omitempty"` // 原合同类型

	TargetContractType *string `json:"target_contract_type,omitempty"` // 新合同类型

	OriginalDurationType *string `json:"original_duration_type,omitempty"` // 原期限类型

	TargetDurationType *string `json:"target_duration_type,omitempty"` // 新期限类型

	OriginalSigningType *string `json:"original_signing_type,omitempty"` // 原签订类型

	TargetSigningType *string `json:"target_signing_type,omitempty"` // 新签订类型

	OriginalContractStartDate *string `json:"original_contract_start_date,omitempty"` // 原合同开始日期

	TargetContractStartDate *string `json:"target_contract_start_date,omitempty"` // 新合同开始日期

	OriginalContractEndDate *string `json:"original_contract_end_date,omitempty"` // 原合同结束日期

	TargetContractEndDate *string `json:"target_contract_end_date,omitempty"` // 新合同结束日期

	OriginalWorkingHoursType *string `json:"original_working_hours_type,omitempty"` // 原工时制度

	TargetWorkingHoursType *string `json:"target_working_hours_type,omitempty"` // 新工时制度

	OriginalWorkingCalendar *string `json:"original_working_calendar,omitempty"` // 原工作日历

	TargetWorkingCalendar *string `json:"target_working_calendar,omitempty"` // 新工作日历

	OriginalProbationEndDate *string `json:"original_probation_end_date,omitempty"` // 原试用期预计结束日期

	TargetProbationEndDate *string `json:"target_probation_end_date,omitempty"` // 新试用期预计结束日期

	OriginalWeeklyWorkingHours *string `json:"original_weekly_working_hours,omitempty"` // 原周工作时长

	TargetWeeklyWorkingHours *string `json:"target_weekly_working_hours,omitempty"` // 新周工作时长

	OriginalWorkShift *string `json:"original_work_shift,omitempty"` // 原排班

	TargetWorkShift *string `json:"target_work_shift,omitempty"` // 新排班

	OriginalCostCenterRate []*JobDataCostCenter `json:"original_cost_center_rate,omitempty"` // 原成本中心分摊方式

	TargetCostCenterRate []*JobDataCostCenter `json:"target_cost_center_rate,omitempty"` // 新成本中心分摊方式

	TargetAllocationExpirationTime *string `json:"target_allocation_expiration_time,omitempty"` // 新分摊失效时间

	OriginalAllocationExpirationTime *string `json:"original_allocation_expiration_time,omitempty"` // 原分摊失效时间

	TargetAllocationEffectiveTime *string `json:"target_allocation_effective_time,omitempty"` // 新分摊生效时间

	OriginalAllocationEffectiveTime *string `json:"original_allocation_effective_time,omitempty"` // 原分摊生效时间

	OriginalDefaultCostCenter *string `json:"original_default_cost_center,omitempty"` // 原默认成本中心

	TargetDefaultCostCenter *string `json:"target_default_cost_center,omitempty"` // 新默认成本中心

	OriginalIsDefaultCostCenterInherited *bool `json:"original_is_default_cost_center_inherited,omitempty"` // 原默认成本中心是否继承

	TargetIsDefaultCostCenterInherited *bool `json:"target_is_default_cost_center_inherited,omitempty"` // 新默认成本中心是否继承

	OriginalEmploymentChange *TranferEmploymentInfo `json:"original_employment_change,omitempty"` // 原工作信息

	TargetEmploymentChange *TranferEmploymentInfo `json:"target_employment_change,omitempty"` // 新工作信息

	OriginalJobGrade *string `json:"original_job_grade,omitempty"` // 原职等

	TargetJobGrade *string `json:"target_job_grade,omitempty"` // 新职等

	OriginalCompensationType *string `json:"original_compensation_type,omitempty"` // 原薪资类型

	TargetCompensationType *string `json:"target_compensation_type,omitempty"` // 新薪资类型

	OriginalServiceCompany *string `json:"original_service_company,omitempty"` // 原任职公司

	TargetServiceCompany *string `json:"target_service_company,omitempty"` // 新任职公司

	OriginalPosition *string `json:"original_position,omitempty"` // 原岗位

	TargetPosition *string `json:"target_position,omitempty"` // 新岗位

	TargetDraftPosition *string `json:"target_draft_position,omitempty"` // 新岗位，新建岗位审批完成前会返回 td_xxx 的临时 ID

	OriginalSocialSecurityCity *string `json:"original_social_security_city,omitempty"` // 原社保城市

	TargetSocialSecurityCity *string `json:"target_social_security_city,omitempty"` // 新社保城市

	OriginalPathway *string `json:"original_pathway,omitempty"` // 原通道

	TargetPathway *string `json:"target_pathway,omitempty"` // 新通道

	IsTransferWithWorkforce *bool `json:"is_transfer_with_workforce,omitempty"` // 编制随人员一起调整
}

type TransferInfoBuilder struct {
	remark     string // 备注
	remarkFlag bool

	offerInfo     string // offer信息
	offerInfoFlag bool

	targetDottedManagerClean     bool // 是否撤销虚线上级
	targetDottedManagerCleanFlag bool

	probationExist     bool // 是否有试用期
	probationExistFlag bool

	originalDepartment     string // 原部门
	originalDepartmentFlag bool

	targetDepartment     string // 新部门
	targetDepartmentFlag bool

	targetDraftDepartment     string // 新部门，新建部门审批完成前会返回 td_xxx 的临时 ID
	targetDraftDepartmentFlag bool

	originalDepartmentIdPath     []*OrgdraftDepartmentId // 原部门全路径
	originalDepartmentIdPathFlag bool

	targetDepartmentIdPath     []*OrgdraftDepartmentId // 新部门全路径
	targetDepartmentIdPathFlag bool

	originalWorkLocation     string // 原工作地点
	originalWorkLocationFlag bool

	targetWorkLocation     string // 新工作地点
	targetWorkLocationFlag bool

	originalDirectManager     string // 原直属上级
	originalDirectManagerFlag bool

	targetDirectManager     string // 新直属上级
	targetDirectManagerFlag bool

	originalDottedManager     string // 原虚线上级
	originalDottedManagerFlag bool

	targetDottedManager     string // 新虚线上级
	targetDottedManagerFlag bool

	originalJob     string // 原职务
	originalJobFlag bool

	targetJob     string // 新职务
	targetJobFlag bool

	originalJobFamily     string // 原序列
	originalJobFamilyFlag bool

	targetJobFamily     string // 新序列
	targetJobFamilyFlag bool

	originalJobLevel     string // 原级别
	originalJobLevelFlag bool

	targetJobLevel     string // 新级别
	targetJobLevelFlag bool

	originalWorkforceType     string // 原人员类型
	originalWorkforceTypeFlag bool

	targetWorkforceType     string // 新人员类型
	targetWorkforceTypeFlag bool

	originalEmployeeSubtype     string // 原人员子类型
	originalEmployeeSubtypeFlag bool

	targetEmployeeSubtype     string // 新人员子类型
	targetEmployeeSubtypeFlag bool

	originalCompany     string // 原公司
	originalCompanyFlag bool

	targetCompany     string // 新公司
	targetCompanyFlag bool

	originalContractNumber     string // 原合同编号
	originalContractNumberFlag bool

	targetContractNumber     string // 新合同编号
	targetContractNumberFlag bool

	originalContractType     string // 原合同类型
	originalContractTypeFlag bool

	targetContractType     string // 新合同类型
	targetContractTypeFlag bool

	originalDurationType     string // 原期限类型
	originalDurationTypeFlag bool

	targetDurationType     string // 新期限类型
	targetDurationTypeFlag bool

	originalSigningType     string // 原签订类型
	originalSigningTypeFlag bool

	targetSigningType     string // 新签订类型
	targetSigningTypeFlag bool

	originalContractStartDate     string // 原合同开始日期
	originalContractStartDateFlag bool

	targetContractStartDate     string // 新合同开始日期
	targetContractStartDateFlag bool

	originalContractEndDate     string // 原合同结束日期
	originalContractEndDateFlag bool

	targetContractEndDate     string // 新合同结束日期
	targetContractEndDateFlag bool

	originalWorkingHoursType     string // 原工时制度
	originalWorkingHoursTypeFlag bool

	targetWorkingHoursType     string // 新工时制度
	targetWorkingHoursTypeFlag bool

	originalWorkingCalendar     string // 原工作日历
	originalWorkingCalendarFlag bool

	targetWorkingCalendar     string // 新工作日历
	targetWorkingCalendarFlag bool

	originalProbationEndDate     string // 原试用期预计结束日期
	originalProbationEndDateFlag bool

	targetProbationEndDate     string // 新试用期预计结束日期
	targetProbationEndDateFlag bool

	originalWeeklyWorkingHours     string // 原周工作时长
	originalWeeklyWorkingHoursFlag bool

	targetWeeklyWorkingHours     string // 新周工作时长
	targetWeeklyWorkingHoursFlag bool

	originalWorkShift     string // 原排班
	originalWorkShiftFlag bool

	targetWorkShift     string // 新排班
	targetWorkShiftFlag bool

	originalCostCenterRate     []*JobDataCostCenter // 原成本中心分摊方式
	originalCostCenterRateFlag bool

	targetCostCenterRate     []*JobDataCostCenter // 新成本中心分摊方式
	targetCostCenterRateFlag bool

	targetAllocationExpirationTime     string // 新分摊失效时间
	targetAllocationExpirationTimeFlag bool

	originalAllocationExpirationTime     string // 原分摊失效时间
	originalAllocationExpirationTimeFlag bool

	targetAllocationEffectiveTime     string // 新分摊生效时间
	targetAllocationEffectiveTimeFlag bool

	originalAllocationEffectiveTime     string // 原分摊生效时间
	originalAllocationEffectiveTimeFlag bool

	originalDefaultCostCenter     string // 原默认成本中心
	originalDefaultCostCenterFlag bool

	targetDefaultCostCenter     string // 新默认成本中心
	targetDefaultCostCenterFlag bool

	originalIsDefaultCostCenterInherited     bool // 原默认成本中心是否继承
	originalIsDefaultCostCenterInheritedFlag bool

	targetIsDefaultCostCenterInherited     bool // 新默认成本中心是否继承
	targetIsDefaultCostCenterInheritedFlag bool

	originalEmploymentChange     *TranferEmploymentInfo // 原工作信息
	originalEmploymentChangeFlag bool

	targetEmploymentChange     *TranferEmploymentInfo // 新工作信息
	targetEmploymentChangeFlag bool

	originalJobGrade     string // 原职等
	originalJobGradeFlag bool

	targetJobGrade     string // 新职等
	targetJobGradeFlag bool

	originalCompensationType     string // 原薪资类型
	originalCompensationTypeFlag bool

	targetCompensationType     string // 新薪资类型
	targetCompensationTypeFlag bool

	originalServiceCompany     string // 原任职公司
	originalServiceCompanyFlag bool

	targetServiceCompany     string // 新任职公司
	targetServiceCompanyFlag bool

	originalPosition     string // 原岗位
	originalPositionFlag bool

	targetPosition     string // 新岗位
	targetPositionFlag bool

	targetDraftPosition     string // 新岗位，新建岗位审批完成前会返回 td_xxx 的临时 ID
	targetDraftPositionFlag bool

	originalSocialSecurityCity     string // 原社保城市
	originalSocialSecurityCityFlag bool

	targetSocialSecurityCity     string // 新社保城市
	targetSocialSecurityCityFlag bool

	originalPathway     string // 原通道
	originalPathwayFlag bool

	targetPathway     string // 新通道
	targetPathwayFlag bool

	isTransferWithWorkforce     bool // 编制随人员一起调整
	isTransferWithWorkforceFlag bool
}

func NewTransferInfoBuilder() *TransferInfoBuilder {
	builder := &TransferInfoBuilder{}
	return builder
}

// 备注
//
// 示例值：异动详情
func (builder *TransferInfoBuilder) Remark(remark string) *TransferInfoBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// offer信息
//
// 示例值：优质人才，加急处理
func (builder *TransferInfoBuilder) OfferInfo(offerInfo string) *TransferInfoBuilder {
	builder.offerInfo = offerInfo
	builder.offerInfoFlag = true
	return builder
}

// 是否撤销虚线上级
//
// 示例值：true
func (builder *TransferInfoBuilder) TargetDottedManagerClean(targetDottedManagerClean bool) *TransferInfoBuilder {
	builder.targetDottedManagerClean = targetDottedManagerClean
	builder.targetDottedManagerCleanFlag = true
	return builder
}

// 是否有试用期
//
// 示例值：false
func (builder *TransferInfoBuilder) ProbationExist(probationExist bool) *TransferInfoBuilder {
	builder.probationExist = probationExist
	builder.probationExistFlag = true
	return builder
}

// 原部门
//
// 示例值：6966236933198579208
func (builder *TransferInfoBuilder) OriginalDepartment(originalDepartment string) *TransferInfoBuilder {
	builder.originalDepartment = originalDepartment
	builder.originalDepartmentFlag = true
	return builder
}

// 新部门
//
// 示例值：6966236933198579208
func (builder *TransferInfoBuilder) TargetDepartment(targetDepartment string) *TransferInfoBuilder {
	builder.targetDepartment = targetDepartment
	builder.targetDepartmentFlag = true
	return builder
}

// 新部门，新建部门审批完成前会返回 td_xxx 的临时 ID
//
// 示例值：6966236933198579208
func (builder *TransferInfoBuilder) TargetDraftDepartment(targetDraftDepartment string) *TransferInfoBuilder {
	builder.targetDraftDepartment = targetDraftDepartment
	builder.targetDraftDepartmentFlag = true
	return builder
}

// 原部门全路径
//
// 示例值：
func (builder *TransferInfoBuilder) OriginalDepartmentIdPath(originalDepartmentIdPath []*OrgdraftDepartmentId) *TransferInfoBuilder {
	builder.originalDepartmentIdPath = originalDepartmentIdPath
	builder.originalDepartmentIdPathFlag = true
	return builder
}

// 新部门全路径
//
// 示例值：
func (builder *TransferInfoBuilder) TargetDepartmentIdPath(targetDepartmentIdPath []*OrgdraftDepartmentId) *TransferInfoBuilder {
	builder.targetDepartmentIdPath = targetDepartmentIdPath
	builder.targetDepartmentIdPathFlag = true
	return builder
}

// 原工作地点
//
// 示例值：6967271100992587295
func (builder *TransferInfoBuilder) OriginalWorkLocation(originalWorkLocation string) *TransferInfoBuilder {
	builder.originalWorkLocation = originalWorkLocation
	builder.originalWorkLocationFlag = true
	return builder
}

// 新工作地点
//
// 示例值：6967271100992587295
func (builder *TransferInfoBuilder) TargetWorkLocation(targetWorkLocation string) *TransferInfoBuilder {
	builder.targetWorkLocation = targetWorkLocation
	builder.targetWorkLocationFlag = true
	return builder
}

// 原直属上级
//
// 示例值：6974641477444060708
func (builder *TransferInfoBuilder) OriginalDirectManager(originalDirectManager string) *TransferInfoBuilder {
	builder.originalDirectManager = originalDirectManager
	builder.originalDirectManagerFlag = true
	return builder
}

// 新直属上级
//
// 示例值：7013619729281713671
func (builder *TransferInfoBuilder) TargetDirectManager(targetDirectManager string) *TransferInfoBuilder {
	builder.targetDirectManager = targetDirectManager
	builder.targetDirectManagerFlag = true
	return builder
}

// 原虚线上级
//
// 示例值：6974648866876573198
func (builder *TransferInfoBuilder) OriginalDottedManager(originalDottedManager string) *TransferInfoBuilder {
	builder.originalDottedManager = originalDottedManager
	builder.originalDottedManagerFlag = true
	return builder
}

// 新虚线上级
//
// 示例值：7013328578351842852
func (builder *TransferInfoBuilder) TargetDottedManager(targetDottedManager string) *TransferInfoBuilder {
	builder.targetDottedManager = targetDottedManager
	builder.targetDottedManagerFlag = true
	return builder
}

// 原职务
//
// 示例值：6969469398088287751
func (builder *TransferInfoBuilder) OriginalJob(originalJob string) *TransferInfoBuilder {
	builder.originalJob = originalJob
	builder.originalJobFlag = true
	return builder
}

// 新职务
//
// 示例值：6969469557836760606
func (builder *TransferInfoBuilder) TargetJob(targetJob string) *TransferInfoBuilder {
	builder.targetJob = targetJob
	builder.targetJobFlag = true
	return builder
}

// 原序列
//
// 示例值：6967287547462419975
func (builder *TransferInfoBuilder) OriginalJobFamily(originalJobFamily string) *TransferInfoBuilder {
	builder.originalJobFamily = originalJobFamily
	builder.originalJobFamilyFlag = true
	return builder
}

// 新序列
//
// 示例值：6967287547462419975
func (builder *TransferInfoBuilder) TargetJobFamily(targetJobFamily string) *TransferInfoBuilder {
	builder.targetJobFamily = targetJobFamily
	builder.targetJobFamilyFlag = true
	return builder
}

// 原级别
//
// 示例值：6972085707674355214
func (builder *TransferInfoBuilder) OriginalJobLevel(originalJobLevel string) *TransferInfoBuilder {
	builder.originalJobLevel = originalJobLevel
	builder.originalJobLevelFlag = true
	return builder
}

// 新级别
//
// 示例值：6972085707674355214
func (builder *TransferInfoBuilder) TargetJobLevel(targetJobLevel string) *TransferInfoBuilder {
	builder.targetJobLevel = targetJobLevel
	builder.targetJobLevelFlag = true
	return builder
}

// 原人员类型
//
// 示例值：6968386026792289828
func (builder *TransferInfoBuilder) OriginalWorkforceType(originalWorkforceType string) *TransferInfoBuilder {
	builder.originalWorkforceType = originalWorkforceType
	builder.originalWorkforceTypeFlag = true
	return builder
}

// 新人员类型
//
// 示例值：7036268995372303885
func (builder *TransferInfoBuilder) TargetWorkforceType(targetWorkforceType string) *TransferInfoBuilder {
	builder.targetWorkforceType = targetWorkforceType
	builder.targetWorkforceTypeFlag = true
	return builder
}

// 原人员子类型
//
// 示例值：6968386026792289828
func (builder *TransferInfoBuilder) OriginalEmployeeSubtype(originalEmployeeSubtype string) *TransferInfoBuilder {
	builder.originalEmployeeSubtype = originalEmployeeSubtype
	builder.originalEmployeeSubtypeFlag = true
	return builder
}

// 新人员子类型
//
// 示例值：7036268995372303885
func (builder *TransferInfoBuilder) TargetEmployeeSubtype(targetEmployeeSubtype string) *TransferInfoBuilder {
	builder.targetEmployeeSubtype = targetEmployeeSubtype
	builder.targetEmployeeSubtypeFlag = true
	return builder
}

// 原公司
//
// 示例值：6974659700705068581
func (builder *TransferInfoBuilder) OriginalCompany(originalCompany string) *TransferInfoBuilder {
	builder.originalCompany = originalCompany
	builder.originalCompanyFlag = true
	return builder
}

// 新公司
//
// 示例值：6974659700705068581
func (builder *TransferInfoBuilder) TargetCompany(targetCompany string) *TransferInfoBuilder {
	builder.targetCompany = targetCompany
	builder.targetCompanyFlag = true
	return builder
}

// 原合同编号
//
// 示例值：55332
func (builder *TransferInfoBuilder) OriginalContractNumber(originalContractNumber string) *TransferInfoBuilder {
	builder.originalContractNumber = originalContractNumber
	builder.originalContractNumberFlag = true
	return builder
}

// 新合同编号
//
// 示例值：55333
func (builder *TransferInfoBuilder) TargetContractNumber(targetContractNumber string) *TransferInfoBuilder {
	builder.targetContractNumber = targetContractNumber
	builder.targetContractNumberFlag = true
	return builder
}

// 原合同类型
//
// 示例值：labor_contract
func (builder *TransferInfoBuilder) OriginalContractType(originalContractType string) *TransferInfoBuilder {
	builder.originalContractType = originalContractType
	builder.originalContractTypeFlag = true
	return builder
}

// 新合同类型
//
// 示例值：labor_contract
func (builder *TransferInfoBuilder) TargetContractType(targetContractType string) *TransferInfoBuilder {
	builder.targetContractType = targetContractType
	builder.targetContractTypeFlag = true
	return builder
}

// 原期限类型
//
// 示例值：fixed_term
func (builder *TransferInfoBuilder) OriginalDurationType(originalDurationType string) *TransferInfoBuilder {
	builder.originalDurationType = originalDurationType
	builder.originalDurationTypeFlag = true
	return builder
}

// 新期限类型
//
// 示例值：fixed_term
func (builder *TransferInfoBuilder) TargetDurationType(targetDurationType string) *TransferInfoBuilder {
	builder.targetDurationType = targetDurationType
	builder.targetDurationTypeFlag = true
	return builder
}

// 原签订类型
//
// 示例值：new
func (builder *TransferInfoBuilder) OriginalSigningType(originalSigningType string) *TransferInfoBuilder {
	builder.originalSigningType = originalSigningType
	builder.originalSigningTypeFlag = true
	return builder
}

// 新签订类型
//
// 示例值：new
func (builder *TransferInfoBuilder) TargetSigningType(targetSigningType string) *TransferInfoBuilder {
	builder.targetSigningType = targetSigningType
	builder.targetSigningTypeFlag = true
	return builder
}

// 原合同开始日期
//
// 示例值：2021-07-01
func (builder *TransferInfoBuilder) OriginalContractStartDate(originalContractStartDate string) *TransferInfoBuilder {
	builder.originalContractStartDate = originalContractStartDate
	builder.originalContractStartDateFlag = true
	return builder
}

// 新合同开始日期
//
// 示例值：2021-07-01
func (builder *TransferInfoBuilder) TargetContractStartDate(targetContractStartDate string) *TransferInfoBuilder {
	builder.targetContractStartDate = targetContractStartDate
	builder.targetContractStartDateFlag = true
	return builder
}

// 原合同结束日期
//
// 示例值：2024-07-01
func (builder *TransferInfoBuilder) OriginalContractEndDate(originalContractEndDate string) *TransferInfoBuilder {
	builder.originalContractEndDate = originalContractEndDate
	builder.originalContractEndDateFlag = true
	return builder
}

// 新合同结束日期
//
// 示例值：2024-07-01
func (builder *TransferInfoBuilder) TargetContractEndDate(targetContractEndDate string) *TransferInfoBuilder {
	builder.targetContractEndDate = targetContractEndDate
	builder.targetContractEndDateFlag = true
	return builder
}

// 原工时制度
//
// 示例值：6969087376740206087
func (builder *TransferInfoBuilder) OriginalWorkingHoursType(originalWorkingHoursType string) *TransferInfoBuilder {
	builder.originalWorkingHoursType = originalWorkingHoursType
	builder.originalWorkingHoursTypeFlag = true
	return builder
}

// 新工时制度
//
// 示例值：6969087376740206087
func (builder *TransferInfoBuilder) TargetWorkingHoursType(targetWorkingHoursType string) *TransferInfoBuilder {
	builder.targetWorkingHoursType = targetWorkingHoursType
	builder.targetWorkingHoursTypeFlag = true
	return builder
}

// 原工作日历
//
// 示例值：6969087376740236087
func (builder *TransferInfoBuilder) OriginalWorkingCalendar(originalWorkingCalendar string) *TransferInfoBuilder {
	builder.originalWorkingCalendar = originalWorkingCalendar
	builder.originalWorkingCalendarFlag = true
	return builder
}

// 新工作日历
//
// 示例值：6969087376740236087
func (builder *TransferInfoBuilder) TargetWorkingCalendar(targetWorkingCalendar string) *TransferInfoBuilder {
	builder.targetWorkingCalendar = targetWorkingCalendar
	builder.targetWorkingCalendarFlag = true
	return builder
}

// 原试用期预计结束日期
//
// 示例值：2021-11-17
func (builder *TransferInfoBuilder) OriginalProbationEndDate(originalProbationEndDate string) *TransferInfoBuilder {
	builder.originalProbationEndDate = originalProbationEndDate
	builder.originalProbationEndDateFlag = true
	return builder
}

// 新试用期预计结束日期
//
// 示例值：2021-11-17
func (builder *TransferInfoBuilder) TargetProbationEndDate(targetProbationEndDate string) *TransferInfoBuilder {
	builder.targetProbationEndDate = targetProbationEndDate
	builder.targetProbationEndDateFlag = true
	return builder
}

// 原周工作时长
//
// 示例值：162
func (builder *TransferInfoBuilder) OriginalWeeklyWorkingHours(originalWeeklyWorkingHours string) *TransferInfoBuilder {
	builder.originalWeeklyWorkingHours = originalWeeklyWorkingHours
	builder.originalWeeklyWorkingHoursFlag = true
	return builder
}

// 新周工作时长
//
// 示例值：160
func (builder *TransferInfoBuilder) TargetWeeklyWorkingHours(targetWeeklyWorkingHours string) *TransferInfoBuilder {
	builder.targetWeeklyWorkingHours = targetWeeklyWorkingHours
	builder.targetWeeklyWorkingHoursFlag = true
	return builder
}

// 原排班
//
// 示例值：work_shift
func (builder *TransferInfoBuilder) OriginalWorkShift(originalWorkShift string) *TransferInfoBuilder {
	builder.originalWorkShift = originalWorkShift
	builder.originalWorkShiftFlag = true
	return builder
}

// 新排班
//
// 示例值：non_work_shift
func (builder *TransferInfoBuilder) TargetWorkShift(targetWorkShift string) *TransferInfoBuilder {
	builder.targetWorkShift = targetWorkShift
	builder.targetWorkShiftFlag = true
	return builder
}

// 原成本中心分摊方式
//
// 示例值：
func (builder *TransferInfoBuilder) OriginalCostCenterRate(originalCostCenterRate []*JobDataCostCenter) *TransferInfoBuilder {
	builder.originalCostCenterRate = originalCostCenterRate
	builder.originalCostCenterRateFlag = true
	return builder
}

// 新成本中心分摊方式
//
// 示例值：
func (builder *TransferInfoBuilder) TargetCostCenterRate(targetCostCenterRate []*JobDataCostCenter) *TransferInfoBuilder {
	builder.targetCostCenterRate = targetCostCenterRate
	builder.targetCostCenterRateFlag = true
	return builder
}

// 新分摊失效时间
//
// 示例值：2022-03-01
func (builder *TransferInfoBuilder) TargetAllocationExpirationTime(targetAllocationExpirationTime string) *TransferInfoBuilder {
	builder.targetAllocationExpirationTime = targetAllocationExpirationTime
	builder.targetAllocationExpirationTimeFlag = true
	return builder
}

// 原分摊失效时间
//
// 示例值：2022-03-01
func (builder *TransferInfoBuilder) OriginalAllocationExpirationTime(originalAllocationExpirationTime string) *TransferInfoBuilder {
	builder.originalAllocationExpirationTime = originalAllocationExpirationTime
	builder.originalAllocationExpirationTimeFlag = true
	return builder
}

// 新分摊生效时间
//
// 示例值：2022-03-01
func (builder *TransferInfoBuilder) TargetAllocationEffectiveTime(targetAllocationEffectiveTime string) *TransferInfoBuilder {
	builder.targetAllocationEffectiveTime = targetAllocationEffectiveTime
	builder.targetAllocationEffectiveTimeFlag = true
	return builder
}

// 原分摊生效时间
//
// 示例值：2022-03-01
func (builder *TransferInfoBuilder) OriginalAllocationEffectiveTime(originalAllocationEffectiveTime string) *TransferInfoBuilder {
	builder.originalAllocationEffectiveTime = originalAllocationEffectiveTime
	builder.originalAllocationEffectiveTimeFlag = true
	return builder
}

// 原默认成本中心
//
// 示例值：7380264299728602661
func (builder *TransferInfoBuilder) OriginalDefaultCostCenter(originalDefaultCostCenter string) *TransferInfoBuilder {
	builder.originalDefaultCostCenter = originalDefaultCostCenter
	builder.originalDefaultCostCenterFlag = true
	return builder
}

// 新默认成本中心
//
// 示例值：7380264299728602661
func (builder *TransferInfoBuilder) TargetDefaultCostCenter(targetDefaultCostCenter string) *TransferInfoBuilder {
	builder.targetDefaultCostCenter = targetDefaultCostCenter
	builder.targetDefaultCostCenterFlag = true
	return builder
}

// 原默认成本中心是否继承
//
// 示例值：
func (builder *TransferInfoBuilder) OriginalIsDefaultCostCenterInherited(originalIsDefaultCostCenterInherited bool) *TransferInfoBuilder {
	builder.originalIsDefaultCostCenterInherited = originalIsDefaultCostCenterInherited
	builder.originalIsDefaultCostCenterInheritedFlag = true
	return builder
}

// 新默认成本中心是否继承
//
// 示例值：
func (builder *TransferInfoBuilder) TargetIsDefaultCostCenterInherited(targetIsDefaultCostCenterInherited bool) *TransferInfoBuilder {
	builder.targetIsDefaultCostCenterInherited = targetIsDefaultCostCenterInherited
	builder.targetIsDefaultCostCenterInheritedFlag = true
	return builder
}

// 原工作信息
//
// 示例值：
func (builder *TransferInfoBuilder) OriginalEmploymentChange(originalEmploymentChange *TranferEmploymentInfo) *TransferInfoBuilder {
	builder.originalEmploymentChange = originalEmploymentChange
	builder.originalEmploymentChangeFlag = true
	return builder
}

// 新工作信息
//
// 示例值：
func (builder *TransferInfoBuilder) TargetEmploymentChange(targetEmploymentChange *TranferEmploymentInfo) *TransferInfoBuilder {
	builder.targetEmploymentChange = targetEmploymentChange
	builder.targetEmploymentChangeFlag = true
	return builder
}

// 原职等
//
// 示例值：7289005963599693366
func (builder *TransferInfoBuilder) OriginalJobGrade(originalJobGrade string) *TransferInfoBuilder {
	builder.originalJobGrade = originalJobGrade
	builder.originalJobGradeFlag = true
	return builder
}

// 新职等
//
// 示例值：7289005963599693366
func (builder *TransferInfoBuilder) TargetJobGrade(targetJobGrade string) *TransferInfoBuilder {
	builder.targetJobGrade = targetJobGrade
	builder.targetJobGradeFlag = true
	return builder
}

// 原薪资类型
//
// 示例值：hourly
func (builder *TransferInfoBuilder) OriginalCompensationType(originalCompensationType string) *TransferInfoBuilder {
	builder.originalCompensationType = originalCompensationType
	builder.originalCompensationTypeFlag = true
	return builder
}

// 新薪资类型
//
// 示例值：salary
func (builder *TransferInfoBuilder) TargetCompensationType(targetCompensationType string) *TransferInfoBuilder {
	builder.targetCompensationType = targetCompensationType
	builder.targetCompensationTypeFlag = true
	return builder
}

// 原任职公司
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) OriginalServiceCompany(originalServiceCompany string) *TransferInfoBuilder {
	builder.originalServiceCompany = originalServiceCompany
	builder.originalServiceCompanyFlag = true
	return builder
}

// 新任职公司
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetServiceCompany(targetServiceCompany string) *TransferInfoBuilder {
	builder.targetServiceCompany = targetServiceCompany
	builder.targetServiceCompanyFlag = true
	return builder
}

// 原岗位
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) OriginalPosition(originalPosition string) *TransferInfoBuilder {
	builder.originalPosition = originalPosition
	builder.originalPositionFlag = true
	return builder
}

// 新岗位
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetPosition(targetPosition string) *TransferInfoBuilder {
	builder.targetPosition = targetPosition
	builder.targetPositionFlag = true
	return builder
}

// 新岗位，新建岗位审批完成前会返回 td_xxx 的临时 ID
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetDraftPosition(targetDraftPosition string) *TransferInfoBuilder {
	builder.targetDraftPosition = targetDraftPosition
	builder.targetDraftPositionFlag = true
	return builder
}

// 原社保城市
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) OriginalSocialSecurityCity(originalSocialSecurityCity string) *TransferInfoBuilder {
	builder.originalSocialSecurityCity = originalSocialSecurityCity
	builder.originalSocialSecurityCityFlag = true
	return builder
}

// 新社保城市
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetSocialSecurityCity(targetSocialSecurityCity string) *TransferInfoBuilder {
	builder.targetSocialSecurityCity = targetSocialSecurityCity
	builder.targetSocialSecurityCityFlag = true
	return builder
}

// 原通道
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) OriginalPathway(originalPathway string) *TransferInfoBuilder {
	builder.originalPathway = originalPathway
	builder.originalPathwayFlag = true
	return builder
}

// 新通道
//
// 示例值：7289005963599693367
func (builder *TransferInfoBuilder) TargetPathway(targetPathway string) *TransferInfoBuilder {
	builder.targetPathway = targetPathway
	builder.targetPathwayFlag = true
	return builder
}

// 编制随人员一起调整
//
// 示例值：false
func (builder *TransferInfoBuilder) IsTransferWithWorkforce(isTransferWithWorkforce bool) *TransferInfoBuilder {
	builder.isTransferWithWorkforce = isTransferWithWorkforce
	builder.isTransferWithWorkforceFlag = true
	return builder
}

func (builder *TransferInfoBuilder) Build() *TransferInfo {
	req := &TransferInfo{}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.offerInfoFlag {
		req.OfferInfo = &builder.offerInfo

	}
	if builder.targetDottedManagerCleanFlag {
		req.TargetDottedManagerClean = &builder.targetDottedManagerClean

	}
	if builder.probationExistFlag {
		req.ProbationExist = &builder.probationExist

	}
	if builder.originalDepartmentFlag {
		req.OriginalDepartment = &builder.originalDepartment

	}
	if builder.targetDepartmentFlag {
		req.TargetDepartment = &builder.targetDepartment

	}
	if builder.targetDraftDepartmentFlag {
		req.TargetDraftDepartment = &builder.targetDraftDepartment

	}
	if builder.originalDepartmentIdPathFlag {
		req.OriginalDepartmentIdPath = builder.originalDepartmentIdPath
	}
	if builder.targetDepartmentIdPathFlag {
		req.TargetDepartmentIdPath = builder.targetDepartmentIdPath
	}
	if builder.originalWorkLocationFlag {
		req.OriginalWorkLocation = &builder.originalWorkLocation

	}
	if builder.targetWorkLocationFlag {
		req.TargetWorkLocation = &builder.targetWorkLocation

	}
	if builder.originalDirectManagerFlag {
		req.OriginalDirectManager = &builder.originalDirectManager

	}
	if builder.targetDirectManagerFlag {
		req.TargetDirectManager = &builder.targetDirectManager

	}
	if builder.originalDottedManagerFlag {
		req.OriginalDottedManager = &builder.originalDottedManager

	}
	if builder.targetDottedManagerFlag {
		req.TargetDottedManager = &builder.targetDottedManager

	}
	if builder.originalJobFlag {
		req.OriginalJob = &builder.originalJob

	}
	if builder.targetJobFlag {
		req.TargetJob = &builder.targetJob

	}
	if builder.originalJobFamilyFlag {
		req.OriginalJobFamily = &builder.originalJobFamily

	}
	if builder.targetJobFamilyFlag {
		req.TargetJobFamily = &builder.targetJobFamily

	}
	if builder.originalJobLevelFlag {
		req.OriginalJobLevel = &builder.originalJobLevel

	}
	if builder.targetJobLevelFlag {
		req.TargetJobLevel = &builder.targetJobLevel

	}
	if builder.originalWorkforceTypeFlag {
		req.OriginalWorkforceType = &builder.originalWorkforceType

	}
	if builder.targetWorkforceTypeFlag {
		req.TargetWorkforceType = &builder.targetWorkforceType

	}
	if builder.originalEmployeeSubtypeFlag {
		req.OriginalEmployeeSubtype = &builder.originalEmployeeSubtype

	}
	if builder.targetEmployeeSubtypeFlag {
		req.TargetEmployeeSubtype = &builder.targetEmployeeSubtype

	}
	if builder.originalCompanyFlag {
		req.OriginalCompany = &builder.originalCompany

	}
	if builder.targetCompanyFlag {
		req.TargetCompany = &builder.targetCompany

	}
	if builder.originalContractNumberFlag {
		req.OriginalContractNumber = &builder.originalContractNumber

	}
	if builder.targetContractNumberFlag {
		req.TargetContractNumber = &builder.targetContractNumber

	}
	if builder.originalContractTypeFlag {
		req.OriginalContractType = &builder.originalContractType

	}
	if builder.targetContractTypeFlag {
		req.TargetContractType = &builder.targetContractType

	}
	if builder.originalDurationTypeFlag {
		req.OriginalDurationType = &builder.originalDurationType

	}
	if builder.targetDurationTypeFlag {
		req.TargetDurationType = &builder.targetDurationType

	}
	if builder.originalSigningTypeFlag {
		req.OriginalSigningType = &builder.originalSigningType

	}
	if builder.targetSigningTypeFlag {
		req.TargetSigningType = &builder.targetSigningType

	}
	if builder.originalContractStartDateFlag {
		req.OriginalContractStartDate = &builder.originalContractStartDate

	}
	if builder.targetContractStartDateFlag {
		req.TargetContractStartDate = &builder.targetContractStartDate

	}
	if builder.originalContractEndDateFlag {
		req.OriginalContractEndDate = &builder.originalContractEndDate

	}
	if builder.targetContractEndDateFlag {
		req.TargetContractEndDate = &builder.targetContractEndDate

	}
	if builder.originalWorkingHoursTypeFlag {
		req.OriginalWorkingHoursType = &builder.originalWorkingHoursType

	}
	if builder.targetWorkingHoursTypeFlag {
		req.TargetWorkingHoursType = &builder.targetWorkingHoursType

	}
	if builder.originalWorkingCalendarFlag {
		req.OriginalWorkingCalendar = &builder.originalWorkingCalendar

	}
	if builder.targetWorkingCalendarFlag {
		req.TargetWorkingCalendar = &builder.targetWorkingCalendar

	}
	if builder.originalProbationEndDateFlag {
		req.OriginalProbationEndDate = &builder.originalProbationEndDate

	}
	if builder.targetProbationEndDateFlag {
		req.TargetProbationEndDate = &builder.targetProbationEndDate

	}
	if builder.originalWeeklyWorkingHoursFlag {
		req.OriginalWeeklyWorkingHours = &builder.originalWeeklyWorkingHours

	}
	if builder.targetWeeklyWorkingHoursFlag {
		req.TargetWeeklyWorkingHours = &builder.targetWeeklyWorkingHours

	}
	if builder.originalWorkShiftFlag {
		req.OriginalWorkShift = &builder.originalWorkShift

	}
	if builder.targetWorkShiftFlag {
		req.TargetWorkShift = &builder.targetWorkShift

	}
	if builder.originalCostCenterRateFlag {
		req.OriginalCostCenterRate = builder.originalCostCenterRate
	}
	if builder.targetCostCenterRateFlag {
		req.TargetCostCenterRate = builder.targetCostCenterRate
	}
	if builder.targetAllocationExpirationTimeFlag {
		req.TargetAllocationExpirationTime = &builder.targetAllocationExpirationTime

	}
	if builder.originalAllocationExpirationTimeFlag {
		req.OriginalAllocationExpirationTime = &builder.originalAllocationExpirationTime

	}
	if builder.targetAllocationEffectiveTimeFlag {
		req.TargetAllocationEffectiveTime = &builder.targetAllocationEffectiveTime

	}
	if builder.originalAllocationEffectiveTimeFlag {
		req.OriginalAllocationEffectiveTime = &builder.originalAllocationEffectiveTime

	}
	if builder.originalDefaultCostCenterFlag {
		req.OriginalDefaultCostCenter = &builder.originalDefaultCostCenter

	}
	if builder.targetDefaultCostCenterFlag {
		req.TargetDefaultCostCenter = &builder.targetDefaultCostCenter

	}
	if builder.originalIsDefaultCostCenterInheritedFlag {
		req.OriginalIsDefaultCostCenterInherited = &builder.originalIsDefaultCostCenterInherited

	}
	if builder.targetIsDefaultCostCenterInheritedFlag {
		req.TargetIsDefaultCostCenterInherited = &builder.targetIsDefaultCostCenterInherited

	}
	if builder.originalEmploymentChangeFlag {
		req.OriginalEmploymentChange = builder.originalEmploymentChange
	}
	if builder.targetEmploymentChangeFlag {
		req.TargetEmploymentChange = builder.targetEmploymentChange
	}
	if builder.originalJobGradeFlag {
		req.OriginalJobGrade = &builder.originalJobGrade

	}
	if builder.targetJobGradeFlag {
		req.TargetJobGrade = &builder.targetJobGrade

	}
	if builder.originalCompensationTypeFlag {
		req.OriginalCompensationType = &builder.originalCompensationType

	}
	if builder.targetCompensationTypeFlag {
		req.TargetCompensationType = &builder.targetCompensationType

	}
	if builder.originalServiceCompanyFlag {
		req.OriginalServiceCompany = &builder.originalServiceCompany

	}
	if builder.targetServiceCompanyFlag {
		req.TargetServiceCompany = &builder.targetServiceCompany

	}
	if builder.originalPositionFlag {
		req.OriginalPosition = &builder.originalPosition

	}
	if builder.targetPositionFlag {
		req.TargetPosition = &builder.targetPosition

	}
	if builder.targetDraftPositionFlag {
		req.TargetDraftPosition = &builder.targetDraftPosition

	}
	if builder.originalSocialSecurityCityFlag {
		req.OriginalSocialSecurityCity = &builder.originalSocialSecurityCity

	}
	if builder.targetSocialSecurityCityFlag {
		req.TargetSocialSecurityCity = &builder.targetSocialSecurityCity

	}
	if builder.originalPathwayFlag {
		req.OriginalPathway = &builder.originalPathway

	}
	if builder.targetPathwayFlag {
		req.TargetPathway = &builder.targetPathway

	}
	if builder.isTransferWithWorkforceFlag {
		req.IsTransferWithWorkforce = &builder.isTransferWithWorkforce

	}
	return req
}

type UserContact struct {
	UserIds []string `json:"user_ids,omitempty"` // 手机号对应的在离职员工id列表

	Mobile *string `json:"mobile,omitempty"` // 手机号
}

type UserContactBuilder struct {
	userIds     []string // 手机号对应的在离职员工id列表
	userIdsFlag bool

	mobile     string // 手机号
	mobileFlag bool
}

func NewUserContactBuilder() *UserContactBuilder {
	builder := &UserContactBuilder{}
	return builder
}

// 手机号对应的在离职员工id列表
//
// 示例值：
func (builder *UserContactBuilder) UserIds(userIds []string) *UserContactBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 手机号
//
// 示例值：13011111111
func (builder *UserContactBuilder) Mobile(mobile string) *UserContactBuilder {
	builder.mobile = mobile
	builder.mobileFlag = true
	return builder
}

func (builder *UserContactBuilder) Build() *UserContact {
	req := &UserContact{}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.mobileFlag {
		req.Mobile = &builder.mobile

	}
	return req
}

type UserId struct {
	UserId *string `json:"user_id,omitempty"` //

	OpenId *string `json:"open_id,omitempty"` //

	UnionId *string `json:"union_id,omitempty"` //
}

type UserIdBuilder struct {
	userId     string //
	userIdFlag bool

	openId     string //
	openIdFlag bool

	unionId     string //
	unionIdFlag bool
}

func NewUserIdBuilder() *UserIdBuilder {
	builder := &UserIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) UserId(userId string) *UserIdBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) OpenId(openId string) *UserIdBuilder {
	builder.openId = openId
	builder.openIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) UnionId(unionId string) *UserIdBuilder {
	builder.unionId = unionId
	builder.unionIdFlag = true
	return builder
}

func (builder *UserIdBuilder) Build() *UserId {
	req := &UserId{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.openIdFlag {
		req.OpenId = &builder.openId

	}
	if builder.unionIdFlag {
		req.UnionId = &builder.unionId

	}
	return req
}

type UserInfo struct {
	UserId *string `json:"user_id,omitempty"` // 员工id

	Name *string `json:"name,omitempty"` // 用户默认名

	ZhName *string `json:"zh_name,omitempty"` // 中文名

	EnName *string `json:"en_name,omitempty"` // 英文名

	Mobile *string `json:"mobile,omitempty"` // 手机号

	EmployeeNo *string `json:"employee_no,omitempty"` // 员工工号

	Email *string `json:"email,omitempty"` // 邮箱

	IsResigned *bool `json:"is_resigned,omitempty"` // 用户是否离职

	ResignTime *string `json:"resign_time,omitempty"` // 离职时间，时间戳格式，表示从1970年1月1日开始所经过的秒数

	ResignDate *string `json:"resign_date,omitempty"` // 离职日期
}

type UserInfoBuilder struct {
	userId     string // 员工id
	userIdFlag bool

	name     string // 用户默认名
	nameFlag bool

	zhName     string // 中文名
	zhNameFlag bool

	enName     string // 英文名
	enNameFlag bool

	mobile     string // 手机号
	mobileFlag bool

	employeeNo     string // 员工工号
	employeeNoFlag bool

	email     string // 邮箱
	emailFlag bool

	isResigned     bool // 用户是否离职
	isResignedFlag bool

	resignTime     string // 离职时间，时间戳格式，表示从1970年1月1日开始所经过的秒数
	resignTimeFlag bool

	resignDate     string // 离职日期
	resignDateFlag bool
}

func NewUserInfoBuilder() *UserInfoBuilder {
	builder := &UserInfoBuilder{}
	return builder
}

// 员工id
//
// 示例值：3e3cf96b
func (builder *UserInfoBuilder) UserId(userId string) *UserInfoBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 用户默认名
//
// 示例值：张三
func (builder *UserInfoBuilder) Name(name string) *UserInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 中文名
//
// 示例值：张三
func (builder *UserInfoBuilder) ZhName(zhName string) *UserInfoBuilder {
	builder.zhName = zhName
	builder.zhNameFlag = true
	return builder
}

// 英文名
//
// 示例值：zhang san
func (builder *UserInfoBuilder) EnName(enName string) *UserInfoBuilder {
	builder.enName = enName
	builder.enNameFlag = true
	return builder
}

// 手机号
//
// 示例值：13011111111
func (builder *UserInfoBuilder) Mobile(mobile string) *UserInfoBuilder {
	builder.mobile = mobile
	builder.mobileFlag = true
	return builder
}

// 员工工号
//
// 示例值：1
func (builder *UserInfoBuilder) EmployeeNo(employeeNo string) *UserInfoBuilder {
	builder.employeeNo = employeeNo
	builder.employeeNoFlag = true
	return builder
}

// 邮箱
//
// 示例值：zhangsan@gmail.com
func (builder *UserInfoBuilder) Email(email string) *UserInfoBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 用户是否离职
//
// 示例值：true
func (builder *UserInfoBuilder) IsResigned(isResigned bool) *UserInfoBuilder {
	builder.isResigned = isResigned
	builder.isResignedFlag = true
	return builder
}

// 离职时间，时间戳格式，表示从1970年1月1日开始所经过的秒数
//
// 示例值：1672502400
func (builder *UserInfoBuilder) ResignTime(resignTime string) *UserInfoBuilder {
	builder.resignTime = resignTime
	builder.resignTimeFlag = true
	return builder
}

// 离职日期
//
// 示例值：2023-01-01
func (builder *UserInfoBuilder) ResignDate(resignDate string) *UserInfoBuilder {
	builder.resignDate = resignDate
	builder.resignDateFlag = true
	return builder
}

func (builder *UserInfoBuilder) Build() *UserInfo {
	req := &UserInfo{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.zhNameFlag {
		req.ZhName = &builder.zhName

	}
	if builder.enNameFlag {
		req.EnName = &builder.enName

	}
	if builder.mobileFlag {
		req.Mobile = &builder.mobile

	}
	if builder.employeeNoFlag {
		req.EmployeeNo = &builder.employeeNo

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.isResignedFlag {
		req.IsResigned = &builder.isResigned

	}
	if builder.resignTimeFlag {
		req.ResignTime = &builder.resignTime

	}
	if builder.resignDateFlag {
		req.ResignDate = &builder.resignDate

	}
	return req
}

type WorkEmail struct {
	Email *string `json:"email,omitempty"` // 邮箱地址

	EmailUsage *Enum `json:"email_usage,omitempty"` // 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
}

type WorkEmailBuilder struct {
	email     string // 邮箱地址
	emailFlag bool

	emailUsage     *Enum // 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
	emailUsageFlag bool
}

func NewWorkEmailBuilder() *WorkEmailBuilder {
	builder := &WorkEmailBuilder{}
	return builder
}

// 邮箱地址
//
// 示例值：1234567@bytedance.com
func (builder *WorkEmailBuilder) Email(email string) *WorkEmailBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 邮箱用途，枚举值可通过文档【飞书人事枚举常量】邮箱用途（email_usage）枚举定义获得
//
// 示例值：
func (builder *WorkEmailBuilder) EmailUsage(emailUsage *Enum) *WorkEmailBuilder {
	builder.emailUsage = emailUsage
	builder.emailUsageFlag = true
	return builder
}

func (builder *WorkEmailBuilder) Build() *WorkEmail {
	req := &WorkEmail{}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.emailUsageFlag {
		req.EmailUsage = builder.emailUsage
	}
	return req
}

type WorkEmailCheckResult struct {
	WorkEmail *string `json:"work_email,omitempty"` // 工作邮箱值

	Success *bool `json:"success,omitempty"` // 校验结果是否通过
}

type WorkEmailCheckResultBuilder struct {
	workEmail     string // 工作邮箱值
	workEmailFlag bool

	success     bool // 校验结果是否通过
	successFlag bool
}

func NewWorkEmailCheckResultBuilder() *WorkEmailCheckResultBuilder {
	builder := &WorkEmailCheckResultBuilder{}
	return builder
}

// 工作邮箱值
//
// 示例值：zhangsan.123@bytedance.com
func (builder *WorkEmailCheckResultBuilder) WorkEmail(workEmail string) *WorkEmailCheckResultBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 校验结果是否通过
//
// 示例值：true
func (builder *WorkEmailCheckResultBuilder) Success(success bool) *WorkEmailCheckResultBuilder {
	builder.success = success
	builder.successFlag = true
	return builder
}

func (builder *WorkEmailCheckResultBuilder) Build() *WorkEmailCheckResult {
	req := &WorkEmailCheckResult{}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail

	}
	if builder.successFlag {
		req.Success = &builder.success

	}
	return req
}

type WorkEmailInfoList struct {
	WorkEmail *string `json:"work_email,omitempty"` // 工作邮箱值

	CountryRegionAlpha3Code *string `json:"country_region_alpha_3_code,omitempty"` // 国家地区三字码

	Pinyin *string `json:"pinyin,omitempty"` // 姓名拼音
}

type WorkEmailInfoListBuilder struct {
	workEmail     string // 工作邮箱值
	workEmailFlag bool

	countryRegionAlpha3Code     string // 国家地区三字码
	countryRegionAlpha3CodeFlag bool

	pinyin     string // 姓名拼音
	pinyinFlag bool
}

func NewWorkEmailInfoListBuilder() *WorkEmailInfoListBuilder {
	builder := &WorkEmailInfoListBuilder{}
	return builder
}

// 工作邮箱值
//
// 示例值：zhangsan.123@bytedance.com
func (builder *WorkEmailInfoListBuilder) WorkEmail(workEmail string) *WorkEmailInfoListBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 国家地区三字码
//
// 示例值：CHN
func (builder *WorkEmailInfoListBuilder) CountryRegionAlpha3Code(countryRegionAlpha3Code string) *WorkEmailInfoListBuilder {
	builder.countryRegionAlpha3Code = countryRegionAlpha3Code
	builder.countryRegionAlpha3CodeFlag = true
	return builder
}

// 姓名拼音
//
// 示例值：zhangsan
func (builder *WorkEmailInfoListBuilder) Pinyin(pinyin string) *WorkEmailInfoListBuilder {
	builder.pinyin = pinyin
	builder.pinyinFlag = true
	return builder
}

func (builder *WorkEmailInfoListBuilder) Build() *WorkEmailInfoList {
	req := &WorkEmailInfoList{}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail

	}
	if builder.countryRegionAlpha3CodeFlag {
		req.CountryRegionAlpha3Code = &builder.countryRegionAlpha3Code

	}
	if builder.pinyinFlag {
		req.Pinyin = &builder.pinyin

	}
	return req
}

type WorkExperience struct {
	CompanyName *string `json:"company_name,omitempty"` // 公司名称

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	JobTitle *string `json:"job_title,omitempty"` // 岗位

	Description *string `json:"description,omitempty"` // 工作描述

	Department *string `json:"department,omitempty"` // 部门

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type WorkExperienceBuilder struct {
	companyName     string // 公司名称
	companyNameFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	jobTitle     string // 岗位
	jobTitleFlag bool

	description     string // 工作描述
	descriptionFlag bool

	department     string // 部门
	departmentFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewWorkExperienceBuilder() *WorkExperienceBuilder {
	builder := &WorkExperienceBuilder{}
	return builder
}

// 公司名称
//
// 示例值：猎豹
func (builder *WorkExperienceBuilder) CompanyName(companyName string) *WorkExperienceBuilder {
	builder.companyName = companyName
	builder.companyNameFlag = true
	return builder
}

// 开始时间
//
// 示例值：2015-02-01
func (builder *WorkExperienceBuilder) StartTime(startTime string) *WorkExperienceBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间
//
// 示例值：2017-02-01
func (builder *WorkExperienceBuilder) EndTime(endTime string) *WorkExperienceBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 岗位
//
// 示例值：产品经理
func (builder *WorkExperienceBuilder) JobTitle(jobTitle string) *WorkExperienceBuilder {
	builder.jobTitle = jobTitle
	builder.jobTitleFlag = true
	return builder
}

// 工作描述
//
// 示例值：app
func (builder *WorkExperienceBuilder) Description(description string) *WorkExperienceBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 部门
//
// 示例值：部门名称
func (builder *WorkExperienceBuilder) Department(department string) *WorkExperienceBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *WorkExperienceBuilder) CustomFields(customFields []*ObjectFieldData) *WorkExperienceBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *WorkExperienceBuilder) Build() *WorkExperience {
	req := &WorkExperience{}
	if builder.companyNameFlag {
		req.CompanyName = &builder.companyName

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.jobTitleFlag {
		req.JobTitle = &builder.jobTitle

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.departmentFlag {
		req.Department = &builder.department

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type WorkExperienceForUpdate struct {
	CompanyName *string `json:"company_name,omitempty"` // 公司名称

	StartTime *string `json:"start_time,omitempty"` // 开始时间

	EndTime *string `json:"end_time,omitempty"` // 结束时间

	JobTitle *string `json:"job_title,omitempty"` // 岗位

	Description *string `json:"description,omitempty"` // 工作描述

	Department *string `json:"department,omitempty"` // 部门

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type WorkExperienceForUpdateBuilder struct {
	companyName     string // 公司名称
	companyNameFlag bool

	startTime     string // 开始时间
	startTimeFlag bool

	endTime     string // 结束时间
	endTimeFlag bool

	jobTitle     string // 岗位
	jobTitleFlag bool

	description     string // 工作描述
	descriptionFlag bool

	department     string // 部门
	departmentFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool
}

func NewWorkExperienceForUpdateBuilder() *WorkExperienceForUpdateBuilder {
	builder := &WorkExperienceForUpdateBuilder{}
	return builder
}

// 公司名称
//
// 示例值：猎豹
func (builder *WorkExperienceForUpdateBuilder) CompanyName(companyName string) *WorkExperienceForUpdateBuilder {
	builder.companyName = companyName
	builder.companyNameFlag = true
	return builder
}

// 开始时间
//
// 示例值：2015-02-01
func (builder *WorkExperienceForUpdateBuilder) StartTime(startTime string) *WorkExperienceForUpdateBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 结束时间
//
// 示例值：2017-02-01
func (builder *WorkExperienceForUpdateBuilder) EndTime(endTime string) *WorkExperienceForUpdateBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 岗位
//
// 示例值：产品经理
func (builder *WorkExperienceForUpdateBuilder) JobTitle(jobTitle string) *WorkExperienceForUpdateBuilder {
	builder.jobTitle = jobTitle
	builder.jobTitleFlag = true
	return builder
}

// 工作描述
//
// 示例值：app
func (builder *WorkExperienceForUpdateBuilder) Description(description string) *WorkExperienceForUpdateBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 部门
//
// 示例值：部门名称
func (builder *WorkExperienceForUpdateBuilder) Department(department string) *WorkExperienceForUpdateBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *WorkExperienceForUpdateBuilder) CustomFields(customFields []*ObjectFieldData) *WorkExperienceForUpdateBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *WorkExperienceForUpdateBuilder) Build() *WorkExperienceForUpdate {
	req := &WorkExperienceForUpdate{}
	if builder.companyNameFlag {
		req.CompanyName = &builder.companyName

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.jobTitleFlag {
		req.JobTitle = &builder.jobTitle

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.departmentFlag {
		req.Department = &builder.department

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type WorkExperienceInfo struct {
	CompanyOrganization []*I18n `json:"company_organization,omitempty"` // 公司 / 组织

	Department []*I18n `json:"department,omitempty"` // 部门

	Job []*I18n `json:"job,omitempty"` // 岗位

	Description []*I18n `json:"description,omitempty"` // 工作描述

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段
}

type WorkExperienceInfoBuilder struct {
	companyOrganization     []*I18n // 公司 / 组织
	companyOrganizationFlag bool

	department     []*I18n // 部门
	departmentFlag bool

	job     []*I18n // 岗位
	jobFlag bool

	description     []*I18n // 工作描述
	descriptionFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	customFields     []*CustomFieldData // 自定义字段
	customFieldsFlag bool
}

func NewWorkExperienceInfoBuilder() *WorkExperienceInfoBuilder {
	builder := &WorkExperienceInfoBuilder{}
	return builder
}

// 公司 / 组织
//
// 示例值：
func (builder *WorkExperienceInfoBuilder) CompanyOrganization(companyOrganization []*I18n) *WorkExperienceInfoBuilder {
	builder.companyOrganization = companyOrganization
	builder.companyOrganizationFlag = true
	return builder
}

// 部门
//
// 示例值：
func (builder *WorkExperienceInfoBuilder) Department(department []*I18n) *WorkExperienceInfoBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 岗位
//
// 示例值：
func (builder *WorkExperienceInfoBuilder) Job(job []*I18n) *WorkExperienceInfoBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 工作描述
//
// 示例值：
func (builder *WorkExperienceInfoBuilder) Description(description []*I18n) *WorkExperienceInfoBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 开始日期
//
// 示例值：2020-01-01
func (builder *WorkExperienceInfoBuilder) StartDate(startDate string) *WorkExperienceInfoBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：2020-01-01
func (builder *WorkExperienceInfoBuilder) EndDate(endDate string) *WorkExperienceInfoBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *WorkExperienceInfoBuilder) CustomFields(customFields []*CustomFieldData) *WorkExperienceInfoBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *WorkExperienceInfoBuilder) Build() *WorkExperienceInfo {
	req := &WorkExperienceInfo{}
	if builder.companyOrganizationFlag {
		req.CompanyOrganization = builder.companyOrganization
	}
	if builder.departmentFlag {
		req.Department = builder.department
	}
	if builder.jobFlag {
		req.Job = builder.job
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type WorkforcePlan struct {
	WorkforcePlanId *string `json:"workforce_plan_id,omitempty"` // 编制规划方案 ID

	WorkforcePlanName []*I18n `json:"workforce_plan_name,omitempty"` // 编制规划方案名称

	StartDate *string `json:"start_date,omitempty"` // 开始日期

	EndDate *string `json:"end_date,omitempty"` // 结束日期

	Active *bool `json:"active,omitempty"` // 是否启用
}

type WorkforcePlanBuilder struct {
	workforcePlanId     string // 编制规划方案 ID
	workforcePlanIdFlag bool

	workforcePlanName     []*I18n // 编制规划方案名称
	workforcePlanNameFlag bool

	startDate     string // 开始日期
	startDateFlag bool

	endDate     string // 结束日期
	endDateFlag bool

	active     bool // 是否启用
	activeFlag bool
}

func NewWorkforcePlanBuilder() *WorkforcePlanBuilder {
	builder := &WorkforcePlanBuilder{}
	return builder
}

// 编制规划方案 ID
//
// 示例值："123456"
func (builder *WorkforcePlanBuilder) WorkforcePlanId(workforcePlanId string) *WorkforcePlanBuilder {
	builder.workforcePlanId = workforcePlanId
	builder.workforcePlanIdFlag = true
	return builder
}

// 编制规划方案名称
//
// 示例值：
func (builder *WorkforcePlanBuilder) WorkforcePlanName(workforcePlanName []*I18n) *WorkforcePlanBuilder {
	builder.workforcePlanName = workforcePlanName
	builder.workforcePlanNameFlag = true
	return builder
}

// 开始日期
//
// 示例值："2020-10-01"
func (builder *WorkforcePlanBuilder) StartDate(startDate string) *WorkforcePlanBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值："2020-10-31"
func (builder *WorkforcePlanBuilder) EndDate(endDate string) *WorkforcePlanBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *WorkforcePlanBuilder) Active(active bool) *WorkforcePlanBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *WorkforcePlanBuilder) Build() *WorkforcePlan {
	req := &WorkforcePlan{}
	if builder.workforcePlanIdFlag {
		req.WorkforcePlanId = &builder.workforcePlanId

	}
	if builder.workforcePlanNameFlag {
		req.WorkforcePlanName = builder.workforcePlanName
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	return req
}

type WorkforcePlanDetail struct {
	WorkforcePlanDetailId *string `json:"workforce_plan_detail_id,omitempty"` // 编制规划明细 ID

	Department *DimensionInfo `json:"department,omitempty"` // 部门信息

	EmployeeType *DimensionInfo `json:"employee_type,omitempty"` // 人员类型信息

	WorkLocation *DimensionInfo `json:"work_location,omitempty"` // 工作地点信息

	JobFamily *DimensionInfo `json:"job_family,omitempty"` // 序列信息

	JobLevel *DimensionInfo `json:"job_level,omitempty"` // 职级信息

	Job *DimensionInfo `json:"job,omitempty"` // 职务信息

	CostCenter *DimensionInfo `json:"cost_center,omitempty"` // 成本中心信息

	WorkforcePlan *string `json:"workforce_plan,omitempty"` // 编制规划值

	ActiveIndividuals *string `json:"active_individuals,omitempty"` // 在职人数

	IndividualsToBeAdded *string `json:"individuals_to_be_added,omitempty"` // 预增员数量

	IndividualsToBeRemoved *string `json:"individuals_to_be_removed,omitempty"` // 预减员

	Vacancy *string `json:"vacancy,omitempty"` // 缺编数

	VacancyIncludingIndividualsToBeAddedAndRemoved *string `json:"vacancy_including_individuals_to_be_added_and_removed,omitempty"` // 缺编数（含在途）

	FulfillmentRate *string `json:"fulfillment_rate,omitempty"` // 满编率， 返回 0.5 表示满编率为 50%

	FulfillmentRateIncludingIndividualsToBeAddedAndRemoved *string `json:"fulfillment_rate_including_individuals_to_be_added_and_removed,omitempty"` // 满编率（含在途）， 返回 0.5 表示满编率为 50%

	EstimatedActiveIndividualsDetail []*WorkforcePlanEaiDetail `json:"estimated_active_individuals_detail,omitempty"` // 预估在职人数明细

	IsMissingDimension *bool `json:"is_missing_dimension,omitempty"` // 是否为缺维度的明细行，true为缺维度明细行，false为非缺维度明细行
}

type WorkforcePlanDetailBuilder struct {
	workforcePlanDetailId     string // 编制规划明细 ID
	workforcePlanDetailIdFlag bool

	department     *DimensionInfo // 部门信息
	departmentFlag bool

	employeeType     *DimensionInfo // 人员类型信息
	employeeTypeFlag bool

	workLocation     *DimensionInfo // 工作地点信息
	workLocationFlag bool

	jobFamily     *DimensionInfo // 序列信息
	jobFamilyFlag bool

	jobLevel     *DimensionInfo // 职级信息
	jobLevelFlag bool

	job     *DimensionInfo // 职务信息
	jobFlag bool

	costCenter     *DimensionInfo // 成本中心信息
	costCenterFlag bool

	workforcePlan     string // 编制规划值
	workforcePlanFlag bool

	activeIndividuals     string // 在职人数
	activeIndividualsFlag bool

	individualsToBeAdded     string // 预增员数量
	individualsToBeAddedFlag bool

	individualsToBeRemoved     string // 预减员
	individualsToBeRemovedFlag bool

	vacancy     string // 缺编数
	vacancyFlag bool

	vacancyIncludingIndividualsToBeAddedAndRemoved     string // 缺编数（含在途）
	vacancyIncludingIndividualsToBeAddedAndRemovedFlag bool

	fulfillmentRate     string // 满编率， 返回 0.5 表示满编率为 50%
	fulfillmentRateFlag bool

	fulfillmentRateIncludingIndividualsToBeAddedAndRemoved     string // 满编率（含在途）， 返回 0.5 表示满编率为 50%
	fulfillmentRateIncludingIndividualsToBeAddedAndRemovedFlag bool

	estimatedActiveIndividualsDetail     []*WorkforcePlanEaiDetail // 预估在职人数明细
	estimatedActiveIndividualsDetailFlag bool

	isMissingDimension     bool // 是否为缺维度的明细行，true为缺维度明细行，false为非缺维度明细行
	isMissingDimensionFlag bool
}

func NewWorkforcePlanDetailBuilder() *WorkforcePlanDetailBuilder {
	builder := &WorkforcePlanDetailBuilder{}
	return builder
}

// 编制规划明细 ID
//
// 示例值："123456"
func (builder *WorkforcePlanDetailBuilder) WorkforcePlanDetailId(workforcePlanDetailId string) *WorkforcePlanDetailBuilder {
	builder.workforcePlanDetailId = workforcePlanDetailId
	builder.workforcePlanDetailIdFlag = true
	return builder
}

// 部门信息
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) Department(department *DimensionInfo) *WorkforcePlanDetailBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 人员类型信息
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) EmployeeType(employeeType *DimensionInfo) *WorkforcePlanDetailBuilder {
	builder.employeeType = employeeType
	builder.employeeTypeFlag = true
	return builder
}

// 工作地点信息
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) WorkLocation(workLocation *DimensionInfo) *WorkforcePlanDetailBuilder {
	builder.workLocation = workLocation
	builder.workLocationFlag = true
	return builder
}

// 序列信息
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) JobFamily(jobFamily *DimensionInfo) *WorkforcePlanDetailBuilder {
	builder.jobFamily = jobFamily
	builder.jobFamilyFlag = true
	return builder
}

// 职级信息
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) JobLevel(jobLevel *DimensionInfo) *WorkforcePlanDetailBuilder {
	builder.jobLevel = jobLevel
	builder.jobLevelFlag = true
	return builder
}

// 职务信息
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) Job(job *DimensionInfo) *WorkforcePlanDetailBuilder {
	builder.job = job
	builder.jobFlag = true
	return builder
}

// 成本中心信息
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) CostCenter(costCenter *DimensionInfo) *WorkforcePlanDetailBuilder {
	builder.costCenter = costCenter
	builder.costCenterFlag = true
	return builder
}

// 编制规划值
//
// 示例值：10.00
func (builder *WorkforcePlanDetailBuilder) WorkforcePlan(workforcePlan string) *WorkforcePlanDetailBuilder {
	builder.workforcePlan = workforcePlan
	builder.workforcePlanFlag = true
	return builder
}

// 在职人数
//
// 示例值：10.00
func (builder *WorkforcePlanDetailBuilder) ActiveIndividuals(activeIndividuals string) *WorkforcePlanDetailBuilder {
	builder.activeIndividuals = activeIndividuals
	builder.activeIndividualsFlag = true
	return builder
}

// 预增员数量
//
// 示例值：10.00
func (builder *WorkforcePlanDetailBuilder) IndividualsToBeAdded(individualsToBeAdded string) *WorkforcePlanDetailBuilder {
	builder.individualsToBeAdded = individualsToBeAdded
	builder.individualsToBeAddedFlag = true
	return builder
}

// 预减员
//
// 示例值：10.00
func (builder *WorkforcePlanDetailBuilder) IndividualsToBeRemoved(individualsToBeRemoved string) *WorkforcePlanDetailBuilder {
	builder.individualsToBeRemoved = individualsToBeRemoved
	builder.individualsToBeRemovedFlag = true
	return builder
}

// 缺编数
//
// 示例值：10.00
func (builder *WorkforcePlanDetailBuilder) Vacancy(vacancy string) *WorkforcePlanDetailBuilder {
	builder.vacancy = vacancy
	builder.vacancyFlag = true
	return builder
}

// 缺编数（含在途）
//
// 示例值：10.00
func (builder *WorkforcePlanDetailBuilder) VacancyIncludingIndividualsToBeAddedAndRemoved(vacancyIncludingIndividualsToBeAddedAndRemoved string) *WorkforcePlanDetailBuilder {
	builder.vacancyIncludingIndividualsToBeAddedAndRemoved = vacancyIncludingIndividualsToBeAddedAndRemoved
	builder.vacancyIncludingIndividualsToBeAddedAndRemovedFlag = true
	return builder
}

// 满编率， 返回 0.5 表示满编率为 50%
//
// 示例值：0.5
func (builder *WorkforcePlanDetailBuilder) FulfillmentRate(fulfillmentRate string) *WorkforcePlanDetailBuilder {
	builder.fulfillmentRate = fulfillmentRate
	builder.fulfillmentRateFlag = true
	return builder
}

// 满编率（含在途）， 返回 0.5 表示满编率为 50%
//
// 示例值：0.5
func (builder *WorkforcePlanDetailBuilder) FulfillmentRateIncludingIndividualsToBeAddedAndRemoved(fulfillmentRateIncludingIndividualsToBeAddedAndRemoved string) *WorkforcePlanDetailBuilder {
	builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemoved = fulfillmentRateIncludingIndividualsToBeAddedAndRemoved
	builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemovedFlag = true
	return builder
}

// 预估在职人数明细
//
// 示例值：
func (builder *WorkforcePlanDetailBuilder) EstimatedActiveIndividualsDetail(estimatedActiveIndividualsDetail []*WorkforcePlanEaiDetail) *WorkforcePlanDetailBuilder {
	builder.estimatedActiveIndividualsDetail = estimatedActiveIndividualsDetail
	builder.estimatedActiveIndividualsDetailFlag = true
	return builder
}

// 是否为缺维度的明细行，true为缺维度明细行，false为非缺维度明细行
//
// 示例值：false
func (builder *WorkforcePlanDetailBuilder) IsMissingDimension(isMissingDimension bool) *WorkforcePlanDetailBuilder {
	builder.isMissingDimension = isMissingDimension
	builder.isMissingDimensionFlag = true
	return builder
}

func (builder *WorkforcePlanDetailBuilder) Build() *WorkforcePlanDetail {
	req := &WorkforcePlanDetail{}
	if builder.workforcePlanDetailIdFlag {
		req.WorkforcePlanDetailId = &builder.workforcePlanDetailId

	}
	if builder.departmentFlag {
		req.Department = builder.department
	}
	if builder.employeeTypeFlag {
		req.EmployeeType = builder.employeeType
	}
	if builder.workLocationFlag {
		req.WorkLocation = builder.workLocation
	}
	if builder.jobFamilyFlag {
		req.JobFamily = builder.jobFamily
	}
	if builder.jobLevelFlag {
		req.JobLevel = builder.jobLevel
	}
	if builder.jobFlag {
		req.Job = builder.job
	}
	if builder.costCenterFlag {
		req.CostCenter = builder.costCenter
	}
	if builder.workforcePlanFlag {
		req.WorkforcePlan = &builder.workforcePlan

	}
	if builder.activeIndividualsFlag {
		req.ActiveIndividuals = &builder.activeIndividuals

	}
	if builder.individualsToBeAddedFlag {
		req.IndividualsToBeAdded = &builder.individualsToBeAdded

	}
	if builder.individualsToBeRemovedFlag {
		req.IndividualsToBeRemoved = &builder.individualsToBeRemoved

	}
	if builder.vacancyFlag {
		req.Vacancy = &builder.vacancy

	}
	if builder.vacancyIncludingIndividualsToBeAddedAndRemovedFlag {
		req.VacancyIncludingIndividualsToBeAddedAndRemoved = &builder.vacancyIncludingIndividualsToBeAddedAndRemoved

	}
	if builder.fulfillmentRateFlag {
		req.FulfillmentRate = &builder.fulfillmentRate

	}
	if builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemovedFlag {
		req.FulfillmentRateIncludingIndividualsToBeAddedAndRemoved = &builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemoved

	}
	if builder.estimatedActiveIndividualsDetailFlag {
		req.EstimatedActiveIndividualsDetail = builder.estimatedActiveIndividualsDetail
	}
	if builder.isMissingDimensionFlag {
		req.IsMissingDimension = &builder.isMissingDimension

	}
	return req
}

type WorkforcePlanDetailReq struct {
	WorkforcePlanId *string `json:"workforce_plan_id,omitempty"` // 编制规划id

	Items []*WorkforcePlanDetailRow `json:"items,omitempty"` // 编制规划的多个明细行
}

type WorkforcePlanDetailReqBuilder struct {
	workforcePlanId     string // 编制规划id
	workforcePlanIdFlag bool

	items     []*WorkforcePlanDetailRow // 编制规划的多个明细行
	itemsFlag bool
}

func NewWorkforcePlanDetailReqBuilder() *WorkforcePlanDetailReqBuilder {
	builder := &WorkforcePlanDetailReqBuilder{}
	return builder
}

// 编制规划id
//
// 示例值：7430330781544564268
func (builder *WorkforcePlanDetailReqBuilder) WorkforcePlanId(workforcePlanId string) *WorkforcePlanDetailReqBuilder {
	builder.workforcePlanId = workforcePlanId
	builder.workforcePlanIdFlag = true
	return builder
}

// 编制规划的多个明细行
//
// 示例值：
func (builder *WorkforcePlanDetailReqBuilder) Items(items []*WorkforcePlanDetailRow) *WorkforcePlanDetailReqBuilder {
	builder.items = items
	builder.itemsFlag = true
	return builder
}

func (builder *WorkforcePlanDetailReqBuilder) Build() *WorkforcePlanDetailReq {
	req := &WorkforcePlanDetailReq{}
	if builder.workforcePlanIdFlag {
		req.WorkforcePlanId = &builder.workforcePlanId

	}
	if builder.itemsFlag {
		req.Items = builder.items
	}
	return req
}

type WorkforcePlanDetailRow struct {
	Dimensions []*DimensionEntity `json:"dimensions,omitempty"` // 维度信息

	EaiDetails []*WorkforcePlanEaiDetail `json:"eai_details,omitempty"` // 预估在职人数

	PlanValue *string `json:"plan_value,omitempty"` // 编制规划值

	MultiPeriodValues []*WorkforcePlanMultiPeriodValue `json:"multi_period_values,omitempty"` // 多周期编制规划信息
}

type WorkforcePlanDetailRowBuilder struct {
	dimensions     []*DimensionEntity // 维度信息
	dimensionsFlag bool

	eaiDetails     []*WorkforcePlanEaiDetail // 预估在职人数
	eaiDetailsFlag bool

	planValue     string // 编制规划值
	planValueFlag bool

	multiPeriodValues     []*WorkforcePlanMultiPeriodValue // 多周期编制规划信息
	multiPeriodValuesFlag bool
}

func NewWorkforcePlanDetailRowBuilder() *WorkforcePlanDetailRowBuilder {
	builder := &WorkforcePlanDetailRowBuilder{}
	return builder
}

// 维度信息
//
// 示例值：
func (builder *WorkforcePlanDetailRowBuilder) Dimensions(dimensions []*DimensionEntity) *WorkforcePlanDetailRowBuilder {
	builder.dimensions = dimensions
	builder.dimensionsFlag = true
	return builder
}

// 预估在职人数
//
// 示例值：
func (builder *WorkforcePlanDetailRowBuilder) EaiDetails(eaiDetails []*WorkforcePlanEaiDetail) *WorkforcePlanDetailRowBuilder {
	builder.eaiDetails = eaiDetails
	builder.eaiDetailsFlag = true
	return builder
}

// 编制规划值
//
// 示例值：12
func (builder *WorkforcePlanDetailRowBuilder) PlanValue(planValue string) *WorkforcePlanDetailRowBuilder {
	builder.planValue = planValue
	builder.planValueFlag = true
	return builder
}

// 多周期编制规划信息
//
// 示例值：
func (builder *WorkforcePlanDetailRowBuilder) MultiPeriodValues(multiPeriodValues []*WorkforcePlanMultiPeriodValue) *WorkforcePlanDetailRowBuilder {
	builder.multiPeriodValues = multiPeriodValues
	builder.multiPeriodValuesFlag = true
	return builder
}

func (builder *WorkforcePlanDetailRowBuilder) Build() *WorkforcePlanDetailRow {
	req := &WorkforcePlanDetailRow{}
	if builder.dimensionsFlag {
		req.Dimensions = builder.dimensions
	}
	if builder.eaiDetailsFlag {
		req.EaiDetails = builder.eaiDetails
	}
	if builder.planValueFlag {
		req.PlanValue = &builder.planValue

	}
	if builder.multiPeriodValuesFlag {
		req.MultiPeriodValues = builder.multiPeriodValues
	}
	return req
}

type WorkforcePlanDetailV2 struct {
	WorkforcePlanDetailId *string `json:"workforce_plan_detail_id,omitempty"` // 编制规划明细 ID

	DimensionInfoDatas []*DimensionInfoData `json:"dimension_info_datas,omitempty"` // 维度信息

	WorkforcePlan *string `json:"workforce_plan,omitempty"` // 编制规划值

	ActiveIndividuals *string `json:"active_individuals,omitempty"` // 在职人数

	IndividualsToBeAdded *string `json:"individuals_to_be_added,omitempty"` // 预增员数量

	IndividualsToBeRemoved *string `json:"individuals_to_be_removed,omitempty"` // 预减员数量

	Vacancy *string `json:"vacancy,omitempty"` // 缺编数

	VacancyIncludingIndividualsToBeAddedAndRemoved *string `json:"vacancy_including_individuals_to_be_added_and_removed,omitempty"` // 缺编数（含在途）

	FulfillmentRate *string `json:"fulfillment_rate,omitempty"` // 满编率， 返回 0.5 表示满编率为 50%

	FulfillmentRateIncludingIndividualsToBeAddedAndRemoved *string `json:"fulfillment_rate_including_individuals_to_be_added_and_removed,omitempty"` // 满编率（含在途）， 返回 0.5 表示满编率为 50%

	EstimatedActiveIndividualsDetails []*WorkforcePlanEaiDetail `json:"estimated_active_individuals_details,omitempty"` // 预估在职人数明细

	MultiPeriodValues []*WorkforcePlanMultiPeriodValue `json:"multi_period_values,omitempty"` // 多周期的编制规划信息

	IsMissingDimension *bool `json:"is_missing_dimension,omitempty"` // 是否为缺维度的明细行，true为缺维度明细行，false为非缺维度明细行

	IsAllZeroValue *bool `json:"is_all_zero_value,omitempty"` // 是否在职、预增/预减人员、编制数、预估在职人数都为0的明细行，true代表在职、预增/预减人员、编制数、预估在职人数都为0的明细行，false代表在职、预增/预减人员、编制数、预估在职人数不全为0的明细行
}

type WorkforcePlanDetailV2Builder struct {
	workforcePlanDetailId     string // 编制规划明细 ID
	workforcePlanDetailIdFlag bool

	dimensionInfoDatas     []*DimensionInfoData // 维度信息
	dimensionInfoDatasFlag bool

	workforcePlan     string // 编制规划值
	workforcePlanFlag bool

	activeIndividuals     string // 在职人数
	activeIndividualsFlag bool

	individualsToBeAdded     string // 预增员数量
	individualsToBeAddedFlag bool

	individualsToBeRemoved     string // 预减员数量
	individualsToBeRemovedFlag bool

	vacancy     string // 缺编数
	vacancyFlag bool

	vacancyIncludingIndividualsToBeAddedAndRemoved     string // 缺编数（含在途）
	vacancyIncludingIndividualsToBeAddedAndRemovedFlag bool

	fulfillmentRate     string // 满编率， 返回 0.5 表示满编率为 50%
	fulfillmentRateFlag bool

	fulfillmentRateIncludingIndividualsToBeAddedAndRemoved     string // 满编率（含在途）， 返回 0.5 表示满编率为 50%
	fulfillmentRateIncludingIndividualsToBeAddedAndRemovedFlag bool

	estimatedActiveIndividualsDetails     []*WorkforcePlanEaiDetail // 预估在职人数明细
	estimatedActiveIndividualsDetailsFlag bool

	multiPeriodValues     []*WorkforcePlanMultiPeriodValue // 多周期的编制规划信息
	multiPeriodValuesFlag bool

	isMissingDimension     bool // 是否为缺维度的明细行，true为缺维度明细行，false为非缺维度明细行
	isMissingDimensionFlag bool

	isAllZeroValue     bool // 是否在职、预增/预减人员、编制数、预估在职人数都为0的明细行，true代表在职、预增/预减人员、编制数、预估在职人数都为0的明细行，false代表在职、预增/预减人员、编制数、预估在职人数不全为0的明细行
	isAllZeroValueFlag bool
}

func NewWorkforcePlanDetailV2Builder() *WorkforcePlanDetailV2Builder {
	builder := &WorkforcePlanDetailV2Builder{}
	return builder
}

// 编制规划明细 ID
//
// 示例值："123456"
func (builder *WorkforcePlanDetailV2Builder) WorkforcePlanDetailId(workforcePlanDetailId string) *WorkforcePlanDetailV2Builder {
	builder.workforcePlanDetailId = workforcePlanDetailId
	builder.workforcePlanDetailIdFlag = true
	return builder
}

// 维度信息
//
// 示例值：
func (builder *WorkforcePlanDetailV2Builder) DimensionInfoDatas(dimensionInfoDatas []*DimensionInfoData) *WorkforcePlanDetailV2Builder {
	builder.dimensionInfoDatas = dimensionInfoDatas
	builder.dimensionInfoDatasFlag = true
	return builder
}

// 编制规划值
//
// 示例值：10.00
func (builder *WorkforcePlanDetailV2Builder) WorkforcePlan(workforcePlan string) *WorkforcePlanDetailV2Builder {
	builder.workforcePlan = workforcePlan
	builder.workforcePlanFlag = true
	return builder
}

// 在职人数
//
// 示例值：10.00
func (builder *WorkforcePlanDetailV2Builder) ActiveIndividuals(activeIndividuals string) *WorkforcePlanDetailV2Builder {
	builder.activeIndividuals = activeIndividuals
	builder.activeIndividualsFlag = true
	return builder
}

// 预增员数量
//
// 示例值：10.00
func (builder *WorkforcePlanDetailV2Builder) IndividualsToBeAdded(individualsToBeAdded string) *WorkforcePlanDetailV2Builder {
	builder.individualsToBeAdded = individualsToBeAdded
	builder.individualsToBeAddedFlag = true
	return builder
}

// 预减员数量
//
// 示例值：10.00
func (builder *WorkforcePlanDetailV2Builder) IndividualsToBeRemoved(individualsToBeRemoved string) *WorkforcePlanDetailV2Builder {
	builder.individualsToBeRemoved = individualsToBeRemoved
	builder.individualsToBeRemovedFlag = true
	return builder
}

// 缺编数
//
// 示例值：10.00
func (builder *WorkforcePlanDetailV2Builder) Vacancy(vacancy string) *WorkforcePlanDetailV2Builder {
	builder.vacancy = vacancy
	builder.vacancyFlag = true
	return builder
}

// 缺编数（含在途）
//
// 示例值：10.00
func (builder *WorkforcePlanDetailV2Builder) VacancyIncludingIndividualsToBeAddedAndRemoved(vacancyIncludingIndividualsToBeAddedAndRemoved string) *WorkforcePlanDetailV2Builder {
	builder.vacancyIncludingIndividualsToBeAddedAndRemoved = vacancyIncludingIndividualsToBeAddedAndRemoved
	builder.vacancyIncludingIndividualsToBeAddedAndRemovedFlag = true
	return builder
}

// 满编率， 返回 0.5 表示满编率为 50%
//
// 示例值：0.5
func (builder *WorkforcePlanDetailV2Builder) FulfillmentRate(fulfillmentRate string) *WorkforcePlanDetailV2Builder {
	builder.fulfillmentRate = fulfillmentRate
	builder.fulfillmentRateFlag = true
	return builder
}

// 满编率（含在途）， 返回 0.5 表示满编率为 50%
//
// 示例值：0.5
func (builder *WorkforcePlanDetailV2Builder) FulfillmentRateIncludingIndividualsToBeAddedAndRemoved(fulfillmentRateIncludingIndividualsToBeAddedAndRemoved string) *WorkforcePlanDetailV2Builder {
	builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemoved = fulfillmentRateIncludingIndividualsToBeAddedAndRemoved
	builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemovedFlag = true
	return builder
}

// 预估在职人数明细
//
// 示例值：
func (builder *WorkforcePlanDetailV2Builder) EstimatedActiveIndividualsDetails(estimatedActiveIndividualsDetails []*WorkforcePlanEaiDetail) *WorkforcePlanDetailV2Builder {
	builder.estimatedActiveIndividualsDetails = estimatedActiveIndividualsDetails
	builder.estimatedActiveIndividualsDetailsFlag = true
	return builder
}

// 多周期的编制规划信息
//
// 示例值：
func (builder *WorkforcePlanDetailV2Builder) MultiPeriodValues(multiPeriodValues []*WorkforcePlanMultiPeriodValue) *WorkforcePlanDetailV2Builder {
	builder.multiPeriodValues = multiPeriodValues
	builder.multiPeriodValuesFlag = true
	return builder
}

// 是否为缺维度的明细行，true为缺维度明细行，false为非缺维度明细行
//
// 示例值：false
func (builder *WorkforcePlanDetailV2Builder) IsMissingDimension(isMissingDimension bool) *WorkforcePlanDetailV2Builder {
	builder.isMissingDimension = isMissingDimension
	builder.isMissingDimensionFlag = true
	return builder
}

// 是否在职、预增/预减人员、编制数、预估在职人数都为0的明细行，true代表在职、预增/预减人员、编制数、预估在职人数都为0的明细行，false代表在职、预增/预减人员、编制数、预估在职人数不全为0的明细行
//
// 示例值：false
func (builder *WorkforcePlanDetailV2Builder) IsAllZeroValue(isAllZeroValue bool) *WorkforcePlanDetailV2Builder {
	builder.isAllZeroValue = isAllZeroValue
	builder.isAllZeroValueFlag = true
	return builder
}

func (builder *WorkforcePlanDetailV2Builder) Build() *WorkforcePlanDetailV2 {
	req := &WorkforcePlanDetailV2{}
	if builder.workforcePlanDetailIdFlag {
		req.WorkforcePlanDetailId = &builder.workforcePlanDetailId

	}
	if builder.dimensionInfoDatasFlag {
		req.DimensionInfoDatas = builder.dimensionInfoDatas
	}
	if builder.workforcePlanFlag {
		req.WorkforcePlan = &builder.workforcePlan

	}
	if builder.activeIndividualsFlag {
		req.ActiveIndividuals = &builder.activeIndividuals

	}
	if builder.individualsToBeAddedFlag {
		req.IndividualsToBeAdded = &builder.individualsToBeAdded

	}
	if builder.individualsToBeRemovedFlag {
		req.IndividualsToBeRemoved = &builder.individualsToBeRemoved

	}
	if builder.vacancyFlag {
		req.Vacancy = &builder.vacancy

	}
	if builder.vacancyIncludingIndividualsToBeAddedAndRemovedFlag {
		req.VacancyIncludingIndividualsToBeAddedAndRemoved = &builder.vacancyIncludingIndividualsToBeAddedAndRemoved

	}
	if builder.fulfillmentRateFlag {
		req.FulfillmentRate = &builder.fulfillmentRate

	}
	if builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemovedFlag {
		req.FulfillmentRateIncludingIndividualsToBeAddedAndRemoved = &builder.fulfillmentRateIncludingIndividualsToBeAddedAndRemoved

	}
	if builder.estimatedActiveIndividualsDetailsFlag {
		req.EstimatedActiveIndividualsDetails = builder.estimatedActiveIndividualsDetails
	}
	if builder.multiPeriodValuesFlag {
		req.MultiPeriodValues = builder.multiPeriodValues
	}
	if builder.isMissingDimensionFlag {
		req.IsMissingDimension = &builder.isMissingDimension

	}
	if builder.isAllZeroValueFlag {
		req.IsAllZeroValue = &builder.isAllZeroValue

	}
	return req
}

type WorkforcePlanEaiDetail struct {
	Date *string `json:"date,omitempty"` // 预估月份

	EstimatedActiveIndividuals *string `json:"estimated_active_individuals,omitempty"` // 预估在职人数
}

type WorkforcePlanEaiDetailBuilder struct {
	date     string // 预估月份
	dateFlag bool

	estimatedActiveIndividuals     string // 预估在职人数
	estimatedActiveIndividualsFlag bool
}

func NewWorkforcePlanEaiDetailBuilder() *WorkforcePlanEaiDetailBuilder {
	builder := &WorkforcePlanEaiDetailBuilder{}
	return builder
}

// 预估月份
//
// 示例值：“2020-10-31”
func (builder *WorkforcePlanEaiDetailBuilder) Date(date string) *WorkforcePlanEaiDetailBuilder {
	builder.date = date
	builder.dateFlag = true
	return builder
}

// 预估在职人数
//
// 示例值：“10.00”
func (builder *WorkforcePlanEaiDetailBuilder) EstimatedActiveIndividuals(estimatedActiveIndividuals string) *WorkforcePlanEaiDetailBuilder {
	builder.estimatedActiveIndividuals = estimatedActiveIndividuals
	builder.estimatedActiveIndividualsFlag = true
	return builder
}

func (builder *WorkforcePlanEaiDetailBuilder) Build() *WorkforcePlanEaiDetail {
	req := &WorkforcePlanEaiDetail{}
	if builder.dateFlag {
		req.Date = &builder.date

	}
	if builder.estimatedActiveIndividualsFlag {
		req.EstimatedActiveIndividuals = &builder.estimatedActiveIndividuals

	}
	return req
}

type WorkforcePlanMultiPeriodValue struct {
	PeriodDate *string `json:"period_date,omitempty"` // 周期的最后一天

	WorkforcePlan *string `json:"workforce_plan,omitempty"` // 对应周期的编制规划值

	IndividualsToBeAdded *string `json:"individuals_to_be_added,omitempty"` // 预增员数量

	IndividualsToBeRemoved *string `json:"individuals_to_be_removed,omitempty"` // 预减员数量
}

type WorkforcePlanMultiPeriodValueBuilder struct {
	periodDate     string // 周期的最后一天
	periodDateFlag bool

	workforcePlan     string // 对应周期的编制规划值
	workforcePlanFlag bool

	individualsToBeAdded     string // 预增员数量
	individualsToBeAddedFlag bool

	individualsToBeRemoved     string // 预减员数量
	individualsToBeRemovedFlag bool
}

func NewWorkforcePlanMultiPeriodValueBuilder() *WorkforcePlanMultiPeriodValueBuilder {
	builder := &WorkforcePlanMultiPeriodValueBuilder{}
	return builder
}

// 周期的最后一天
//
// 示例值："2022-10-31"
func (builder *WorkforcePlanMultiPeriodValueBuilder) PeriodDate(periodDate string) *WorkforcePlanMultiPeriodValueBuilder {
	builder.periodDate = periodDate
	builder.periodDateFlag = true
	return builder
}

// 对应周期的编制规划值
//
// 示例值："12.00"
func (builder *WorkforcePlanMultiPeriodValueBuilder) WorkforcePlan(workforcePlan string) *WorkforcePlanMultiPeriodValueBuilder {
	builder.workforcePlan = workforcePlan
	builder.workforcePlanFlag = true
	return builder
}

// 预增员数量
//
// 示例值："10.00"
func (builder *WorkforcePlanMultiPeriodValueBuilder) IndividualsToBeAdded(individualsToBeAdded string) *WorkforcePlanMultiPeriodValueBuilder {
	builder.individualsToBeAdded = individualsToBeAdded
	builder.individualsToBeAddedFlag = true
	return builder
}

// 预减员数量
//
// 示例值："10.00"
func (builder *WorkforcePlanMultiPeriodValueBuilder) IndividualsToBeRemoved(individualsToBeRemoved string) *WorkforcePlanMultiPeriodValueBuilder {
	builder.individualsToBeRemoved = individualsToBeRemoved
	builder.individualsToBeRemovedFlag = true
	return builder
}

func (builder *WorkforcePlanMultiPeriodValueBuilder) Build() *WorkforcePlanMultiPeriodValue {
	req := &WorkforcePlanMultiPeriodValue{}
	if builder.periodDateFlag {
		req.PeriodDate = &builder.periodDate

	}
	if builder.workforcePlanFlag {
		req.WorkforcePlan = &builder.workforcePlan

	}
	if builder.individualsToBeAddedFlag {
		req.IndividualsToBeAdded = &builder.individualsToBeAdded

	}
	if builder.individualsToBeRemovedFlag {
		req.IndividualsToBeRemoved = &builder.individualsToBeRemoved

	}
	return req
}

type GetApprovalGroupsReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetApprovalGroupsReqBuilder() *GetApprovalGroupsReqBuilder {
	builder := &GetApprovalGroupsReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 组织架构调整流程 ID
//
// 示例值：6893014062142064111
func (builder *GetApprovalGroupsReqBuilder) ProcessId(processId string) *GetApprovalGroupsReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *GetApprovalGroupsReqBuilder) UserIdType(userIdType string) *GetApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetApprovalGroupsReqBuilder) Build() *GetApprovalGroupsReq {
	req := &GetApprovalGroupsReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetApprovalGroupsReq struct {
	apiReq *larkcore.ApiReq
}

type GetApprovalGroupsRespData struct {
	ApprovalGroup *ApprovalGroup `json:"approval_group,omitempty"` // 组织架构调整流程信息
}

type GetApprovalGroupsResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetApprovalGroupsRespData `json:"data"` // 业务数据
}

func (resp *GetApprovalGroupsResp) Success() bool {
	return resp.Code == 0
}

type OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder struct {
	departmentChangeIds     []string // 部门调整记录 ID List
	departmentChangeIdsFlag bool

	needDepartmentPath     bool // 是否返回部门全路径
	needDepartmentPathFlag bool
}

func NewOpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder() *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder := &OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder{}
	return builder
}

// 部门调整记录 ID List
//
//示例值：
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder) DepartmentChangeIds(departmentChangeIds []string) *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder.departmentChangeIds = departmentChangeIds
	builder.departmentChangeIdsFlag = true
	return builder
}

// 是否返回部门全路径
//
//示例值：false
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder) NeedDepartmentPath(needDepartmentPath bool) *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder.needDepartmentPath = needDepartmentPath
	builder.needDepartmentPathFlag = true
	return builder
}

func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBodyBuilder) Build() *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody {
	req := &OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody{}
	if builder.departmentChangeIdsFlag {
		req.DepartmentChangeIds = builder.departmentChangeIds
	}
	if builder.needDepartmentPathFlag {
		req.NeedDepartmentPath = &builder.needDepartmentPath
	}
	return req
}

type OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder struct {
	departmentChangeIds     []string
	departmentChangeIdsFlag bool
	needDepartmentPath      bool
	needDepartmentPathFlag  bool
}

func NewOpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder() *OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder := &OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder{}
	return builder
}

// 部门调整记录 ID List
//
// 示例值：
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder) DepartmentChangeIds(departmentChangeIds []string) *OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder.departmentChangeIds = departmentChangeIds
	builder.departmentChangeIdsFlag = true
	return builder
}

// 是否返回部门全路径
//
// 示例值：false
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder) NeedDepartmentPath(needDepartmentPath bool) *OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder.needDepartmentPath = needDepartmentPath
	builder.needDepartmentPathFlag = true
	return builder
}

func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsPathReqBodyBuilder) Build() (*OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody, error) {
	req := &OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody{}
	if builder.departmentChangeIdsFlag {
		req.DepartmentChangeIds = builder.departmentChangeIds
	}
	if builder.needDepartmentPathFlag {
		req.NeedDepartmentPath = &builder.needDepartmentPath
	}
	return req, nil
}

type OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody
}

func NewOpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder() *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder {
	builder := &OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 组织架构调整流程 ID
//
// 示例值：6893014062142064111
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder) ProcessId(processId string) *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder) UserIdType(userIdType string) *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder) DepartmentIdType(departmentIdType string) *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 获取部门调整信息详情
func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder) Body(body *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody) *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder {
	builder.body = body
	return builder
}

func (builder *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBuilder) Build() *OpenQueryDepartmentChangeListByIdsApprovalGroupsReq {
	req := &OpenQueryDepartmentChangeListByIdsApprovalGroupsReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody struct {
	DepartmentChangeIds []string `json:"department_change_ids,omitempty"` // 部门调整记录 ID List

	NeedDepartmentPath *bool `json:"need_department_path,omitempty"` // 是否返回部门全路径
}

type OpenQueryDepartmentChangeListByIdsApprovalGroupsReq struct {
	apiReq *larkcore.ApiReq
	Body   *OpenQueryDepartmentChangeListByIdsApprovalGroupsReqBody `body:""`
}

type OpenQueryDepartmentChangeListByIdsApprovalGroupsRespData struct {
	DepartmentChanges []*DepartmentChange `json:"department_changes,omitempty"` // 部门调整记录信息列表
}

type OpenQueryDepartmentChangeListByIdsApprovalGroupsResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *OpenQueryDepartmentChangeListByIdsApprovalGroupsRespData `json:"data"` // 业务数据
}

func (resp *OpenQueryDepartmentChangeListByIdsApprovalGroupsResp) Success() bool {
	return resp.Code == 0
}

type OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder struct {
	jobChangeIds     []string // 人员异动记录 ID List
	jobChangeIdsFlag bool

	needDepartmentPath     bool // 是否返回部门全路径
	needDepartmentPathFlag bool
}

func NewOpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder() *OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder := &OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder{}
	return builder
}

// 人员异动记录 ID List
//
//示例值：
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder) JobChangeIds(jobChangeIds []string) *OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder.jobChangeIds = jobChangeIds
	builder.jobChangeIdsFlag = true
	return builder
}

// 是否返回部门全路径
//
//示例值：false
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder) NeedDepartmentPath(needDepartmentPath bool) *OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder.needDepartmentPath = needDepartmentPath
	builder.needDepartmentPathFlag = true
	return builder
}

func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBodyBuilder) Build() *OpenQueryJobChangeListByIdsApprovalGroupsReqBody {
	req := &OpenQueryJobChangeListByIdsApprovalGroupsReqBody{}
	if builder.jobChangeIdsFlag {
		req.JobChangeIds = builder.jobChangeIds
	}
	if builder.needDepartmentPathFlag {
		req.NeedDepartmentPath = &builder.needDepartmentPath
	}
	return req
}

type OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder struct {
	jobChangeIds           []string
	jobChangeIdsFlag       bool
	needDepartmentPath     bool
	needDepartmentPathFlag bool
}

func NewOpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder() *OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder := &OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder{}
	return builder
}

// 人员异动记录 ID List
//
// 示例值：
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder) JobChangeIds(jobChangeIds []string) *OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder.jobChangeIds = jobChangeIds
	builder.jobChangeIdsFlag = true
	return builder
}

// 是否返回部门全路径
//
// 示例值：false
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder) NeedDepartmentPath(needDepartmentPath bool) *OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder.needDepartmentPath = needDepartmentPath
	builder.needDepartmentPathFlag = true
	return builder
}

func (builder *OpenQueryJobChangeListByIdsApprovalGroupsPathReqBodyBuilder) Build() (*OpenQueryJobChangeListByIdsApprovalGroupsReqBody, error) {
	req := &OpenQueryJobChangeListByIdsApprovalGroupsReqBody{}
	if builder.jobChangeIdsFlag {
		req.JobChangeIds = builder.jobChangeIds
	}
	if builder.needDepartmentPathFlag {
		req.NeedDepartmentPath = &builder.needDepartmentPath
	}
	return req, nil
}

type OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *OpenQueryJobChangeListByIdsApprovalGroupsReqBody
}

func NewOpenQueryJobChangeListByIdsApprovalGroupsReqBuilder() *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder {
	builder := &OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 组织架构调整流程 ID
//
// 示例值：6991776076699549697
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder) ProcessId(processId string) *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder) UserIdType(userIdType string) *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder) DepartmentIdType(departmentIdType string) *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder) Body(body *OpenQueryJobChangeListByIdsApprovalGroupsReqBody) *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder {
	builder.body = body
	return builder
}

func (builder *OpenQueryJobChangeListByIdsApprovalGroupsReqBuilder) Build() *OpenQueryJobChangeListByIdsApprovalGroupsReq {
	req := &OpenQueryJobChangeListByIdsApprovalGroupsReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type OpenQueryJobChangeListByIdsApprovalGroupsReqBody struct {
	JobChangeIds []string `json:"job_change_ids,omitempty"` // 人员异动记录 ID List

	NeedDepartmentPath *bool `json:"need_department_path,omitempty"` // 是否返回部门全路径
}

type OpenQueryJobChangeListByIdsApprovalGroupsReq struct {
	apiReq *larkcore.ApiReq
	Body   *OpenQueryJobChangeListByIdsApprovalGroupsReqBody `body:""`
}

type OpenQueryJobChangeListByIdsApprovalGroupsRespData struct {
	JobChanges []*JobChange `json:"job_changes,omitempty"` // 人员异动记录信息列表
}

type OpenQueryJobChangeListByIdsApprovalGroupsResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *OpenQueryJobChangeListByIdsApprovalGroupsRespData `json:"data"` // 业务数据
}

func (resp *OpenQueryJobChangeListByIdsApprovalGroupsResp) Success() bool {
	return resp.Code == 0
}

type OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder struct {
	positionChangeIds     []string // 岗位调整记录 ID List
	positionChangeIdsFlag bool

	needDepartmentPath     bool // 是否返回部门全路径
	needDepartmentPathFlag bool
}

func NewOpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder() *OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder := &OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder{}
	return builder
}

// 岗位调整记录 ID List
//
//示例值：
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder) PositionChangeIds(positionChangeIds []string) *OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder.positionChangeIds = positionChangeIds
	builder.positionChangeIdsFlag = true
	return builder
}

// 是否返回部门全路径
//
//示例值：false
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder) NeedDepartmentPath(needDepartmentPath bool) *OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder {
	builder.needDepartmentPath = needDepartmentPath
	builder.needDepartmentPathFlag = true
	return builder
}

func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBodyBuilder) Build() *OpenQueryPositionChangeListByIdsApprovalGroupsReqBody {
	req := &OpenQueryPositionChangeListByIdsApprovalGroupsReqBody{}
	if builder.positionChangeIdsFlag {
		req.PositionChangeIds = builder.positionChangeIds
	}
	if builder.needDepartmentPathFlag {
		req.NeedDepartmentPath = &builder.needDepartmentPath
	}
	return req
}

type OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder struct {
	positionChangeIds      []string
	positionChangeIdsFlag  bool
	needDepartmentPath     bool
	needDepartmentPathFlag bool
}

func NewOpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder() *OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder := &OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder{}
	return builder
}

// 岗位调整记录 ID List
//
// 示例值：
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder) PositionChangeIds(positionChangeIds []string) *OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder.positionChangeIds = positionChangeIds
	builder.positionChangeIdsFlag = true
	return builder
}

// 是否返回部门全路径
//
// 示例值：false
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder) NeedDepartmentPath(needDepartmentPath bool) *OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder {
	builder.needDepartmentPath = needDepartmentPath
	builder.needDepartmentPathFlag = true
	return builder
}

func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsPathReqBodyBuilder) Build() (*OpenQueryPositionChangeListByIdsApprovalGroupsReqBody, error) {
	req := &OpenQueryPositionChangeListByIdsApprovalGroupsReqBody{}
	if builder.positionChangeIdsFlag {
		req.PositionChangeIds = builder.positionChangeIds
	}
	if builder.needDepartmentPathFlag {
		req.NeedDepartmentPath = &builder.needDepartmentPath
	}
	return req, nil
}

type OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *OpenQueryPositionChangeListByIdsApprovalGroupsReqBody
}

func NewOpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder() *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder {
	builder := &OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 组织架构调整流程 ID
//
// 示例值：6893014062142064111
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder) ProcessId(processId string) *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder) UserIdType(userIdType string) *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder) DepartmentIdType(departmentIdType string) *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 获取岗位调整信息详情
func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder) Body(body *OpenQueryPositionChangeListByIdsApprovalGroupsReqBody) *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder {
	builder.body = body
	return builder
}

func (builder *OpenQueryPositionChangeListByIdsApprovalGroupsReqBuilder) Build() *OpenQueryPositionChangeListByIdsApprovalGroupsReq {
	req := &OpenQueryPositionChangeListByIdsApprovalGroupsReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type OpenQueryPositionChangeListByIdsApprovalGroupsReqBody struct {
	PositionChangeIds []string `json:"position_change_ids,omitempty"` // 岗位调整记录 ID List

	NeedDepartmentPath *bool `json:"need_department_path,omitempty"` // 是否返回部门全路径
}

type OpenQueryPositionChangeListByIdsApprovalGroupsReq struct {
	apiReq *larkcore.ApiReq
	Body   *OpenQueryPositionChangeListByIdsApprovalGroupsReqBody `body:""`
}

type OpenQueryPositionChangeListByIdsApprovalGroupsRespData struct {
	PositionChanges []*PositionChange `json:"position_changes,omitempty"` // 岗位调整记录信息列表
}

type OpenQueryPositionChangeListByIdsApprovalGroupsResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *OpenQueryPositionChangeListByIdsApprovalGroupsRespData `json:"data"` // 业务数据
}

func (resp *OpenQueryPositionChangeListByIdsApprovalGroupsResp) Success() bool {
	return resp.Code == 0
}

type ListApproverReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListApproverReqBuilder() *ListApproverReqBuilder {
	builder := &ListApproverReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListApproverReqBuilder) Limit(limit int) *ListApproverReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：20
func (builder *ListApproverReqBuilder) PageSize(pageSize int) *ListApproverReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：1
func (builder *ListApproverReqBuilder) PageToken(pageToken string) *ListApproverReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *ListApproverReqBuilder) UserIdType(userIdType string) *ListApproverReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 按user_id_type类型传递。如果system_approval为false，则必填。否则非必填。
//
// 示例值：ou_91791271921729102012
func (builder *ListApproverReqBuilder) UserId(userId string) *ListApproverReqBuilder {
	builder.apiReq.QueryParams.Set("user_id", fmt.Sprint(userId))
	return builder
}

// 任务状态
//
// 示例值：1
func (builder *ListApproverReqBuilder) ApproverStatus(approverStatus int) *ListApproverReqBuilder {
	builder.apiReq.QueryParams.Set("approver_status", fmt.Sprint(approverStatus))
	return builder
}

func (builder *ListApproverReqBuilder) Build() *ListApproverReq {
	req := &ListApproverReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListApproverReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListApproverRespData struct {
	PageToken *string `json:"page_token,omitempty"` // 分页键

	HasMore *bool `json:"has_more,omitempty"` // 是否有更多数据

	ApproverList []*ApproverInfo `json:"approver_list,omitempty"` // 审批任务列表
}

type ListApproverResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListApproverRespData `json:"data"` // 业务数据
}

func (resp *ListApproverResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoBankReqBodyBuilder struct {
	bankIdList     []string // 银行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段获取
	bankIdListFlag bool

	bankNameList     []string // 银行名称列表，支持对银行名称精确搜索
	bankNameListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool

	updateStartTime     string // 最早更新时间
	updateStartTimeFlag bool

	updateEndTime     string // 最晚更新时间
	updateEndTimeFlag bool
}

func NewSearchBasicInfoBankReqBodyBuilder() *SearchBasicInfoBankReqBodyBuilder {
	builder := &SearchBasicInfoBankReqBodyBuilder{}
	return builder
}

// 银行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段获取
//
//示例值：
func (builder *SearchBasicInfoBankReqBodyBuilder) BankIdList(bankIdList []string) *SearchBasicInfoBankReqBodyBuilder {
	builder.bankIdList = bankIdList
	builder.bankIdListFlag = true
	return builder
}

// 银行名称列表，支持对银行名称精确搜索
//
//示例值：
func (builder *SearchBasicInfoBankReqBodyBuilder) BankNameList(bankNameList []string) *SearchBasicInfoBankReqBodyBuilder {
	builder.bankNameList = bankNameList
	builder.bankNameListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoBankReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoBankReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

// 最早更新时间
//
//示例值：2020-01-01 00:00:00
func (builder *SearchBasicInfoBankReqBodyBuilder) UpdateStartTime(updateStartTime string) *SearchBasicInfoBankReqBodyBuilder {
	builder.updateStartTime = updateStartTime
	builder.updateStartTimeFlag = true
	return builder
}

// 最晚更新时间
//
//示例值：2024-01-01 00:00:00
func (builder *SearchBasicInfoBankReqBodyBuilder) UpdateEndTime(updateEndTime string) *SearchBasicInfoBankReqBodyBuilder {
	builder.updateEndTime = updateEndTime
	builder.updateEndTimeFlag = true
	return builder
}

func (builder *SearchBasicInfoBankReqBodyBuilder) Build() *SearchBasicInfoBankReqBody {
	req := &SearchBasicInfoBankReqBody{}
	if builder.bankIdListFlag {
		req.BankIdList = builder.bankIdList
	}
	if builder.bankNameListFlag {
		req.BankNameList = builder.bankNameList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	if builder.updateStartTimeFlag {
		req.UpdateStartTime = &builder.updateStartTime
	}
	if builder.updateEndTimeFlag {
		req.UpdateEndTime = &builder.updateEndTime
	}
	return req
}

type SearchBasicInfoBankPathReqBodyBuilder struct {
	bankIdList          []string
	bankIdListFlag      bool
	bankNameList        []string
	bankNameListFlag    bool
	statusList          []int
	statusListFlag      bool
	updateStartTime     string
	updateStartTimeFlag bool
	updateEndTime       string
	updateEndTimeFlag   bool
}

func NewSearchBasicInfoBankPathReqBodyBuilder() *SearchBasicInfoBankPathReqBodyBuilder {
	builder := &SearchBasicInfoBankPathReqBodyBuilder{}
	return builder
}

// 银行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段获取
//
// 示例值：
func (builder *SearchBasicInfoBankPathReqBodyBuilder) BankIdList(bankIdList []string) *SearchBasicInfoBankPathReqBodyBuilder {
	builder.bankIdList = bankIdList
	builder.bankIdListFlag = true
	return builder
}

// 银行名称列表，支持对银行名称精确搜索
//
// 示例值：
func (builder *SearchBasicInfoBankPathReqBodyBuilder) BankNameList(bankNameList []string) *SearchBasicInfoBankPathReqBodyBuilder {
	builder.bankNameList = bankNameList
	builder.bankNameListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoBankPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoBankPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

// 最早更新时间
//
// 示例值：2020-01-01 00:00:00
func (builder *SearchBasicInfoBankPathReqBodyBuilder) UpdateStartTime(updateStartTime string) *SearchBasicInfoBankPathReqBodyBuilder {
	builder.updateStartTime = updateStartTime
	builder.updateStartTimeFlag = true
	return builder
}

// 最晚更新时间
//
// 示例值：2024-01-01 00:00:00
func (builder *SearchBasicInfoBankPathReqBodyBuilder) UpdateEndTime(updateEndTime string) *SearchBasicInfoBankPathReqBodyBuilder {
	builder.updateEndTime = updateEndTime
	builder.updateEndTimeFlag = true
	return builder
}

func (builder *SearchBasicInfoBankPathReqBodyBuilder) Build() (*SearchBasicInfoBankReqBody, error) {
	req := &SearchBasicInfoBankReqBody{}
	if builder.bankIdListFlag {
		req.BankIdList = builder.bankIdList
	}
	if builder.bankNameListFlag {
		req.BankNameList = builder.bankNameList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	if builder.updateStartTimeFlag {
		req.UpdateStartTime = &builder.updateStartTime
	}
	if builder.updateEndTimeFlag {
		req.UpdateEndTime = &builder.updateEndTime
	}
	return req, nil
}

type SearchBasicInfoBankReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoBankReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoBankReqBuilder() *SearchBasicInfoBankReqBuilder {
	builder := &SearchBasicInfoBankReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoBankReqBuilder) Limit(limit int) *SearchBasicInfoBankReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoBankReqBuilder) PageSize(pageSize int) *SearchBasicInfoBankReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：MDBH00000100
func (builder *SearchBasicInfoBankReqBuilder) PageToken(pageToken string) *SearchBasicInfoBankReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoBankReqBuilder) Body(body *SearchBasicInfoBankReqBody) *SearchBasicInfoBankReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoBankReqBuilder) Build() *SearchBasicInfoBankReq {
	req := &SearchBasicInfoBankReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoBankReqBody struct {
	BankIdList []string `json:"bank_id_list,omitempty"` // 银行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段获取

	BankNameList []string `json:"bank_name_list,omitempty"` // 银行名称列表，支持对银行名称精确搜索

	StatusList []int `json:"status_list,omitempty"` // 状态列表

	UpdateStartTime *string `json:"update_start_time,omitempty"` // 最早更新时间

	UpdateEndTime *string `json:"update_end_time,omitempty"` // 最晚更新时间
}

type SearchBasicInfoBankReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoBankReqBody `body:""`
	Limit  int                         // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoBankRespData struct {
	Items []*Bank `json:"items,omitempty"` // 查询到的银行列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoBankResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoBankRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoBankResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoBankBranchReqBodyBuilder struct {
	bankIdList     []string // 银行 ID 列表，可通过[查询银行信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-bank/search)列举，或从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段中获取
	bankIdListFlag bool

	bankBranchIdList     []string // 支行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_branch_id_v2` 字段获取
	bankBranchIdListFlag bool

	bankBranchNameList     []string // 支行名称列表，支持对支行名称精确搜索
	bankBranchNameListFlag bool

	codeList     []string // 金融分支机构编码（联行号）列表，支持对金融分支机构编码精确搜索
	codeListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool

	updateStartTime     string // 最早更新时间
	updateStartTimeFlag bool

	updateEndTime     string // 最晚更新时间
	updateEndTimeFlag bool
}

func NewSearchBasicInfoBankBranchReqBodyBuilder() *SearchBasicInfoBankBranchReqBodyBuilder {
	builder := &SearchBasicInfoBankBranchReqBodyBuilder{}
	return builder
}

// 银行 ID 列表，可通过[查询银行信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-bank/search)列举，或从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段中获取
//
//示例值：
func (builder *SearchBasicInfoBankBranchReqBodyBuilder) BankIdList(bankIdList []string) *SearchBasicInfoBankBranchReqBodyBuilder {
	builder.bankIdList = bankIdList
	builder.bankIdListFlag = true
	return builder
}

// 支行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_branch_id_v2` 字段获取
//
//示例值：
func (builder *SearchBasicInfoBankBranchReqBodyBuilder) BankBranchIdList(bankBranchIdList []string) *SearchBasicInfoBankBranchReqBodyBuilder {
	builder.bankBranchIdList = bankBranchIdList
	builder.bankBranchIdListFlag = true
	return builder
}

// 支行名称列表，支持对支行名称精确搜索
//
//示例值：
func (builder *SearchBasicInfoBankBranchReqBodyBuilder) BankBranchNameList(bankBranchNameList []string) *SearchBasicInfoBankBranchReqBodyBuilder {
	builder.bankBranchNameList = bankBranchNameList
	builder.bankBranchNameListFlag = true
	return builder
}

// 金融分支机构编码（联行号）列表，支持对金融分支机构编码精确搜索
//
//示例值：
func (builder *SearchBasicInfoBankBranchReqBodyBuilder) CodeList(codeList []string) *SearchBasicInfoBankBranchReqBodyBuilder {
	builder.codeList = codeList
	builder.codeListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoBankBranchReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoBankBranchReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

// 最早更新时间
//
//示例值：2020-01-01 00:00:00
func (builder *SearchBasicInfoBankBranchReqBodyBuilder) UpdateStartTime(updateStartTime string) *SearchBasicInfoBankBranchReqBodyBuilder {
	builder.updateStartTime = updateStartTime
	builder.updateStartTimeFlag = true
	return builder
}

// 最晚更新时间
//
//示例值：2024-01-01 00:00:00
func (builder *SearchBasicInfoBankBranchReqBodyBuilder) UpdateEndTime(updateEndTime string) *SearchBasicInfoBankBranchReqBodyBuilder {
	builder.updateEndTime = updateEndTime
	builder.updateEndTimeFlag = true
	return builder
}

func (builder *SearchBasicInfoBankBranchReqBodyBuilder) Build() *SearchBasicInfoBankBranchReqBody {
	req := &SearchBasicInfoBankBranchReqBody{}
	if builder.bankIdListFlag {
		req.BankIdList = builder.bankIdList
	}
	if builder.bankBranchIdListFlag {
		req.BankBranchIdList = builder.bankBranchIdList
	}
	if builder.bankBranchNameListFlag {
		req.BankBranchNameList = builder.bankBranchNameList
	}
	if builder.codeListFlag {
		req.CodeList = builder.codeList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	if builder.updateStartTimeFlag {
		req.UpdateStartTime = &builder.updateStartTime
	}
	if builder.updateEndTimeFlag {
		req.UpdateEndTime = &builder.updateEndTime
	}
	return req
}

type SearchBasicInfoBankBranchPathReqBodyBuilder struct {
	bankIdList             []string
	bankIdListFlag         bool
	bankBranchIdList       []string
	bankBranchIdListFlag   bool
	bankBranchNameList     []string
	bankBranchNameListFlag bool
	codeList               []string
	codeListFlag           bool
	statusList             []int
	statusListFlag         bool
	updateStartTime        string
	updateStartTimeFlag    bool
	updateEndTime          string
	updateEndTimeFlag      bool
}

func NewSearchBasicInfoBankBranchPathReqBodyBuilder() *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder := &SearchBasicInfoBankBranchPathReqBodyBuilder{}
	return builder
}

// 银行 ID 列表，可通过[查询银行信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-bank/search)列举，或从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段中获取
//
// 示例值：
func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) BankIdList(bankIdList []string) *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder.bankIdList = bankIdList
	builder.bankIdListFlag = true
	return builder
}

// 支行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_branch_id_v2` 字段获取
//
// 示例值：
func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) BankBranchIdList(bankBranchIdList []string) *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder.bankBranchIdList = bankBranchIdList
	builder.bankBranchIdListFlag = true
	return builder
}

// 支行名称列表，支持对支行名称精确搜索
//
// 示例值：
func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) BankBranchNameList(bankBranchNameList []string) *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder.bankBranchNameList = bankBranchNameList
	builder.bankBranchNameListFlag = true
	return builder
}

// 金融分支机构编码（联行号）列表，支持对金融分支机构编码精确搜索
//
// 示例值：
func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) CodeList(codeList []string) *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder.codeList = codeList
	builder.codeListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

// 最早更新时间
//
// 示例值：2020-01-01 00:00:00
func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) UpdateStartTime(updateStartTime string) *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder.updateStartTime = updateStartTime
	builder.updateStartTimeFlag = true
	return builder
}

// 最晚更新时间
//
// 示例值：2024-01-01 00:00:00
func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) UpdateEndTime(updateEndTime string) *SearchBasicInfoBankBranchPathReqBodyBuilder {
	builder.updateEndTime = updateEndTime
	builder.updateEndTimeFlag = true
	return builder
}

func (builder *SearchBasicInfoBankBranchPathReqBodyBuilder) Build() (*SearchBasicInfoBankBranchReqBody, error) {
	req := &SearchBasicInfoBankBranchReqBody{}
	if builder.bankIdListFlag {
		req.BankIdList = builder.bankIdList
	}
	if builder.bankBranchIdListFlag {
		req.BankBranchIdList = builder.bankBranchIdList
	}
	if builder.bankBranchNameListFlag {
		req.BankBranchNameList = builder.bankBranchNameList
	}
	if builder.codeListFlag {
		req.CodeList = builder.codeList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	if builder.updateStartTimeFlag {
		req.UpdateStartTime = &builder.updateStartTime
	}
	if builder.updateEndTimeFlag {
		req.UpdateEndTime = &builder.updateEndTime
	}
	return req, nil
}

type SearchBasicInfoBankBranchReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoBankBranchReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoBankBranchReqBuilder() *SearchBasicInfoBankBranchReqBuilder {
	builder := &SearchBasicInfoBankBranchReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoBankBranchReqBuilder) Limit(limit int) *SearchBasicInfoBankBranchReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoBankBranchReqBuilder) PageSize(pageSize int) *SearchBasicInfoBankBranchReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：MDBK00000120
func (builder *SearchBasicInfoBankBranchReqBuilder) PageToken(pageToken string) *SearchBasicInfoBankBranchReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoBankBranchReqBuilder) Body(body *SearchBasicInfoBankBranchReqBody) *SearchBasicInfoBankBranchReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoBankBranchReqBuilder) Build() *SearchBasicInfoBankBranchReq {
	req := &SearchBasicInfoBankBranchReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoBankBranchReqBody struct {
	BankIdList []string `json:"bank_id_list,omitempty"` // 银行 ID 列表，可通过[查询银行信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-bank/search)列举，或从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_id_v2` 字段中获取

	BankBranchIdList []string `json:"bank_branch_id_list,omitempty"` // 支行 ID 列表，可通过[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)、[批量查询员工信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)等接口返回的 `person_info.bank_account_list.bank_branch_id_v2` 字段获取

	BankBranchNameList []string `json:"bank_branch_name_list,omitempty"` // 支行名称列表，支持对支行名称精确搜索

	CodeList []string `json:"code_list,omitempty"` // 金融分支机构编码（联行号）列表，支持对金融分支机构编码精确搜索

	StatusList []int `json:"status_list,omitempty"` // 状态列表

	UpdateStartTime *string `json:"update_start_time,omitempty"` // 最早更新时间

	UpdateEndTime *string `json:"update_end_time,omitempty"` // 最晚更新时间
}

type SearchBasicInfoBankBranchReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoBankBranchReqBody `body:""`
	Limit  int                               // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoBankBranchRespData struct {
	Items []*BankBranch `json:"items,omitempty"` // 查询到的支行列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoBankBranchResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoBankBranchRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoBankBranchResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoCityReqBodyBuilder struct {
	countryRegionSubdivisionIdList     []string // 省份/主要行政区 ID 列表，可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.region_id` 等字段中获取
	countryRegionSubdivisionIdListFlag bool

	cityIdList     []string // 城市 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_id_v2` 等字段中获取
	cityIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoCityReqBodyBuilder() *SearchBasicInfoCityReqBodyBuilder {
	builder := &SearchBasicInfoCityReqBodyBuilder{}
	return builder
}

// 省份/主要行政区 ID 列表，可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.region_id` 等字段中获取
//
//示例值：
func (builder *SearchBasicInfoCityReqBodyBuilder) CountryRegionSubdivisionIdList(countryRegionSubdivisionIdList []string) *SearchBasicInfoCityReqBodyBuilder {
	builder.countryRegionSubdivisionIdList = countryRegionSubdivisionIdList
	builder.countryRegionSubdivisionIdListFlag = true
	return builder
}

// 城市 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_id_v2` 等字段中获取
//
//示例值：
func (builder *SearchBasicInfoCityReqBodyBuilder) CityIdList(cityIdList []string) *SearchBasicInfoCityReqBodyBuilder {
	builder.cityIdList = cityIdList
	builder.cityIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoCityReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCityReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCityReqBodyBuilder) Build() *SearchBasicInfoCityReqBody {
	req := &SearchBasicInfoCityReqBody{}
	if builder.countryRegionSubdivisionIdListFlag {
		req.CountryRegionSubdivisionIdList = builder.countryRegionSubdivisionIdList
	}
	if builder.cityIdListFlag {
		req.CityIdList = builder.cityIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoCityPathReqBodyBuilder struct {
	countryRegionSubdivisionIdList     []string
	countryRegionSubdivisionIdListFlag bool
	cityIdList                         []string
	cityIdListFlag                     bool
	statusList                         []int
	statusListFlag                     bool
}

func NewSearchBasicInfoCityPathReqBodyBuilder() *SearchBasicInfoCityPathReqBodyBuilder {
	builder := &SearchBasicInfoCityPathReqBodyBuilder{}
	return builder
}

// 省份/主要行政区 ID 列表，可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.region_id` 等字段中获取
//
// 示例值：
func (builder *SearchBasicInfoCityPathReqBodyBuilder) CountryRegionSubdivisionIdList(countryRegionSubdivisionIdList []string) *SearchBasicInfoCityPathReqBodyBuilder {
	builder.countryRegionSubdivisionIdList = countryRegionSubdivisionIdList
	builder.countryRegionSubdivisionIdListFlag = true
	return builder
}

// 城市 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_id_v2` 等字段中获取
//
// 示例值：
func (builder *SearchBasicInfoCityPathReqBodyBuilder) CityIdList(cityIdList []string) *SearchBasicInfoCityPathReqBodyBuilder {
	builder.cityIdList = cityIdList
	builder.cityIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoCityPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCityPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCityPathReqBodyBuilder) Build() (*SearchBasicInfoCityReqBody, error) {
	req := &SearchBasicInfoCityReqBody{}
	if builder.countryRegionSubdivisionIdListFlag {
		req.CountryRegionSubdivisionIdList = builder.countryRegionSubdivisionIdList
	}
	if builder.cityIdListFlag {
		req.CityIdList = builder.cityIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoCityReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoCityReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoCityReqBuilder() *SearchBasicInfoCityReqBuilder {
	builder := &SearchBasicInfoCityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoCityReqBuilder) Limit(limit int) *SearchBasicInfoCityReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoCityReqBuilder) PageSize(pageSize int) *SearchBasicInfoCityReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：7316867189967963685
func (builder *SearchBasicInfoCityReqBuilder) PageToken(pageToken string) *SearchBasicInfoCityReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoCityReqBuilder) Body(body *SearchBasicInfoCityReqBody) *SearchBasicInfoCityReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoCityReqBuilder) Build() *SearchBasicInfoCityReq {
	req := &SearchBasicInfoCityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoCityReqBody struct {
	CountryRegionSubdivisionIdList []string `json:"country_region_subdivision_id_list,omitempty"` // 省份/主要行政区 ID 列表，可通过[查询省份/主要行政区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region_subdivision/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.region_id` 等字段中获取

	CityIdList []string `json:"city_id_list,omitempty"` // 城市 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_id_v2` 等字段中获取

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoCityReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoCityReqBody `body:""`
	Limit  int                         // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoCityRespData struct {
	Items []*City `json:"items,omitempty"` // 查询到的城市列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoCityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoCityRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoCityResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoCountryRegionReqBodyBuilder struct {
	countryRegionIdList     []string // 国家/地区 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.country_region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.country_region_id` 等字段中获取
	countryRegionIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoCountryRegionReqBodyBuilder() *SearchBasicInfoCountryRegionReqBodyBuilder {
	builder := &SearchBasicInfoCountryRegionReqBodyBuilder{}
	return builder
}

// 国家/地区 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.country_region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.country_region_id` 等字段中获取
//
//示例值：
func (builder *SearchBasicInfoCountryRegionReqBodyBuilder) CountryRegionIdList(countryRegionIdList []string) *SearchBasicInfoCountryRegionReqBodyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoCountryRegionReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCountryRegionReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCountryRegionReqBodyBuilder) Build() *SearchBasicInfoCountryRegionReqBody {
	req := &SearchBasicInfoCountryRegionReqBody{}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoCountryRegionPathReqBodyBuilder struct {
	countryRegionIdList     []string
	countryRegionIdListFlag bool
	statusList              []int
	statusListFlag          bool
}

func NewSearchBasicInfoCountryRegionPathReqBodyBuilder() *SearchBasicInfoCountryRegionPathReqBodyBuilder {
	builder := &SearchBasicInfoCountryRegionPathReqBodyBuilder{}
	return builder
}

// 国家/地区 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.country_region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.country_region_id` 等字段中获取
//
// 示例值：
func (builder *SearchBasicInfoCountryRegionPathReqBodyBuilder) CountryRegionIdList(countryRegionIdList []string) *SearchBasicInfoCountryRegionPathReqBodyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoCountryRegionPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCountryRegionPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCountryRegionPathReqBodyBuilder) Build() (*SearchBasicInfoCountryRegionReqBody, error) {
	req := &SearchBasicInfoCountryRegionReqBody{}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoCountryRegionReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoCountryRegionReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoCountryRegionReqBuilder() *SearchBasicInfoCountryRegionReqBuilder {
	builder := &SearchBasicInfoCountryRegionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoCountryRegionReqBuilder) Limit(limit int) *SearchBasicInfoCountryRegionReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoCountryRegionReqBuilder) PageSize(pageSize int) *SearchBasicInfoCountryRegionReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6862995772275688974
func (builder *SearchBasicInfoCountryRegionReqBuilder) PageToken(pageToken string) *SearchBasicInfoCountryRegionReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoCountryRegionReqBuilder) Body(body *SearchBasicInfoCountryRegionReqBody) *SearchBasicInfoCountryRegionReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoCountryRegionReqBuilder) Build() *SearchBasicInfoCountryRegionReq {
	req := &SearchBasicInfoCountryRegionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoCountryRegionReqBody struct {
	CountryRegionIdList []string `json:"country_region_id_list,omitempty"` // 国家/地区 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.country_region_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.country_region_id` 等字段中获取

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoCountryRegionReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoCountryRegionReqBody `body:""`
	Limit  int                                  // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoCountryRegionRespData struct {
	Items []*CountryRegion `json:"items,omitempty"` // 查询到的国家/地区列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoCountryRegionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoCountryRegionRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoCountryRegionResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder struct {
	countryRegionIdList     []string // 国家/地区 ID 列表，可通过【查询国家/地区信息】接口获取
	countryRegionIdListFlag bool

	countryRegionSubdivisionIdList     []string // 省份/行政区 ID 列表
	countryRegionSubdivisionIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoCountryRegionSubdivisionReqBodyBuilder() *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder {
	builder := &SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder{}
	return builder
}

// 国家/地区 ID 列表，可通过【查询国家/地区信息】接口获取
//
//示例值：
func (builder *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder) CountryRegionIdList(countryRegionIdList []string) *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 省份/行政区 ID 列表
//
//示例值：
func (builder *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder) CountryRegionSubdivisionIdList(countryRegionSubdivisionIdList []string) *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder {
	builder.countryRegionSubdivisionIdList = countryRegionSubdivisionIdList
	builder.countryRegionSubdivisionIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCountryRegionSubdivisionReqBodyBuilder) Build() *SearchBasicInfoCountryRegionSubdivisionReqBody {
	req := &SearchBasicInfoCountryRegionSubdivisionReqBody{}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.countryRegionSubdivisionIdListFlag {
		req.CountryRegionSubdivisionIdList = builder.countryRegionSubdivisionIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder struct {
	countryRegionIdList                []string
	countryRegionIdListFlag            bool
	countryRegionSubdivisionIdList     []string
	countryRegionSubdivisionIdListFlag bool
	statusList                         []int
	statusListFlag                     bool
}

func NewSearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder() *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder {
	builder := &SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder{}
	return builder
}

// 国家/地区 ID 列表，可通过【查询国家/地区信息】接口获取
//
// 示例值：
func (builder *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder) CountryRegionIdList(countryRegionIdList []string) *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 省份/行政区 ID 列表
//
// 示例值：
func (builder *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder) CountryRegionSubdivisionIdList(countryRegionSubdivisionIdList []string) *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder {
	builder.countryRegionSubdivisionIdList = countryRegionSubdivisionIdList
	builder.countryRegionSubdivisionIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCountryRegionSubdivisionPathReqBodyBuilder) Build() (*SearchBasicInfoCountryRegionSubdivisionReqBody, error) {
	req := &SearchBasicInfoCountryRegionSubdivisionReqBody{}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.countryRegionSubdivisionIdListFlag {
		req.CountryRegionSubdivisionIdList = builder.countryRegionSubdivisionIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoCountryRegionSubdivisionReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoCountryRegionSubdivisionReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoCountryRegionSubdivisionReqBuilder() *SearchBasicInfoCountryRegionSubdivisionReqBuilder {
	builder := &SearchBasicInfoCountryRegionSubdivisionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoCountryRegionSubdivisionReqBuilder) Limit(limit int) *SearchBasicInfoCountryRegionSubdivisionReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoCountryRegionSubdivisionReqBuilder) PageSize(pageSize int) *SearchBasicInfoCountryRegionSubdivisionReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchBasicInfoCountryRegionSubdivisionReqBuilder) PageToken(pageToken string) *SearchBasicInfoCountryRegionSubdivisionReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoCountryRegionSubdivisionReqBuilder) Body(body *SearchBasicInfoCountryRegionSubdivisionReqBody) *SearchBasicInfoCountryRegionSubdivisionReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoCountryRegionSubdivisionReqBuilder) Build() *SearchBasicInfoCountryRegionSubdivisionReq {
	req := &SearchBasicInfoCountryRegionSubdivisionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoCountryRegionSubdivisionReqBody struct {
	CountryRegionIdList []string `json:"country_region_id_list,omitempty"` // 国家/地区 ID 列表，可通过【查询国家/地区信息】接口获取

	CountryRegionSubdivisionIdList []string `json:"country_region_subdivision_id_list,omitempty"` // 省份/行政区 ID 列表

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoCountryRegionSubdivisionReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoCountryRegionSubdivisionReqBody `body:""`
	Limit  int                                             // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoCountryRegionSubdivisionRespData struct {
	Items []*CountryRegionSubdivision `json:"items,omitempty"` // 查询的省份/行政区信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchBasicInfoCountryRegionSubdivisionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoCountryRegionSubdivisionRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoCountryRegionSubdivisionResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoCurrencyReqBodyBuilder struct {
	currencyIdList     []string // 货币 ID 列表，可通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)、[批量查询员工薪资档案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/archive/query)等接口返回的 `currency_id` 字段获取
	currencyIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoCurrencyReqBodyBuilder() *SearchBasicInfoCurrencyReqBodyBuilder {
	builder := &SearchBasicInfoCurrencyReqBodyBuilder{}
	return builder
}

// 货币 ID 列表，可通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)、[批量查询员工薪资档案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/archive/query)等接口返回的 `currency_id` 字段获取
//
//示例值：
func (builder *SearchBasicInfoCurrencyReqBodyBuilder) CurrencyIdList(currencyIdList []string) *SearchBasicInfoCurrencyReqBodyBuilder {
	builder.currencyIdList = currencyIdList
	builder.currencyIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoCurrencyReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCurrencyReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCurrencyReqBodyBuilder) Build() *SearchBasicInfoCurrencyReqBody {
	req := &SearchBasicInfoCurrencyReqBody{}
	if builder.currencyIdListFlag {
		req.CurrencyIdList = builder.currencyIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoCurrencyPathReqBodyBuilder struct {
	currencyIdList     []string
	currencyIdListFlag bool
	statusList         []int
	statusListFlag     bool
}

func NewSearchBasicInfoCurrencyPathReqBodyBuilder() *SearchBasicInfoCurrencyPathReqBodyBuilder {
	builder := &SearchBasicInfoCurrencyPathReqBodyBuilder{}
	return builder
}

// 货币 ID 列表，可通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)、[批量查询员工薪资档案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/archive/query)等接口返回的 `currency_id` 字段获取
//
// 示例值：
func (builder *SearchBasicInfoCurrencyPathReqBodyBuilder) CurrencyIdList(currencyIdList []string) *SearchBasicInfoCurrencyPathReqBodyBuilder {
	builder.currencyIdList = currencyIdList
	builder.currencyIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoCurrencyPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoCurrencyPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoCurrencyPathReqBodyBuilder) Build() (*SearchBasicInfoCurrencyReqBody, error) {
	req := &SearchBasicInfoCurrencyReqBody{}
	if builder.currencyIdListFlag {
		req.CurrencyIdList = builder.currencyIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoCurrencyReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoCurrencyReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoCurrencyReqBuilder() *SearchBasicInfoCurrencyReqBuilder {
	builder := &SearchBasicInfoCurrencyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoCurrencyReqBuilder) Limit(limit int) *SearchBasicInfoCurrencyReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoCurrencyReqBuilder) PageSize(pageSize int) *SearchBasicInfoCurrencyReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchBasicInfoCurrencyReqBuilder) PageToken(pageToken string) *SearchBasicInfoCurrencyReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoCurrencyReqBuilder) Body(body *SearchBasicInfoCurrencyReqBody) *SearchBasicInfoCurrencyReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoCurrencyReqBuilder) Build() *SearchBasicInfoCurrencyReq {
	req := &SearchBasicInfoCurrencyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoCurrencyReqBody struct {
	CurrencyIdList []string `json:"currency_id_list,omitempty"` // 货币 ID 列表，可通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)、[批量查询员工薪资档案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/archive/query)等接口返回的 `currency_id` 字段获取

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoCurrencyReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoCurrencyReqBody `body:""`
	Limit  int                             // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoCurrencyRespData struct {
	Items []*Currency `json:"items,omitempty"` // 查询到的货币信息列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoCurrencyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoCurrencyRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoCurrencyResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoDistrictReqBodyBuilder struct {
	cityIdList     []string // 所属城市 ID 列表，可通过[查询城市信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-city/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_v2_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_v2_id` 等字段中获取
	cityIdListFlag bool

	districtIdList     []string // 区/县 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.district_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.district_id_v2` 等字段中获取
	districtIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoDistrictReqBodyBuilder() *SearchBasicInfoDistrictReqBodyBuilder {
	builder := &SearchBasicInfoDistrictReqBodyBuilder{}
	return builder
}

// 所属城市 ID 列表，可通过[查询城市信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-city/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_v2_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_v2_id` 等字段中获取
//
//示例值：
func (builder *SearchBasicInfoDistrictReqBodyBuilder) CityIdList(cityIdList []string) *SearchBasicInfoDistrictReqBodyBuilder {
	builder.cityIdList = cityIdList
	builder.cityIdListFlag = true
	return builder
}

// 区/县 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.district_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.district_id_v2` 等字段中获取
//
//示例值：
func (builder *SearchBasicInfoDistrictReqBodyBuilder) DistrictIdList(districtIdList []string) *SearchBasicInfoDistrictReqBodyBuilder {
	builder.districtIdList = districtIdList
	builder.districtIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoDistrictReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoDistrictReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoDistrictReqBodyBuilder) Build() *SearchBasicInfoDistrictReqBody {
	req := &SearchBasicInfoDistrictReqBody{}
	if builder.cityIdListFlag {
		req.CityIdList = builder.cityIdList
	}
	if builder.districtIdListFlag {
		req.DistrictIdList = builder.districtIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoDistrictPathReqBodyBuilder struct {
	cityIdList         []string
	cityIdListFlag     bool
	districtIdList     []string
	districtIdListFlag bool
	statusList         []int
	statusListFlag     bool
}

func NewSearchBasicInfoDistrictPathReqBodyBuilder() *SearchBasicInfoDistrictPathReqBodyBuilder {
	builder := &SearchBasicInfoDistrictPathReqBodyBuilder{}
	return builder
}

// 所属城市 ID 列表，可通过[查询城市信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-city/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_v2_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_v2_id` 等字段中获取
//
// 示例值：
func (builder *SearchBasicInfoDistrictPathReqBodyBuilder) CityIdList(cityIdList []string) *SearchBasicInfoDistrictPathReqBodyBuilder {
	builder.cityIdList = cityIdList
	builder.cityIdListFlag = true
	return builder
}

// 区/县 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.district_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.district_id_v2` 等字段中获取
//
// 示例值：
func (builder *SearchBasicInfoDistrictPathReqBodyBuilder) DistrictIdList(districtIdList []string) *SearchBasicInfoDistrictPathReqBodyBuilder {
	builder.districtIdList = districtIdList
	builder.districtIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoDistrictPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoDistrictPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoDistrictPathReqBodyBuilder) Build() (*SearchBasicInfoDistrictReqBody, error) {
	req := &SearchBasicInfoDistrictReqBody{}
	if builder.cityIdListFlag {
		req.CityIdList = builder.cityIdList
	}
	if builder.districtIdListFlag {
		req.DistrictIdList = builder.districtIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoDistrictReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoDistrictReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoDistrictReqBuilder() *SearchBasicInfoDistrictReqBuilder {
	builder := &SearchBasicInfoDistrictReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoDistrictReqBuilder) Limit(limit int) *SearchBasicInfoDistrictReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoDistrictReqBuilder) PageSize(pageSize int) *SearchBasicInfoDistrictReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6863333352758314504
func (builder *SearchBasicInfoDistrictReqBuilder) PageToken(pageToken string) *SearchBasicInfoDistrictReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoDistrictReqBuilder) Body(body *SearchBasicInfoDistrictReqBody) *SearchBasicInfoDistrictReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoDistrictReqBuilder) Build() *SearchBasicInfoDistrictReq {
	req := &SearchBasicInfoDistrictReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoDistrictReqBody struct {
	CityIdList []string `json:"city_id_list,omitempty"` // 所属城市 ID 列表，可通过[查询城市信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-city/search)接口列举，或从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.city_v2_id`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.city_v2_id` 等字段中获取

	DistrictIdList []string `json:"district_id_list,omitempty"` // 区/县 ID 列表，可从[批量查询地点](https://open.feishu.cn/document/server-docs/corehr-v1/organization-management/location/list)接口返回的 `location.address.district_id_v2`、[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.address_list.district_id_v2` 等字段中获取

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoDistrictReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoDistrictReqBody `body:""`
	Limit  int                             // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoDistrictRespData struct {
	Items []*District `json:"items,omitempty"` // 查询到的区/县列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoDistrictResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoDistrictRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoDistrictResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoLanguageReqBodyBuilder struct {
	languageIdList     []string // 语言 ID 列表
	languageIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoLanguageReqBodyBuilder() *SearchBasicInfoLanguageReqBodyBuilder {
	builder := &SearchBasicInfoLanguageReqBodyBuilder{}
	return builder
}

// 语言 ID 列表
//
//示例值：
func (builder *SearchBasicInfoLanguageReqBodyBuilder) LanguageIdList(languageIdList []string) *SearchBasicInfoLanguageReqBodyBuilder {
	builder.languageIdList = languageIdList
	builder.languageIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoLanguageReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoLanguageReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoLanguageReqBodyBuilder) Build() *SearchBasicInfoLanguageReqBody {
	req := &SearchBasicInfoLanguageReqBody{}
	if builder.languageIdListFlag {
		req.LanguageIdList = builder.languageIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoLanguagePathReqBodyBuilder struct {
	languageIdList     []string
	languageIdListFlag bool
	statusList         []int
	statusListFlag     bool
}

func NewSearchBasicInfoLanguagePathReqBodyBuilder() *SearchBasicInfoLanguagePathReqBodyBuilder {
	builder := &SearchBasicInfoLanguagePathReqBodyBuilder{}
	return builder
}

// 语言 ID 列表
//
// 示例值：
func (builder *SearchBasicInfoLanguagePathReqBodyBuilder) LanguageIdList(languageIdList []string) *SearchBasicInfoLanguagePathReqBodyBuilder {
	builder.languageIdList = languageIdList
	builder.languageIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoLanguagePathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoLanguagePathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoLanguagePathReqBodyBuilder) Build() (*SearchBasicInfoLanguageReqBody, error) {
	req := &SearchBasicInfoLanguageReqBody{}
	if builder.languageIdListFlag {
		req.LanguageIdList = builder.languageIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoLanguageReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoLanguageReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoLanguageReqBuilder() *SearchBasicInfoLanguageReqBuilder {
	builder := &SearchBasicInfoLanguageReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoLanguageReqBuilder) Limit(limit int) *SearchBasicInfoLanguageReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoLanguageReqBuilder) PageSize(pageSize int) *SearchBasicInfoLanguageReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6862995772275688974
func (builder *SearchBasicInfoLanguageReqBuilder) PageToken(pageToken string) *SearchBasicInfoLanguageReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoLanguageReqBuilder) Body(body *SearchBasicInfoLanguageReqBody) *SearchBasicInfoLanguageReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoLanguageReqBuilder) Build() *SearchBasicInfoLanguageReq {
	req := &SearchBasicInfoLanguageReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoLanguageReqBody struct {
	LanguageIdList []string `json:"language_id_list,omitempty"` // 语言 ID 列表

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoLanguageReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoLanguageReqBody `body:""`
	Limit  int                             // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoLanguageRespData struct {
	Items []*Language `json:"items,omitempty"` // 查询到的语言列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoLanguageResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoLanguageRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoLanguageResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoNationalityReqBodyBuilder struct {
	nationalityIdList     []string // 国籍 ID 列表，可从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.nationality_id_v2` 等字段中获取
	nationalityIdListFlag bool

	countryRegionIdList     []string // 国家/地区 ID 列表，可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口列举
	countryRegionIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoNationalityReqBodyBuilder() *SearchBasicInfoNationalityReqBodyBuilder {
	builder := &SearchBasicInfoNationalityReqBodyBuilder{}
	return builder
}

// 国籍 ID 列表，可从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.nationality_id_v2` 等字段中获取
//
//示例值：
func (builder *SearchBasicInfoNationalityReqBodyBuilder) NationalityIdList(nationalityIdList []string) *SearchBasicInfoNationalityReqBodyBuilder {
	builder.nationalityIdList = nationalityIdList
	builder.nationalityIdListFlag = true
	return builder
}

// 国家/地区 ID 列表，可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口列举
//
//示例值：
func (builder *SearchBasicInfoNationalityReqBodyBuilder) CountryRegionIdList(countryRegionIdList []string) *SearchBasicInfoNationalityReqBodyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoNationalityReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoNationalityReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoNationalityReqBodyBuilder) Build() *SearchBasicInfoNationalityReqBody {
	req := &SearchBasicInfoNationalityReqBody{}
	if builder.nationalityIdListFlag {
		req.NationalityIdList = builder.nationalityIdList
	}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoNationalityPathReqBodyBuilder struct {
	nationalityIdList       []string
	nationalityIdListFlag   bool
	countryRegionIdList     []string
	countryRegionIdListFlag bool
	statusList              []int
	statusListFlag          bool
}

func NewSearchBasicInfoNationalityPathReqBodyBuilder() *SearchBasicInfoNationalityPathReqBodyBuilder {
	builder := &SearchBasicInfoNationalityPathReqBodyBuilder{}
	return builder
}

// 国籍 ID 列表，可从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.nationality_id_v2` 等字段中获取
//
// 示例值：
func (builder *SearchBasicInfoNationalityPathReqBodyBuilder) NationalityIdList(nationalityIdList []string) *SearchBasicInfoNationalityPathReqBodyBuilder {
	builder.nationalityIdList = nationalityIdList
	builder.nationalityIdListFlag = true
	return builder
}

// 国家/地区 ID 列表，可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口列举
//
// 示例值：
func (builder *SearchBasicInfoNationalityPathReqBodyBuilder) CountryRegionIdList(countryRegionIdList []string) *SearchBasicInfoNationalityPathReqBodyBuilder {
	builder.countryRegionIdList = countryRegionIdList
	builder.countryRegionIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoNationalityPathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoNationalityPathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoNationalityPathReqBodyBuilder) Build() (*SearchBasicInfoNationalityReqBody, error) {
	req := &SearchBasicInfoNationalityReqBody{}
	if builder.nationalityIdListFlag {
		req.NationalityIdList = builder.nationalityIdList
	}
	if builder.countryRegionIdListFlag {
		req.CountryRegionIdList = builder.countryRegionIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoNationalityReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoNationalityReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoNationalityReqBuilder() *SearchBasicInfoNationalityReqBuilder {
	builder := &SearchBasicInfoNationalityReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoNationalityReqBuilder) Limit(limit int) *SearchBasicInfoNationalityReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoNationalityReqBuilder) PageSize(pageSize int) *SearchBasicInfoNationalityReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：7075702743846897196
func (builder *SearchBasicInfoNationalityReqBuilder) PageToken(pageToken string) *SearchBasicInfoNationalityReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoNationalityReqBuilder) Body(body *SearchBasicInfoNationalityReqBody) *SearchBasicInfoNationalityReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoNationalityReqBuilder) Build() *SearchBasicInfoNationalityReq {
	req := &SearchBasicInfoNationalityReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoNationalityReqBody struct {
	NationalityIdList []string `json:"nationality_id_list,omitempty"` // 国籍 ID 列表，可从[搜索员工信息](https://open.feishu.cn/document/server-docs/corehr-v1/employee/search)接口返回的 `person_info.nationality_id_v2` 等字段中获取

	CountryRegionIdList []string `json:"country_region_id_list,omitempty"` // 国家/地区 ID 列表，可通过[查询国家/地区信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search)接口列举

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoNationalityReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoNationalityReqBody `body:""`
	Limit  int                                // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoNationalityRespData struct {
	Items []*Nationality `json:"items,omitempty"` // 查询到的国籍列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoNationalityResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoNationalityRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoNationalityResp) Success() bool {
	return resp.Code == 0
}

type SearchBasicInfoTimeZoneReqBodyBuilder struct {
	timeZoneIdList     []string // 时区 ID 列表
	timeZoneIdListFlag bool

	statusList     []int // 状态列表
	statusListFlag bool
}

func NewSearchBasicInfoTimeZoneReqBodyBuilder() *SearchBasicInfoTimeZoneReqBodyBuilder {
	builder := &SearchBasicInfoTimeZoneReqBodyBuilder{}
	return builder
}

// 时区 ID 列表
//
//示例值：
func (builder *SearchBasicInfoTimeZoneReqBodyBuilder) TimeZoneIdList(timeZoneIdList []string) *SearchBasicInfoTimeZoneReqBodyBuilder {
	builder.timeZoneIdList = timeZoneIdList
	builder.timeZoneIdListFlag = true
	return builder
}

// 状态列表
//
//示例值：
func (builder *SearchBasicInfoTimeZoneReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoTimeZoneReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoTimeZoneReqBodyBuilder) Build() *SearchBasicInfoTimeZoneReqBody {
	req := &SearchBasicInfoTimeZoneReqBody{}
	if builder.timeZoneIdListFlag {
		req.TimeZoneIdList = builder.timeZoneIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req
}

type SearchBasicInfoTimeZonePathReqBodyBuilder struct {
	timeZoneIdList     []string
	timeZoneIdListFlag bool
	statusList         []int
	statusListFlag     bool
}

func NewSearchBasicInfoTimeZonePathReqBodyBuilder() *SearchBasicInfoTimeZonePathReqBodyBuilder {
	builder := &SearchBasicInfoTimeZonePathReqBodyBuilder{}
	return builder
}

// 时区 ID 列表
//
// 示例值：
func (builder *SearchBasicInfoTimeZonePathReqBodyBuilder) TimeZoneIdList(timeZoneIdList []string) *SearchBasicInfoTimeZonePathReqBodyBuilder {
	builder.timeZoneIdList = timeZoneIdList
	builder.timeZoneIdListFlag = true
	return builder
}

// 状态列表
//
// 示例值：
func (builder *SearchBasicInfoTimeZonePathReqBodyBuilder) StatusList(statusList []int) *SearchBasicInfoTimeZonePathReqBodyBuilder {
	builder.statusList = statusList
	builder.statusListFlag = true
	return builder
}

func (builder *SearchBasicInfoTimeZonePathReqBodyBuilder) Build() (*SearchBasicInfoTimeZoneReqBody, error) {
	req := &SearchBasicInfoTimeZoneReqBody{}
	if builder.timeZoneIdListFlag {
		req.TimeZoneIdList = builder.timeZoneIdList
	}
	if builder.statusListFlag {
		req.StatusList = builder.statusList
	}
	return req, nil
}

type SearchBasicInfoTimeZoneReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchBasicInfoTimeZoneReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchBasicInfoTimeZoneReqBuilder() *SearchBasicInfoTimeZoneReqBuilder {
	builder := &SearchBasicInfoTimeZoneReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchBasicInfoTimeZoneReqBuilder) Limit(limit int) *SearchBasicInfoTimeZoneReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchBasicInfoTimeZoneReqBuilder) PageSize(pageSize int) *SearchBasicInfoTimeZoneReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6862995772275688974
func (builder *SearchBasicInfoTimeZoneReqBuilder) PageToken(pageToken string) *SearchBasicInfoTimeZoneReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

//
func (builder *SearchBasicInfoTimeZoneReqBuilder) Body(body *SearchBasicInfoTimeZoneReqBody) *SearchBasicInfoTimeZoneReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchBasicInfoTimeZoneReqBuilder) Build() *SearchBasicInfoTimeZoneReq {
	req := &SearchBasicInfoTimeZoneReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchBasicInfoTimeZoneReqBody struct {
	TimeZoneIdList []string `json:"time_zone_id_list,omitempty"` // 时区 ID 列表

	StatusList []int `json:"status_list,omitempty"` // 状态列表
}

type SearchBasicInfoTimeZoneReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchBasicInfoTimeZoneReqBody `body:""`
	Limit  int                             // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchBasicInfoTimeZoneRespData struct {
	Items []*TimeZone `json:"items,omitempty"` // 查询到的时区列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type SearchBasicInfoTimeZoneResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchBasicInfoTimeZoneRespData `json:"data"` // 业务数据
}

func (resp *SearchBasicInfoTimeZoneResp) Success() bool {
	return resp.Code == 0
}

type GetByDepartmentBpReqBodyBuilder struct {
	departmentId     string // 部门 ID
	departmentIdFlag bool
}

func NewGetByDepartmentBpReqBodyBuilder() *GetByDepartmentBpReqBodyBuilder {
	builder := &GetByDepartmentBpReqBodyBuilder{}
	return builder
}

// 部门 ID
//
//示例值：6893014062142064111
func (builder *GetByDepartmentBpReqBodyBuilder) DepartmentId(departmentId string) *GetByDepartmentBpReqBodyBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

func (builder *GetByDepartmentBpReqBodyBuilder) Build() *GetByDepartmentBpReqBody {
	req := &GetByDepartmentBpReqBody{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId
	}
	return req
}

type GetByDepartmentBpPathReqBodyBuilder struct {
	departmentId     string
	departmentIdFlag bool
}

func NewGetByDepartmentBpPathReqBodyBuilder() *GetByDepartmentBpPathReqBodyBuilder {
	builder := &GetByDepartmentBpPathReqBodyBuilder{}
	return builder
}

// 部门 ID
//
// 示例值：6893014062142064111
func (builder *GetByDepartmentBpPathReqBodyBuilder) DepartmentId(departmentId string) *GetByDepartmentBpPathReqBodyBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

func (builder *GetByDepartmentBpPathReqBodyBuilder) Build() (*GetByDepartmentBpReqBody, error) {
	req := &GetByDepartmentBpReqBody{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId
	}
	return req, nil
}

type GetByDepartmentBpReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *GetByDepartmentBpReqBody
}

func NewGetByDepartmentBpReqBuilder() *GetByDepartmentBpReqBuilder {
	builder := &GetByDepartmentBpReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *GetByDepartmentBpReqBuilder) UserIdType(userIdType string) *GetByDepartmentBpReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *GetByDepartmentBpReqBuilder) DepartmentIdType(departmentIdType string) *GetByDepartmentBpReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *GetByDepartmentBpReqBuilder) Body(body *GetByDepartmentBpReqBody) *GetByDepartmentBpReqBuilder {
	builder.body = body
	return builder
}

func (builder *GetByDepartmentBpReqBuilder) Build() *GetByDepartmentBpReq {
	req := &GetByDepartmentBpReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type GetByDepartmentBpReqBody struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID
}

type GetByDepartmentBpReq struct {
	apiReq *larkcore.ApiReq
	Body   *GetByDepartmentBpReqBody `body:""`
}

type GetByDepartmentBpRespData struct {
	Items []*DepartmentHrbp `json:"items,omitempty"` // 部门 HRBP 信息，依次为部门及各层级上级部门
}

type GetByDepartmentBpResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetByDepartmentBpRespData `json:"data"` // 业务数据
}

func (resp *GetByDepartmentBpResp) Success() bool {
	return resp.Code == 0
}

type ListBpReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListBpReqBuilder() *ListBpReqBuilder {
	builder := &ListBpReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListBpReqBuilder) Limit(limit int) *ListBpReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 500
//
// 示例值：500
func (builder *ListBpReqBuilder) PageSize(pageSize int) *ListBpReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *ListBpReqBuilder) PageToken(pageToken string) *ListBpReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *ListBpReqBuilder) UserIdType(userIdType string) *ListBpReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *ListBpReqBuilder) DepartmentIdType(departmentIdType string) *ListBpReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *ListBpReqBuilder) Build() *ListBpReq {
	req := &ListBpReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListBpReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListBpRespData struct {
	Items []*Bp `json:"items,omitempty"` // HRBP 信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type ListBpResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListBpRespData `json:"data"` // 业务数据
}

func (resp *ListBpResp) Success() bool {
	return resp.Code == 0
}

type ActiveCompanyReqBodyBuilder struct {
	companyId     string // 公司ID
	companyIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	active     bool // 启用停用状态
	activeFlag bool

	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewActiveCompanyReqBodyBuilder() *ActiveCompanyReqBodyBuilder {
	builder := &ActiveCompanyReqBodyBuilder{}
	return builder
}

// 公司ID
//
//示例值：1616161616
func (builder *ActiveCompanyReqBodyBuilder) CompanyId(companyId string) *ActiveCompanyReqBodyBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 生效时间
//
//示例值：2020-01-01
func (builder *ActiveCompanyReqBodyBuilder) EffectiveTime(effectiveTime string) *ActiveCompanyReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启用停用状态
//
//示例值：true
func (builder *ActiveCompanyReqBodyBuilder) Active(active bool) *ActiveCompanyReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
//示例值：业务操作
func (builder *ActiveCompanyReqBodyBuilder) OperationReason(operationReason string) *ActiveCompanyReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *ActiveCompanyReqBodyBuilder) Build() *ActiveCompanyReqBody {
	req := &ActiveCompanyReqBody{}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req
}

type ActiveCompanyPathReqBodyBuilder struct {
	companyId           string
	companyIdFlag       bool
	effectiveTime       string
	effectiveTimeFlag   bool
	active              bool
	activeFlag          bool
	operationReason     string
	operationReasonFlag bool
}

func NewActiveCompanyPathReqBodyBuilder() *ActiveCompanyPathReqBodyBuilder {
	builder := &ActiveCompanyPathReqBodyBuilder{}
	return builder
}

// 公司ID
//
// 示例值：1616161616
func (builder *ActiveCompanyPathReqBodyBuilder) CompanyId(companyId string) *ActiveCompanyPathReqBodyBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *ActiveCompanyPathReqBodyBuilder) EffectiveTime(effectiveTime string) *ActiveCompanyPathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启用停用状态
//
// 示例值：true
func (builder *ActiveCompanyPathReqBodyBuilder) Active(active bool) *ActiveCompanyPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
// 示例值：业务操作
func (builder *ActiveCompanyPathReqBodyBuilder) OperationReason(operationReason string) *ActiveCompanyPathReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *ActiveCompanyPathReqBodyBuilder) Build() (*ActiveCompanyReqBody, error) {
	req := &ActiveCompanyReqBody{}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req, nil
}

type ActiveCompanyReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ActiveCompanyReqBody
}

func NewActiveCompanyReqBuilder() *ActiveCompanyReqBuilder {
	builder := &ActiveCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *ActiveCompanyReqBuilder) Body(body *ActiveCompanyReqBody) *ActiveCompanyReqBuilder {
	builder.body = body
	return builder
}

func (builder *ActiveCompanyReqBuilder) Build() *ActiveCompanyReq {
	req := &ActiveCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type ActiveCompanyReqBody struct {
	CompanyId *string `json:"company_id,omitempty"` // 公司ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	Active *bool `json:"active,omitempty"` // 启用停用状态

	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type ActiveCompanyReq struct {
	apiReq *larkcore.ApiReq
	Body   *ActiveCompanyReqBody `body:""`
}

type ActiveCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *ActiveCompanyResp) Success() bool {
	return resp.Code == 0
}

type BatchGetCompanyReqBodyBuilder struct {
	companyIds     []string // 公司 ID 列表
	companyIdsFlag bool
}

func NewBatchGetCompanyReqBodyBuilder() *BatchGetCompanyReqBodyBuilder {
	builder := &BatchGetCompanyReqBodyBuilder{}
	return builder
}

// 公司 ID 列表
//
//示例值：
func (builder *BatchGetCompanyReqBodyBuilder) CompanyIds(companyIds []string) *BatchGetCompanyReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

func (builder *BatchGetCompanyReqBodyBuilder) Build() *BatchGetCompanyReqBody {
	req := &BatchGetCompanyReqBody{}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	return req
}

type BatchGetCompanyPathReqBodyBuilder struct {
	companyIds     []string
	companyIdsFlag bool
}

func NewBatchGetCompanyPathReqBodyBuilder() *BatchGetCompanyPathReqBodyBuilder {
	builder := &BatchGetCompanyPathReqBodyBuilder{}
	return builder
}

// 公司 ID 列表
//
// 示例值：
func (builder *BatchGetCompanyPathReqBodyBuilder) CompanyIds(companyIds []string) *BatchGetCompanyPathReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

func (builder *BatchGetCompanyPathReqBodyBuilder) Build() (*BatchGetCompanyReqBody, error) {
	req := &BatchGetCompanyReqBody{}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	return req, nil
}

type BatchGetCompanyReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetCompanyReqBody
}

func NewBatchGetCompanyReqBuilder() *BatchGetCompanyReqBuilder {
	builder := &BatchGetCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 通过公司 ID 批量获取公司信息
func (builder *BatchGetCompanyReqBuilder) Body(body *BatchGetCompanyReqBody) *BatchGetCompanyReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetCompanyReqBuilder) Build() *BatchGetCompanyReq {
	req := &BatchGetCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchGetCompanyReqBody struct {
	CompanyIds []string `json:"company_ids,omitempty"` // 公司 ID 列表
}

type BatchGetCompanyReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetCompanyReqBody `body:""`
}

type BatchGetCompanyRespData struct {
	Items []*Company `json:"items,omitempty"` // 查询的公司信息
}

type BatchGetCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetCompanyRespData `json:"data"` // 业务数据
}

func (resp *BatchGetCompanyResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeCompanyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeCompanyReqBuilder() *QueryRecentChangeCompanyReqBuilder {
	builder := &QueryRecentChangeCompanyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeCompanyReqBuilder) PageSize(pageSize int) *QueryRecentChangeCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeCompanyReqBuilder) PageToken(pageToken string) *QueryRecentChangeCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeCompanyReqBuilder) StartDate(startDate string) *QueryRecentChangeCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeCompanyReqBuilder) EndDate(endDate string) *QueryRecentChangeCompanyReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeCompanyReqBuilder) Build() *QueryRecentChangeCompanyReq {
	req := &QueryRecentChangeCompanyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeCompanyReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeCompanyRespData struct {
	CompanyIds []string `json:"company_ids,omitempty"` // 公司 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedCompanyIds []string `json:"deleted_company_ids,omitempty"` // 删除的公司 ID 列表
}

type QueryRecentChangeCompanyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeCompanyRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeCompanyResp) Success() bool {
	return resp.Code == 0
}

type SearchContractReqBodyBuilder struct {
	employmentIdList     []string // 雇佣 ID 列表
	employmentIdListFlag bool

	contractIdList     []string // 合同ID列表
	contractIdListFlag bool
}

func NewSearchContractReqBodyBuilder() *SearchContractReqBodyBuilder {
	builder := &SearchContractReqBodyBuilder{}
	return builder
}

// 雇佣 ID 列表
//
//示例值：
func (builder *SearchContractReqBodyBuilder) EmploymentIdList(employmentIdList []string) *SearchContractReqBodyBuilder {
	builder.employmentIdList = employmentIdList
	builder.employmentIdListFlag = true
	return builder
}

// 合同ID列表
//
//示例值：
func (builder *SearchContractReqBodyBuilder) ContractIdList(contractIdList []string) *SearchContractReqBodyBuilder {
	builder.contractIdList = contractIdList
	builder.contractIdListFlag = true
	return builder
}

func (builder *SearchContractReqBodyBuilder) Build() *SearchContractReqBody {
	req := &SearchContractReqBody{}
	if builder.employmentIdListFlag {
		req.EmploymentIdList = builder.employmentIdList
	}
	if builder.contractIdListFlag {
		req.ContractIdList = builder.contractIdList
	}
	return req
}

type SearchContractPathReqBodyBuilder struct {
	employmentIdList     []string
	employmentIdListFlag bool
	contractIdList       []string
	contractIdListFlag   bool
}

func NewSearchContractPathReqBodyBuilder() *SearchContractPathReqBodyBuilder {
	builder := &SearchContractPathReqBodyBuilder{}
	return builder
}

// 雇佣 ID 列表
//
// 示例值：
func (builder *SearchContractPathReqBodyBuilder) EmploymentIdList(employmentIdList []string) *SearchContractPathReqBodyBuilder {
	builder.employmentIdList = employmentIdList
	builder.employmentIdListFlag = true
	return builder
}

// 合同ID列表
//
// 示例值：
func (builder *SearchContractPathReqBodyBuilder) ContractIdList(contractIdList []string) *SearchContractPathReqBodyBuilder {
	builder.contractIdList = contractIdList
	builder.contractIdListFlag = true
	return builder
}

func (builder *SearchContractPathReqBodyBuilder) Build() (*SearchContractReqBody, error) {
	req := &SearchContractReqBody{}
	if builder.employmentIdListFlag {
		req.EmploymentIdList = builder.employmentIdList
	}
	if builder.contractIdListFlag {
		req.ContractIdList = builder.contractIdList
	}
	return req, nil
}

type SearchContractReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchContractReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchContractReqBuilder() *SearchContractReqBuilder {
	builder := &SearchContractReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchContractReqBuilder) Limit(limit int) *SearchContractReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchContractReqBuilder) PageSize(pageSize int) *SearchContractReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchContractReqBuilder) PageToken(pageToken string) *SearchContractReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SearchContractReqBuilder) UserIdType(userIdType string) *SearchContractReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 根据合同 ID 、雇佣 ID 查询合同信息
func (builder *SearchContractReqBuilder) Body(body *SearchContractReqBody) *SearchContractReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchContractReqBuilder) Build() *SearchContractReq {
	req := &SearchContractReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchContractReqBody struct {
	EmploymentIdList []string `json:"employment_id_list,omitempty"` // 雇佣 ID 列表

	ContractIdList []string `json:"contract_id_list,omitempty"` // 合同ID列表
}

type SearchContractReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchContractReqBody `body:""`
	Limit  int                    // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchContractRespData struct {
	Items []*Contract `json:"items,omitempty"` // 查询的合同信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchContractResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchContractRespData `json:"data"` // 业务数据
}

func (resp *SearchContractResp) Success() bool {
	return resp.Code == 0
}

type BatchQueryCostAllocationReqBodyBuilder struct {
	employmentIds     []string // 员工ID列表
	employmentIdsFlag bool
}

func NewBatchQueryCostAllocationReqBodyBuilder() *BatchQueryCostAllocationReqBodyBuilder {
	builder := &BatchQueryCostAllocationReqBodyBuilder{}
	return builder
}

// 员工ID列表
//
//示例值：
func (builder *BatchQueryCostAllocationReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchQueryCostAllocationReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

func (builder *BatchQueryCostAllocationReqBodyBuilder) Build() *BatchQueryCostAllocationReqBody {
	req := &BatchQueryCostAllocationReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	return req
}

type BatchQueryCostAllocationPathReqBodyBuilder struct {
	employmentIds     []string
	employmentIdsFlag bool
}

func NewBatchQueryCostAllocationPathReqBodyBuilder() *BatchQueryCostAllocationPathReqBodyBuilder {
	builder := &BatchQueryCostAllocationPathReqBodyBuilder{}
	return builder
}

// 员工ID列表
//
// 示例值：
func (builder *BatchQueryCostAllocationPathReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchQueryCostAllocationPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

func (builder *BatchQueryCostAllocationPathReqBodyBuilder) Build() (*BatchQueryCostAllocationReqBody, error) {
	req := &BatchQueryCostAllocationReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	return req, nil
}

type BatchQueryCostAllocationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchQueryCostAllocationReqBody
}

func NewBatchQueryCostAllocationReqBuilder() *BatchQueryCostAllocationReqBuilder {
	builder := &BatchQueryCostAllocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchQueryCostAllocationReqBuilder) UserIdType(userIdType string) *BatchQueryCostAllocationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 通过员工ID批量获取通道信息
func (builder *BatchQueryCostAllocationReqBuilder) Body(body *BatchQueryCostAllocationReqBody) *BatchQueryCostAllocationReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchQueryCostAllocationReqBuilder) Build() *BatchQueryCostAllocationReq {
	req := &BatchQueryCostAllocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchQueryCostAllocationReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 员工ID列表
}

type BatchQueryCostAllocationReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchQueryCostAllocationReqBody `body:""`
}

type BatchQueryCostAllocationRespData struct {
	Items []*EmployeeCostAllocation `json:"items,omitempty"` // 查询到的成本分摊信息
}

type BatchQueryCostAllocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchQueryCostAllocationRespData `json:"data"` // 业务数据
}

func (resp *BatchQueryCostAllocationResp) Success() bool {
	return resp.Code == 0
}

type CreateVersionCostAllocationReqBodyBuilder struct {
	employmentId     string // 员工雇佣 ID
	employmentIdFlag bool

	costAllocation     *EmploymentCostAllocation // 成本分摊
	costAllocationFlag bool
}

func NewCreateVersionCostAllocationReqBodyBuilder() *CreateVersionCostAllocationReqBodyBuilder {
	builder := &CreateVersionCostAllocationReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
//示例值：6862995757234914821
func (builder *CreateVersionCostAllocationReqBodyBuilder) EmploymentId(employmentId string) *CreateVersionCostAllocationReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本分摊
//
//示例值：
func (builder *CreateVersionCostAllocationReqBodyBuilder) CostAllocation(costAllocation *EmploymentCostAllocation) *CreateVersionCostAllocationReqBodyBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

func (builder *CreateVersionCostAllocationReqBodyBuilder) Build() *CreateVersionCostAllocationReqBody {
	req := &CreateVersionCostAllocationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	return req
}

type CreateVersionCostAllocationPathReqBodyBuilder struct {
	employmentId       string
	employmentIdFlag   bool
	costAllocation     *EmploymentCostAllocation
	costAllocationFlag bool
}

func NewCreateVersionCostAllocationPathReqBodyBuilder() *CreateVersionCostAllocationPathReqBodyBuilder {
	builder := &CreateVersionCostAllocationPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
// 示例值：6862995757234914821
func (builder *CreateVersionCostAllocationPathReqBodyBuilder) EmploymentId(employmentId string) *CreateVersionCostAllocationPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *CreateVersionCostAllocationPathReqBodyBuilder) CostAllocation(costAllocation *EmploymentCostAllocation) *CreateVersionCostAllocationPathReqBodyBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

func (builder *CreateVersionCostAllocationPathReqBodyBuilder) Build() (*CreateVersionCostAllocationReqBody, error) {
	req := &CreateVersionCostAllocationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	return req, nil
}

type CreateVersionCostAllocationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateVersionCostAllocationReqBody
}

func NewCreateVersionCostAllocationReqBuilder() *CreateVersionCostAllocationReqBuilder {
	builder := &CreateVersionCostAllocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *CreateVersionCostAllocationReqBuilder) UserIdType(userIdType string) *CreateVersionCostAllocationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateVersionCostAllocationReqBuilder) ClientToken(clientToken string) *CreateVersionCostAllocationReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建成本分摊
func (builder *CreateVersionCostAllocationReqBuilder) Body(body *CreateVersionCostAllocationReqBody) *CreateVersionCostAllocationReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateVersionCostAllocationReqBuilder) Build() *CreateVersionCostAllocationReq {
	req := &CreateVersionCostAllocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateVersionCostAllocationReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	CostAllocation *EmploymentCostAllocation `json:"cost_allocation,omitempty"` // 成本分摊
}

type CreateVersionCostAllocationReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateVersionCostAllocationReqBody `body:""`
}

type CreateVersionCostAllocationRespData struct {
	CostAllocationId *string `json:"cost_allocation_id,omitempty"` // 成本分摊ID
}

type CreateVersionCostAllocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateVersionCostAllocationRespData `json:"data"` // 业务数据
}

func (resp *CreateVersionCostAllocationResp) Success() bool {
	return resp.Code == 0
}

type RemoveVersionCostAllocationReqBodyBuilder struct {
	employmentId     string // 员工ID
	employmentIdFlag bool

	costAllocation     *EmploymentCostAllocation // 成本分摊
	costAllocationFlag bool
}

func NewRemoveVersionCostAllocationReqBodyBuilder() *RemoveVersionCostAllocationReqBodyBuilder {
	builder := &RemoveVersionCostAllocationReqBodyBuilder{}
	return builder
}

// 员工ID
//
//示例值：7862995757234914824
func (builder *RemoveVersionCostAllocationReqBodyBuilder) EmploymentId(employmentId string) *RemoveVersionCostAllocationReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本分摊
//
//示例值：
func (builder *RemoveVersionCostAllocationReqBodyBuilder) CostAllocation(costAllocation *EmploymentCostAllocation) *RemoveVersionCostAllocationReqBodyBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

func (builder *RemoveVersionCostAllocationReqBodyBuilder) Build() *RemoveVersionCostAllocationReqBody {
	req := &RemoveVersionCostAllocationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	return req
}

type RemoveVersionCostAllocationPathReqBodyBuilder struct {
	employmentId       string
	employmentIdFlag   bool
	costAllocation     *EmploymentCostAllocation
	costAllocationFlag bool
}

func NewRemoveVersionCostAllocationPathReqBodyBuilder() *RemoveVersionCostAllocationPathReqBodyBuilder {
	builder := &RemoveVersionCostAllocationPathReqBodyBuilder{}
	return builder
}

// 员工ID
//
// 示例值：7862995757234914824
func (builder *RemoveVersionCostAllocationPathReqBodyBuilder) EmploymentId(employmentId string) *RemoveVersionCostAllocationPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *RemoveVersionCostAllocationPathReqBodyBuilder) CostAllocation(costAllocation *EmploymentCostAllocation) *RemoveVersionCostAllocationPathReqBodyBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

func (builder *RemoveVersionCostAllocationPathReqBodyBuilder) Build() (*RemoveVersionCostAllocationReqBody, error) {
	req := &RemoveVersionCostAllocationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	return req, nil
}

type RemoveVersionCostAllocationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RemoveVersionCostAllocationReqBody
}

func NewRemoveVersionCostAllocationReqBuilder() *RemoveVersionCostAllocationReqBuilder {
	builder := &RemoveVersionCostAllocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *RemoveVersionCostAllocationReqBuilder) UserIdType(userIdType string) *RemoveVersionCostAllocationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *RemoveVersionCostAllocationReqBuilder) ClientToken(clientToken string) *RemoveVersionCostAllocationReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 删除成本分摊
func (builder *RemoveVersionCostAllocationReqBuilder) Body(body *RemoveVersionCostAllocationReqBody) *RemoveVersionCostAllocationReqBuilder {
	builder.body = body
	return builder
}

func (builder *RemoveVersionCostAllocationReqBuilder) Build() *RemoveVersionCostAllocationReq {
	req := &RemoveVersionCostAllocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type RemoveVersionCostAllocationReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工ID

	CostAllocation *EmploymentCostAllocation `json:"cost_allocation,omitempty"` // 成本分摊
}

type RemoveVersionCostAllocationReq struct {
	apiReq *larkcore.ApiReq
	Body   *RemoveVersionCostAllocationReqBody `body:""`
}

type RemoveVersionCostAllocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *RemoveVersionCostAllocationResp) Success() bool {
	return resp.Code == 0
}

type UpdateVersionCostAllocationReqBodyBuilder struct {
	employmentId     string // 员工雇佣 ID
	employmentIdFlag bool

	costAllocation     *EmploymentCostAllocation // 成本分摊
	costAllocationFlag bool
}

func NewUpdateVersionCostAllocationReqBodyBuilder() *UpdateVersionCostAllocationReqBodyBuilder {
	builder := &UpdateVersionCostAllocationReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
//示例值：6862995757234914821
func (builder *UpdateVersionCostAllocationReqBodyBuilder) EmploymentId(employmentId string) *UpdateVersionCostAllocationReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本分摊
//
//示例值：
func (builder *UpdateVersionCostAllocationReqBodyBuilder) CostAllocation(costAllocation *EmploymentCostAllocation) *UpdateVersionCostAllocationReqBodyBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

func (builder *UpdateVersionCostAllocationReqBodyBuilder) Build() *UpdateVersionCostAllocationReqBody {
	req := &UpdateVersionCostAllocationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	return req
}

type UpdateVersionCostAllocationPathReqBodyBuilder struct {
	employmentId       string
	employmentIdFlag   bool
	costAllocation     *EmploymentCostAllocation
	costAllocationFlag bool
}

func NewUpdateVersionCostAllocationPathReqBodyBuilder() *UpdateVersionCostAllocationPathReqBodyBuilder {
	builder := &UpdateVersionCostAllocationPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
// 示例值：6862995757234914821
func (builder *UpdateVersionCostAllocationPathReqBodyBuilder) EmploymentId(employmentId string) *UpdateVersionCostAllocationPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本分摊
//
// 示例值：
func (builder *UpdateVersionCostAllocationPathReqBodyBuilder) CostAllocation(costAllocation *EmploymentCostAllocation) *UpdateVersionCostAllocationPathReqBodyBuilder {
	builder.costAllocation = costAllocation
	builder.costAllocationFlag = true
	return builder
}

func (builder *UpdateVersionCostAllocationPathReqBodyBuilder) Build() (*UpdateVersionCostAllocationReqBody, error) {
	req := &UpdateVersionCostAllocationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.costAllocationFlag {
		req.CostAllocation = builder.costAllocation
	}
	return req, nil
}

type UpdateVersionCostAllocationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *UpdateVersionCostAllocationReqBody
}

func NewUpdateVersionCostAllocationReqBuilder() *UpdateVersionCostAllocationReqBuilder {
	builder := &UpdateVersionCostAllocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *UpdateVersionCostAllocationReqBuilder) UserIdType(userIdType string) *UpdateVersionCostAllocationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *UpdateVersionCostAllocationReqBuilder) ClientToken(clientToken string) *UpdateVersionCostAllocationReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新成本分摊
func (builder *UpdateVersionCostAllocationReqBuilder) Body(body *UpdateVersionCostAllocationReqBody) *UpdateVersionCostAllocationReqBuilder {
	builder.body = body
	return builder
}

func (builder *UpdateVersionCostAllocationReqBuilder) Build() *UpdateVersionCostAllocationReq {
	req := &UpdateVersionCostAllocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type UpdateVersionCostAllocationReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	CostAllocation *EmploymentCostAllocation `json:"cost_allocation,omitempty"` // 成本分摊
}

type UpdateVersionCostAllocationReq struct {
	apiReq *larkcore.ApiReq
	Body   *UpdateVersionCostAllocationReqBody `body:""`
}

type UpdateVersionCostAllocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *UpdateVersionCostAllocationResp) Success() bool {
	return resp.Code == 0
}

type CreateCostCenterReqBuilder struct {
	apiReq     *larkcore.ApiReq
	costCenter *CostCenter
}

func NewCreateCostCenterReqBuilder() *CreateCostCenterReqBuilder {
	builder := &CreateCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *CreateCostCenterReqBuilder) UserIdType(userIdType string) *CreateCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 创建成本中心
func (builder *CreateCostCenterReqBuilder) CostCenter(costCenter *CostCenter) *CreateCostCenterReqBuilder {
	builder.costCenter = costCenter
	return builder
}

func (builder *CreateCostCenterReqBuilder) Build() *CreateCostCenterReq {
	req := &CreateCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.costCenter
	return req
}

type CreateCostCenterReq struct {
	apiReq     *larkcore.ApiReq
	CostCenter *CostCenter `body:""`
}

type CreateCostCenterRespData struct {
	CostCenter *CostCenter `json:"cost_center,omitempty"` //
}

type CreateCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateCostCenterRespData `json:"data"` // 业务数据
}

func (resp *CreateCostCenterResp) Success() bool {
	return resp.Code == 0
}

type DeleteCostCenterReqBodyBuilder struct {
	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewDeleteCostCenterReqBodyBuilder() *DeleteCostCenterReqBodyBuilder {
	builder := &DeleteCostCenterReqBodyBuilder{}
	return builder
}

// 操作原因
//
//示例值：随着组织架构调整，该成本中心不再使用
func (builder *DeleteCostCenterReqBodyBuilder) OperationReason(operationReason string) *DeleteCostCenterReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *DeleteCostCenterReqBodyBuilder) Build() *DeleteCostCenterReqBody {
	req := &DeleteCostCenterReqBody{}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req
}

type DeleteCostCenterPathReqBodyBuilder struct {
	operationReason     string
	operationReasonFlag bool
}

func NewDeleteCostCenterPathReqBodyBuilder() *DeleteCostCenterPathReqBodyBuilder {
	builder := &DeleteCostCenterPathReqBodyBuilder{}
	return builder
}

// 操作原因
//
// 示例值：随着组织架构调整，该成本中心不再使用
func (builder *DeleteCostCenterPathReqBodyBuilder) OperationReason(operationReason string) *DeleteCostCenterPathReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *DeleteCostCenterPathReqBodyBuilder) Build() (*DeleteCostCenterReqBody, error) {
	req := &DeleteCostCenterReqBody{}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req, nil
}

type DeleteCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *DeleteCostCenterReqBody
}

func NewDeleteCostCenterReqBuilder() *DeleteCostCenterReqBuilder {
	builder := &DeleteCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 成本中心ID
//
// 示例值：6862995757234914824
func (builder *DeleteCostCenterReqBuilder) CostCenterId(costCenterId string) *DeleteCostCenterReqBuilder {
	builder.apiReq.PathParams.Set("cost_center_id", fmt.Sprint(costCenterId))
	return builder
}

//
func (builder *DeleteCostCenterReqBuilder) Body(body *DeleteCostCenterReqBody) *DeleteCostCenterReqBuilder {
	builder.body = body
	return builder
}

func (builder *DeleteCostCenterReqBuilder) Build() *DeleteCostCenterReq {
	req := &DeleteCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.Body = builder.body
	return req
}

type DeleteCostCenterReqBody struct {
	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type DeleteCostCenterReq struct {
	apiReq *larkcore.ApiReq
	Body   *DeleteCostCenterReqBody `body:""`
}

type DeleteCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteCostCenterResp) Success() bool {
	return resp.Code == 0
}

type PatchCostCenterReqBodyBuilder struct {
	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	active     bool // 启用停用状态
	activeFlag bool

	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewPatchCostCenterReqBodyBuilder() *PatchCostCenterReqBodyBuilder {
	builder := &PatchCostCenterReqBodyBuilder{}
	return builder
}

// 生效时间
//
//示例值：2020-01-01
func (builder *PatchCostCenterReqBodyBuilder) EffectiveTime(effectiveTime string) *PatchCostCenterReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启用停用状态
//
//示例值：true
func (builder *PatchCostCenterReqBodyBuilder) Active(active bool) *PatchCostCenterReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
//示例值：强行操作
func (builder *PatchCostCenterReqBodyBuilder) OperationReason(operationReason string) *PatchCostCenterReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *PatchCostCenterReqBodyBuilder) Build() *PatchCostCenterReqBody {
	req := &PatchCostCenterReqBody{}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req
}

type PatchCostCenterPathReqBodyBuilder struct {
	effectiveTime       string
	effectiveTimeFlag   bool
	active              bool
	activeFlag          bool
	operationReason     string
	operationReasonFlag bool
}

func NewPatchCostCenterPathReqBodyBuilder() *PatchCostCenterPathReqBodyBuilder {
	builder := &PatchCostCenterPathReqBodyBuilder{}
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *PatchCostCenterPathReqBodyBuilder) EffectiveTime(effectiveTime string) *PatchCostCenterPathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启用停用状态
//
// 示例值：true
func (builder *PatchCostCenterPathReqBodyBuilder) Active(active bool) *PatchCostCenterPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
// 示例值：强行操作
func (builder *PatchCostCenterPathReqBodyBuilder) OperationReason(operationReason string) *PatchCostCenterPathReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *PatchCostCenterPathReqBodyBuilder) Build() (*PatchCostCenterReqBody, error) {
	req := &PatchCostCenterReqBody{}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req, nil
}

type PatchCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *PatchCostCenterReqBody
}

func NewPatchCostCenterReqBuilder() *PatchCostCenterReqBuilder {
	builder := &PatchCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 成本中心ID
//
// 示例值：6862995757234914824
func (builder *PatchCostCenterReqBuilder) CostCenterId(costCenterId string) *PatchCostCenterReqBuilder {
	builder.apiReq.PathParams.Set("cost_center_id", fmt.Sprint(costCenterId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *PatchCostCenterReqBuilder) UserIdType(userIdType string) *PatchCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 创建成本中心版本
func (builder *PatchCostCenterReqBuilder) Body(body *PatchCostCenterReqBody) *PatchCostCenterReqBuilder {
	builder.body = body
	return builder
}

func (builder *PatchCostCenterReqBuilder) Build() *PatchCostCenterReq {
	req := &PatchCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type PatchCostCenterReqBody struct {
	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	Active *bool `json:"active,omitempty"` // 启用停用状态

	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type PatchCostCenterReq struct {
	apiReq *larkcore.ApiReq
	Body   *PatchCostCenterReqBody `body:""`
}

type PatchCostCenterRespData struct {
	CostCenter *CostCenter `json:"cost_center,omitempty"` //
}

type PatchCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchCostCenterRespData `json:"data"` // 业务数据
}

func (resp *PatchCostCenterResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeCostCenterReqBuilder() *QueryRecentChangeCostCenterReqBuilder {
	builder := &QueryRecentChangeCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeCostCenterReqBuilder) PageSize(pageSize int) *QueryRecentChangeCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeCostCenterReqBuilder) PageToken(pageToken string) *QueryRecentChangeCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeCostCenterReqBuilder) StartDate(startDate string) *QueryRecentChangeCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeCostCenterReqBuilder) EndDate(endDate string) *QueryRecentChangeCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeCostCenterReqBuilder) Build() *QueryRecentChangeCostCenterReq {
	req := &QueryRecentChangeCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeCostCenterReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeCostCenterRespData struct {
	CostCenterIds []string `json:"cost_center_ids,omitempty"` // 成本中心 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedCostCenterIds []string `json:"deleted_cost_center_ids,omitempty"` // 删除的成本中心 ID 列表
}

type QueryRecentChangeCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeCostCenterRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeCostCenterResp) Success() bool {
	return resp.Code == 0
}

type SearchCostCenterReqBodyBuilder struct {
	costCenterIdList     []string // 成本中心ID 列表
	costCenterIdListFlag bool

	nameList     []string // 成长中心名称列表，精确匹配
	nameListFlag bool

	code     string // 成本中心编码
	codeFlag bool

	parentCostCenterId     string // 上级成本中心ID，可用于查询直接下级成本中心
	parentCostCenterIdFlag bool

	getAllVersion     bool // 是否获取所有陈本中心版本
	getAllVersionFlag bool
}

func NewSearchCostCenterReqBodyBuilder() *SearchCostCenterReqBodyBuilder {
	builder := &SearchCostCenterReqBodyBuilder{}
	return builder
}

// 成本中心ID 列表
//
//示例值：
func (builder *SearchCostCenterReqBodyBuilder) CostCenterIdList(costCenterIdList []string) *SearchCostCenterReqBodyBuilder {
	builder.costCenterIdList = costCenterIdList
	builder.costCenterIdListFlag = true
	return builder
}

// 成长中心名称列表，精确匹配
//
//示例值：
func (builder *SearchCostCenterReqBodyBuilder) NameList(nameList []string) *SearchCostCenterReqBodyBuilder {
	builder.nameList = nameList
	builder.nameListFlag = true
	return builder
}

// 成本中心编码
//
//示例值：MDPD00000023
func (builder *SearchCostCenterReqBodyBuilder) Code(code string) *SearchCostCenterReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级成本中心ID，可用于查询直接下级成本中心
//
//示例值：6862995757234914824
func (builder *SearchCostCenterReqBodyBuilder) ParentCostCenterId(parentCostCenterId string) *SearchCostCenterReqBodyBuilder {
	builder.parentCostCenterId = parentCostCenterId
	builder.parentCostCenterIdFlag = true
	return builder
}

// 是否获取所有陈本中心版本
//
//示例值：true
func (builder *SearchCostCenterReqBodyBuilder) GetAllVersion(getAllVersion bool) *SearchCostCenterReqBodyBuilder {
	builder.getAllVersion = getAllVersion
	builder.getAllVersionFlag = true
	return builder
}

func (builder *SearchCostCenterReqBodyBuilder) Build() *SearchCostCenterReqBody {
	req := &SearchCostCenterReqBody{}
	if builder.costCenterIdListFlag {
		req.CostCenterIdList = builder.costCenterIdList
	}
	if builder.nameListFlag {
		req.NameList = builder.nameList
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	if builder.parentCostCenterIdFlag {
		req.ParentCostCenterId = &builder.parentCostCenterId
	}
	if builder.getAllVersionFlag {
		req.GetAllVersion = &builder.getAllVersion
	}
	return req
}

type SearchCostCenterPathReqBodyBuilder struct {
	costCenterIdList       []string
	costCenterIdListFlag   bool
	nameList               []string
	nameListFlag           bool
	code                   string
	codeFlag               bool
	parentCostCenterId     string
	parentCostCenterIdFlag bool
	getAllVersion          bool
	getAllVersionFlag      bool
}

func NewSearchCostCenterPathReqBodyBuilder() *SearchCostCenterPathReqBodyBuilder {
	builder := &SearchCostCenterPathReqBodyBuilder{}
	return builder
}

// 成本中心ID 列表
//
// 示例值：
func (builder *SearchCostCenterPathReqBodyBuilder) CostCenterIdList(costCenterIdList []string) *SearchCostCenterPathReqBodyBuilder {
	builder.costCenterIdList = costCenterIdList
	builder.costCenterIdListFlag = true
	return builder
}

// 成长中心名称列表，精确匹配
//
// 示例值：
func (builder *SearchCostCenterPathReqBodyBuilder) NameList(nameList []string) *SearchCostCenterPathReqBodyBuilder {
	builder.nameList = nameList
	builder.nameListFlag = true
	return builder
}

// 成本中心编码
//
// 示例值：MDPD00000023
func (builder *SearchCostCenterPathReqBodyBuilder) Code(code string) *SearchCostCenterPathReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级成本中心ID，可用于查询直接下级成本中心
//
// 示例值：6862995757234914824
func (builder *SearchCostCenterPathReqBodyBuilder) ParentCostCenterId(parentCostCenterId string) *SearchCostCenterPathReqBodyBuilder {
	builder.parentCostCenterId = parentCostCenterId
	builder.parentCostCenterIdFlag = true
	return builder
}

// 是否获取所有陈本中心版本
//
// 示例值：true
func (builder *SearchCostCenterPathReqBodyBuilder) GetAllVersion(getAllVersion bool) *SearchCostCenterPathReqBodyBuilder {
	builder.getAllVersion = getAllVersion
	builder.getAllVersionFlag = true
	return builder
}

func (builder *SearchCostCenterPathReqBodyBuilder) Build() (*SearchCostCenterReqBody, error) {
	req := &SearchCostCenterReqBody{}
	if builder.costCenterIdListFlag {
		req.CostCenterIdList = builder.costCenterIdList
	}
	if builder.nameListFlag {
		req.NameList = builder.nameList
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	if builder.parentCostCenterIdFlag {
		req.ParentCostCenterId = &builder.parentCostCenterId
	}
	if builder.getAllVersionFlag {
		req.GetAllVersion = &builder.getAllVersion
	}
	return req, nil
}

type SearchCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchCostCenterReqBody
}

func NewSearchCostCenterReqBuilder() *SearchCostCenterReqBuilder {
	builder := &SearchCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchCostCenterReqBuilder) PageSize(pageSize int) *SearchCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchCostCenterReqBuilder) PageToken(pageToken string) *SearchCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *SearchCostCenterReqBuilder) UserIdType(userIdType string) *SearchCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 查询成本中心信息
func (builder *SearchCostCenterReqBuilder) Body(body *SearchCostCenterReqBody) *SearchCostCenterReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchCostCenterReqBuilder) Build() *SearchCostCenterReq {
	req := &SearchCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchCostCenterReqBody struct {
	CostCenterIdList []string `json:"cost_center_id_list,omitempty"` // 成本中心ID 列表

	NameList []string `json:"name_list,omitempty"` // 成长中心名称列表，精确匹配

	Code *string `json:"code,omitempty"` // 成本中心编码

	ParentCostCenterId *string `json:"parent_cost_center_id,omitempty"` // 上级成本中心ID，可用于查询直接下级成本中心

	GetAllVersion *bool `json:"get_all_version,omitempty"` // 是否获取所有陈本中心版本
}

type SearchCostCenterReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchCostCenterReqBody `body:""`
}

type SearchCostCenterRespData struct {
	Items []*CostCenterVersion `json:"items,omitempty"` // 成本中心信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchCostCenterRespData `json:"data"` // 业务数据
}

func (resp *SearchCostCenterResp) Success() bool {
	return resp.Code == 0
}

type CreateCostCenterVersionReqBuilder struct {
	apiReq            *larkcore.ApiReq
	costCenterVersion *CostCenterVersion
}

func NewCreateCostCenterVersionReqBuilder() *CreateCostCenterVersionReqBuilder {
	builder := &CreateCostCenterVersionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 成本中心ID
//
// 示例值：6862995757234914824
func (builder *CreateCostCenterVersionReqBuilder) CostCenterId(costCenterId string) *CreateCostCenterVersionReqBuilder {
	builder.apiReq.PathParams.Set("cost_center_id", fmt.Sprint(costCenterId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *CreateCostCenterVersionReqBuilder) UserIdType(userIdType string) *CreateCostCenterVersionReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 创建成本中心版本
func (builder *CreateCostCenterVersionReqBuilder) CostCenterVersion(costCenterVersion *CostCenterVersion) *CreateCostCenterVersionReqBuilder {
	builder.costCenterVersion = costCenterVersion
	return builder
}

func (builder *CreateCostCenterVersionReqBuilder) Build() *CreateCostCenterVersionReq {
	req := &CreateCostCenterVersionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.costCenterVersion
	return req
}

type CreateCostCenterVersionReq struct {
	apiReq            *larkcore.ApiReq
	CostCenterVersion *CostCenterVersion `body:""`
}

type CreateCostCenterVersionRespData struct {
	Version *CostCenterVersion `json:"version,omitempty"` //
}

type CreateCostCenterVersionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateCostCenterVersionRespData `json:"data"` // 业务数据
}

func (resp *CreateCostCenterVersionResp) Success() bool {
	return resp.Code == 0
}

type DeleteCostCenterVersionReqBodyBuilder struct {
	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewDeleteCostCenterVersionReqBodyBuilder() *DeleteCostCenterVersionReqBodyBuilder {
	builder := &DeleteCostCenterVersionReqBodyBuilder{}
	return builder
}

// 操作原因
//
//示例值：随着组织架构调整，该成本中心不再使用
func (builder *DeleteCostCenterVersionReqBodyBuilder) OperationReason(operationReason string) *DeleteCostCenterVersionReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *DeleteCostCenterVersionReqBodyBuilder) Build() *DeleteCostCenterVersionReqBody {
	req := &DeleteCostCenterVersionReqBody{}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req
}

type DeleteCostCenterVersionPathReqBodyBuilder struct {
	operationReason     string
	operationReasonFlag bool
}

func NewDeleteCostCenterVersionPathReqBodyBuilder() *DeleteCostCenterVersionPathReqBodyBuilder {
	builder := &DeleteCostCenterVersionPathReqBodyBuilder{}
	return builder
}

// 操作原因
//
// 示例值：随着组织架构调整，该成本中心不再使用
func (builder *DeleteCostCenterVersionPathReqBodyBuilder) OperationReason(operationReason string) *DeleteCostCenterVersionPathReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *DeleteCostCenterVersionPathReqBodyBuilder) Build() (*DeleteCostCenterVersionReqBody, error) {
	req := &DeleteCostCenterVersionReqBody{}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req, nil
}

type DeleteCostCenterVersionReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *DeleteCostCenterVersionReqBody
}

func NewDeleteCostCenterVersionReqBuilder() *DeleteCostCenterVersionReqBuilder {
	builder := &DeleteCostCenterVersionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 成本中心ID
//
// 示例值：6862995757234914824
func (builder *DeleteCostCenterVersionReqBuilder) CostCenterId(costCenterId string) *DeleteCostCenterVersionReqBuilder {
	builder.apiReq.PathParams.Set("cost_center_id", fmt.Sprint(costCenterId))
	return builder
}

// 版本ID
//
// 示例值：6862995757234914824
func (builder *DeleteCostCenterVersionReqBuilder) VersionId(versionId string) *DeleteCostCenterVersionReqBuilder {
	builder.apiReq.PathParams.Set("version_id", fmt.Sprint(versionId))
	return builder
}

// 撤销成本中心版本
func (builder *DeleteCostCenterVersionReqBuilder) Body(body *DeleteCostCenterVersionReqBody) *DeleteCostCenterVersionReqBuilder {
	builder.body = body
	return builder
}

func (builder *DeleteCostCenterVersionReqBuilder) Build() *DeleteCostCenterVersionReq {
	req := &DeleteCostCenterVersionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.Body = builder.body
	return req
}

type DeleteCostCenterVersionReqBody struct {
	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type DeleteCostCenterVersionReq struct {
	apiReq *larkcore.ApiReq
	Body   *DeleteCostCenterVersionReqBody `body:""`
}

type DeleteCostCenterVersionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteCostCenterVersionResp) Success() bool {
	return resp.Code == 0
}

type PatchCostCenterVersionReqBodyBuilder struct {
	name     []*I18n // 成本中心名称
	nameFlag bool

	parentCostCenterId     string // 上级成本中心ID
	parentCostCenterIdFlag bool

	managers     []string // 成本中心负责人ID 列表，可通过雇佣信息接口查询获得
	managersFlag bool

	description     []*I18n // 成本中心描述
	descriptionFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewPatchCostCenterVersionReqBodyBuilder() *PatchCostCenterVersionReqBodyBuilder {
	builder := &PatchCostCenterVersionReqBodyBuilder{}
	return builder
}

// 成本中心名称
//
//示例值：
func (builder *PatchCostCenterVersionReqBodyBuilder) Name(name []*I18n) *PatchCostCenterVersionReqBodyBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 上级成本中心ID
//
//示例值：6862995757234914824
func (builder *PatchCostCenterVersionReqBodyBuilder) ParentCostCenterId(parentCostCenterId string) *PatchCostCenterVersionReqBodyBuilder {
	builder.parentCostCenterId = parentCostCenterId
	builder.parentCostCenterIdFlag = true
	return builder
}

// 成本中心负责人ID 列表，可通过雇佣信息接口查询获得
//
//示例值：
func (builder *PatchCostCenterVersionReqBodyBuilder) Managers(managers []string) *PatchCostCenterVersionReqBodyBuilder {
	builder.managers = managers
	builder.managersFlag = true
	return builder
}

// 成本中心描述
//
//示例值：
func (builder *PatchCostCenterVersionReqBodyBuilder) Description(description []*I18n) *PatchCostCenterVersionReqBodyBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效时间
//
//示例值：2020-01-01
func (builder *PatchCostCenterVersionReqBodyBuilder) EffectiveTime(effectiveTime string) *PatchCostCenterVersionReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 操作原因
//
//示例值：强行操作
func (builder *PatchCostCenterVersionReqBodyBuilder) OperationReason(operationReason string) *PatchCostCenterVersionReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *PatchCostCenterVersionReqBodyBuilder) Build() *PatchCostCenterVersionReqBody {
	req := &PatchCostCenterVersionReqBody{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.parentCostCenterIdFlag {
		req.ParentCostCenterId = &builder.parentCostCenterId
	}
	if builder.managersFlag {
		req.Managers = builder.managers
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req
}

type PatchCostCenterVersionPathReqBodyBuilder struct {
	name                   []*I18n
	nameFlag               bool
	parentCostCenterId     string
	parentCostCenterIdFlag bool
	managers               []string
	managersFlag           bool
	description            []*I18n
	descriptionFlag        bool
	effectiveTime          string
	effectiveTimeFlag      bool
	operationReason        string
	operationReasonFlag    bool
}

func NewPatchCostCenterVersionPathReqBodyBuilder() *PatchCostCenterVersionPathReqBodyBuilder {
	builder := &PatchCostCenterVersionPathReqBodyBuilder{}
	return builder
}

// 成本中心名称
//
// 示例值：
func (builder *PatchCostCenterVersionPathReqBodyBuilder) Name(name []*I18n) *PatchCostCenterVersionPathReqBodyBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 上级成本中心ID
//
// 示例值：6862995757234914824
func (builder *PatchCostCenterVersionPathReqBodyBuilder) ParentCostCenterId(parentCostCenterId string) *PatchCostCenterVersionPathReqBodyBuilder {
	builder.parentCostCenterId = parentCostCenterId
	builder.parentCostCenterIdFlag = true
	return builder
}

// 成本中心负责人ID 列表，可通过雇佣信息接口查询获得
//
// 示例值：
func (builder *PatchCostCenterVersionPathReqBodyBuilder) Managers(managers []string) *PatchCostCenterVersionPathReqBodyBuilder {
	builder.managers = managers
	builder.managersFlag = true
	return builder
}

// 成本中心描述
//
// 示例值：
func (builder *PatchCostCenterVersionPathReqBodyBuilder) Description(description []*I18n) *PatchCostCenterVersionPathReqBodyBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *PatchCostCenterVersionPathReqBodyBuilder) EffectiveTime(effectiveTime string) *PatchCostCenterVersionPathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 操作原因
//
// 示例值：强行操作
func (builder *PatchCostCenterVersionPathReqBodyBuilder) OperationReason(operationReason string) *PatchCostCenterVersionPathReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *PatchCostCenterVersionPathReqBodyBuilder) Build() (*PatchCostCenterVersionReqBody, error) {
	req := &PatchCostCenterVersionReqBody{}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.parentCostCenterIdFlag {
		req.ParentCostCenterId = &builder.parentCostCenterId
	}
	if builder.managersFlag {
		req.Managers = builder.managers
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req, nil
}

type PatchCostCenterVersionReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *PatchCostCenterVersionReqBody
}

func NewPatchCostCenterVersionReqBuilder() *PatchCostCenterVersionReqBuilder {
	builder := &PatchCostCenterVersionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 成本中心ID
//
// 示例值：6862995757234914824
func (builder *PatchCostCenterVersionReqBuilder) CostCenterId(costCenterId string) *PatchCostCenterVersionReqBuilder {
	builder.apiReq.PathParams.Set("cost_center_id", fmt.Sprint(costCenterId))
	return builder
}

// 版本ID
//
// 示例值：6862995757234914824
func (builder *PatchCostCenterVersionReqBuilder) VersionId(versionId string) *PatchCostCenterVersionReqBuilder {
	builder.apiReq.PathParams.Set("version_id", fmt.Sprint(versionId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *PatchCostCenterVersionReqBuilder) UserIdType(userIdType string) *PatchCostCenterVersionReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 创建成本中心版本
func (builder *PatchCostCenterVersionReqBuilder) Body(body *PatchCostCenterVersionReqBody) *PatchCostCenterVersionReqBuilder {
	builder.body = body
	return builder
}

func (builder *PatchCostCenterVersionReqBuilder) Build() *PatchCostCenterVersionReq {
	req := &PatchCostCenterVersionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type PatchCostCenterVersionReqBody struct {
	Name []*I18n `json:"name,omitempty"` // 成本中心名称

	ParentCostCenterId *string `json:"parent_cost_center_id,omitempty"` // 上级成本中心ID

	Managers []string `json:"managers,omitempty"` // 成本中心负责人ID 列表，可通过雇佣信息接口查询获得

	Description []*I18n `json:"description,omitempty"` // 成本中心描述

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type PatchCostCenterVersionReq struct {
	apiReq *larkcore.ApiReq
	Body   *PatchCostCenterVersionReqBody `body:""`
}

type PatchCostCenterVersionRespData struct {
	Version *CostCenterVersion `json:"version,omitempty"` //
}

type PatchCostCenterVersionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchCostCenterVersionRespData `json:"data"` // 业务数据
}

func (resp *PatchCostCenterVersionResp) Success() bool {
	return resp.Code == 0
}

type ActiveCustomOrgReqBodyBuilder struct {
	orgId     string // 组织ID
	orgIdFlag bool

	objectApiName     string // 组织类型编码
	objectApiNameFlag bool

	active     bool // 启用停用状态
	activeFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool
}

func NewActiveCustomOrgReqBodyBuilder() *ActiveCustomOrgReqBodyBuilder {
	builder := &ActiveCustomOrgReqBodyBuilder{}
	return builder
}

// 组织ID
//
//示例值：6862995757234914823
func (builder *ActiveCustomOrgReqBodyBuilder) OrgId(orgId string) *ActiveCustomOrgReqBodyBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 组织类型编码
//
//示例值：apiname__c
func (builder *ActiveCustomOrgReqBodyBuilder) ObjectApiName(objectApiName string) *ActiveCustomOrgReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 启用停用状态
//
//示例值：true
func (builder *ActiveCustomOrgReqBodyBuilder) Active(active bool) *ActiveCustomOrgReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 生效时间
//
//示例值：2020-01-01
func (builder *ActiveCustomOrgReqBodyBuilder) EffectiveTime(effectiveTime string) *ActiveCustomOrgReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

func (builder *ActiveCustomOrgReqBodyBuilder) Build() *ActiveCustomOrgReqBody {
	req := &ActiveCustomOrgReqBody{}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId
	}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	return req
}

type ActiveCustomOrgPathReqBodyBuilder struct {
	orgId             string
	orgIdFlag         bool
	objectApiName     string
	objectApiNameFlag bool
	active            bool
	activeFlag        bool
	effectiveTime     string
	effectiveTimeFlag bool
}

func NewActiveCustomOrgPathReqBodyBuilder() *ActiveCustomOrgPathReqBodyBuilder {
	builder := &ActiveCustomOrgPathReqBodyBuilder{}
	return builder
}

// 组织ID
//
// 示例值：6862995757234914823
func (builder *ActiveCustomOrgPathReqBodyBuilder) OrgId(orgId string) *ActiveCustomOrgPathReqBodyBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 组织类型编码
//
// 示例值：apiname__c
func (builder *ActiveCustomOrgPathReqBodyBuilder) ObjectApiName(objectApiName string) *ActiveCustomOrgPathReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 启用停用状态
//
// 示例值：true
func (builder *ActiveCustomOrgPathReqBodyBuilder) Active(active bool) *ActiveCustomOrgPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *ActiveCustomOrgPathReqBodyBuilder) EffectiveTime(effectiveTime string) *ActiveCustomOrgPathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

func (builder *ActiveCustomOrgPathReqBodyBuilder) Build() (*ActiveCustomOrgReqBody, error) {
	req := &ActiveCustomOrgReqBody{}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId
	}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	return req, nil
}

type ActiveCustomOrgReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ActiveCustomOrgReqBody
}

func NewActiveCustomOrgReqBuilder() *ActiveCustomOrgReqBuilder {
	builder := &ActiveCustomOrgReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 启/停用自定义组织
func (builder *ActiveCustomOrgReqBuilder) Body(body *ActiveCustomOrgReqBody) *ActiveCustomOrgReqBuilder {
	builder.body = body
	return builder
}

func (builder *ActiveCustomOrgReqBuilder) Build() *ActiveCustomOrgReq {
	req := &ActiveCustomOrgReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type ActiveCustomOrgReqBody struct {
	OrgId *string `json:"org_id,omitempty"` // 组织ID

	ObjectApiName *string `json:"object_api_name,omitempty"` // 组织类型编码

	Active *bool `json:"active,omitempty"` // 启用停用状态

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间
}

type ActiveCustomOrgReq struct {
	apiReq *larkcore.ApiReq
	Body   *ActiveCustomOrgReqBody `body:""`
}

type ActiveCustomOrgResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *ActiveCustomOrgResp) Success() bool {
	return resp.Code == 0
}

type CreateCustomOrgReqBuilder struct {
	apiReq          *larkcore.ApiReq
	customOrgCreate *CustomOrgCreate
}

func NewCreateCustomOrgReqBuilder() *CreateCustomOrgReqBuilder {
	builder := &CreateCustomOrgReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *CreateCustomOrgReqBuilder) ClientToken(clientToken string) *CreateCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *CreateCustomOrgReqBuilder) UserIdType(userIdType string) *CreateCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *CreateCustomOrgReqBuilder) CustomOrgCreate(customOrgCreate *CustomOrgCreate) *CreateCustomOrgReqBuilder {
	builder.customOrgCreate = customOrgCreate
	return builder
}

func (builder *CreateCustomOrgReqBuilder) Build() *CreateCustomOrgReq {
	req := &CreateCustomOrgReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.customOrgCreate
	return req
}

type CreateCustomOrgReq struct {
	apiReq          *larkcore.ApiReq
	CustomOrgCreate *CustomOrgCreate `body:""`
}

type CreateCustomOrgRespData struct {
	OrgId *string `json:"org_id,omitempty"` // 组织ID
}

type CreateCustomOrgResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateCustomOrgRespData `json:"data"` // 业务数据
}

func (resp *CreateCustomOrgResp) Success() bool {
	return resp.Code == 0
}

type DeleteOrgCustomOrgReqBodyBuilder struct {
	orgId     string // 组织ID
	orgIdFlag bool

	objectApiName     string // 组织类型编码
	objectApiNameFlag bool
}

func NewDeleteOrgCustomOrgReqBodyBuilder() *DeleteOrgCustomOrgReqBodyBuilder {
	builder := &DeleteOrgCustomOrgReqBodyBuilder{}
	return builder
}

// 组织ID
//
//示例值：6862995757234914824
func (builder *DeleteOrgCustomOrgReqBodyBuilder) OrgId(orgId string) *DeleteOrgCustomOrgReqBodyBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 组织类型编码
//
//示例值：apiname__c
func (builder *DeleteOrgCustomOrgReqBodyBuilder) ObjectApiName(objectApiName string) *DeleteOrgCustomOrgReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

func (builder *DeleteOrgCustomOrgReqBodyBuilder) Build() *DeleteOrgCustomOrgReqBody {
	req := &DeleteOrgCustomOrgReqBody{}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId
	}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	return req
}

type DeleteOrgCustomOrgPathReqBodyBuilder struct {
	orgId             string
	orgIdFlag         bool
	objectApiName     string
	objectApiNameFlag bool
}

func NewDeleteOrgCustomOrgPathReqBodyBuilder() *DeleteOrgCustomOrgPathReqBodyBuilder {
	builder := &DeleteOrgCustomOrgPathReqBodyBuilder{}
	return builder
}

// 组织ID
//
// 示例值：6862995757234914824
func (builder *DeleteOrgCustomOrgPathReqBodyBuilder) OrgId(orgId string) *DeleteOrgCustomOrgPathReqBodyBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 组织类型编码
//
// 示例值：apiname__c
func (builder *DeleteOrgCustomOrgPathReqBodyBuilder) ObjectApiName(objectApiName string) *DeleteOrgCustomOrgPathReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

func (builder *DeleteOrgCustomOrgPathReqBodyBuilder) Build() (*DeleteOrgCustomOrgReqBody, error) {
	req := &DeleteOrgCustomOrgReqBody{}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId
	}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	return req, nil
}

type DeleteOrgCustomOrgReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *DeleteOrgCustomOrgReqBody
}

func NewDeleteOrgCustomOrgReqBuilder() *DeleteOrgCustomOrgReqBuilder {
	builder := &DeleteOrgCustomOrgReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 删除自定义组织
func (builder *DeleteOrgCustomOrgReqBuilder) Body(body *DeleteOrgCustomOrgReqBody) *DeleteOrgCustomOrgReqBuilder {
	builder.body = body
	return builder
}

func (builder *DeleteOrgCustomOrgReqBuilder) Build() *DeleteOrgCustomOrgReq {
	req := &DeleteOrgCustomOrgReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type DeleteOrgCustomOrgReqBody struct {
	OrgId *string `json:"org_id,omitempty"` // 组织ID

	ObjectApiName *string `json:"object_api_name,omitempty"` // 组织类型编码
}

type DeleteOrgCustomOrgReq struct {
	apiReq *larkcore.ApiReq
	Body   *DeleteOrgCustomOrgReqBody `body:""`
}

type DeleteOrgCustomOrgResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteOrgCustomOrgResp) Success() bool {
	return resp.Code == 0
}

type PatchCustomOrgReqBuilder struct {
	apiReq          *larkcore.ApiReq
	customOrgUpdate *CustomOrgUpdate
}

func NewPatchCustomOrgReqBuilder() *PatchCustomOrgReqBuilder {
	builder := &PatchCustomOrgReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 组织ID
//
// 示例值：6862995757234914824
func (builder *PatchCustomOrgReqBuilder) OrgId(orgId string) *PatchCustomOrgReqBuilder {
	builder.apiReq.PathParams.Set("org_id", fmt.Sprint(orgId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *PatchCustomOrgReqBuilder) ClientToken(clientToken string) *PatchCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *PatchCustomOrgReqBuilder) UserIdType(userIdType string) *PatchCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 更新自定义组织
func (builder *PatchCustomOrgReqBuilder) CustomOrgUpdate(customOrgUpdate *CustomOrgUpdate) *PatchCustomOrgReqBuilder {
	builder.customOrgUpdate = customOrgUpdate
	return builder
}

func (builder *PatchCustomOrgReqBuilder) Build() *PatchCustomOrgReq {
	req := &PatchCustomOrgReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.customOrgUpdate
	return req
}

type PatchCustomOrgReq struct {
	apiReq          *larkcore.ApiReq
	CustomOrgUpdate *CustomOrgUpdate `body:""`
}

type PatchCustomOrgResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchCustomOrgResp) Success() bool {
	return resp.Code == 0
}

type QueryCustomOrgReqBodyBuilder struct {
	objectApiName     string // 组织类型编码
	objectApiNameFlag bool

	orgFields     []string // 返回基础数据的字段列表
	orgFieldsFlag bool

	orgRoleFields     []string // 返回org_role数据的字段列表
	orgRoleFieldsFlag bool

	orgIds     []string // 组织ID列表
	orgIdsFlag bool

	code     string // 组织编码
	codeFlag bool

	parentId     string // 上级组织ID
	parentIdFlag bool

	active     bool // 是否启用
	activeFlag bool

	needMatchRule     bool // 是否返回匹配规则
	needMatchRuleFlag bool
}

func NewQueryCustomOrgReqBodyBuilder() *QueryCustomOrgReqBodyBuilder {
	builder := &QueryCustomOrgReqBodyBuilder{}
	return builder
}

// 组织类型编码
//
//示例值：apiname__c
func (builder *QueryCustomOrgReqBodyBuilder) ObjectApiName(objectApiName string) *QueryCustomOrgReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 返回基础数据的字段列表
//
//示例值：
func (builder *QueryCustomOrgReqBodyBuilder) OrgFields(orgFields []string) *QueryCustomOrgReqBodyBuilder {
	builder.orgFields = orgFields
	builder.orgFieldsFlag = true
	return builder
}

// 返回org_role数据的字段列表
//
//示例值：
func (builder *QueryCustomOrgReqBodyBuilder) OrgRoleFields(orgRoleFields []string) *QueryCustomOrgReqBodyBuilder {
	builder.orgRoleFields = orgRoleFields
	builder.orgRoleFieldsFlag = true
	return builder
}

// 组织ID列表
//
//示例值：
func (builder *QueryCustomOrgReqBodyBuilder) OrgIds(orgIds []string) *QueryCustomOrgReqBodyBuilder {
	builder.orgIds = orgIds
	builder.orgIdsFlag = true
	return builder
}

// 组织编码
//
//示例值：MDPD00000023
func (builder *QueryCustomOrgReqBodyBuilder) Code(code string) *QueryCustomOrgReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级组织ID
//
//示例值：7140964208476371111
func (builder *QueryCustomOrgReqBodyBuilder) ParentId(parentId string) *QueryCustomOrgReqBodyBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 是否启用
//
//示例值：true
func (builder *QueryCustomOrgReqBodyBuilder) Active(active bool) *QueryCustomOrgReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 是否返回匹配规则
//
//示例值：false
func (builder *QueryCustomOrgReqBodyBuilder) NeedMatchRule(needMatchRule bool) *QueryCustomOrgReqBodyBuilder {
	builder.needMatchRule = needMatchRule
	builder.needMatchRuleFlag = true
	return builder
}

func (builder *QueryCustomOrgReqBodyBuilder) Build() *QueryCustomOrgReqBody {
	req := &QueryCustomOrgReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.orgFieldsFlag {
		req.OrgFields = builder.orgFields
	}
	if builder.orgRoleFieldsFlag {
		req.OrgRoleFields = builder.orgRoleFields
	}
	if builder.orgIdsFlag {
		req.OrgIds = builder.orgIds
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.needMatchRuleFlag {
		req.NeedMatchRule = &builder.needMatchRule
	}
	return req
}

type QueryCustomOrgPathReqBodyBuilder struct {
	objectApiName     string
	objectApiNameFlag bool
	orgFields         []string
	orgFieldsFlag     bool
	orgRoleFields     []string
	orgRoleFieldsFlag bool
	orgIds            []string
	orgIdsFlag        bool
	code              string
	codeFlag          bool
	parentId          string
	parentIdFlag      bool
	active            bool
	activeFlag        bool
	needMatchRule     bool
	needMatchRuleFlag bool
}

func NewQueryCustomOrgPathReqBodyBuilder() *QueryCustomOrgPathReqBodyBuilder {
	builder := &QueryCustomOrgPathReqBodyBuilder{}
	return builder
}

// 组织类型编码
//
// 示例值：apiname__c
func (builder *QueryCustomOrgPathReqBodyBuilder) ObjectApiName(objectApiName string) *QueryCustomOrgPathReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 返回基础数据的字段列表
//
// 示例值：
func (builder *QueryCustomOrgPathReqBodyBuilder) OrgFields(orgFields []string) *QueryCustomOrgPathReqBodyBuilder {
	builder.orgFields = orgFields
	builder.orgFieldsFlag = true
	return builder
}

// 返回org_role数据的字段列表
//
// 示例值：
func (builder *QueryCustomOrgPathReqBodyBuilder) OrgRoleFields(orgRoleFields []string) *QueryCustomOrgPathReqBodyBuilder {
	builder.orgRoleFields = orgRoleFields
	builder.orgRoleFieldsFlag = true
	return builder
}

// 组织ID列表
//
// 示例值：
func (builder *QueryCustomOrgPathReqBodyBuilder) OrgIds(orgIds []string) *QueryCustomOrgPathReqBodyBuilder {
	builder.orgIds = orgIds
	builder.orgIdsFlag = true
	return builder
}

// 组织编码
//
// 示例值：MDPD00000023
func (builder *QueryCustomOrgPathReqBodyBuilder) Code(code string) *QueryCustomOrgPathReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 上级组织ID
//
// 示例值：7140964208476371111
func (builder *QueryCustomOrgPathReqBodyBuilder) ParentId(parentId string) *QueryCustomOrgPathReqBodyBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *QueryCustomOrgPathReqBodyBuilder) Active(active bool) *QueryCustomOrgPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 是否返回匹配规则
//
// 示例值：false
func (builder *QueryCustomOrgPathReqBodyBuilder) NeedMatchRule(needMatchRule bool) *QueryCustomOrgPathReqBodyBuilder {
	builder.needMatchRule = needMatchRule
	builder.needMatchRuleFlag = true
	return builder
}

func (builder *QueryCustomOrgPathReqBodyBuilder) Build() (*QueryCustomOrgReqBody, error) {
	req := &QueryCustomOrgReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.orgFieldsFlag {
		req.OrgFields = builder.orgFields
	}
	if builder.orgRoleFieldsFlag {
		req.OrgRoleFields = builder.orgRoleFields
	}
	if builder.orgIdsFlag {
		req.OrgIds = builder.orgIds
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.needMatchRuleFlag {
		req.NeedMatchRule = &builder.needMatchRule
	}
	return req, nil
}

type QueryCustomOrgReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryCustomOrgReqBody
}

func NewQueryCustomOrgReqBuilder() *QueryCustomOrgReqBuilder {
	builder := &QueryCustomOrgReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *QueryCustomOrgReqBuilder) PageSize(pageSize int) *QueryCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryCustomOrgReqBuilder) PageToken(pageToken string) *QueryCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *QueryCustomOrgReqBuilder) UserIdType(userIdType string) *QueryCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 查询自定义组织信息
func (builder *QueryCustomOrgReqBuilder) Body(body *QueryCustomOrgReqBody) *QueryCustomOrgReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryCustomOrgReqBuilder) Build() *QueryCustomOrgReq {
	req := &QueryCustomOrgReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryCustomOrgReqBody struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 组织类型编码

	OrgFields []string `json:"org_fields,omitempty"` // 返回基础数据的字段列表

	OrgRoleFields []string `json:"org_role_fields,omitempty"` // 返回org_role数据的字段列表

	OrgIds []string `json:"org_ids,omitempty"` // 组织ID列表

	Code *string `json:"code,omitempty"` // 组织编码

	ParentId *string `json:"parent_id,omitempty"` // 上级组织ID

	Active *bool `json:"active,omitempty"` // 是否启用

	NeedMatchRule *bool `json:"need_match_rule,omitempty"` // 是否返回匹配规则
}

type QueryCustomOrgReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryCustomOrgReqBody `body:""`
}

type QueryCustomOrgRespData struct {
	Items []*CustomOrg `json:"items,omitempty"` // 自定义组织信息列表

	PageToken *string `json:"page_token,omitempty"` // 下一页token

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type QueryCustomOrgResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryCustomOrgRespData `json:"data"` // 业务数据
}

func (resp *QueryCustomOrgResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeCustomOrgReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeCustomOrgReqBuilder() *QueryRecentChangeCustomOrgReqBuilder {
	builder := &QueryRecentChangeCustomOrgReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeCustomOrgReqBuilder) PageSize(pageSize int) *QueryRecentChangeCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeCustomOrgReqBuilder) PageToken(pageToken string) *QueryRecentChangeCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 组织类型编码，可在「飞书人事-设置-组织设置」中相应的自定义组织目录下查看
//
// 示例值：custom_org_01
func (builder *QueryRecentChangeCustomOrgReqBuilder) ObjectApiName(objectApiName string) *QueryRecentChangeCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("object_api_name", fmt.Sprint(objectApiName))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeCustomOrgReqBuilder) StartDate(startDate string) *QueryRecentChangeCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeCustomOrgReqBuilder) EndDate(endDate string) *QueryRecentChangeCustomOrgReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeCustomOrgReqBuilder) Build() *QueryRecentChangeCustomOrgReq {
	req := &QueryRecentChangeCustomOrgReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeCustomOrgReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeCustomOrgRespData struct {
	CustomOrgIds []string `json:"custom_org_ids,omitempty"` // 自定义组织 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedCustomOrgIds []string `json:"deleted_custom_org_ids,omitempty"` // 删除的自定义组织 ID 列表
}

type QueryRecentChangeCustomOrgResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeCustomOrgRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeCustomOrgResp) Success() bool {
	return resp.Code == 0
}

type UpdateRuleCustomOrgReqBodyBuilder struct {
	objectApiName     string // 组织类型编码
	objectApiNameFlag bool

	orgId     string // 组织ID
	orgIdFlag bool

	matchRuleGroups     []*MatchRules // 匹配规则组，组间并集
	matchRuleGroupsFlag bool
}

func NewUpdateRuleCustomOrgReqBodyBuilder() *UpdateRuleCustomOrgReqBodyBuilder {
	builder := &UpdateRuleCustomOrgReqBodyBuilder{}
	return builder
}

// 组织类型编码
//
//示例值：apiname__c
func (builder *UpdateRuleCustomOrgReqBodyBuilder) ObjectApiName(objectApiName string) *UpdateRuleCustomOrgReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 组织ID
//
//示例值：6862995757234914824
func (builder *UpdateRuleCustomOrgReqBodyBuilder) OrgId(orgId string) *UpdateRuleCustomOrgReqBodyBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 匹配规则组，组间并集
//
//示例值：
func (builder *UpdateRuleCustomOrgReqBodyBuilder) MatchRuleGroups(matchRuleGroups []*MatchRules) *UpdateRuleCustomOrgReqBodyBuilder {
	builder.matchRuleGroups = matchRuleGroups
	builder.matchRuleGroupsFlag = true
	return builder
}

func (builder *UpdateRuleCustomOrgReqBodyBuilder) Build() *UpdateRuleCustomOrgReqBody {
	req := &UpdateRuleCustomOrgReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId
	}
	if builder.matchRuleGroupsFlag {
		req.MatchRuleGroups = builder.matchRuleGroups
	}
	return req
}

type UpdateRuleCustomOrgPathReqBodyBuilder struct {
	objectApiName       string
	objectApiNameFlag   bool
	orgId               string
	orgIdFlag           bool
	matchRuleGroups     []*MatchRules
	matchRuleGroupsFlag bool
}

func NewUpdateRuleCustomOrgPathReqBodyBuilder() *UpdateRuleCustomOrgPathReqBodyBuilder {
	builder := &UpdateRuleCustomOrgPathReqBodyBuilder{}
	return builder
}

// 组织类型编码
//
// 示例值：apiname__c
func (builder *UpdateRuleCustomOrgPathReqBodyBuilder) ObjectApiName(objectApiName string) *UpdateRuleCustomOrgPathReqBodyBuilder {
	builder.objectApiName = objectApiName
	builder.objectApiNameFlag = true
	return builder
}

// 组织ID
//
// 示例值：6862995757234914824
func (builder *UpdateRuleCustomOrgPathReqBodyBuilder) OrgId(orgId string) *UpdateRuleCustomOrgPathReqBodyBuilder {
	builder.orgId = orgId
	builder.orgIdFlag = true
	return builder
}

// 匹配规则组，组间并集
//
// 示例值：
func (builder *UpdateRuleCustomOrgPathReqBodyBuilder) MatchRuleGroups(matchRuleGroups []*MatchRules) *UpdateRuleCustomOrgPathReqBodyBuilder {
	builder.matchRuleGroups = matchRuleGroups
	builder.matchRuleGroupsFlag = true
	return builder
}

func (builder *UpdateRuleCustomOrgPathReqBodyBuilder) Build() (*UpdateRuleCustomOrgReqBody, error) {
	req := &UpdateRuleCustomOrgReqBody{}
	if builder.objectApiNameFlag {
		req.ObjectApiName = &builder.objectApiName
	}
	if builder.orgIdFlag {
		req.OrgId = &builder.orgId
	}
	if builder.matchRuleGroupsFlag {
		req.MatchRuleGroups = builder.matchRuleGroups
	}
	return req, nil
}

type UpdateRuleCustomOrgReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *UpdateRuleCustomOrgReqBody
}

func NewUpdateRuleCustomOrgReqBuilder() *UpdateRuleCustomOrgReqBuilder {
	builder := &UpdateRuleCustomOrgReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 更新匹配规则
func (builder *UpdateRuleCustomOrgReqBuilder) Body(body *UpdateRuleCustomOrgReqBody) *UpdateRuleCustomOrgReqBuilder {
	builder.body = body
	return builder
}

func (builder *UpdateRuleCustomOrgReqBuilder) Build() *UpdateRuleCustomOrgReq {
	req := &UpdateRuleCustomOrgReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type UpdateRuleCustomOrgReqBody struct {
	ObjectApiName *string `json:"object_api_name,omitempty"` // 组织类型编码

	OrgId *string `json:"org_id,omitempty"` // 组织ID

	MatchRuleGroups []*MatchRules `json:"match_rule_groups,omitempty"` // 匹配规则组，组间并集
}

type UpdateRuleCustomOrgReq struct {
	apiReq *larkcore.ApiReq
	Body   *UpdateRuleCustomOrgReqBody `body:""`
}

type UpdateRuleCustomOrgResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *UpdateRuleCustomOrgResp) Success() bool {
	return resp.Code == 0
}

type BatchQueryDefaultCostCenterReqBodyBuilder struct {
	employmentIds     []string // 员工雇佣 ID 列表
	employmentIdsFlag bool
}

func NewBatchQueryDefaultCostCenterReqBodyBuilder() *BatchQueryDefaultCostCenterReqBodyBuilder {
	builder := &BatchQueryDefaultCostCenterReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID 列表
//
//示例值：
func (builder *BatchQueryDefaultCostCenterReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchQueryDefaultCostCenterReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

func (builder *BatchQueryDefaultCostCenterReqBodyBuilder) Build() *BatchQueryDefaultCostCenterReqBody {
	req := &BatchQueryDefaultCostCenterReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	return req
}

type BatchQueryDefaultCostCenterPathReqBodyBuilder struct {
	employmentIds     []string
	employmentIdsFlag bool
}

func NewBatchQueryDefaultCostCenterPathReqBodyBuilder() *BatchQueryDefaultCostCenterPathReqBodyBuilder {
	builder := &BatchQueryDefaultCostCenterPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID 列表
//
// 示例值：
func (builder *BatchQueryDefaultCostCenterPathReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchQueryDefaultCostCenterPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

func (builder *BatchQueryDefaultCostCenterPathReqBodyBuilder) Build() (*BatchQueryDefaultCostCenterReqBody, error) {
	req := &BatchQueryDefaultCostCenterReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	return req, nil
}

type BatchQueryDefaultCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchQueryDefaultCostCenterReqBody
}

func NewBatchQueryDefaultCostCenterReqBuilder() *BatchQueryDefaultCostCenterReqBuilder {
	builder := &BatchQueryDefaultCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchQueryDefaultCostCenterReqBuilder) UserIdType(userIdType string) *BatchQueryDefaultCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *BatchQueryDefaultCostCenterReqBuilder) Body(body *BatchQueryDefaultCostCenterReqBody) *BatchQueryDefaultCostCenterReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchQueryDefaultCostCenterReqBuilder) Build() *BatchQueryDefaultCostCenterReq {
	req := &BatchQueryDefaultCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchQueryDefaultCostCenterReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 员工雇佣 ID 列表
}

type BatchQueryDefaultCostCenterReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchQueryDefaultCostCenterReqBody `body:""`
}

type BatchQueryDefaultCostCenterRespData struct {
	Items []*EmployeeDefaultCostCenter `json:"items,omitempty"` // 员工成本中心列表
}

type BatchQueryDefaultCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchQueryDefaultCostCenterRespData `json:"data"` // 业务数据
}

func (resp *BatchQueryDefaultCostCenterResp) Success() bool {
	return resp.Code == 0
}

type CreateVersionDefaultCostCenterReqBodyBuilder struct {
	employmentId     string // 员工雇佣 ID
	employmentIdFlag bool

	defaultCostCenter     *EmploymentDefaultCostCenter // 成本中心信息
	defaultCostCenterFlag bool
}

func NewCreateVersionDefaultCostCenterReqBodyBuilder() *CreateVersionDefaultCostCenterReqBodyBuilder {
	builder := &CreateVersionDefaultCostCenterReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
//示例值：6862995757234914821
func (builder *CreateVersionDefaultCostCenterReqBodyBuilder) EmploymentId(employmentId string) *CreateVersionDefaultCostCenterReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本中心信息
//
//示例值：
func (builder *CreateVersionDefaultCostCenterReqBodyBuilder) DefaultCostCenter(defaultCostCenter *EmploymentDefaultCostCenter) *CreateVersionDefaultCostCenterReqBodyBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

func (builder *CreateVersionDefaultCostCenterReqBodyBuilder) Build() *CreateVersionDefaultCostCenterReqBody {
	req := &CreateVersionDefaultCostCenterReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	return req
}

type CreateVersionDefaultCostCenterPathReqBodyBuilder struct {
	employmentId          string
	employmentIdFlag      bool
	defaultCostCenter     *EmploymentDefaultCostCenter
	defaultCostCenterFlag bool
}

func NewCreateVersionDefaultCostCenterPathReqBodyBuilder() *CreateVersionDefaultCostCenterPathReqBodyBuilder {
	builder := &CreateVersionDefaultCostCenterPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
// 示例值：6862995757234914821
func (builder *CreateVersionDefaultCostCenterPathReqBodyBuilder) EmploymentId(employmentId string) *CreateVersionDefaultCostCenterPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本中心信息
//
// 示例值：
func (builder *CreateVersionDefaultCostCenterPathReqBodyBuilder) DefaultCostCenter(defaultCostCenter *EmploymentDefaultCostCenter) *CreateVersionDefaultCostCenterPathReqBodyBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

func (builder *CreateVersionDefaultCostCenterPathReqBodyBuilder) Build() (*CreateVersionDefaultCostCenterReqBody, error) {
	req := &CreateVersionDefaultCostCenterReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	return req, nil
}

type CreateVersionDefaultCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateVersionDefaultCostCenterReqBody
}

func NewCreateVersionDefaultCostCenterReqBuilder() *CreateVersionDefaultCostCenterReqBuilder {
	builder := &CreateVersionDefaultCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 幂等标识，服务端会忽略client_token重复的请求
//
// 示例值：12454646
func (builder *CreateVersionDefaultCostCenterReqBuilder) ClientToken(clientToken string) *CreateVersionDefaultCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *CreateVersionDefaultCostCenterReqBuilder) UserIdType(userIdType string) *CreateVersionDefaultCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *CreateVersionDefaultCostCenterReqBuilder) Body(body *CreateVersionDefaultCostCenterReqBody) *CreateVersionDefaultCostCenterReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateVersionDefaultCostCenterReqBuilder) Build() *CreateVersionDefaultCostCenterReq {
	req := &CreateVersionDefaultCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateVersionDefaultCostCenterReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	DefaultCostCenter *EmploymentDefaultCostCenter `json:"default_cost_center,omitempty"` // 成本中心信息
}

type CreateVersionDefaultCostCenterReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateVersionDefaultCostCenterReqBody `body:""`
}

type CreateVersionDefaultCostCenterRespData struct {
	WkId *string `json:"wk_id,omitempty"` // 默认成本中心id

	WkTid *string `json:"wk_tid,omitempty"` // 默认成本中心版本id
}

type CreateVersionDefaultCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateVersionDefaultCostCenterRespData `json:"data"` // 业务数据
}

func (resp *CreateVersionDefaultCostCenterResp) Success() bool {
	return resp.Code == 0
}

type RemoveVersionDefaultCostCenterReqBodyBuilder struct {
	employmentId     string // 员工雇佣 ID
	employmentIdFlag bool

	defaultCostCenter     *EmploymentDefaultCostCenter // 成本中心信息
	defaultCostCenterFlag bool
}

func NewRemoveVersionDefaultCostCenterReqBodyBuilder() *RemoveVersionDefaultCostCenterReqBodyBuilder {
	builder := &RemoveVersionDefaultCostCenterReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
//示例值：6862995757234914821
func (builder *RemoveVersionDefaultCostCenterReqBodyBuilder) EmploymentId(employmentId string) *RemoveVersionDefaultCostCenterReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本中心信息
//
//示例值：
func (builder *RemoveVersionDefaultCostCenterReqBodyBuilder) DefaultCostCenter(defaultCostCenter *EmploymentDefaultCostCenter) *RemoveVersionDefaultCostCenterReqBodyBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

func (builder *RemoveVersionDefaultCostCenterReqBodyBuilder) Build() *RemoveVersionDefaultCostCenterReqBody {
	req := &RemoveVersionDefaultCostCenterReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	return req
}

type RemoveVersionDefaultCostCenterPathReqBodyBuilder struct {
	employmentId          string
	employmentIdFlag      bool
	defaultCostCenter     *EmploymentDefaultCostCenter
	defaultCostCenterFlag bool
}

func NewRemoveVersionDefaultCostCenterPathReqBodyBuilder() *RemoveVersionDefaultCostCenterPathReqBodyBuilder {
	builder := &RemoveVersionDefaultCostCenterPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
// 示例值：6862995757234914821
func (builder *RemoveVersionDefaultCostCenterPathReqBodyBuilder) EmploymentId(employmentId string) *RemoveVersionDefaultCostCenterPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本中心信息
//
// 示例值：
func (builder *RemoveVersionDefaultCostCenterPathReqBodyBuilder) DefaultCostCenter(defaultCostCenter *EmploymentDefaultCostCenter) *RemoveVersionDefaultCostCenterPathReqBodyBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

func (builder *RemoveVersionDefaultCostCenterPathReqBodyBuilder) Build() (*RemoveVersionDefaultCostCenterReqBody, error) {
	req := &RemoveVersionDefaultCostCenterReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	return req, nil
}

type RemoveVersionDefaultCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RemoveVersionDefaultCostCenterReqBody
}

func NewRemoveVersionDefaultCostCenterReqBuilder() *RemoveVersionDefaultCostCenterReqBuilder {
	builder := &RemoveVersionDefaultCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 幂等标识，服务端会忽略client_token重复的请求
//
// 示例值：12454646
func (builder *RemoveVersionDefaultCostCenterReqBuilder) ClientToken(clientToken string) *RemoveVersionDefaultCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *RemoveVersionDefaultCostCenterReqBuilder) UserIdType(userIdType string) *RemoveVersionDefaultCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *RemoveVersionDefaultCostCenterReqBuilder) Body(body *RemoveVersionDefaultCostCenterReqBody) *RemoveVersionDefaultCostCenterReqBuilder {
	builder.body = body
	return builder
}

func (builder *RemoveVersionDefaultCostCenterReqBuilder) Build() *RemoveVersionDefaultCostCenterReq {
	req := &RemoveVersionDefaultCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type RemoveVersionDefaultCostCenterReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	DefaultCostCenter *EmploymentDefaultCostCenter `json:"default_cost_center,omitempty"` // 成本中心信息
}

type RemoveVersionDefaultCostCenterReq struct {
	apiReq *larkcore.ApiReq
	Body   *RemoveVersionDefaultCostCenterReqBody `body:""`
}

type RemoveVersionDefaultCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *RemoveVersionDefaultCostCenterResp) Success() bool {
	return resp.Code == 0
}

type UpdateVersionDefaultCostCenterReqBodyBuilder struct {
	employmentId     string // 员工雇佣 ID
	employmentIdFlag bool

	defaultCostCenter     *EmploymentDefaultCostCenter // 成本中心信息
	defaultCostCenterFlag bool
}

func NewUpdateVersionDefaultCostCenterReqBodyBuilder() *UpdateVersionDefaultCostCenterReqBodyBuilder {
	builder := &UpdateVersionDefaultCostCenterReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
//示例值：6862995757234914821
func (builder *UpdateVersionDefaultCostCenterReqBodyBuilder) EmploymentId(employmentId string) *UpdateVersionDefaultCostCenterReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本中心信息
//
//示例值：
func (builder *UpdateVersionDefaultCostCenterReqBodyBuilder) DefaultCostCenter(defaultCostCenter *EmploymentDefaultCostCenter) *UpdateVersionDefaultCostCenterReqBodyBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

func (builder *UpdateVersionDefaultCostCenterReqBodyBuilder) Build() *UpdateVersionDefaultCostCenterReqBody {
	req := &UpdateVersionDefaultCostCenterReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	return req
}

type UpdateVersionDefaultCostCenterPathReqBodyBuilder struct {
	employmentId          string
	employmentIdFlag      bool
	defaultCostCenter     *EmploymentDefaultCostCenter
	defaultCostCenterFlag bool
}

func NewUpdateVersionDefaultCostCenterPathReqBodyBuilder() *UpdateVersionDefaultCostCenterPathReqBodyBuilder {
	builder := &UpdateVersionDefaultCostCenterPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
// 示例值：6862995757234914821
func (builder *UpdateVersionDefaultCostCenterPathReqBodyBuilder) EmploymentId(employmentId string) *UpdateVersionDefaultCostCenterPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 成本中心信息
//
// 示例值：
func (builder *UpdateVersionDefaultCostCenterPathReqBodyBuilder) DefaultCostCenter(defaultCostCenter *EmploymentDefaultCostCenter) *UpdateVersionDefaultCostCenterPathReqBodyBuilder {
	builder.defaultCostCenter = defaultCostCenter
	builder.defaultCostCenterFlag = true
	return builder
}

func (builder *UpdateVersionDefaultCostCenterPathReqBodyBuilder) Build() (*UpdateVersionDefaultCostCenterReqBody, error) {
	req := &UpdateVersionDefaultCostCenterReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.defaultCostCenterFlag {
		req.DefaultCostCenter = builder.defaultCostCenter
	}
	return req, nil
}

type UpdateVersionDefaultCostCenterReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *UpdateVersionDefaultCostCenterReqBody
}

func NewUpdateVersionDefaultCostCenterReqBuilder() *UpdateVersionDefaultCostCenterReqBuilder {
	builder := &UpdateVersionDefaultCostCenterReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 幂等标识，服务端会忽略client_token重复的请求
//
// 示例值：12454646
func (builder *UpdateVersionDefaultCostCenterReqBuilder) ClientToken(clientToken string) *UpdateVersionDefaultCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *UpdateVersionDefaultCostCenterReqBuilder) UserIdType(userIdType string) *UpdateVersionDefaultCostCenterReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *UpdateVersionDefaultCostCenterReqBuilder) Body(body *UpdateVersionDefaultCostCenterReqBody) *UpdateVersionDefaultCostCenterReqBuilder {
	builder.body = body
	return builder
}

func (builder *UpdateVersionDefaultCostCenterReqBuilder) Build() *UpdateVersionDefaultCostCenterReq {
	req := &UpdateVersionDefaultCostCenterReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type UpdateVersionDefaultCostCenterReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工雇佣 ID

	DefaultCostCenter *EmploymentDefaultCostCenter `json:"default_cost_center,omitempty"` // 成本中心信息
}

type UpdateVersionDefaultCostCenterReq struct {
	apiReq *larkcore.ApiReq
	Body   *UpdateVersionDefaultCostCenterReqBody `body:""`
}

type UpdateVersionDefaultCostCenterResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *UpdateVersionDefaultCostCenterResp) Success() bool {
	return resp.Code == 0
}

type BatchGetDepartmentReqBodyBuilder struct {
	departmentIdList     []string // 部门 ID 列表
	departmentIdListFlag bool

	fields     []string // 返回数据的字段列表
	fieldsFlag bool

	departmentNameList     []string // 部门名称精确匹配，最多传100个
	departmentNameListFlag bool
}

func NewBatchGetDepartmentReqBodyBuilder() *BatchGetDepartmentReqBodyBuilder {
	builder := &BatchGetDepartmentReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
//示例值：
func (builder *BatchGetDepartmentReqBodyBuilder) DepartmentIdList(departmentIdList []string) *BatchGetDepartmentReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

// 返回数据的字段列表
//
//示例值：
func (builder *BatchGetDepartmentReqBodyBuilder) Fields(fields []string) *BatchGetDepartmentReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 部门名称精确匹配，最多传100个
//
//示例值：
func (builder *BatchGetDepartmentReqBodyBuilder) DepartmentNameList(departmentNameList []string) *BatchGetDepartmentReqBodyBuilder {
	builder.departmentNameList = departmentNameList
	builder.departmentNameListFlag = true
	return builder
}

func (builder *BatchGetDepartmentReqBodyBuilder) Build() *BatchGetDepartmentReqBody {
	req := &BatchGetDepartmentReqBody{}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.departmentNameListFlag {
		req.DepartmentNameList = builder.departmentNameList
	}
	return req
}

type BatchGetDepartmentPathReqBodyBuilder struct {
	departmentIdList       []string
	departmentIdListFlag   bool
	fields                 []string
	fieldsFlag             bool
	departmentNameList     []string
	departmentNameListFlag bool
}

func NewBatchGetDepartmentPathReqBodyBuilder() *BatchGetDepartmentPathReqBodyBuilder {
	builder := &BatchGetDepartmentPathReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
// 示例值：
func (builder *BatchGetDepartmentPathReqBodyBuilder) DepartmentIdList(departmentIdList []string) *BatchGetDepartmentPathReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

// 返回数据的字段列表
//
// 示例值：
func (builder *BatchGetDepartmentPathReqBodyBuilder) Fields(fields []string) *BatchGetDepartmentPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 部门名称精确匹配，最多传100个
//
// 示例值：
func (builder *BatchGetDepartmentPathReqBodyBuilder) DepartmentNameList(departmentNameList []string) *BatchGetDepartmentPathReqBodyBuilder {
	builder.departmentNameList = departmentNameList
	builder.departmentNameListFlag = true
	return builder
}

func (builder *BatchGetDepartmentPathReqBodyBuilder) Build() (*BatchGetDepartmentReqBody, error) {
	req := &BatchGetDepartmentReqBody{}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.departmentNameListFlag {
		req.DepartmentNameList = builder.departmentNameList
	}
	return req, nil
}

type BatchGetDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetDepartmentReqBody
}

func NewBatchGetDepartmentReqBuilder() *BatchGetDepartmentReqBuilder {
	builder := &BatchGetDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchGetDepartmentReqBuilder) UserIdType(userIdType string) *BatchGetDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *BatchGetDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *BatchGetDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *BatchGetDepartmentReqBuilder) Body(body *BatchGetDepartmentReqBody) *BatchGetDepartmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetDepartmentReqBuilder) Build() *BatchGetDepartmentReq {
	req := &BatchGetDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchGetDepartmentReqBody struct {
	DepartmentIdList []string `json:"department_id_list,omitempty"` // 部门 ID 列表

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表

	DepartmentNameList []string `json:"department_name_list,omitempty"` // 部门名称精确匹配，最多传100个
}

type BatchGetDepartmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetDepartmentReqBody `body:""`
}

type BatchGetDepartmentRespData struct {
	Items []*Department `json:"items,omitempty"` // 查询的部门信息
}

type BatchGetDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetDepartmentRespData `json:"data"` // 业务数据
}

func (resp *BatchGetDepartmentResp) Success() bool {
	return resp.Code == 0
}

type DeleteDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteDepartmentReqBuilder() *DeleteDepartmentReqBuilder {
	builder := &DeleteDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的部门ID
//
// 示例值：1616161616
func (builder *DeleteDepartmentReqBuilder) DepartmentId(departmentId string) *DeleteDepartmentReqBuilder {
	builder.apiReq.PathParams.Set("department_id", fmt.Sprint(departmentId))
	return builder
}

// 此次删除中所使用的部门ID类型
//
// 示例值：open_department_id
func (builder *DeleteDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *DeleteDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *DeleteDepartmentReqBuilder) Build() *DeleteDepartmentReq {
	req := &DeleteDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type DeleteDepartmentReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteDepartmentResp) Success() bool {
	return resp.Code == 0
}

type ParentsDepartmentReqBodyBuilder struct {
	departmentIdList     []string // 部门 ID 列表，一次性最多传入 100 个部门 ID
	departmentIdListFlag bool
}

func NewParentsDepartmentReqBodyBuilder() *ParentsDepartmentReqBodyBuilder {
	builder := &ParentsDepartmentReqBodyBuilder{}
	return builder
}

// 部门 ID 列表，一次性最多传入 100 个部门 ID
//
//示例值：
func (builder *ParentsDepartmentReqBodyBuilder) DepartmentIdList(departmentIdList []string) *ParentsDepartmentReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

func (builder *ParentsDepartmentReqBodyBuilder) Build() *ParentsDepartmentReqBody {
	req := &ParentsDepartmentReqBody{}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	return req
}

type ParentsDepartmentPathReqBodyBuilder struct {
	departmentIdList     []string
	departmentIdListFlag bool
}

func NewParentsDepartmentPathReqBodyBuilder() *ParentsDepartmentPathReqBodyBuilder {
	builder := &ParentsDepartmentPathReqBodyBuilder{}
	return builder
}

// 部门 ID 列表，一次性最多传入 100 个部门 ID
//
// 示例值：
func (builder *ParentsDepartmentPathReqBodyBuilder) DepartmentIdList(departmentIdList []string) *ParentsDepartmentPathReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

func (builder *ParentsDepartmentPathReqBodyBuilder) Build() (*ParentsDepartmentReqBody, error) {
	req := &ParentsDepartmentReqBody{}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	return req, nil
}

type ParentsDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ParentsDepartmentReqBody
}

func NewParentsDepartmentReqBuilder() *ParentsDepartmentReqBuilder {
	builder := &ParentsDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *ParentsDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *ParentsDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *ParentsDepartmentReqBuilder) Body(body *ParentsDepartmentReqBody) *ParentsDepartmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *ParentsDepartmentReqBuilder) Build() *ParentsDepartmentReq {
	req := &ParentsDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type ParentsDepartmentReqBody struct {
	DepartmentIdList []string `json:"department_id_list,omitempty"` // 部门 ID 列表，一次性最多传入 100 个部门 ID
}

type ParentsDepartmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *ParentsDepartmentReqBody `body:""`
}

type ParentsDepartmentRespData struct {
	Items []*DepartmentParents `json:"items,omitempty"` // 父部门查询结果
}

type ParentsDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ParentsDepartmentRespData `json:"data"` // 业务数据
}

func (resp *ParentsDepartmentResp) Success() bool {
	return resp.Code == 0
}

type PatchDepartmentReqBuilder struct {
	apiReq             *larkcore.ApiReq
	departmentForPatch *DepartmentForPatch
}

func NewPatchDepartmentReqBuilder() *PatchDepartmentReqBuilder {
	builder := &PatchDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要更新的部门 ID
//
// 示例值：1616161616
func (builder *PatchDepartmentReqBuilder) DepartmentId(departmentId string) *PatchDepartmentReqBuilder {
	builder.apiReq.PathParams.Set("department_id", fmt.Sprint(departmentId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchDepartmentReqBuilder) ClientToken(clientToken string) *PatchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *PatchDepartmentReqBuilder) UserIdType(userIdType string) *PatchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *PatchDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *PatchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 更新部门数据
func (builder *PatchDepartmentReqBuilder) DepartmentForPatch(departmentForPatch *DepartmentForPatch) *PatchDepartmentReqBuilder {
	builder.departmentForPatch = departmentForPatch
	return builder
}

func (builder *PatchDepartmentReqBuilder) Build() *PatchDepartmentReq {
	req := &PatchDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.departmentForPatch
	return req
}

type PatchDepartmentReq struct {
	apiReq             *larkcore.ApiReq
	DepartmentForPatch *DepartmentForPatch `body:""`
}

type PatchDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchDepartmentResp) Success() bool {
	return resp.Code == 0
}

type QueryMultiTimelineDepartmentReqBodyBuilder struct {
	departmentIds     []string // 部门 ID 列表
	departmentIdsFlag bool

	effectiveDateStart     string // 生效日期开始(包含)
	effectiveDateStartFlag bool

	effectiveDateEnd     string // 生效日期结束(包含)
	effectiveDateEndFlag bool

	fields     []string // 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"], 以及自定义字段field_name
	fieldsFlag bool
}

func NewQueryMultiTimelineDepartmentReqBodyBuilder() *QueryMultiTimelineDepartmentReqBodyBuilder {
	builder := &QueryMultiTimelineDepartmentReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
//示例值：
func (builder *QueryMultiTimelineDepartmentReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryMultiTimelineDepartmentReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 生效日期开始(包含)
//
//示例值：2024-01-01
func (builder *QueryMultiTimelineDepartmentReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *QueryMultiTimelineDepartmentReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 生效日期结束(包含)
//
//示例值：2024-12-31
func (builder *QueryMultiTimelineDepartmentReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *QueryMultiTimelineDepartmentReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"], 以及自定义字段field_name
//
//示例值：
func (builder *QueryMultiTimelineDepartmentReqBodyBuilder) Fields(fields []string) *QueryMultiTimelineDepartmentReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryMultiTimelineDepartmentReqBodyBuilder) Build() *QueryMultiTimelineDepartmentReqBody {
	req := &QueryMultiTimelineDepartmentReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type QueryMultiTimelineDepartmentPathReqBodyBuilder struct {
	departmentIds          []string
	departmentIdsFlag      bool
	effectiveDateStart     string
	effectiveDateStartFlag bool
	effectiveDateEnd       string
	effectiveDateEndFlag   bool
	fields                 []string
	fieldsFlag             bool
}

func NewQueryMultiTimelineDepartmentPathReqBodyBuilder() *QueryMultiTimelineDepartmentPathReqBodyBuilder {
	builder := &QueryMultiTimelineDepartmentPathReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
// 示例值：
func (builder *QueryMultiTimelineDepartmentPathReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryMultiTimelineDepartmentPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 生效日期开始(包含)
//
// 示例值：2024-01-01
func (builder *QueryMultiTimelineDepartmentPathReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *QueryMultiTimelineDepartmentPathReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 生效日期结束(包含)
//
// 示例值：2024-12-31
func (builder *QueryMultiTimelineDepartmentPathReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *QueryMultiTimelineDepartmentPathReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"], 以及自定义字段field_name
//
// 示例值：
func (builder *QueryMultiTimelineDepartmentPathReqBodyBuilder) Fields(fields []string) *QueryMultiTimelineDepartmentPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryMultiTimelineDepartmentPathReqBodyBuilder) Build() (*QueryMultiTimelineDepartmentReqBody, error) {
	req := &QueryMultiTimelineDepartmentReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type QueryMultiTimelineDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryMultiTimelineDepartmentReqBody
}

func NewQueryMultiTimelineDepartmentReqBuilder() *QueryMultiTimelineDepartmentReqBuilder {
	builder := &QueryMultiTimelineDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *QueryMultiTimelineDepartmentReqBuilder) PageSize(pageSize int) *QueryMultiTimelineDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryMultiTimelineDepartmentReqBuilder) PageToken(pageToken string) *QueryMultiTimelineDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *QueryMultiTimelineDepartmentReqBuilder) UserIdType(userIdType string) *QueryMultiTimelineDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *QueryMultiTimelineDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *QueryMultiTimelineDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 查询任意日期部门信息
func (builder *QueryMultiTimelineDepartmentReqBuilder) Body(body *QueryMultiTimelineDepartmentReqBody) *QueryMultiTimelineDepartmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryMultiTimelineDepartmentReqBuilder) Build() *QueryMultiTimelineDepartmentReq {
	req := &QueryMultiTimelineDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryMultiTimelineDepartmentReqBody struct {
	DepartmentIds []string `json:"department_ids,omitempty"` // 部门 ID 列表

	EffectiveDateStart *string `json:"effective_date_start,omitempty"` // 生效日期开始(包含)

	EffectiveDateEnd *string `json:"effective_date_end,omitempty"` // 生效日期结束(包含)

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"], 以及自定义字段field_name
}

type QueryMultiTimelineDepartmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryMultiTimelineDepartmentReqBody `body:""`
}

type QueryMultiTimelineDepartmentRespData struct {
	Items []*DepartmentTimeline `json:"items,omitempty"` // 部门信息

	PageToken *string `json:"page_token,omitempty"` // 下一页token

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type QueryMultiTimelineDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryMultiTimelineDepartmentRespData `json:"data"` // 业务数据
}

func (resp *QueryMultiTimelineDepartmentResp) Success() bool {
	return resp.Code == 0
}

type QueryOperationLogsDepartmentReqBodyBuilder struct {
	departmentIds     []string // 部门ID列表
	departmentIdsFlag bool

	startDate     string // 查询的起始操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含start_date传入的时间，系统会以start_date的00:00:00为开始时间进行查询
	startDateFlag bool

	endDate     string // 查询的截止操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含end_date传入的时间，系统会以end_date的23:59:59为截止时间进行查询。查询截止日期应大于起始日期，起止日期跨度最大为366天
	endDateFlag bool
}

func NewQueryOperationLogsDepartmentReqBodyBuilder() *QueryOperationLogsDepartmentReqBodyBuilder {
	builder := &QueryOperationLogsDepartmentReqBodyBuilder{}
	return builder
}

// 部门ID列表
//
//示例值：
func (builder *QueryOperationLogsDepartmentReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryOperationLogsDepartmentReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 查询的起始操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含start_date传入的时间，系统会以start_date的00:00:00为开始时间进行查询
//
//示例值：2023-01-01
func (builder *QueryOperationLogsDepartmentReqBodyBuilder) StartDate(startDate string) *QueryOperationLogsDepartmentReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 查询的截止操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含end_date传入的时间，系统会以end_date的23:59:59为截止时间进行查询。查询截止日期应大于起始日期，起止日期跨度最大为366天
//
//示例值：2024-01-01
func (builder *QueryOperationLogsDepartmentReqBodyBuilder) EndDate(endDate string) *QueryOperationLogsDepartmentReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

func (builder *QueryOperationLogsDepartmentReqBodyBuilder) Build() *QueryOperationLogsDepartmentReqBody {
	req := &QueryOperationLogsDepartmentReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate
	}
	return req
}

type QueryOperationLogsDepartmentPathReqBodyBuilder struct {
	departmentIds     []string
	departmentIdsFlag bool
	startDate         string
	startDateFlag     bool
	endDate           string
	endDateFlag       bool
}

func NewQueryOperationLogsDepartmentPathReqBodyBuilder() *QueryOperationLogsDepartmentPathReqBodyBuilder {
	builder := &QueryOperationLogsDepartmentPathReqBodyBuilder{}
	return builder
}

// 部门ID列表
//
// 示例值：
func (builder *QueryOperationLogsDepartmentPathReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryOperationLogsDepartmentPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 查询的起始操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含start_date传入的时间，系统会以start_date的00:00:00为开始时间进行查询
//
// 示例值：2023-01-01
func (builder *QueryOperationLogsDepartmentPathReqBodyBuilder) StartDate(startDate string) *QueryOperationLogsDepartmentPathReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 查询的截止操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含end_date传入的时间，系统会以end_date的23:59:59为截止时间进行查询。查询截止日期应大于起始日期，起止日期跨度最大为366天
//
// 示例值：2024-01-01
func (builder *QueryOperationLogsDepartmentPathReqBodyBuilder) EndDate(endDate string) *QueryOperationLogsDepartmentPathReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

func (builder *QueryOperationLogsDepartmentPathReqBodyBuilder) Build() (*QueryOperationLogsDepartmentReqBody, error) {
	req := &QueryOperationLogsDepartmentReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate
	}
	return req, nil
}

type QueryOperationLogsDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryOperationLogsDepartmentReqBody
}

func NewQueryOperationLogsDepartmentReqBuilder() *QueryOperationLogsDepartmentReqBuilder {
	builder := &QueryOperationLogsDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 1000
//
// 示例值：100
func (builder *QueryOperationLogsDepartmentReqBuilder) PageSize(pageSize int) *QueryOperationLogsDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
//
// 示例值：2
func (builder *QueryOperationLogsDepartmentReqBuilder) PageToken(pageToken string) *QueryOperationLogsDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *QueryOperationLogsDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *QueryOperationLogsDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 查询操作日志
func (builder *QueryOperationLogsDepartmentReqBuilder) Body(body *QueryOperationLogsDepartmentReqBody) *QueryOperationLogsDepartmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryOperationLogsDepartmentReqBuilder) Build() *QueryOperationLogsDepartmentReq {
	req := &QueryOperationLogsDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryOperationLogsDepartmentReqBody struct {
	DepartmentIds []string `json:"department_ids,omitempty"` // 部门ID列表

	StartDate *string `json:"start_date,omitempty"` // 查询的起始操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含start_date传入的时间，系统会以start_date的00:00:00为开始时间进行查询

	EndDate *string `json:"end_date,omitempty"` // 查询的截止操作日期，格式 "YYYY-MM-DD"，不带时分秒，包含end_date传入的时间，系统会以end_date的23:59:59为截止时间进行查询。查询截止日期应大于起始日期，起止日期跨度最大为366天
}

type QueryOperationLogsDepartmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryOperationLogsDepartmentReqBody `body:""`
}

type QueryOperationLogsDepartmentRespData struct {
	OpLogs []*OrganizationOpLog `json:"op_logs,omitempty"` // 操作日志列表

	NextPageToken *string `json:"next_page_token,omitempty"` // 下一页token

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type QueryOperationLogsDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryOperationLogsDepartmentRespData `json:"data"` // 业务数据
}

func (resp *QueryOperationLogsDepartmentResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeDepartmentReqBuilder() *QueryRecentChangeDepartmentReqBuilder {
	builder := &QueryRecentChangeDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeDepartmentReqBuilder) PageSize(pageSize int) *QueryRecentChangeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeDepartmentReqBuilder) PageToken(pageToken string) *QueryRecentChangeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，格式 "yyyy-MM-dd"，不带时分秒，包含 start_date 传入的时间, 系统会以 start_date 的 00:00:00 查询。
//
// 示例值：2024-08-01
func (builder *QueryRecentChangeDepartmentReqBuilder) StartDate(startDate string) *QueryRecentChangeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd"，不带时分秒， 查询日期小于 end_data + 1 天的 00:00:00。
//
// 示例值：2024-08-01
func (builder *QueryRecentChangeDepartmentReqBuilder) EndDate(endDate string) *QueryRecentChangeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *QueryRecentChangeDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *QueryRecentChangeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *QueryRecentChangeDepartmentReqBuilder) Build() *QueryRecentChangeDepartmentReq {
	req := &QueryRecentChangeDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeDepartmentReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeDepartmentRespData struct {
	DepartmentIds []string `json:"department_ids,omitempty"` // 部门 ID 列表

	DeletedDepartmentIds []string `json:"deleted_department_ids,omitempty"` // 目标查询时间范围内被删除的部门列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type QueryRecentChangeDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeDepartmentRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeDepartmentResp) Success() bool {
	return resp.Code == 0
}

type QueryTimelineDepartmentReqBodyBuilder struct {
	departmentIds     []string // 部门 ID 列表
	departmentIdsFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	fields     []string // 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"]
	fieldsFlag bool
}

func NewQueryTimelineDepartmentReqBodyBuilder() *QueryTimelineDepartmentReqBodyBuilder {
	builder := &QueryTimelineDepartmentReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
//示例值：
func (builder *QueryTimelineDepartmentReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryTimelineDepartmentReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 生效日期
//
//示例值：2020-01-01
func (builder *QueryTimelineDepartmentReqBodyBuilder) EffectiveDate(effectiveDate string) *QueryTimelineDepartmentReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"]
//
//示例值：
func (builder *QueryTimelineDepartmentReqBodyBuilder) Fields(fields []string) *QueryTimelineDepartmentReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryTimelineDepartmentReqBodyBuilder) Build() *QueryTimelineDepartmentReqBody {
	req := &QueryTimelineDepartmentReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type QueryTimelineDepartmentPathReqBodyBuilder struct {
	departmentIds     []string
	departmentIdsFlag bool
	effectiveDate     string
	effectiveDateFlag bool
	fields            []string
	fieldsFlag        bool
}

func NewQueryTimelineDepartmentPathReqBodyBuilder() *QueryTimelineDepartmentPathReqBodyBuilder {
	builder := &QueryTimelineDepartmentPathReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
// 示例值：
func (builder *QueryTimelineDepartmentPathReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryTimelineDepartmentPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-01-01
func (builder *QueryTimelineDepartmentPathReqBodyBuilder) EffectiveDate(effectiveDate string) *QueryTimelineDepartmentPathReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"]
//
// 示例值：
func (builder *QueryTimelineDepartmentPathReqBodyBuilder) Fields(fields []string) *QueryTimelineDepartmentPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryTimelineDepartmentPathReqBodyBuilder) Build() (*QueryTimelineDepartmentReqBody, error) {
	req := &QueryTimelineDepartmentReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type QueryTimelineDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryTimelineDepartmentReqBody
}

func NewQueryTimelineDepartmentReqBuilder() *QueryTimelineDepartmentReqBuilder {
	builder := &QueryTimelineDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *QueryTimelineDepartmentReqBuilder) UserIdType(userIdType string) *QueryTimelineDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *QueryTimelineDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *QueryTimelineDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 查询任意日期部门信息
func (builder *QueryTimelineDepartmentReqBuilder) Body(body *QueryTimelineDepartmentReqBody) *QueryTimelineDepartmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryTimelineDepartmentReqBuilder) Build() *QueryTimelineDepartmentReq {
	req := &QueryTimelineDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryTimelineDepartmentReqBody struct {
	DepartmentIds []string `json:"department_ids,omitempty"` // 部门 ID 列表

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，可选["department_name", "code", "active", "parent_department_id", "manager", "description", "effective_date"]
}

type QueryTimelineDepartmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryTimelineDepartmentReqBody `body:""`
}

type QueryTimelineDepartmentRespData struct {
	Items []*DepartmentTimeline `json:"items,omitempty"` // 部门信息
}

type QueryTimelineDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryTimelineDepartmentRespData `json:"data"` // 业务数据
}

func (resp *QueryTimelineDepartmentResp) Success() bool {
	return resp.Code == 0
}

type SearchDepartmentReqBodyBuilder struct {
	active     bool // 是否启用
	activeFlag bool

	getAllChildren     bool // 当通过上级部门 ID 查询时，填写 true 返回所有子部门，填写 false 只返回直接下级部门
	getAllChildrenFlag bool

	managerList     []string // manager ID 列表;**字段权限要求：按照部门负责人搜索 (corehr:department.manager.search:read)**
	managerListFlag bool

	departmentIdList     []string // 部门 ID 列表
	departmentIdListFlag bool

	nameList     []string // 部门名称列表，需精确匹配
	nameListFlag bool

	parentDepartmentId     string // 上级部门 ID ，可查询直接下级部门;**字段权限要求：按照上级部门搜索 (corehr:department.organize.search:read) **
	parentDepartmentIdFlag bool

	codeList     []string // 部门 code 列表
	codeListFlag bool

	getAllVersion     bool // 是否获取所有部门记录，true 为获取部门所有版本记录，false 为仅获取当前生效的部门记录，默认为 false;**字段权限要求：查询历史版本 (corehr:department.version.search:read) **
	getAllVersionFlag bool

	fields     []string // 返回数据的字段列表
	fieldsFlag bool
}

func NewSearchDepartmentReqBodyBuilder() *SearchDepartmentReqBodyBuilder {
	builder := &SearchDepartmentReqBodyBuilder{}
	return builder
}

// 是否启用
//
//示例值：true
func (builder *SearchDepartmentReqBodyBuilder) Active(active bool) *SearchDepartmentReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 当通过上级部门 ID 查询时，填写 true 返回所有子部门，填写 false 只返回直接下级部门
//
//示例值：false
func (builder *SearchDepartmentReqBodyBuilder) GetAllChildren(getAllChildren bool) *SearchDepartmentReqBodyBuilder {
	builder.getAllChildren = getAllChildren
	builder.getAllChildrenFlag = true
	return builder
}

// manager ID 列表;**字段权限要求：按照部门负责人搜索 (corehr:department.manager.search:read)**
//
//示例值：
func (builder *SearchDepartmentReqBodyBuilder) ManagerList(managerList []string) *SearchDepartmentReqBodyBuilder {
	builder.managerList = managerList
	builder.managerListFlag = true
	return builder
}

// 部门 ID 列表
//
//示例值：
func (builder *SearchDepartmentReqBodyBuilder) DepartmentIdList(departmentIdList []string) *SearchDepartmentReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

// 部门名称列表，需精确匹配
//
//示例值：
func (builder *SearchDepartmentReqBodyBuilder) NameList(nameList []string) *SearchDepartmentReqBodyBuilder {
	builder.nameList = nameList
	builder.nameListFlag = true
	return builder
}

// 上级部门 ID ，可查询直接下级部门;**字段权限要求：按照上级部门搜索 (corehr:department.organize.search:read) **
//
//示例值：7094136522860922222
func (builder *SearchDepartmentReqBodyBuilder) ParentDepartmentId(parentDepartmentId string) *SearchDepartmentReqBodyBuilder {
	builder.parentDepartmentId = parentDepartmentId
	builder.parentDepartmentIdFlag = true
	return builder
}

// 部门 code 列表
//
//示例值：
func (builder *SearchDepartmentReqBodyBuilder) CodeList(codeList []string) *SearchDepartmentReqBodyBuilder {
	builder.codeList = codeList
	builder.codeListFlag = true
	return builder
}

// 返回数据的字段列表
//
//示例值：
func (builder *SearchDepartmentReqBodyBuilder) Fields(fields []string) *SearchDepartmentReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *SearchDepartmentReqBodyBuilder) Build() *SearchDepartmentReqBody {
	req := &SearchDepartmentReqBody{}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.getAllChildrenFlag {
		req.GetAllChildren = &builder.getAllChildren
	}
	if builder.managerListFlag {
		req.ManagerList = builder.managerList
	}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	if builder.nameListFlag {
		req.NameList = builder.nameList
	}
	if builder.parentDepartmentIdFlag {
		req.ParentDepartmentId = &builder.parentDepartmentId
	}
	if builder.codeListFlag {
		req.CodeList = builder.codeList
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type SearchDepartmentPathReqBodyBuilder struct {
	active                 bool
	activeFlag             bool
	getAllChildren         bool
	getAllChildrenFlag     bool
	managerList            []string
	managerListFlag        bool
	departmentIdList       []string
	departmentIdListFlag   bool
	nameList               []string
	nameListFlag           bool
	parentDepartmentId     string
	parentDepartmentIdFlag bool
	codeList               []string
	codeListFlag           bool
	getAllVersion          bool
	getAllVersionFlag      bool
	fields                 []string
	fieldsFlag             bool
}

func NewSearchDepartmentPathReqBodyBuilder() *SearchDepartmentPathReqBodyBuilder {
	builder := &SearchDepartmentPathReqBodyBuilder{}
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *SearchDepartmentPathReqBodyBuilder) Active(active bool) *SearchDepartmentPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 当通过上级部门 ID 查询时，填写 true 返回所有子部门，填写 false 只返回直接下级部门
//
// 示例值：false
func (builder *SearchDepartmentPathReqBodyBuilder) GetAllChildren(getAllChildren bool) *SearchDepartmentPathReqBodyBuilder {
	builder.getAllChildren = getAllChildren
	builder.getAllChildrenFlag = true
	return builder
}

// manager ID 列表;**字段权限要求：按照部门负责人搜索 (corehr:department.manager.search:read)**
//
// 示例值：
func (builder *SearchDepartmentPathReqBodyBuilder) ManagerList(managerList []string) *SearchDepartmentPathReqBodyBuilder {
	builder.managerList = managerList
	builder.managerListFlag = true
	return builder
}

// 部门 ID 列表
//
// 示例值：
func (builder *SearchDepartmentPathReqBodyBuilder) DepartmentIdList(departmentIdList []string) *SearchDepartmentPathReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

// 部门名称列表，需精确匹配
//
// 示例值：
func (builder *SearchDepartmentPathReqBodyBuilder) NameList(nameList []string) *SearchDepartmentPathReqBodyBuilder {
	builder.nameList = nameList
	builder.nameListFlag = true
	return builder
}

// 上级部门 ID ，可查询直接下级部门;**字段权限要求：按照上级部门搜索 (corehr:department.organize.search:read) **
//
// 示例值：7094136522860922222
func (builder *SearchDepartmentPathReqBodyBuilder) ParentDepartmentId(parentDepartmentId string) *SearchDepartmentPathReqBodyBuilder {
	builder.parentDepartmentId = parentDepartmentId
	builder.parentDepartmentIdFlag = true
	return builder
}

// 部门 code 列表
//
// 示例值：
func (builder *SearchDepartmentPathReqBodyBuilder) CodeList(codeList []string) *SearchDepartmentPathReqBodyBuilder {
	builder.codeList = codeList
	builder.codeListFlag = true
	return builder
}

// 返回数据的字段列表
//
// 示例值：
func (builder *SearchDepartmentPathReqBodyBuilder) Fields(fields []string) *SearchDepartmentPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *SearchDepartmentPathReqBodyBuilder) Build() (*SearchDepartmentReqBody, error) {
	req := &SearchDepartmentReqBody{}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.getAllChildrenFlag {
		req.GetAllChildren = &builder.getAllChildren
	}
	if builder.managerListFlag {
		req.ManagerList = builder.managerList
	}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	if builder.nameListFlag {
		req.NameList = builder.nameList
	}
	if builder.parentDepartmentIdFlag {
		req.ParentDepartmentId = &builder.parentDepartmentId
	}
	if builder.codeListFlag {
		req.CodeList = builder.codeList
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type SearchDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchDepartmentReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchDepartmentReqBuilder() *SearchDepartmentReqBuilder {
	builder := &SearchDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchDepartmentReqBuilder) Limit(limit int) *SearchDepartmentReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchDepartmentReqBuilder) PageSize(pageSize int) *SearchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchDepartmentReqBuilder) PageToken(pageToken string) *SearchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SearchDepartmentReqBuilder) UserIdType(userIdType string) *SearchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *SearchDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *SearchDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 根据部门 ID，上级部门查询部门列表
func (builder *SearchDepartmentReqBuilder) Body(body *SearchDepartmentReqBody) *SearchDepartmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchDepartmentReqBuilder) Build() *SearchDepartmentReq {
	req := &SearchDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchDepartmentReqBody struct {
	Active *bool `json:"active,omitempty"` // 是否启用

	GetAllChildren *bool `json:"get_all_children,omitempty"` // 当通过上级部门 ID 查询时，填写 true 返回所有子部门，填写 false 只返回直接下级部门

	ManagerList []string `json:"manager_list,omitempty"` // manager ID 列表;**字段权限要求：按照部门负责人搜索 (corehr:department.manager.search:read)**

	DepartmentIdList []string `json:"department_id_list,omitempty"` // 部门 ID 列表

	NameList []string `json:"name_list,omitempty"` // 部门名称列表，需精确匹配

	ParentDepartmentId *string `json:"parent_department_id,omitempty"` // 上级部门 ID ，可查询直接下级部门;**字段权限要求：按照上级部门搜索 (corehr:department.organize.search:read) **

	CodeList []string `json:"code_list,omitempty"` // 部门 code 列表

	GetAllVersion *bool `json:"get_all_version,omitempty"` // 是否获取所有部门记录，true 为获取部门所有版本记录，false 为仅获取当前生效的部门记录，默认为 false;**字段权限要求：查询历史版本 (corehr:department.version.search:read) **

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表
}

type SearchDepartmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchDepartmentReqBody `body:""`
	Limit  int                      // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchDepartmentRespData struct {
	Items []*Department `json:"items,omitempty"` // 查询的部门信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchDepartmentRespData `json:"data"` // 业务数据
}

func (resp *SearchDepartmentResp) Success() bool {
	return resp.Code == 0
}

type TreeDepartmentReqBodyBuilder struct {
	departmentId     string // 部门 ID，默认根部门
	departmentIdFlag bool

	needInactive     bool // 是否包含失效部门，默认false
	needInactiveFlag bool

	effectiveDate     string // 生效日期，格式yyyy-mm-dd，默认当前日期
	effectiveDateFlag bool
}

func NewTreeDepartmentReqBodyBuilder() *TreeDepartmentReqBodyBuilder {
	builder := &TreeDepartmentReqBodyBuilder{}
	return builder
}

// 部门 ID，默认根部门
//
//示例值：6893014062142064111
func (builder *TreeDepartmentReqBodyBuilder) DepartmentId(departmentId string) *TreeDepartmentReqBodyBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 是否包含失效部门，默认false
//
//示例值：false
func (builder *TreeDepartmentReqBodyBuilder) NeedInactive(needInactive bool) *TreeDepartmentReqBodyBuilder {
	builder.needInactive = needInactive
	builder.needInactiveFlag = true
	return builder
}

// 生效日期，格式yyyy-mm-dd，默认当前日期
//
//示例值：2024-01-01
func (builder *TreeDepartmentReqBodyBuilder) EffectiveDate(effectiveDate string) *TreeDepartmentReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *TreeDepartmentReqBodyBuilder) Build() *TreeDepartmentReqBody {
	req := &TreeDepartmentReqBody{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId
	}
	if builder.needInactiveFlag {
		req.NeedInactive = &builder.needInactive
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	return req
}

type TreeDepartmentPathReqBodyBuilder struct {
	departmentId      string
	departmentIdFlag  bool
	needInactive      bool
	needInactiveFlag  bool
	effectiveDate     string
	effectiveDateFlag bool
}

func NewTreeDepartmentPathReqBodyBuilder() *TreeDepartmentPathReqBodyBuilder {
	builder := &TreeDepartmentPathReqBodyBuilder{}
	return builder
}

// 部门 ID，默认根部门
//
// 示例值：6893014062142064111
func (builder *TreeDepartmentPathReqBodyBuilder) DepartmentId(departmentId string) *TreeDepartmentPathReqBodyBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 是否包含失效部门，默认false
//
// 示例值：false
func (builder *TreeDepartmentPathReqBodyBuilder) NeedInactive(needInactive bool) *TreeDepartmentPathReqBodyBuilder {
	builder.needInactive = needInactive
	builder.needInactiveFlag = true
	return builder
}

// 生效日期，格式yyyy-mm-dd，默认当前日期
//
// 示例值：2024-01-01
func (builder *TreeDepartmentPathReqBodyBuilder) EffectiveDate(effectiveDate string) *TreeDepartmentPathReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *TreeDepartmentPathReqBodyBuilder) Build() (*TreeDepartmentReqBody, error) {
	req := &TreeDepartmentReqBody{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId
	}
	if builder.needInactiveFlag {
		req.NeedInactive = &builder.needInactive
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	return req, nil
}

type TreeDepartmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *TreeDepartmentReqBody
}

func NewTreeDepartmentReqBuilder() *TreeDepartmentReqBuilder {
	builder := &TreeDepartmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *TreeDepartmentReqBuilder) PageSize(pageSize int) *TreeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *TreeDepartmentReqBuilder) PageToken(pageToken string) *TreeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *TreeDepartmentReqBuilder) DepartmentIdType(departmentIdType string) *TreeDepartmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *TreeDepartmentReqBuilder) Body(body *TreeDepartmentReqBody) *TreeDepartmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *TreeDepartmentReqBuilder) Build() *TreeDepartmentReq {
	req := &TreeDepartmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type TreeDepartmentReqBody struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID，默认根部门

	NeedInactive *bool `json:"need_inactive,omitempty"` // 是否包含失效部门，默认false

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期，格式yyyy-mm-dd，默认当前日期
}

type TreeDepartmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *TreeDepartmentReqBody `body:""`
}

type TreeDepartmentRespData struct {
	Items []*DepartmentTree `json:"items,omitempty"` // 部门树节点

	PageToken *string `json:"page_token,omitempty"` // 下一页token

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type TreeDepartmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *TreeDepartmentRespData `json:"data"` // 业务数据
}

func (resp *TreeDepartmentResp) Success() bool {
	return resp.Code == 0
}

type GetDraftReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetDraftReqBuilder() *GetDraftReqBuilder {
	builder := &GetDraftReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 组织架构调整 ID
//
// 示例值：6893014062142064111
func (builder *GetDraftReqBuilder) DraftId(draftId string) *GetDraftReqBuilder {
	builder.apiReq.PathParams.Set("draft_id", fmt.Sprint(draftId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *GetDraftReqBuilder) UserIdType(userIdType string) *GetDraftReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetDraftReqBuilder) Build() *GetDraftReq {
	req := &GetDraftReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetDraftReq struct {
	apiReq *larkcore.ApiReq
}

type GetDraftRespData struct {
	DraftId *string `json:"draft_id,omitempty"` // 组织架构调整 ID

	DraftStatus *string `json:"draft_status,omitempty"` // 组织架构调整状态

	ProcessInfos []*ProcessInfo `json:"process_infos,omitempty"` // 组织架构调整流程信息列表
}

type GetDraftResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetDraftRespData `json:"data"` // 业务数据
}

func (resp *GetDraftResp) Success() bool {
	return resp.Code == 0
}

type BatchGetEmployeeReqBodyBuilder struct {
	fields     []string // 返回数据的字段列表，填写方式：为空时默认仅返回 ID
	fieldsFlag bool

	employmentIds     []string // 雇佣 ID 列表
	employmentIdsFlag bool

	personIds     []string // 个人信息 ID 列表，employment_ids参数有值时该参数不生效
	personIdsFlag bool

	workEmails     []string // 主工作邮箱列表
	workEmailsFlag bool

	userNames     []string // username列表
	userNamesFlag bool
}

func NewBatchGetEmployeeReqBodyBuilder() *BatchGetEmployeeReqBodyBuilder {
	builder := &BatchGetEmployeeReqBodyBuilder{}
	return builder
}

// 返回数据的字段列表，填写方式：为空时默认仅返回 ID
//
//示例值：
func (builder *BatchGetEmployeeReqBodyBuilder) Fields(fields []string) *BatchGetEmployeeReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 雇佣 ID 列表
//
//示例值：
func (builder *BatchGetEmployeeReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchGetEmployeeReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 个人信息 ID 列表，employment_ids参数有值时该参数不生效
//
//示例值：
func (builder *BatchGetEmployeeReqBodyBuilder) PersonIds(personIds []string) *BatchGetEmployeeReqBodyBuilder {
	builder.personIds = personIds
	builder.personIdsFlag = true
	return builder
}

// 主工作邮箱列表
//
//示例值：
func (builder *BatchGetEmployeeReqBodyBuilder) WorkEmails(workEmails []string) *BatchGetEmployeeReqBodyBuilder {
	builder.workEmails = workEmails
	builder.workEmailsFlag = true
	return builder
}

func (builder *BatchGetEmployeeReqBodyBuilder) Build() *BatchGetEmployeeReqBody {
	req := &BatchGetEmployeeReqBody{}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.personIdsFlag {
		req.PersonIds = builder.personIds
	}
	if builder.workEmailsFlag {
		req.WorkEmails = builder.workEmails
	}
	return req
}

type BatchGetEmployeePathReqBodyBuilder struct {
	fields            []string
	fieldsFlag        bool
	employmentIds     []string
	employmentIdsFlag bool
	personIds         []string
	personIdsFlag     bool
	workEmails        []string
	workEmailsFlag    bool
	userNames         []string
	userNamesFlag     bool
}

func NewBatchGetEmployeePathReqBodyBuilder() *BatchGetEmployeePathReqBodyBuilder {
	builder := &BatchGetEmployeePathReqBodyBuilder{}
	return builder
}

// 返回数据的字段列表，填写方式：为空时默认仅返回 ID
//
// 示例值：
func (builder *BatchGetEmployeePathReqBodyBuilder) Fields(fields []string) *BatchGetEmployeePathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 雇佣 ID 列表
//
// 示例值：
func (builder *BatchGetEmployeePathReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchGetEmployeePathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 个人信息 ID 列表，employment_ids参数有值时该参数不生效
//
// 示例值：
func (builder *BatchGetEmployeePathReqBodyBuilder) PersonIds(personIds []string) *BatchGetEmployeePathReqBodyBuilder {
	builder.personIds = personIds
	builder.personIdsFlag = true
	return builder
}

// 主工作邮箱列表
//
// 示例值：
func (builder *BatchGetEmployeePathReqBodyBuilder) WorkEmails(workEmails []string) *BatchGetEmployeePathReqBodyBuilder {
	builder.workEmails = workEmails
	builder.workEmailsFlag = true
	return builder
}

func (builder *BatchGetEmployeePathReqBodyBuilder) Build() (*BatchGetEmployeeReqBody, error) {
	req := &BatchGetEmployeeReqBody{}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.personIdsFlag {
		req.PersonIds = builder.personIds
	}
	if builder.workEmailsFlag {
		req.WorkEmails = builder.workEmails
	}
	return req, nil
}

type BatchGetEmployeeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetEmployeeReqBody
}

func NewBatchGetEmployeeReqBuilder() *BatchGetEmployeeReqBuilder {
	builder := &BatchGetEmployeeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchGetEmployeeReqBuilder) UserIdType(userIdType string) *BatchGetEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *BatchGetEmployeeReqBuilder) DepartmentIdType(departmentIdType string) *BatchGetEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 通过员工 ID 批量获取员工信息
func (builder *BatchGetEmployeeReqBuilder) Body(body *BatchGetEmployeeReqBody) *BatchGetEmployeeReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetEmployeeReqBuilder) Build() *BatchGetEmployeeReq {
	req := &BatchGetEmployeeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchGetEmployeeReqBody struct {
	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，填写方式：为空时默认仅返回 ID

	EmploymentIds []string `json:"employment_ids,omitempty"` // 雇佣 ID 列表

	PersonIds []string `json:"person_ids,omitempty"` // 个人信息 ID 列表，employment_ids参数有值时该参数不生效

	WorkEmails []string `json:"work_emails,omitempty"` // 主工作邮箱列表

	UserNames []string `json:"user_names,omitempty"` // username列表
}

type BatchGetEmployeeReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetEmployeeReqBody `body:""`
}

type BatchGetEmployeeRespData struct {
	Items []*Employee `json:"items,omitempty"` // 查询的雇佣信息
}

type BatchGetEmployeeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetEmployeeRespData `json:"data"` // 业务数据
}

func (resp *BatchGetEmployeeResp) Success() bool {
	return resp.Code == 0
}

type CreateEmployeeReqBodyBuilder struct {
	personalInfo     *ProfileSettingPersonalInfo // 个人信息
	personalInfoFlag bool

	employmentInfo     *ProfileSettingEmploymentInfo // 工作信息
	employmentInfoFlag bool

	career     *ProfileSettingCareer // 履历信息
	careerFlag bool

	dataAttachment     *ProfileSettingDataAttachment // 资料附件
	dataAttachmentFlag bool
}

func NewCreateEmployeeReqBodyBuilder() *CreateEmployeeReqBodyBuilder {
	builder := &CreateEmployeeReqBodyBuilder{}
	return builder
}

// 个人信息
//
//示例值：
func (builder *CreateEmployeeReqBodyBuilder) PersonalInfo(personalInfo *ProfileSettingPersonalInfo) *CreateEmployeeReqBodyBuilder {
	builder.personalInfo = personalInfo
	builder.personalInfoFlag = true
	return builder
}

// 工作信息
//
//示例值：
func (builder *CreateEmployeeReqBodyBuilder) EmploymentInfo(employmentInfo *ProfileSettingEmploymentInfo) *CreateEmployeeReqBodyBuilder {
	builder.employmentInfo = employmentInfo
	builder.employmentInfoFlag = true
	return builder
}

// 履历信息
//
//示例值：
func (builder *CreateEmployeeReqBodyBuilder) Career(career *ProfileSettingCareer) *CreateEmployeeReqBodyBuilder {
	builder.career = career
	builder.careerFlag = true
	return builder
}

// 资料附件
//
//示例值：
func (builder *CreateEmployeeReqBodyBuilder) DataAttachment(dataAttachment *ProfileSettingDataAttachment) *CreateEmployeeReqBodyBuilder {
	builder.dataAttachment = dataAttachment
	builder.dataAttachmentFlag = true
	return builder
}

func (builder *CreateEmployeeReqBodyBuilder) Build() *CreateEmployeeReqBody {
	req := &CreateEmployeeReqBody{}
	if builder.personalInfoFlag {
		req.PersonalInfo = builder.personalInfo
	}
	if builder.employmentInfoFlag {
		req.EmploymentInfo = builder.employmentInfo
	}
	if builder.careerFlag {
		req.Career = builder.career
	}
	if builder.dataAttachmentFlag {
		req.DataAttachment = builder.dataAttachment
	}
	return req
}

type CreateEmployeePathReqBodyBuilder struct {
	personalInfo       *ProfileSettingPersonalInfo
	personalInfoFlag   bool
	employmentInfo     *ProfileSettingEmploymentInfo
	employmentInfoFlag bool
	career             *ProfileSettingCareer
	careerFlag         bool
	dataAttachment     *ProfileSettingDataAttachment
	dataAttachmentFlag bool
}

func NewCreateEmployeePathReqBodyBuilder() *CreateEmployeePathReqBodyBuilder {
	builder := &CreateEmployeePathReqBodyBuilder{}
	return builder
}

// 个人信息
//
// 示例值：
func (builder *CreateEmployeePathReqBodyBuilder) PersonalInfo(personalInfo *ProfileSettingPersonalInfo) *CreateEmployeePathReqBodyBuilder {
	builder.personalInfo = personalInfo
	builder.personalInfoFlag = true
	return builder
}

// 工作信息
//
// 示例值：
func (builder *CreateEmployeePathReqBodyBuilder) EmploymentInfo(employmentInfo *ProfileSettingEmploymentInfo) *CreateEmployeePathReqBodyBuilder {
	builder.employmentInfo = employmentInfo
	builder.employmentInfoFlag = true
	return builder
}

// 履历信息
//
// 示例值：
func (builder *CreateEmployeePathReqBodyBuilder) Career(career *ProfileSettingCareer) *CreateEmployeePathReqBodyBuilder {
	builder.career = career
	builder.careerFlag = true
	return builder
}

// 资料附件
//
// 示例值：
func (builder *CreateEmployeePathReqBodyBuilder) DataAttachment(dataAttachment *ProfileSettingDataAttachment) *CreateEmployeePathReqBodyBuilder {
	builder.dataAttachment = dataAttachment
	builder.dataAttachmentFlag = true
	return builder
}

func (builder *CreateEmployeePathReqBodyBuilder) Build() (*CreateEmployeeReqBody, error) {
	req := &CreateEmployeeReqBody{}
	if builder.personalInfoFlag {
		req.PersonalInfo = builder.personalInfo
	}
	if builder.employmentInfoFlag {
		req.EmploymentInfo = builder.employmentInfo
	}
	if builder.careerFlag {
		req.Career = builder.career
	}
	if builder.dataAttachmentFlag {
		req.DataAttachment = builder.dataAttachment
	}
	return req, nil
}

type CreateEmployeeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateEmployeeReqBody
}

func NewCreateEmployeeReqBuilder() *CreateEmployeeReqBuilder {
	builder := &CreateEmployeeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 幂等标识，服务端会忽略client_token重复的请求
//
// 示例值：12454646
func (builder *CreateEmployeeReqBuilder) ClientToken(clientToken string) *CreateEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 是否为离职重聘：;false: 否，系统直接标为非离职重聘人员，不再做重复判断";true: 是，要求rehire_employment_id
//
// 示例值：true
func (builder *CreateEmployeeReqBuilder) Rehire(rehire bool) *CreateEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("rehire", fmt.Sprint(rehire))
	return builder
}

// 离职重聘员工雇佣ID, rehire
//
// 示例值：7140964208476371111
func (builder *CreateEmployeeReqBuilder) RehireEmploymentId(rehireEmploymentId string) *CreateEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("rehire_employment_id", fmt.Sprint(rehireEmploymentId))
	return builder
}

// 是否强制提交，超编等场景需要用户确认影响才能提交
//
// 示例值：false
func (builder *CreateEmployeeReqBuilder) ForceSubmit(forceSubmit bool) *CreateEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("force_submit", fmt.Sprint(forceSubmit))
	return builder
}

// 是否忽略工时制度自动生成规则
//
// 示例值：true
func (builder *CreateEmployeeReqBuilder) IgnoreWorkingHoursTypeRule(ignoreWorkingHoursTypeRule bool) *CreateEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("ignore_working_hours_type_rule", fmt.Sprint(ignoreWorkingHoursTypeRule))
	return builder
}

//
func (builder *CreateEmployeeReqBuilder) Body(body *CreateEmployeeReqBody) *CreateEmployeeReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateEmployeeReqBuilder) Build() *CreateEmployeeReq {
	req := &CreateEmployeeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateEmployeeReqBody struct {
	PersonalInfo *ProfileSettingPersonalInfo `json:"personal_info,omitempty"` // 个人信息

	EmploymentInfo *ProfileSettingEmploymentInfo `json:"employment_info,omitempty"` // 工作信息

	Career *ProfileSettingCareer `json:"career,omitempty"` // 履历信息

	DataAttachment *ProfileSettingDataAttachment `json:"data_attachment,omitempty"` // 资料附件
}

type CreateEmployeeReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateEmployeeReqBody `body:""`
}

type CreateEmployeeRespData struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣信息 ID

	ContractId *string `json:"contract_id,omitempty"` // 合同 ID

	JobDataId *string `json:"job_data_id,omitempty"` // 任职信息 ID
}

type CreateEmployeeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateEmployeeRespData `json:"data"` // 业务数据
}

func (resp *CreateEmployeeResp) Success() bool {
	return resp.Code == 0
}

type SearchEmployeeReqBodyBuilder struct {
	fields     []string // 返回数据的字段列表，填写方式：为空时默认仅返回 ID
	fieldsFlag bool

	employmentIdList     []string // 雇佣 ID 列表
	employmentIdListFlag bool

	employeeNumberList     []string // 工号列表
	employeeNumberListFlag bool

	workEmail     string // 邮箱，精确匹配查询
	workEmailFlag bool

	phoneNumber     string // 个人电话，精确匹配查询
	phoneNumberFlag bool

	keyWord     string // 搜索关键字，支持对邮箱、工号和姓名的模糊匹配
	keyWordFlag bool

	employmentStatus     string // 雇佣状态
	employmentStatusFlag bool

	employeeTypeId     string // 人员类型 ID
	employeeTypeIdFlag bool

	departmentIdList     []string // 部门 ID，根据员工主职的直接部门查询，可以通过【查询部门】API 获取 部门 ID
	departmentIdListFlag bool

	directManagerIdList     []string // 直接上级的雇佣 ID，根据员工主职的直接上级查询
	directManagerIdListFlag bool

	dottedLineManagerIdList     []string // 虚线上级的雇佣 ID，根据员工主职的虚线上级查询
	dottedLineManagerIdListFlag bool

	regularEmployeeStartDateStart     string // 转正式员工日期-搜索范围开始
	regularEmployeeStartDateStartFlag bool

	regularEmployeeStartDateEnd     string // 转正式员工日期-搜索范围结束
	regularEmployeeStartDateEndFlag bool

	effectiveTimeStart     string // 入职日期-搜索范围开始，需要与搜索范围结束一同使用
	effectiveTimeStartFlag bool

	effectiveTimeEnd     string // 入职日期-搜索范围结束
	effectiveTimeEndFlag bool

	workLocationIdListIncludeSub     []string // 工作地点 ID 列表，查询属于该工作地点及下级工作地点的员工
	workLocationIdListIncludeSubFlag bool

	preferredEnglishFullNameList     []string // 常用英文全名精确搜索
	preferredEnglishFullNameListFlag bool

	preferredLocalFullNameList     []string // 常用本地全名精确搜索
	preferredLocalFullNameListFlag bool

	nationalIdNumberList     []string // 居民身份证件号码精确搜索
	nationalIdNumberListFlag bool

	phoneNumberList     []string // 个人电话列表，精确匹配查询
	phoneNumberListFlag bool

	emailAddressList     []string // 工作邮箱地址列表，精确匹配查询
	emailAddressListFlag bool

	userName     string // 老People user_name查询，仅支持字节租户
	userNameFlag bool

	departmentIdListIncludeSub     []string // 部门 ID 列表，查询属于该部门及下级部门的员工
	departmentIdListIncludeSubFlag bool

	additionalNationalIdNumberList     []string // 其他国籍ID列表，精准匹配查询
	additionalNationalIdNumberListFlag bool

	citizenshipStatusList     []string // 公民身份类型列表，精确匹配查询
	citizenshipStatusListFlag bool

	costCenterIdList     []string // 成本中心 ID 列表;- 可通过 [【搜索成本中心信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/cost_center/search) 获取
	costCenterIdListFlag bool

	serviceCompanyList     []string // 任职公司 ID 列表;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
	serviceCompanyListFlag bool

	serviceCompanyListIncludeSub     []string // 任职公司 ID 列表（含下级）;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
	serviceCompanyListIncludeSubFlag bool

	jobFamilyIdList     []string // 序列 ID 列表; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
	jobFamilyIdListFlag bool

	jobFamilyIdListIncludeSub     []string // 序列 ID 列表（含下级）; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
	jobFamilyIdListIncludeSubFlag bool

	jobLevelIdList     []string // 职级 ID 列表;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取;- 需要有字段读取权限
	jobLevelIdListFlag bool

	jobGradeIdList     []string // 职等 ID 列表;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取;- 需要有字段读取权限
	jobGradeIdListFlag bool

	jobIdList     []string // 职务 ID 列表;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取;- 需要有字段读取权限
	jobIdListFlag bool

	positionIdList     []string // 岗位 ID 列表; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限
	positionIdListFlag bool

	positionIdListIncludeSub     []string // 岗位 ID 列表（含下级）; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限
	positionIdListIncludeSubFlag bool

	workingHoursTypeIdList     []string // 工时制度 ID 列表;- 可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取;- 需要有字段读取权限
	workingHoursTypeIdListFlag bool

	nationalityIdList     []string // 国籍 ID 列表;- 可通过[【查询国籍信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)获取;- 需要有字段读取权限
	nationalityIdListFlag bool

	payGroupIdList     []string // 员工所属薪资组 ID 列表; - 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取; - 需要有字段读取权限
	payGroupIdListFlag bool

	assignmentPayGroupIdList     []string // 员工所属外派薪资组 ID 列表;- 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取;- 需要有字段读取权限
	assignmentPayGroupIdListFlag bool

	contractTypeList     []string // 员工当前合同类型列表;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type;- 需要有字段读取权限
	contractTypeListFlag bool

	archiveCpstPlanIdList     []string // 员工当前所属薪资方案 ID 列表;- 可通过[【批量查询薪资方案】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)获取;- 需要有字段读取权限
	archiveCpstPlanIdListFlag bool
}

func NewSearchEmployeeReqBodyBuilder() *SearchEmployeeReqBodyBuilder {
	builder := &SearchEmployeeReqBodyBuilder{}
	return builder
}

// 返回数据的字段列表，填写方式：为空时默认仅返回 ID
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) Fields(fields []string) *SearchEmployeeReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 雇佣 ID 列表
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) EmploymentIdList(employmentIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.employmentIdList = employmentIdList
	builder.employmentIdListFlag = true
	return builder
}

// 工号列表
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) EmployeeNumberList(employeeNumberList []string) *SearchEmployeeReqBodyBuilder {
	builder.employeeNumberList = employeeNumberList
	builder.employeeNumberListFlag = true
	return builder
}

// 邮箱，精确匹配查询
//
//示例值：13312345678@qq.com
func (builder *SearchEmployeeReqBodyBuilder) WorkEmail(workEmail string) *SearchEmployeeReqBodyBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 个人电话，精确匹配查询
//
//示例值：16760342300
func (builder *SearchEmployeeReqBodyBuilder) PhoneNumber(phoneNumber string) *SearchEmployeeReqBodyBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 搜索关键字，支持对邮箱、工号和姓名的模糊匹配
//
//示例值：张三
func (builder *SearchEmployeeReqBodyBuilder) KeyWord(keyWord string) *SearchEmployeeReqBodyBuilder {
	builder.keyWord = keyWord
	builder.keyWordFlag = true
	return builder
}

// 雇佣状态
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) EmploymentStatus(employmentStatus string) *SearchEmployeeReqBodyBuilder {
	builder.employmentStatus = employmentStatus
	builder.employmentStatusFlag = true
	return builder
}

// 人员类型 ID
//
//示例值：6971090097697521314
func (builder *SearchEmployeeReqBodyBuilder) EmployeeTypeId(employeeTypeId string) *SearchEmployeeReqBodyBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 部门 ID，根据员工主职的直接部门查询，可以通过【查询部门】API 获取 部门 ID
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) DepartmentIdList(departmentIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

// 直接上级的雇佣 ID，根据员工主职的直接上级查询
//
//示例值：7027024823985447820
func (builder *SearchEmployeeReqBodyBuilder) DirectManagerIdList(directManagerIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.directManagerIdList = directManagerIdList
	builder.directManagerIdListFlag = true
	return builder
}

// 虚线上级的雇佣 ID，根据员工主职的虚线上级查询
//
//示例值：7027024823985117820
func (builder *SearchEmployeeReqBodyBuilder) DottedLineManagerIdList(dottedLineManagerIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.dottedLineManagerIdList = dottedLineManagerIdList
	builder.dottedLineManagerIdListFlag = true
	return builder
}

// 转正式员工日期-搜索范围开始
//
//示例值：2020-01-01
func (builder *SearchEmployeeReqBodyBuilder) RegularEmployeeStartDateStart(regularEmployeeStartDateStart string) *SearchEmployeeReqBodyBuilder {
	builder.regularEmployeeStartDateStart = regularEmployeeStartDateStart
	builder.regularEmployeeStartDateStartFlag = true
	return builder
}

// 转正式员工日期-搜索范围结束
//
//示例值：2020-01-01
func (builder *SearchEmployeeReqBodyBuilder) RegularEmployeeStartDateEnd(regularEmployeeStartDateEnd string) *SearchEmployeeReqBodyBuilder {
	builder.regularEmployeeStartDateEnd = regularEmployeeStartDateEnd
	builder.regularEmployeeStartDateEndFlag = true
	return builder
}

// 入职日期-搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2020-01-01
func (builder *SearchEmployeeReqBodyBuilder) EffectiveTimeStart(effectiveTimeStart string) *SearchEmployeeReqBodyBuilder {
	builder.effectiveTimeStart = effectiveTimeStart
	builder.effectiveTimeStartFlag = true
	return builder
}

// 入职日期-搜索范围结束
//
//示例值：2020-01-01
func (builder *SearchEmployeeReqBodyBuilder) EffectiveTimeEnd(effectiveTimeEnd string) *SearchEmployeeReqBodyBuilder {
	builder.effectiveTimeEnd = effectiveTimeEnd
	builder.effectiveTimeEndFlag = true
	return builder
}

// 工作地点 ID 列表，查询属于该工作地点及下级工作地点的员工
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) WorkLocationIdListIncludeSub(workLocationIdListIncludeSub []string) *SearchEmployeeReqBodyBuilder {
	builder.workLocationIdListIncludeSub = workLocationIdListIncludeSub
	builder.workLocationIdListIncludeSubFlag = true
	return builder
}

// 常用英文全名精确搜索
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) PreferredEnglishFullNameList(preferredEnglishFullNameList []string) *SearchEmployeeReqBodyBuilder {
	builder.preferredEnglishFullNameList = preferredEnglishFullNameList
	builder.preferredEnglishFullNameListFlag = true
	return builder
}

// 常用本地全名精确搜索
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) PreferredLocalFullNameList(preferredLocalFullNameList []string) *SearchEmployeeReqBodyBuilder {
	builder.preferredLocalFullNameList = preferredLocalFullNameList
	builder.preferredLocalFullNameListFlag = true
	return builder
}

// 居民身份证件号码精确搜索
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) NationalIdNumberList(nationalIdNumberList []string) *SearchEmployeeReqBodyBuilder {
	builder.nationalIdNumberList = nationalIdNumberList
	builder.nationalIdNumberListFlag = true
	return builder
}

// 个人电话列表，精确匹配查询
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) PhoneNumberList(phoneNumberList []string) *SearchEmployeeReqBodyBuilder {
	builder.phoneNumberList = phoneNumberList
	builder.phoneNumberListFlag = true
	return builder
}

// 工作邮箱地址列表，精确匹配查询
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) EmailAddressList(emailAddressList []string) *SearchEmployeeReqBodyBuilder {
	builder.emailAddressList = emailAddressList
	builder.emailAddressListFlag = true
	return builder
}

// 部门 ID 列表，查询属于该部门及下级部门的员工
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) DepartmentIdListIncludeSub(departmentIdListIncludeSub []string) *SearchEmployeeReqBodyBuilder {
	builder.departmentIdListIncludeSub = departmentIdListIncludeSub
	builder.departmentIdListIncludeSubFlag = true
	return builder
}

// 其他国籍ID列表，精准匹配查询
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) AdditionalNationalIdNumberList(additionalNationalIdNumberList []string) *SearchEmployeeReqBodyBuilder {
	builder.additionalNationalIdNumberList = additionalNationalIdNumberList
	builder.additionalNationalIdNumberListFlag = true
	return builder
}

// 公民身份类型列表，精确匹配查询
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) CitizenshipStatusList(citizenshipStatusList []string) *SearchEmployeeReqBodyBuilder {
	builder.citizenshipStatusList = citizenshipStatusList
	builder.citizenshipStatusListFlag = true
	return builder
}

// 成本中心 ID 列表;- 可通过 [【搜索成本中心信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/cost_center/search) 获取
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) CostCenterIdList(costCenterIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.costCenterIdList = costCenterIdList
	builder.costCenterIdListFlag = true
	return builder
}

// 任职公司 ID 列表;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) ServiceCompanyList(serviceCompanyList []string) *SearchEmployeeReqBodyBuilder {
	builder.serviceCompanyList = serviceCompanyList
	builder.serviceCompanyListFlag = true
	return builder
}

// 任职公司 ID 列表（含下级）;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) ServiceCompanyListIncludeSub(serviceCompanyListIncludeSub []string) *SearchEmployeeReqBodyBuilder {
	builder.serviceCompanyListIncludeSub = serviceCompanyListIncludeSub
	builder.serviceCompanyListIncludeSubFlag = true
	return builder
}

// 序列 ID 列表; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) JobFamilyIdList(jobFamilyIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.jobFamilyIdList = jobFamilyIdList
	builder.jobFamilyIdListFlag = true
	return builder
}

// 序列 ID 列表（含下级）; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) JobFamilyIdListIncludeSub(jobFamilyIdListIncludeSub []string) *SearchEmployeeReqBodyBuilder {
	builder.jobFamilyIdListIncludeSub = jobFamilyIdListIncludeSub
	builder.jobFamilyIdListIncludeSubFlag = true
	return builder
}

// 职级 ID 列表;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) JobLevelIdList(jobLevelIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.jobLevelIdList = jobLevelIdList
	builder.jobLevelIdListFlag = true
	return builder
}

// 职等 ID 列表;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) JobGradeIdList(jobGradeIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.jobGradeIdList = jobGradeIdList
	builder.jobGradeIdListFlag = true
	return builder
}

// 职务 ID 列表;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) JobIdList(jobIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.jobIdList = jobIdList
	builder.jobIdListFlag = true
	return builder
}

// 岗位 ID 列表; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) PositionIdList(positionIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.positionIdList = positionIdList
	builder.positionIdListFlag = true
	return builder
}

// 岗位 ID 列表（含下级）; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) PositionIdListIncludeSub(positionIdListIncludeSub []string) *SearchEmployeeReqBodyBuilder {
	builder.positionIdListIncludeSub = positionIdListIncludeSub
	builder.positionIdListIncludeSubFlag = true
	return builder
}

// 工时制度 ID 列表;- 可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) WorkingHoursTypeIdList(workingHoursTypeIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.workingHoursTypeIdList = workingHoursTypeIdList
	builder.workingHoursTypeIdListFlag = true
	return builder
}

// 国籍 ID 列表;- 可通过[【查询国籍信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)获取;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) NationalityIdList(nationalityIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.nationalityIdList = nationalityIdList
	builder.nationalityIdListFlag = true
	return builder
}

// 员工所属薪资组 ID 列表; - 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取; - 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) PayGroupIdList(payGroupIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.payGroupIdList = payGroupIdList
	builder.payGroupIdListFlag = true
	return builder
}

// 员工所属外派薪资组 ID 列表;- 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) AssignmentPayGroupIdList(assignmentPayGroupIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.assignmentPayGroupIdList = assignmentPayGroupIdList
	builder.assignmentPayGroupIdListFlag = true
	return builder
}

// 员工当前合同类型列表;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) ContractTypeList(contractTypeList []string) *SearchEmployeeReqBodyBuilder {
	builder.contractTypeList = contractTypeList
	builder.contractTypeListFlag = true
	return builder
}

// 员工当前所属薪资方案 ID 列表;- 可通过[【批量查询薪资方案】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)获取;- 需要有字段读取权限
//
//示例值：
func (builder *SearchEmployeeReqBodyBuilder) ArchiveCpstPlanIdList(archiveCpstPlanIdList []string) *SearchEmployeeReqBodyBuilder {
	builder.archiveCpstPlanIdList = archiveCpstPlanIdList
	builder.archiveCpstPlanIdListFlag = true
	return builder
}

func (builder *SearchEmployeeReqBodyBuilder) Build() *SearchEmployeeReqBody {
	req := &SearchEmployeeReqBody{}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.employmentIdListFlag {
		req.EmploymentIdList = builder.employmentIdList
	}
	if builder.employeeNumberListFlag {
		req.EmployeeNumberList = builder.employeeNumberList
	}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail
	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber
	}
	if builder.keyWordFlag {
		req.KeyWord = &builder.keyWord
	}
	if builder.employmentStatusFlag {
		req.EmploymentStatus = &builder.employmentStatus
	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId
	}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	if builder.directManagerIdListFlag {
		req.DirectManagerIdList = builder.directManagerIdList
	}
	if builder.dottedLineManagerIdListFlag {
		req.DottedLineManagerIdList = builder.dottedLineManagerIdList
	}
	if builder.regularEmployeeStartDateStartFlag {
		req.RegularEmployeeStartDateStart = &builder.regularEmployeeStartDateStart
	}
	if builder.regularEmployeeStartDateEndFlag {
		req.RegularEmployeeStartDateEnd = &builder.regularEmployeeStartDateEnd
	}
	if builder.effectiveTimeStartFlag {
		req.EffectiveTimeStart = &builder.effectiveTimeStart
	}
	if builder.effectiveTimeEndFlag {
		req.EffectiveTimeEnd = &builder.effectiveTimeEnd
	}
	if builder.workLocationIdListIncludeSubFlag {
		req.WorkLocationIdListIncludeSub = builder.workLocationIdListIncludeSub
	}
	if builder.preferredEnglishFullNameListFlag {
		req.PreferredEnglishFullNameList = builder.preferredEnglishFullNameList
	}
	if builder.preferredLocalFullNameListFlag {
		req.PreferredLocalFullNameList = builder.preferredLocalFullNameList
	}
	if builder.nationalIdNumberListFlag {
		req.NationalIdNumberList = builder.nationalIdNumberList
	}
	if builder.phoneNumberListFlag {
		req.PhoneNumberList = builder.phoneNumberList
	}
	if builder.emailAddressListFlag {
		req.EmailAddressList = builder.emailAddressList
	}
	if builder.departmentIdListIncludeSubFlag {
		req.DepartmentIdListIncludeSub = builder.departmentIdListIncludeSub
	}
	if builder.additionalNationalIdNumberListFlag {
		req.AdditionalNationalIdNumberList = builder.additionalNationalIdNumberList
	}
	if builder.citizenshipStatusListFlag {
		req.CitizenshipStatusList = builder.citizenshipStatusList
	}
	if builder.costCenterIdListFlag {
		req.CostCenterIdList = builder.costCenterIdList
	}
	if builder.serviceCompanyListFlag {
		req.ServiceCompanyList = builder.serviceCompanyList
	}
	if builder.serviceCompanyListIncludeSubFlag {
		req.ServiceCompanyListIncludeSub = builder.serviceCompanyListIncludeSub
	}
	if builder.jobFamilyIdListFlag {
		req.JobFamilyIdList = builder.jobFamilyIdList
	}
	if builder.jobFamilyIdListIncludeSubFlag {
		req.JobFamilyIdListIncludeSub = builder.jobFamilyIdListIncludeSub
	}
	if builder.jobLevelIdListFlag {
		req.JobLevelIdList = builder.jobLevelIdList
	}
	if builder.jobGradeIdListFlag {
		req.JobGradeIdList = builder.jobGradeIdList
	}
	if builder.jobIdListFlag {
		req.JobIdList = builder.jobIdList
	}
	if builder.positionIdListFlag {
		req.PositionIdList = builder.positionIdList
	}
	if builder.positionIdListIncludeSubFlag {
		req.PositionIdListIncludeSub = builder.positionIdListIncludeSub
	}
	if builder.workingHoursTypeIdListFlag {
		req.WorkingHoursTypeIdList = builder.workingHoursTypeIdList
	}
	if builder.nationalityIdListFlag {
		req.NationalityIdList = builder.nationalityIdList
	}
	if builder.payGroupIdListFlag {
		req.PayGroupIdList = builder.payGroupIdList
	}
	if builder.assignmentPayGroupIdListFlag {
		req.AssignmentPayGroupIdList = builder.assignmentPayGroupIdList
	}
	if builder.contractTypeListFlag {
		req.ContractTypeList = builder.contractTypeList
	}
	if builder.archiveCpstPlanIdListFlag {
		req.ArchiveCpstPlanIdList = builder.archiveCpstPlanIdList
	}
	return req
}

type SearchEmployeePathReqBodyBuilder struct {
	fields                             []string
	fieldsFlag                         bool
	employmentIdList                   []string
	employmentIdListFlag               bool
	employeeNumberList                 []string
	employeeNumberListFlag             bool
	workEmail                          string
	workEmailFlag                      bool
	phoneNumber                        string
	phoneNumberFlag                    bool
	keyWord                            string
	keyWordFlag                        bool
	employmentStatus                   string
	employmentStatusFlag               bool
	employeeTypeId                     string
	employeeTypeIdFlag                 bool
	departmentIdList                   []string
	departmentIdListFlag               bool
	directManagerIdList                []string
	directManagerIdListFlag            bool
	dottedLineManagerIdList            []string
	dottedLineManagerIdListFlag        bool
	regularEmployeeStartDateStart      string
	regularEmployeeStartDateStartFlag  bool
	regularEmployeeStartDateEnd        string
	regularEmployeeStartDateEndFlag    bool
	effectiveTimeStart                 string
	effectiveTimeStartFlag             bool
	effectiveTimeEnd                   string
	effectiveTimeEndFlag               bool
	workLocationIdListIncludeSub       []string
	workLocationIdListIncludeSubFlag   bool
	preferredEnglishFullNameList       []string
	preferredEnglishFullNameListFlag   bool
	preferredLocalFullNameList         []string
	preferredLocalFullNameListFlag     bool
	nationalIdNumberList               []string
	nationalIdNumberListFlag           bool
	phoneNumberList                    []string
	phoneNumberListFlag                bool
	emailAddressList                   []string
	emailAddressListFlag               bool
	userName                           string
	userNameFlag                       bool
	departmentIdListIncludeSub         []string
	departmentIdListIncludeSubFlag     bool
	additionalNationalIdNumberList     []string
	additionalNationalIdNumberListFlag bool
	citizenshipStatusList              []string
	citizenshipStatusListFlag          bool
	costCenterIdList                   []string
	costCenterIdListFlag               bool
	serviceCompanyList                 []string
	serviceCompanyListFlag             bool
	serviceCompanyListIncludeSub       []string
	serviceCompanyListIncludeSubFlag   bool
	jobFamilyIdList                    []string
	jobFamilyIdListFlag                bool
	jobFamilyIdListIncludeSub          []string
	jobFamilyIdListIncludeSubFlag      bool
	jobLevelIdList                     []string
	jobLevelIdListFlag                 bool
	jobGradeIdList                     []string
	jobGradeIdListFlag                 bool
	jobIdList                          []string
	jobIdListFlag                      bool
	positionIdList                     []string
	positionIdListFlag                 bool
	positionIdListIncludeSub           []string
	positionIdListIncludeSubFlag       bool
	workingHoursTypeIdList             []string
	workingHoursTypeIdListFlag         bool
	nationalityIdList                  []string
	nationalityIdListFlag              bool
	payGroupIdList                     []string
	payGroupIdListFlag                 bool
	assignmentPayGroupIdList           []string
	assignmentPayGroupIdListFlag       bool
	contractTypeList                   []string
	contractTypeListFlag               bool
	archiveCpstPlanIdList              []string
	archiveCpstPlanIdListFlag          bool
}

func NewSearchEmployeePathReqBodyBuilder() *SearchEmployeePathReqBodyBuilder {
	builder := &SearchEmployeePathReqBodyBuilder{}
	return builder
}

// 返回数据的字段列表，填写方式：为空时默认仅返回 ID
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) Fields(fields []string) *SearchEmployeePathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 雇佣 ID 列表
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) EmploymentIdList(employmentIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.employmentIdList = employmentIdList
	builder.employmentIdListFlag = true
	return builder
}

// 工号列表
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) EmployeeNumberList(employeeNumberList []string) *SearchEmployeePathReqBodyBuilder {
	builder.employeeNumberList = employeeNumberList
	builder.employeeNumberListFlag = true
	return builder
}

// 邮箱，精确匹配查询
//
// 示例值：13312345678@qq.com
func (builder *SearchEmployeePathReqBodyBuilder) WorkEmail(workEmail string) *SearchEmployeePathReqBodyBuilder {
	builder.workEmail = workEmail
	builder.workEmailFlag = true
	return builder
}

// 个人电话，精确匹配查询
//
// 示例值：16760342300
func (builder *SearchEmployeePathReqBodyBuilder) PhoneNumber(phoneNumber string) *SearchEmployeePathReqBodyBuilder {
	builder.phoneNumber = phoneNumber
	builder.phoneNumberFlag = true
	return builder
}

// 搜索关键字，支持对邮箱、工号和姓名的模糊匹配
//
// 示例值：张三
func (builder *SearchEmployeePathReqBodyBuilder) KeyWord(keyWord string) *SearchEmployeePathReqBodyBuilder {
	builder.keyWord = keyWord
	builder.keyWordFlag = true
	return builder
}

// 雇佣状态
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) EmploymentStatus(employmentStatus string) *SearchEmployeePathReqBodyBuilder {
	builder.employmentStatus = employmentStatus
	builder.employmentStatusFlag = true
	return builder
}

// 人员类型 ID
//
// 示例值：6971090097697521314
func (builder *SearchEmployeePathReqBodyBuilder) EmployeeTypeId(employeeTypeId string) *SearchEmployeePathReqBodyBuilder {
	builder.employeeTypeId = employeeTypeId
	builder.employeeTypeIdFlag = true
	return builder
}

// 部门 ID，根据员工主职的直接部门查询，可以通过【查询部门】API 获取 部门 ID
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) DepartmentIdList(departmentIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.departmentIdList = departmentIdList
	builder.departmentIdListFlag = true
	return builder
}

// 直接上级的雇佣 ID，根据员工主职的直接上级查询
//
// 示例值：7027024823985447820
func (builder *SearchEmployeePathReqBodyBuilder) DirectManagerIdList(directManagerIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.directManagerIdList = directManagerIdList
	builder.directManagerIdListFlag = true
	return builder
}

// 虚线上级的雇佣 ID，根据员工主职的虚线上级查询
//
// 示例值：7027024823985117820
func (builder *SearchEmployeePathReqBodyBuilder) DottedLineManagerIdList(dottedLineManagerIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.dottedLineManagerIdList = dottedLineManagerIdList
	builder.dottedLineManagerIdListFlag = true
	return builder
}

// 转正式员工日期-搜索范围开始
//
// 示例值：2020-01-01
func (builder *SearchEmployeePathReqBodyBuilder) RegularEmployeeStartDateStart(regularEmployeeStartDateStart string) *SearchEmployeePathReqBodyBuilder {
	builder.regularEmployeeStartDateStart = regularEmployeeStartDateStart
	builder.regularEmployeeStartDateStartFlag = true
	return builder
}

// 转正式员工日期-搜索范围结束
//
// 示例值：2020-01-01
func (builder *SearchEmployeePathReqBodyBuilder) RegularEmployeeStartDateEnd(regularEmployeeStartDateEnd string) *SearchEmployeePathReqBodyBuilder {
	builder.regularEmployeeStartDateEnd = regularEmployeeStartDateEnd
	builder.regularEmployeeStartDateEndFlag = true
	return builder
}

// 入职日期-搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2020-01-01
func (builder *SearchEmployeePathReqBodyBuilder) EffectiveTimeStart(effectiveTimeStart string) *SearchEmployeePathReqBodyBuilder {
	builder.effectiveTimeStart = effectiveTimeStart
	builder.effectiveTimeStartFlag = true
	return builder
}

// 入职日期-搜索范围结束
//
// 示例值：2020-01-01
func (builder *SearchEmployeePathReqBodyBuilder) EffectiveTimeEnd(effectiveTimeEnd string) *SearchEmployeePathReqBodyBuilder {
	builder.effectiveTimeEnd = effectiveTimeEnd
	builder.effectiveTimeEndFlag = true
	return builder
}

// 工作地点 ID 列表，查询属于该工作地点及下级工作地点的员工
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) WorkLocationIdListIncludeSub(workLocationIdListIncludeSub []string) *SearchEmployeePathReqBodyBuilder {
	builder.workLocationIdListIncludeSub = workLocationIdListIncludeSub
	builder.workLocationIdListIncludeSubFlag = true
	return builder
}

// 常用英文全名精确搜索
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) PreferredEnglishFullNameList(preferredEnglishFullNameList []string) *SearchEmployeePathReqBodyBuilder {
	builder.preferredEnglishFullNameList = preferredEnglishFullNameList
	builder.preferredEnglishFullNameListFlag = true
	return builder
}

// 常用本地全名精确搜索
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) PreferredLocalFullNameList(preferredLocalFullNameList []string) *SearchEmployeePathReqBodyBuilder {
	builder.preferredLocalFullNameList = preferredLocalFullNameList
	builder.preferredLocalFullNameListFlag = true
	return builder
}

// 居民身份证件号码精确搜索
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) NationalIdNumberList(nationalIdNumberList []string) *SearchEmployeePathReqBodyBuilder {
	builder.nationalIdNumberList = nationalIdNumberList
	builder.nationalIdNumberListFlag = true
	return builder
}

// 个人电话列表，精确匹配查询
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) PhoneNumberList(phoneNumberList []string) *SearchEmployeePathReqBodyBuilder {
	builder.phoneNumberList = phoneNumberList
	builder.phoneNumberListFlag = true
	return builder
}

// 工作邮箱地址列表，精确匹配查询
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) EmailAddressList(emailAddressList []string) *SearchEmployeePathReqBodyBuilder {
	builder.emailAddressList = emailAddressList
	builder.emailAddressListFlag = true
	return builder
}

// 部门 ID 列表，查询属于该部门及下级部门的员工
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) DepartmentIdListIncludeSub(departmentIdListIncludeSub []string) *SearchEmployeePathReqBodyBuilder {
	builder.departmentIdListIncludeSub = departmentIdListIncludeSub
	builder.departmentIdListIncludeSubFlag = true
	return builder
}

// 其他国籍ID列表，精准匹配查询
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) AdditionalNationalIdNumberList(additionalNationalIdNumberList []string) *SearchEmployeePathReqBodyBuilder {
	builder.additionalNationalIdNumberList = additionalNationalIdNumberList
	builder.additionalNationalIdNumberListFlag = true
	return builder
}

// 公民身份类型列表，精确匹配查询
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) CitizenshipStatusList(citizenshipStatusList []string) *SearchEmployeePathReqBodyBuilder {
	builder.citizenshipStatusList = citizenshipStatusList
	builder.citizenshipStatusListFlag = true
	return builder
}

// 成本中心 ID 列表;- 可通过 [【搜索成本中心信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/cost_center/search) 获取
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) CostCenterIdList(costCenterIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.costCenterIdList = costCenterIdList
	builder.costCenterIdListFlag = true
	return builder
}

// 任职公司 ID 列表;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) ServiceCompanyList(serviceCompanyList []string) *SearchEmployeePathReqBodyBuilder {
	builder.serviceCompanyList = serviceCompanyList
	builder.serviceCompanyListFlag = true
	return builder
}

// 任职公司 ID 列表（含下级）;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) ServiceCompanyListIncludeSub(serviceCompanyListIncludeSub []string) *SearchEmployeePathReqBodyBuilder {
	builder.serviceCompanyListIncludeSub = serviceCompanyListIncludeSub
	builder.serviceCompanyListIncludeSubFlag = true
	return builder
}

// 序列 ID 列表; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) JobFamilyIdList(jobFamilyIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.jobFamilyIdList = jobFamilyIdList
	builder.jobFamilyIdListFlag = true
	return builder
}

// 序列 ID 列表（含下级）; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) JobFamilyIdListIncludeSub(jobFamilyIdListIncludeSub []string) *SearchEmployeePathReqBodyBuilder {
	builder.jobFamilyIdListIncludeSub = jobFamilyIdListIncludeSub
	builder.jobFamilyIdListIncludeSubFlag = true
	return builder
}

// 职级 ID 列表;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) JobLevelIdList(jobLevelIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.jobLevelIdList = jobLevelIdList
	builder.jobLevelIdListFlag = true
	return builder
}

// 职等 ID 列表;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) JobGradeIdList(jobGradeIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.jobGradeIdList = jobGradeIdList
	builder.jobGradeIdListFlag = true
	return builder
}

// 职务 ID 列表;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) JobIdList(jobIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.jobIdList = jobIdList
	builder.jobIdListFlag = true
	return builder
}

// 岗位 ID 列表; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) PositionIdList(positionIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.positionIdList = positionIdList
	builder.positionIdListFlag = true
	return builder
}

// 岗位 ID 列表（含下级）; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) PositionIdListIncludeSub(positionIdListIncludeSub []string) *SearchEmployeePathReqBodyBuilder {
	builder.positionIdListIncludeSub = positionIdListIncludeSub
	builder.positionIdListIncludeSubFlag = true
	return builder
}

// 工时制度 ID 列表;- 可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) WorkingHoursTypeIdList(workingHoursTypeIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.workingHoursTypeIdList = workingHoursTypeIdList
	builder.workingHoursTypeIdListFlag = true
	return builder
}

// 国籍 ID 列表;- 可通过[【查询国籍信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)获取;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) NationalityIdList(nationalityIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.nationalityIdList = nationalityIdList
	builder.nationalityIdListFlag = true
	return builder
}

// 员工所属薪资组 ID 列表; - 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取; - 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) PayGroupIdList(payGroupIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.payGroupIdList = payGroupIdList
	builder.payGroupIdListFlag = true
	return builder
}

// 员工所属外派薪资组 ID 列表;- 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) AssignmentPayGroupIdList(assignmentPayGroupIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.assignmentPayGroupIdList = assignmentPayGroupIdList
	builder.assignmentPayGroupIdListFlag = true
	return builder
}

// 员工当前合同类型列表;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) ContractTypeList(contractTypeList []string) *SearchEmployeePathReqBodyBuilder {
	builder.contractTypeList = contractTypeList
	builder.contractTypeListFlag = true
	return builder
}

// 员工当前所属薪资方案 ID 列表;- 可通过[【批量查询薪资方案】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)获取;- 需要有字段读取权限
//
// 示例值：
func (builder *SearchEmployeePathReqBodyBuilder) ArchiveCpstPlanIdList(archiveCpstPlanIdList []string) *SearchEmployeePathReqBodyBuilder {
	builder.archiveCpstPlanIdList = archiveCpstPlanIdList
	builder.archiveCpstPlanIdListFlag = true
	return builder
}

func (builder *SearchEmployeePathReqBodyBuilder) Build() (*SearchEmployeeReqBody, error) {
	req := &SearchEmployeeReqBody{}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.employmentIdListFlag {
		req.EmploymentIdList = builder.employmentIdList
	}
	if builder.employeeNumberListFlag {
		req.EmployeeNumberList = builder.employeeNumberList
	}
	if builder.workEmailFlag {
		req.WorkEmail = &builder.workEmail
	}
	if builder.phoneNumberFlag {
		req.PhoneNumber = &builder.phoneNumber
	}
	if builder.keyWordFlag {
		req.KeyWord = &builder.keyWord
	}
	if builder.employmentStatusFlag {
		req.EmploymentStatus = &builder.employmentStatus
	}
	if builder.employeeTypeIdFlag {
		req.EmployeeTypeId = &builder.employeeTypeId
	}
	if builder.departmentIdListFlag {
		req.DepartmentIdList = builder.departmentIdList
	}
	if builder.directManagerIdListFlag {
		req.DirectManagerIdList = builder.directManagerIdList
	}
	if builder.dottedLineManagerIdListFlag {
		req.DottedLineManagerIdList = builder.dottedLineManagerIdList
	}
	if builder.regularEmployeeStartDateStartFlag {
		req.RegularEmployeeStartDateStart = &builder.regularEmployeeStartDateStart
	}
	if builder.regularEmployeeStartDateEndFlag {
		req.RegularEmployeeStartDateEnd = &builder.regularEmployeeStartDateEnd
	}
	if builder.effectiveTimeStartFlag {
		req.EffectiveTimeStart = &builder.effectiveTimeStart
	}
	if builder.effectiveTimeEndFlag {
		req.EffectiveTimeEnd = &builder.effectiveTimeEnd
	}
	if builder.workLocationIdListIncludeSubFlag {
		req.WorkLocationIdListIncludeSub = builder.workLocationIdListIncludeSub
	}
	if builder.preferredEnglishFullNameListFlag {
		req.PreferredEnglishFullNameList = builder.preferredEnglishFullNameList
	}
	if builder.preferredLocalFullNameListFlag {
		req.PreferredLocalFullNameList = builder.preferredLocalFullNameList
	}
	if builder.nationalIdNumberListFlag {
		req.NationalIdNumberList = builder.nationalIdNumberList
	}
	if builder.phoneNumberListFlag {
		req.PhoneNumberList = builder.phoneNumberList
	}
	if builder.emailAddressListFlag {
		req.EmailAddressList = builder.emailAddressList
	}
	if builder.departmentIdListIncludeSubFlag {
		req.DepartmentIdListIncludeSub = builder.departmentIdListIncludeSub
	}
	if builder.additionalNationalIdNumberListFlag {
		req.AdditionalNationalIdNumberList = builder.additionalNationalIdNumberList
	}
	if builder.citizenshipStatusListFlag {
		req.CitizenshipStatusList = builder.citizenshipStatusList
	}
	if builder.costCenterIdListFlag {
		req.CostCenterIdList = builder.costCenterIdList
	}
	if builder.serviceCompanyListFlag {
		req.ServiceCompanyList = builder.serviceCompanyList
	}
	if builder.serviceCompanyListIncludeSubFlag {
		req.ServiceCompanyListIncludeSub = builder.serviceCompanyListIncludeSub
	}
	if builder.jobFamilyIdListFlag {
		req.JobFamilyIdList = builder.jobFamilyIdList
	}
	if builder.jobFamilyIdListIncludeSubFlag {
		req.JobFamilyIdListIncludeSub = builder.jobFamilyIdListIncludeSub
	}
	if builder.jobLevelIdListFlag {
		req.JobLevelIdList = builder.jobLevelIdList
	}
	if builder.jobGradeIdListFlag {
		req.JobGradeIdList = builder.jobGradeIdList
	}
	if builder.jobIdListFlag {
		req.JobIdList = builder.jobIdList
	}
	if builder.positionIdListFlag {
		req.PositionIdList = builder.positionIdList
	}
	if builder.positionIdListIncludeSubFlag {
		req.PositionIdListIncludeSub = builder.positionIdListIncludeSub
	}
	if builder.workingHoursTypeIdListFlag {
		req.WorkingHoursTypeIdList = builder.workingHoursTypeIdList
	}
	if builder.nationalityIdListFlag {
		req.NationalityIdList = builder.nationalityIdList
	}
	if builder.payGroupIdListFlag {
		req.PayGroupIdList = builder.payGroupIdList
	}
	if builder.assignmentPayGroupIdListFlag {
		req.AssignmentPayGroupIdList = builder.assignmentPayGroupIdList
	}
	if builder.contractTypeListFlag {
		req.ContractTypeList = builder.contractTypeList
	}
	if builder.archiveCpstPlanIdListFlag {
		req.ArchiveCpstPlanIdList = builder.archiveCpstPlanIdList
	}
	return req, nil
}

type SearchEmployeeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchEmployeeReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchEmployeeReqBuilder() *SearchEmployeeReqBuilder {
	builder := &SearchEmployeeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchEmployeeReqBuilder) Limit(limit int) *SearchEmployeeReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchEmployeeReqBuilder) PageSize(pageSize int) *SearchEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchEmployeeReqBuilder) PageToken(pageToken string) *SearchEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SearchEmployeeReqBuilder) UserIdType(userIdType string) *SearchEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *SearchEmployeeReqBuilder) DepartmentIdType(departmentIdType string) *SearchEmployeeReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 根据 email、工号、个人电话等条件查询员工雇佣信息以及个人基础信息
func (builder *SearchEmployeeReqBuilder) Body(body *SearchEmployeeReqBody) *SearchEmployeeReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchEmployeeReqBuilder) Build() *SearchEmployeeReq {
	req := &SearchEmployeeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchEmployeeReqBody struct {
	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，填写方式：为空时默认仅返回 ID

	EmploymentIdList []string `json:"employment_id_list,omitempty"` // 雇佣 ID 列表

	EmployeeNumberList []string `json:"employee_number_list,omitempty"` // 工号列表

	WorkEmail *string `json:"work_email,omitempty"` // 邮箱，精确匹配查询

	PhoneNumber *string `json:"phone_number,omitempty"` // 个人电话，精确匹配查询

	KeyWord *string `json:"key_word,omitempty"` // 搜索关键字，支持对邮箱、工号和姓名的模糊匹配

	EmploymentStatus *string `json:"employment_status,omitempty"` // 雇佣状态

	EmployeeTypeId *string `json:"employee_type_id,omitempty"` // 人员类型 ID

	DepartmentIdList []string `json:"department_id_list,omitempty"` // 部门 ID，根据员工主职的直接部门查询，可以通过【查询部门】API 获取 部门 ID

	DirectManagerIdList []string `json:"direct_manager_id_list,omitempty"` // 直接上级的雇佣 ID，根据员工主职的直接上级查询

	DottedLineManagerIdList []string `json:"dotted_line_manager_id_list,omitempty"` // 虚线上级的雇佣 ID，根据员工主职的虚线上级查询

	RegularEmployeeStartDateStart *string `json:"regular_employee_start_date_start,omitempty"` // 转正式员工日期-搜索范围开始

	RegularEmployeeStartDateEnd *string `json:"regular_employee_start_date_end,omitempty"` // 转正式员工日期-搜索范围结束

	EffectiveTimeStart *string `json:"effective_time_start,omitempty"` // 入职日期-搜索范围开始，需要与搜索范围结束一同使用

	EffectiveTimeEnd *string `json:"effective_time_end,omitempty"` // 入职日期-搜索范围结束

	WorkLocationIdListIncludeSub []string `json:"work_location_id_list_include_sub,omitempty"` // 工作地点 ID 列表，查询属于该工作地点及下级工作地点的员工

	PreferredEnglishFullNameList []string `json:"preferred_english_full_name_list,omitempty"` // 常用英文全名精确搜索

	PreferredLocalFullNameList []string `json:"preferred_local_full_name_list,omitempty"` // 常用本地全名精确搜索

	NationalIdNumberList []string `json:"national_id_number_list,omitempty"` // 居民身份证件号码精确搜索

	PhoneNumberList []string `json:"phone_number_list,omitempty"` // 个人电话列表，精确匹配查询

	EmailAddressList []string `json:"email_address_list,omitempty"` // 工作邮箱地址列表，精确匹配查询

	UserName *string `json:"user_name,omitempty"` // 老People user_name查询，仅支持字节租户

	DepartmentIdListIncludeSub []string `json:"department_id_list_include_sub,omitempty"` // 部门 ID 列表，查询属于该部门及下级部门的员工

	AdditionalNationalIdNumberList []string `json:"additional_national_id_number_list,omitempty"` // 其他国籍ID列表，精准匹配查询

	CitizenshipStatusList []string `json:"citizenship_status_list,omitempty"` // 公民身份类型列表，精确匹配查询

	CostCenterIdList []string `json:"cost_center_id_list,omitempty"` // 成本中心 ID 列表;- 可通过 [【搜索成本中心信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/cost_center/search) 获取

	ServiceCompanyList []string `json:"service_company_list,omitempty"` // 任职公司 ID 列表;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取

	ServiceCompanyListIncludeSub []string `json:"service_company_list_include_sub,omitempty"` // 任职公司 ID 列表（含下级）;- [【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取

	JobFamilyIdList []string `json:"job_family_id_list,omitempty"` // 序列 ID 列表; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取

	JobFamilyIdListIncludeSub []string `json:"job_family_id_list_include_sub,omitempty"` // 序列 ID 列表（含下级）; - [【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取

	JobLevelIdList []string `json:"job_level_id_list,omitempty"` // 职级 ID 列表;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取;- 需要有字段读取权限

	JobGradeIdList []string `json:"job_grade_id_list,omitempty"` // 职等 ID 列表;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取;- 需要有字段读取权限

	JobIdList []string `json:"job_id_list,omitempty"` // 职务 ID 列表;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取;- 需要有字段读取权限

	PositionIdList []string `json:"position_id_list,omitempty"` // 岗位 ID 列表; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限

	PositionIdListIncludeSub []string `json:"position_id_list_include_sub,omitempty"` // 岗位 ID 列表（含下级）; - 功能灰度中，如有需求请联系[技术支持](https://applink.feishu.cn/TLJpeNdW); - 需要有字段读取权限

	WorkingHoursTypeIdList []string `json:"working_hours_type_id_list,omitempty"` // 工时制度 ID 列表;- 可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取;- 需要有字段读取权限

	NationalityIdList []string `json:"nationality_id_list,omitempty"` // 国籍 ID 列表;- 可通过[【查询国籍信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-nationality/search)获取;- 需要有字段读取权限

	PayGroupIdList []string `json:"pay_group_id_list,omitempty"` // 员工所属薪资组 ID 列表; - 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取; - 需要有字段读取权限

	AssignmentPayGroupIdList []string `json:"assignment_pay_group_id_list,omitempty"` // 员工所属外派薪资组 ID 列表;- 可通过 [【获取薪资组基本信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list) 获取;- 需要有字段读取权限

	ContractTypeList []string `json:"contract_type_list,omitempty"` // 员工当前合同类型列表;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)查询;  - object_api_name：contract;  - custom_api_name：contract_type;- 需要有字段读取权限

	ArchiveCpstPlanIdList []string `json:"archive_cpst_plan_id_list,omitempty"` // 员工当前所属薪资方案 ID 列表;- 可通过[【批量查询薪资方案】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)获取;- 需要有字段读取权限
}

type SearchEmployeeReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchEmployeeReqBody `body:""`
	Limit  int                    // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchEmployeeRespData struct {
	Items []*Employee `json:"items,omitempty"` // 查询的雇佣信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchEmployeeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchEmployeeRespData `json:"data"` // 业务数据
}

func (resp *SearchEmployeeResp) Success() bool {
	return resp.Code == 0
}

type BatchEmployeesAdditionalJobReqBodyBuilder struct {
	employmentIds     []string // 雇佣 ID
	employmentIdsFlag bool

	additionalJobIds     []string // 兼职 ID
	additionalJobIdsFlag bool

	startDate     *EmployeesAdditionalJobBatchReqDate // 开始日期
	startDateFlag bool

	endDate     *EmployeesAdditionalJobBatchReqDate // 结束日期
	endDateFlag bool

	dataDate     string // 查看数据日期，默认当天
	dataDateFlag bool

	isEffective     bool // 仅查询 【data_date】日期生效中的
	isEffectiveFlag bool
}

func NewBatchEmployeesAdditionalJobReqBodyBuilder() *BatchEmployeesAdditionalJobReqBodyBuilder {
	builder := &BatchEmployeesAdditionalJobReqBodyBuilder{}
	return builder
}

// 雇佣 ID
//
//示例值：
func (builder *BatchEmployeesAdditionalJobReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchEmployeesAdditionalJobReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 兼职 ID
//
//示例值：
func (builder *BatchEmployeesAdditionalJobReqBodyBuilder) AdditionalJobIds(additionalJobIds []string) *BatchEmployeesAdditionalJobReqBodyBuilder {
	builder.additionalJobIds = additionalJobIds
	builder.additionalJobIdsFlag = true
	return builder
}

// 开始日期
//
//示例值：
func (builder *BatchEmployeesAdditionalJobReqBodyBuilder) StartDate(startDate *EmployeesAdditionalJobBatchReqDate) *BatchEmployeesAdditionalJobReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
//示例值：
func (builder *BatchEmployeesAdditionalJobReqBodyBuilder) EndDate(endDate *EmployeesAdditionalJobBatchReqDate) *BatchEmployeesAdditionalJobReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 查看数据日期，默认当天
//
//示例值：2024-01-02
func (builder *BatchEmployeesAdditionalJobReqBodyBuilder) DataDate(dataDate string) *BatchEmployeesAdditionalJobReqBodyBuilder {
	builder.dataDate = dataDate
	builder.dataDateFlag = true
	return builder
}

// 仅查询 【data_date】日期生效中的
//
//示例值：true
func (builder *BatchEmployeesAdditionalJobReqBodyBuilder) IsEffective(isEffective bool) *BatchEmployeesAdditionalJobReqBodyBuilder {
	builder.isEffective = isEffective
	builder.isEffectiveFlag = true
	return builder
}

func (builder *BatchEmployeesAdditionalJobReqBodyBuilder) Build() *BatchEmployeesAdditionalJobReqBody {
	req := &BatchEmployeesAdditionalJobReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.additionalJobIdsFlag {
		req.AdditionalJobIds = builder.additionalJobIds
	}
	if builder.startDateFlag {
		req.StartDate = builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = builder.endDate
	}
	if builder.dataDateFlag {
		req.DataDate = &builder.dataDate
	}
	if builder.isEffectiveFlag {
		req.IsEffective = &builder.isEffective
	}
	return req
}

type BatchEmployeesAdditionalJobPathReqBodyBuilder struct {
	employmentIds        []string
	employmentIdsFlag    bool
	additionalJobIds     []string
	additionalJobIdsFlag bool
	startDate            *EmployeesAdditionalJobBatchReqDate
	startDateFlag        bool
	endDate              *EmployeesAdditionalJobBatchReqDate
	endDateFlag          bool
	dataDate             string
	dataDateFlag         bool
	isEffective          bool
	isEffectiveFlag      bool
}

func NewBatchEmployeesAdditionalJobPathReqBodyBuilder() *BatchEmployeesAdditionalJobPathReqBodyBuilder {
	builder := &BatchEmployeesAdditionalJobPathReqBodyBuilder{}
	return builder
}

// 雇佣 ID
//
// 示例值：
func (builder *BatchEmployeesAdditionalJobPathReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchEmployeesAdditionalJobPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 兼职 ID
//
// 示例值：
func (builder *BatchEmployeesAdditionalJobPathReqBodyBuilder) AdditionalJobIds(additionalJobIds []string) *BatchEmployeesAdditionalJobPathReqBodyBuilder {
	builder.additionalJobIds = additionalJobIds
	builder.additionalJobIdsFlag = true
	return builder
}

// 开始日期
//
// 示例值：
func (builder *BatchEmployeesAdditionalJobPathReqBodyBuilder) StartDate(startDate *EmployeesAdditionalJobBatchReqDate) *BatchEmployeesAdditionalJobPathReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 结束日期
//
// 示例值：
func (builder *BatchEmployeesAdditionalJobPathReqBodyBuilder) EndDate(endDate *EmployeesAdditionalJobBatchReqDate) *BatchEmployeesAdditionalJobPathReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 查看数据日期，默认当天
//
// 示例值：2024-01-02
func (builder *BatchEmployeesAdditionalJobPathReqBodyBuilder) DataDate(dataDate string) *BatchEmployeesAdditionalJobPathReqBodyBuilder {
	builder.dataDate = dataDate
	builder.dataDateFlag = true
	return builder
}

// 仅查询 【data_date】日期生效中的
//
// 示例值：true
func (builder *BatchEmployeesAdditionalJobPathReqBodyBuilder) IsEffective(isEffective bool) *BatchEmployeesAdditionalJobPathReqBodyBuilder {
	builder.isEffective = isEffective
	builder.isEffectiveFlag = true
	return builder
}

func (builder *BatchEmployeesAdditionalJobPathReqBodyBuilder) Build() (*BatchEmployeesAdditionalJobReqBody, error) {
	req := &BatchEmployeesAdditionalJobReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.additionalJobIdsFlag {
		req.AdditionalJobIds = builder.additionalJobIds
	}
	if builder.startDateFlag {
		req.StartDate = builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = builder.endDate
	}
	if builder.dataDateFlag {
		req.DataDate = &builder.dataDate
	}
	if builder.isEffectiveFlag {
		req.IsEffective = &builder.isEffective
	}
	return req, nil
}

type BatchEmployeesAdditionalJobReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchEmployeesAdditionalJobReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewBatchEmployeesAdditionalJobReqBuilder() *BatchEmployeesAdditionalJobReqBuilder {
	builder := &BatchEmployeesAdditionalJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *BatchEmployeesAdditionalJobReqBuilder) Limit(limit int) *BatchEmployeesAdditionalJobReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：10
func (builder *BatchEmployeesAdditionalJobReqBuilder) PageSize(pageSize int) *BatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：Njg5MTI1MTcyMjYzMTg5MDQ0NQ==
func (builder *BatchEmployeesAdditionalJobReqBuilder) PageToken(pageToken string) *BatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchEmployeesAdditionalJobReqBuilder) UserIdType(userIdType string) *BatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *BatchEmployeesAdditionalJobReqBuilder) DepartmentIdType(departmentIdType string) *BatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 批量查询兼职信息
func (builder *BatchEmployeesAdditionalJobReqBuilder) Body(body *BatchEmployeesAdditionalJobReqBody) *BatchEmployeesAdditionalJobReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchEmployeesAdditionalJobReqBuilder) Build() *BatchEmployeesAdditionalJobReq {
	req := &BatchEmployeesAdditionalJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchEmployeesAdditionalJobReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 雇佣 ID

	AdditionalJobIds []string `json:"additional_job_ids,omitempty"` // 兼职 ID

	StartDate *EmployeesAdditionalJobBatchReqDate `json:"start_date,omitempty"` // 开始日期

	EndDate *EmployeesAdditionalJobBatchReqDate `json:"end_date,omitempty"` // 结束日期

	DataDate *string `json:"data_date,omitempty"` // 查看数据日期，默认当天

	IsEffective *bool `json:"is_effective,omitempty"` // 仅查询 【data_date】日期生效中的
}

type BatchEmployeesAdditionalJobReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchEmployeesAdditionalJobReqBody `body:""`
	Limit  int                                 // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type BatchEmployeesAdditionalJobRespData struct {
	Items []*EmployeesAdditionalJob `json:"items,omitempty"` // 兼职记录

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type BatchEmployeesAdditionalJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchEmployeesAdditionalJobRespData `json:"data"` // 业务数据
}

func (resp *BatchEmployeesAdditionalJobResp) Success() bool {
	return resp.Code == 0
}

type CreateEmployeesAdditionalJobReqBuilder struct {
	apiReq                     *larkcore.ApiReq
	employeesAdditionalJobEdit *EmployeesAdditionalJobEdit
}

func NewCreateEmployeesAdditionalJobReqBuilder() *CreateEmployeesAdditionalJobReqBuilder {
	builder := &CreateEmployeesAdditionalJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 操作的唯一标识，用于幂等校验。请求成功时，重复的client_token不会再创建、变更数据。
//
// 示例值：12454646
func (builder *CreateEmployeesAdditionalJobReqBuilder) ClientToken(clientToken string) *CreateEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *CreateEmployeesAdditionalJobReqBuilder) UserIdType(userIdType string) *CreateEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *CreateEmployeesAdditionalJobReqBuilder) DepartmentIdType(departmentIdType string) *CreateEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 创建兼职
func (builder *CreateEmployeesAdditionalJobReqBuilder) EmployeesAdditionalJobEdit(employeesAdditionalJobEdit *EmployeesAdditionalJobEdit) *CreateEmployeesAdditionalJobReqBuilder {
	builder.employeesAdditionalJobEdit = employeesAdditionalJobEdit
	return builder
}

func (builder *CreateEmployeesAdditionalJobReqBuilder) Build() *CreateEmployeesAdditionalJobReq {
	req := &CreateEmployeesAdditionalJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employeesAdditionalJobEdit
	return req
}

type CreateEmployeesAdditionalJobReq struct {
	apiReq                     *larkcore.ApiReq
	EmployeesAdditionalJobEdit *EmployeesAdditionalJobEdit `body:""`
}

type CreateEmployeesAdditionalJobRespData struct {
	AdditionalJob *EmployeesAdditionalJobWriteResp `json:"additional_job,omitempty"` //
}

type CreateEmployeesAdditionalJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateEmployeesAdditionalJobRespData `json:"data"` // 业务数据
}

func (resp *CreateEmployeesAdditionalJobResp) Success() bool {
	return resp.Code == 0
}

type DeleteEmployeesAdditionalJobReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteEmployeesAdditionalJobReqBuilder() *DeleteEmployeesAdditionalJobReqBuilder {
	builder := &DeleteEmployeesAdditionalJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 兼职记录ID
//
// 示例值：654637829201
func (builder *DeleteEmployeesAdditionalJobReqBuilder) AdditionalJobId(additionalJobId string) *DeleteEmployeesAdditionalJobReqBuilder {
	builder.apiReq.PathParams.Set("additional_job_id", fmt.Sprint(additionalJobId))
	return builder
}

func (builder *DeleteEmployeesAdditionalJobReqBuilder) Build() *DeleteEmployeesAdditionalJobReq {
	req := &DeleteEmployeesAdditionalJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteEmployeesAdditionalJobReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteEmployeesAdditionalJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteEmployeesAdditionalJobResp) Success() bool {
	return resp.Code == 0
}

type PatchEmployeesAdditionalJobReqBuilder struct {
	apiReq                     *larkcore.ApiReq
	employeesAdditionalJobEdit *EmployeesAdditionalJobEdit
}

func NewPatchEmployeesAdditionalJobReqBuilder() *PatchEmployeesAdditionalJobReqBuilder {
	builder := &PatchEmployeesAdditionalJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 兼职记录ID
//
// 示例值：12454646
func (builder *PatchEmployeesAdditionalJobReqBuilder) AdditionalJobId(additionalJobId string) *PatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.PathParams.Set("additional_job_id", fmt.Sprint(additionalJobId))
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchEmployeesAdditionalJobReqBuilder) ClientToken(clientToken string) *PatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *PatchEmployeesAdditionalJobReqBuilder) UserIdType(userIdType string) *PatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *PatchEmployeesAdditionalJobReqBuilder) DepartmentIdType(departmentIdType string) *PatchEmployeesAdditionalJobReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 更新兼职
func (builder *PatchEmployeesAdditionalJobReqBuilder) EmployeesAdditionalJobEdit(employeesAdditionalJobEdit *EmployeesAdditionalJobEdit) *PatchEmployeesAdditionalJobReqBuilder {
	builder.employeesAdditionalJobEdit = employeesAdditionalJobEdit
	return builder
}

func (builder *PatchEmployeesAdditionalJobReqBuilder) Build() *PatchEmployeesAdditionalJobReq {
	req := &PatchEmployeesAdditionalJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employeesAdditionalJobEdit
	return req
}

type PatchEmployeesAdditionalJobReq struct {
	apiReq                     *larkcore.ApiReq
	EmployeesAdditionalJobEdit *EmployeesAdditionalJobEdit `body:""`
}

type PatchEmployeesAdditionalJobRespData struct {
	AdditionalJob *EmployeesAdditionalJobWriteResp `json:"additional_job,omitempty"` //
}

type PatchEmployeesAdditionalJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchEmployeesAdditionalJobRespData `json:"data"` // 业务数据
}

func (resp *PatchEmployeesAdditionalJobResp) Success() bool {
	return resp.Code == 0
}

type BatchGetEmployeesBpReqBodyBuilder struct {
	employmentIds     []string // 员工雇佣 ID
	employmentIdsFlag bool

	getAll     bool // 是否获取全部 BP，true 为获取员工所在部门及来自上级部门的全部 HRBP 和属地 BP，false 为仅获取员工的直属 HRBP 和属地 BP（当员工所在部门、属地无 BP 时，会上钻找到最近的 BP），默认为 false
	getAllFlag bool
}

func NewBatchGetEmployeesBpReqBodyBuilder() *BatchGetEmployeesBpReqBodyBuilder {
	builder := &BatchGetEmployeesBpReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
//示例值：
func (builder *BatchGetEmployeesBpReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchGetEmployeesBpReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 是否获取全部 BP，true 为获取员工所在部门及来自上级部门的全部 HRBP 和属地 BP，false 为仅获取员工的直属 HRBP 和属地 BP（当员工所在部门、属地无 BP 时，会上钻找到最近的 BP），默认为 false
//
//示例值：true
func (builder *BatchGetEmployeesBpReqBodyBuilder) GetAll(getAll bool) *BatchGetEmployeesBpReqBodyBuilder {
	builder.getAll = getAll
	builder.getAllFlag = true
	return builder
}

func (builder *BatchGetEmployeesBpReqBodyBuilder) Build() *BatchGetEmployeesBpReqBody {
	req := &BatchGetEmployeesBpReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.getAllFlag {
		req.GetAll = &builder.getAll
	}
	return req
}

type BatchGetEmployeesBpPathReqBodyBuilder struct {
	employmentIds     []string
	employmentIdsFlag bool
	getAll            bool
	getAllFlag        bool
}

func NewBatchGetEmployeesBpPathReqBodyBuilder() *BatchGetEmployeesBpPathReqBodyBuilder {
	builder := &BatchGetEmployeesBpPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID
//
// 示例值：
func (builder *BatchGetEmployeesBpPathReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchGetEmployeesBpPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 是否获取全部 BP，true 为获取员工所在部门及来自上级部门的全部 HRBP 和属地 BP，false 为仅获取员工的直属 HRBP 和属地 BP（当员工所在部门、属地无 BP 时，会上钻找到最近的 BP），默认为 false
//
// 示例值：true
func (builder *BatchGetEmployeesBpPathReqBodyBuilder) GetAll(getAll bool) *BatchGetEmployeesBpPathReqBodyBuilder {
	builder.getAll = getAll
	builder.getAllFlag = true
	return builder
}

func (builder *BatchGetEmployeesBpPathReqBodyBuilder) Build() (*BatchGetEmployeesBpReqBody, error) {
	req := &BatchGetEmployeesBpReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.getAllFlag {
		req.GetAll = &builder.getAll
	}
	return req, nil
}

type BatchGetEmployeesBpReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetEmployeesBpReqBody
}

func NewBatchGetEmployeesBpReqBuilder() *BatchGetEmployeesBpReqBuilder {
	builder := &BatchGetEmployeesBpReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchGetEmployeesBpReqBuilder) UserIdType(userIdType string) *BatchGetEmployeesBpReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *BatchGetEmployeesBpReqBuilder) Body(body *BatchGetEmployeesBpReqBody) *BatchGetEmployeesBpReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetEmployeesBpReqBuilder) Build() *BatchGetEmployeesBpReq {
	req := &BatchGetEmployeesBpReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchGetEmployeesBpReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 员工雇佣 ID

	GetAll *bool `json:"get_all,omitempty"` // 是否获取全部 BP，true 为获取员工所在部门及来自上级部门的全部 HRBP 和属地 BP，false 为仅获取员工的直属 HRBP 和属地 BP（当员工所在部门、属地无 BP 时，会上钻找到最近的 BP），默认为 false
}

type BatchGetEmployeesBpReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetEmployeesBpReqBody `body:""`
}

type BatchGetEmployeesBpRespData struct {
	EmploymentDirectBps []*EmploymentBp `json:"employment_direct_bps,omitempty"` // 员工直属 BP 信息，当员工所在部门、属地无 BP 时，会上钻找到最近的 BP

	EmploymentAllBps []*EmploymentBp `json:"employment_all_bps,omitempty"` // 员工全部 BP 信息
}

type BatchGetEmployeesBpResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetEmployeesBpRespData `json:"data"` // 业务数据
}

func (resp *BatchGetEmployeesBpResp) Success() bool {
	return resp.Code == 0
}

type CreateEmployeesInternationalAssignmentReqBuilder struct {
	apiReq                              *larkcore.ApiReq
	employeesInternationalAssignmentReq *EmployeesInternationalAssignmentReq
}

func NewCreateEmployeesInternationalAssignmentReqBuilder() *CreateEmployeesInternationalAssignmentReqBuilder {
	builder := &CreateEmployeesInternationalAssignmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 幂等标识，服务端会忽略 client_token 重复的请求
//
// 示例值：12454646
func (builder *CreateEmployeesInternationalAssignmentReqBuilder) ClientToken(clientToken string) *CreateEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *CreateEmployeesInternationalAssignmentReqBuilder) UserIdType(userIdType string) *CreateEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *CreateEmployeesInternationalAssignmentReqBuilder) DepartmentIdType(departmentIdType string) *CreateEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *CreateEmployeesInternationalAssignmentReqBuilder) EmployeesInternationalAssignmentReq(employeesInternationalAssignmentReq *EmployeesInternationalAssignmentReq) *CreateEmployeesInternationalAssignmentReqBuilder {
	builder.employeesInternationalAssignmentReq = employeesInternationalAssignmentReq
	return builder
}

func (builder *CreateEmployeesInternationalAssignmentReqBuilder) Build() *CreateEmployeesInternationalAssignmentReq {
	req := &CreateEmployeesInternationalAssignmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employeesInternationalAssignmentReq
	return req
}

type CreateEmployeesInternationalAssignmentReq struct {
	apiReq                              *larkcore.ApiReq
	EmployeesInternationalAssignmentReq *EmployeesInternationalAssignmentReq `body:""`
}

type CreateEmployeesInternationalAssignmentRespData struct {
	InternationalAssignment *EmployeesInternationalAssignmentResp `json:"international_assignment,omitempty"` // 外派信息
}

type CreateEmployeesInternationalAssignmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateEmployeesInternationalAssignmentRespData `json:"data"` // 业务数据
}

func (resp *CreateEmployeesInternationalAssignmentResp) Success() bool {
	return resp.Code == 0
}

type DeleteEmployeesInternationalAssignmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteEmployeesInternationalAssignmentReqBuilder() *DeleteEmployeesInternationalAssignmentReqBuilder {
	builder := &DeleteEmployeesInternationalAssignmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 外派ID
//
// 示例值：7127921432117937708
func (builder *DeleteEmployeesInternationalAssignmentReqBuilder) InternationalAssignmentId(internationalAssignmentId string) *DeleteEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.PathParams.Set("international_assignment_id", fmt.Sprint(internationalAssignmentId))
	return builder
}

func (builder *DeleteEmployeesInternationalAssignmentReqBuilder) Build() *DeleteEmployeesInternationalAssignmentReq {
	req := &DeleteEmployeesInternationalAssignmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteEmployeesInternationalAssignmentReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteEmployeesInternationalAssignmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteEmployeesInternationalAssignmentResp) Success() bool {
	return resp.Code == 0
}

type ListEmployeesInternationalAssignmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListEmployeesInternationalAssignmentReqBuilder() *ListEmployeesInternationalAssignmentReqBuilder {
	builder := &ListEmployeesInternationalAssignmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *ListEmployeesInternationalAssignmentReqBuilder) UserIdType(userIdType string) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *ListEmployeesInternationalAssignmentReqBuilder) DepartmentIdType(departmentIdType string) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *ListEmployeesInternationalAssignmentReqBuilder) PageSize(pageSize int) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：123456
func (builder *ListEmployeesInternationalAssignmentReqBuilder) PageToken(pageToken string) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 雇佣ID;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取详细信息;- 类型必须与 user_id_type 一致
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) EmploymentIds(employmentIds []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range employmentIds {
		builder.apiReq.QueryParams.Add("employment_ids", fmt.Sprint(v))
	}
	return builder
}

// 外派 ID
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) InternationalAssignmentIds(internationalAssignmentIds []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range internationalAssignmentIds {
		builder.apiReq.QueryParams.Add("international_assignment_ids", fmt.Sprint(v))
	}
	return builder
}

// 外派开始日期;- 范围筛选，格式：yyyy-mm-dd~yyyy-mm-dd
//
// 示例值：- "2024-01-01~2024-02-02";- "~2024-02-02";- "2024-01-01~"
func (builder *ListEmployeesInternationalAssignmentReqBuilder) EffectiveTime(effectiveTime string) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("effective_time", fmt.Sprint(effectiveTime))
	return builder
}

// 外派结束日期;- 范围筛选，格式：yyyy-mm-dd~yyyy-mm-dd
//
// 示例值：- "2024-01-01~2024-02-02";- "~2024-02-02";- "2024-01-01~"
func (builder *ListEmployeesInternationalAssignmentReqBuilder) ExpirationTime(expirationTime string) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("expiration_time", fmt.Sprint(expirationTime))
	return builder
}

// 雇佣状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：employment;  - custom_api_name：employment_status
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) EmploymentStatusList(employmentStatusList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range employmentStatusList {
		builder.apiReq.QueryParams.Add("employment_status_list", fmt.Sprint(v))
	}
	return builder
}

// 外派工作地点;- 可通过[【批量查询地点】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/list)获取;- 需要以下权限点之一：;  - [读取外派地点](corehr:employment.international_assignment.work_location:read);  - [读写外派地点](corehr:employment.international_assignment.work_location:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) WorkLocationIdList(workLocationIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range workLocationIdList {
		builder.apiReq.QueryParams.Add("work_location_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派部门;- 可通过[【批量查询部门】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get)获取;- 类型与 department_id_type 一致
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) DepartmentIdList(departmentIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range departmentIdList {
		builder.apiReq.QueryParams.Add("department_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派直属上级;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) DirectManagerIdList(directManagerIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range directManagerIdList {
		builder.apiReq.QueryParams.Add("direct_manager_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派虚线上级;- 可通过[【批量查询员工信息】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/employee/batch_get)获取;- 类型与 user_id_type 一致
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) DottedLineManagerIdList(dottedLineManagerIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range dottedLineManagerIdList {
		builder.apiReq.QueryParams.Add("dotted_line_manager_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派岗位;- 功能灰度中，请联系[技术支持](https://applink.feishu.cn/TLJpeNdW);- 需要以下权限点之一：;  - [读取外派岗位](corehr:employment.international_assignment.position:read);  - [读写外派岗位](corehr:employment.international_assignment.position:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) PositionIdList(positionIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range positionIdList {
		builder.apiReq.QueryParams.Add("position_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派职务;- 可通过[【批量查询职务】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/list)获取;- 需要以下权限点之一：;	- [读取外派职务](corehr:employment.international_assignment.job:read);	- [读写外派职务](corehr:employment.international_assignment.job:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) JobIdList(jobIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range jobIdList {
		builder.apiReq.QueryParams.Add("job_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派序列;- 可通过[【批量查询序列】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/list)获取
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) JobFamilyIdList(jobFamilyIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range jobFamilyIdList {
		builder.apiReq.QueryParams.Add("job_family_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派职级;- 可通过[【批量查询职级】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/list)获取;- 需要以下权限点之一：;	- [读取外派职级](corehr:employment.international_assignment.job_level:read);	- [读写外派职级](corehr:employment.international_assignment.job_level:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) JobLevelIdList(jobLevelIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range jobLevelIdList {
		builder.apiReq.QueryParams.Add("job_level_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派职等;- 可通过[【查询职等】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)获取;- 需要以下权限点之一：;	  - [读取外派职等](corehr:employment.international_assignment.job_grade:read);	  - [读写外派职等](corehr:employment.international_assignment.job_grade:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) JobGradeIdList(jobGradeIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range jobGradeIdList {
		builder.apiReq.QueryParams.Add("job_grade_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派工时制度;- 可通过[【批量查询工时制度】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/working_hours_type/list)获取;- 需要以下权限点之一：;	  - [读取外派工时制度](corehr:employment.international_assignment.working_hours_type:read);	  - [读写外派工时制度](corehr:employment.international_assignment.working_hours_type:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) WorkingHoursTypeIdList(workingHoursTypeIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range workingHoursTypeIdList {
		builder.apiReq.QueryParams.Add("working_hours_type_id_list", fmt.Sprint(v))
	}
	return builder
}

// 外派任职公司;- 可通过[【批量查询公司】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/list)获取;- 需要以下权限点之一：;	- [读取外派公司](corehr:employment.international_assignment.service_company:read);	- [读写外派公司](corehr:employment.international_assignment.service_company:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) ServiceCompanyList(serviceCompanyList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range serviceCompanyList {
		builder.apiReq.QueryParams.Add("service_company_list", fmt.Sprint(v))
	}
	return builder
}

// 外派周工作时长;- 限制两位小数;- 需要以下权限点之一：;	- [读取外派周工作时长](corehr:employment.international_assignment.weekly_working_hours:read);	- [读写外派周工作时长](corehr:employment.international_assignment.weekly_working_hours:write)
//
// 示例值：10
func (builder *ListEmployeesInternationalAssignmentReqBuilder) WeeklyWorkingHoursV2(weeklyWorkingHoursV2 float64) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("weekly_working_hours_v2", fmt.Sprint(weeklyWorkingHoursV2))
	return builder
}

// 外派排班类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;	- object_api_name：job_data;	- custom_api_name：work_shift;- 需要以下权限点之一：;	- [读取外派排班类型](corehr:employment.international_assignment.work_shift:read);	- [读写外派排班类型](corehr:employment.international_assignment.work_shift:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) WorkShiftList(workShiftList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range workShiftList {
		builder.apiReq.QueryParams.Add("work_shift_list", fmt.Sprint(v))
	}
	return builder
}

// 外派薪资类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：compensation_type;- 需要以下权限点之一：;  - [读取外派薪资类型](corehr:employment.international_assignment.compensation_type:read);  - [读写外派薪资类型](corehr:employment.international_assignment.compensation_type:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) CompensationTypeList(compensationTypeList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range compensationTypeList {
		builder.apiReq.QueryParams.Add("compensation_type_list", fmt.Sprint(v))
	}
	return builder
}

// 外派预计结束日期;- 范围筛选，格式：yyyy-mm-dd~yyyy-mm-dd
//
// 示例值：- "2024-01-01~2024-02-02";- "~2024-02-02";- "2024-01-01~"
func (builder *ListEmployeesInternationalAssignmentReqBuilder) InternationalAssignmentExpectedEndDate(internationalAssignmentExpectedEndDate string) *ListEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("international_assignment_expected_end_date", fmt.Sprint(internationalAssignmentExpectedEndDate))
	return builder
}

// 外派状态;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;	- object_api_name：international_assignment;	- custom_api_name：international_assignment_status
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) InternationalAssignmentStatusList(internationalAssignmentStatusList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range internationalAssignmentStatusList {
		builder.apiReq.QueryParams.Add("international_assignment_status_list", fmt.Sprint(v))
	}
	return builder
}

// 外派类型;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;	- object_api_name：international_assignment;	- custom_api_name：international_assignment_type
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) InternationalAssignmentTypeList(internationalAssignmentTypeList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range internationalAssignmentTypeList {
		builder.apiReq.QueryParams.Add("international_assignment_type_list", fmt.Sprint(v))
	}
	return builder
}

// 外派工作日历;- 可通过[【查询工作日历】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/leave/work_calendar)获取详细信息;- 需要以下权限点之一：;	- [读取外派工作日历](corehr:employment.international_assignment.work_calendar:read);	- [读写外派工作日历](corehr:employment.international_assignment.work_calendar:write)
//
// 示例值：
func (builder *ListEmployeesInternationalAssignmentReqBuilder) WorkCalendarIdList(workCalendarIdList []string) *ListEmployeesInternationalAssignmentReqBuilder {
	for _, v := range workCalendarIdList {
		builder.apiReq.QueryParams.Add("work_calendar_id_list", fmt.Sprint(v))
	}
	return builder
}

func (builder *ListEmployeesInternationalAssignmentReqBuilder) Build() *ListEmployeesInternationalAssignmentReq {
	req := &ListEmployeesInternationalAssignmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListEmployeesInternationalAssignmentReq struct {
	apiReq *larkcore.ApiReq
}

type ListEmployeesInternationalAssignmentRespData struct {
	Items []*EmployeesInternationalAssignment `json:"items,omitempty"` // 外派信息

	NoAuthorityIds []string `json:"no_authority_ids,omitempty"` // 无权限的雇佣ID - 在指定雇佣ID查询时请检查该参数 - 类型与 user_id_type 一致

	PageToken *string `json:"page_token,omitempty"` // 翻页

	HasMore *bool `json:"has_more,omitempty"` // 是否有更多项
}

type ListEmployeesInternationalAssignmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListEmployeesInternationalAssignmentRespData `json:"data"` // 业务数据
}

func (resp *ListEmployeesInternationalAssignmentResp) Success() bool {
	return resp.Code == 0
}

type PatchEmployeesInternationalAssignmentReqBuilder struct {
	apiReq                              *larkcore.ApiReq
	employeesInternationalAssignmentReq *EmployeesInternationalAssignmentReq
}

func NewPatchEmployeesInternationalAssignmentReqBuilder() *PatchEmployeesInternationalAssignmentReqBuilder {
	builder := &PatchEmployeesInternationalAssignmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 外派ID
//
// 示例值：7127921432117937708
func (builder *PatchEmployeesInternationalAssignmentReqBuilder) InternationalAssignmentId(internationalAssignmentId string) *PatchEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.PathParams.Set("international_assignment_id", fmt.Sprint(internationalAssignmentId))
	return builder
}

// 幂等标识，服务端会忽略client_token重复的请求
//
// 示例值：12454646
func (builder *PatchEmployeesInternationalAssignmentReqBuilder) ClientToken(clientToken string) *PatchEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *PatchEmployeesInternationalAssignmentReqBuilder) UserIdType(userIdType string) *PatchEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *PatchEmployeesInternationalAssignmentReqBuilder) DepartmentIdType(departmentIdType string) *PatchEmployeesInternationalAssignmentReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *PatchEmployeesInternationalAssignmentReqBuilder) EmployeesInternationalAssignmentReq(employeesInternationalAssignmentReq *EmployeesInternationalAssignmentReq) *PatchEmployeesInternationalAssignmentReqBuilder {
	builder.employeesInternationalAssignmentReq = employeesInternationalAssignmentReq
	return builder
}

func (builder *PatchEmployeesInternationalAssignmentReqBuilder) Build() *PatchEmployeesInternationalAssignmentReq {
	req := &PatchEmployeesInternationalAssignmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.employeesInternationalAssignmentReq
	return req
}

type PatchEmployeesInternationalAssignmentReq struct {
	apiReq                              *larkcore.ApiReq
	EmployeesInternationalAssignmentReq *EmployeesInternationalAssignmentReq `body:""`
}

type PatchEmployeesInternationalAssignmentRespData struct {
	InternationalAssignment *EmployeesInternationalAssignmentResp `json:"international_assignment,omitempty"` // 外派信息
}

type PatchEmployeesInternationalAssignmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchEmployeesInternationalAssignmentRespData `json:"data"` // 业务数据
}

func (resp *PatchEmployeesInternationalAssignmentResp) Success() bool {
	return resp.Code == 0
}

type BatchGetEmployeesJobDataReqBodyBuilder struct {
	employmentIds     []string // 员工雇佣 ID 列表
	employmentIdsFlag bool

	getAllVersion     bool // 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false
	getAllVersionFlag bool

	effectiveDateStart     string // 生效日期 - 搜索范围开始
	effectiveDateStartFlag bool

	effectiveDateEnd     string // 生效日期 - 搜索范围结束
	effectiveDateEndFlag bool

	dataDate     string // 查看数据日期，默认为今天
	dataDateFlag bool

	primaryJobData     bool // 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部
	primaryJobDataFlag bool

	assignmentStartReasons     []string // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
	assignmentStartReasonsFlag bool
}

func NewBatchGetEmployeesJobDataReqBodyBuilder() *BatchGetEmployeesJobDataReqBodyBuilder {
	builder := &BatchGetEmployeesJobDataReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID 列表
//
//示例值：
func (builder *BatchGetEmployeesJobDataReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchGetEmployeesJobDataReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false
//
//示例值：false
func (builder *BatchGetEmployeesJobDataReqBodyBuilder) GetAllVersion(getAllVersion bool) *BatchGetEmployeesJobDataReqBodyBuilder {
	builder.getAllVersion = getAllVersion
	builder.getAllVersionFlag = true
	return builder
}

// 生效日期 - 搜索范围开始
//
//示例值：2020-01-01
func (builder *BatchGetEmployeesJobDataReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *BatchGetEmployeesJobDataReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 生效日期 - 搜索范围结束
//
//示例值：2020-01-01
func (builder *BatchGetEmployeesJobDataReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *BatchGetEmployeesJobDataReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 查看数据日期，默认为今天
//
//示例值：2020-01-01
func (builder *BatchGetEmployeesJobDataReqBodyBuilder) DataDate(dataDate string) *BatchGetEmployeesJobDataReqBodyBuilder {
	builder.dataDate = dataDate
	builder.dataDateFlag = true
	return builder
}

// 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部
//
//示例值：true
func (builder *BatchGetEmployeesJobDataReqBodyBuilder) PrimaryJobData(primaryJobData bool) *BatchGetEmployeesJobDataReqBodyBuilder {
	builder.primaryJobData = primaryJobData
	builder.primaryJobDataFlag = true
	return builder
}

// 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
//
//示例值：
func (builder *BatchGetEmployeesJobDataReqBodyBuilder) AssignmentStartReasons(assignmentStartReasons []string) *BatchGetEmployeesJobDataReqBodyBuilder {
	builder.assignmentStartReasons = assignmentStartReasons
	builder.assignmentStartReasonsFlag = true
	return builder
}

func (builder *BatchGetEmployeesJobDataReqBodyBuilder) Build() *BatchGetEmployeesJobDataReqBody {
	req := &BatchGetEmployeesJobDataReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.getAllVersionFlag {
		req.GetAllVersion = &builder.getAllVersion
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.dataDateFlag {
		req.DataDate = &builder.dataDate
	}
	if builder.primaryJobDataFlag {
		req.PrimaryJobData = &builder.primaryJobData
	}
	if builder.assignmentStartReasonsFlag {
		req.AssignmentStartReasons = builder.assignmentStartReasons
	}
	return req
}

type BatchGetEmployeesJobDataPathReqBodyBuilder struct {
	employmentIds              []string
	employmentIdsFlag          bool
	getAllVersion              bool
	getAllVersionFlag          bool
	effectiveDateStart         string
	effectiveDateStartFlag     bool
	effectiveDateEnd           string
	effectiveDateEndFlag       bool
	dataDate                   string
	dataDateFlag               bool
	primaryJobData             bool
	primaryJobDataFlag         bool
	assignmentStartReasons     []string
	assignmentStartReasonsFlag bool
}

func NewBatchGetEmployeesJobDataPathReqBodyBuilder() *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder := &BatchGetEmployeesJobDataPathReqBodyBuilder{}
	return builder
}

// 员工雇佣 ID 列表
//
// 示例值：
func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) EmploymentIds(employmentIds []string) *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false
//
// 示例值：false
func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) GetAllVersion(getAllVersion bool) *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder.getAllVersion = getAllVersion
	builder.getAllVersionFlag = true
	return builder
}

// 生效日期 - 搜索范围开始
//
// 示例值：2020-01-01
func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 生效日期 - 搜索范围结束
//
// 示例值：2020-01-01
func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 查看数据日期，默认为今天
//
// 示例值：2020-01-01
func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) DataDate(dataDate string) *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder.dataDate = dataDate
	builder.dataDateFlag = true
	return builder
}

// 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部
//
// 示例值：true
func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) PrimaryJobData(primaryJobData bool) *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder.primaryJobData = primaryJobData
	builder.primaryJobDataFlag = true
	return builder
}

// 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
//
// 示例值：
func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) AssignmentStartReasons(assignmentStartReasons []string) *BatchGetEmployeesJobDataPathReqBodyBuilder {
	builder.assignmentStartReasons = assignmentStartReasons
	builder.assignmentStartReasonsFlag = true
	return builder
}

func (builder *BatchGetEmployeesJobDataPathReqBodyBuilder) Build() (*BatchGetEmployeesJobDataReqBody, error) {
	req := &BatchGetEmployeesJobDataReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.getAllVersionFlag {
		req.GetAllVersion = &builder.getAllVersion
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.dataDateFlag {
		req.DataDate = &builder.dataDate
	}
	if builder.primaryJobDataFlag {
		req.PrimaryJobData = &builder.primaryJobData
	}
	if builder.assignmentStartReasonsFlag {
		req.AssignmentStartReasons = builder.assignmentStartReasons
	}
	return req, nil
}

type BatchGetEmployeesJobDataReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetEmployeesJobDataReqBody
}

func NewBatchGetEmployeesJobDataReqBuilder() *BatchGetEmployeesJobDataReqBuilder {
	builder := &BatchGetEmployeesJobDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchGetEmployeesJobDataReqBuilder) UserIdType(userIdType string) *BatchGetEmployeesJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *BatchGetEmployeesJobDataReqBuilder) DepartmentIdType(departmentIdType string) *BatchGetEmployeesJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *BatchGetEmployeesJobDataReqBuilder) Body(body *BatchGetEmployeesJobDataReqBody) *BatchGetEmployeesJobDataReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetEmployeesJobDataReqBuilder) Build() *BatchGetEmployeesJobDataReq {
	req := &BatchGetEmployeesJobDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchGetEmployeesJobDataReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 员工雇佣 ID 列表

	GetAllVersion *bool `json:"get_all_version,omitempty"` // 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false

	EffectiveDateStart *string `json:"effective_date_start,omitempty"` // 生效日期 - 搜索范围开始

	EffectiveDateEnd *string `json:"effective_date_end,omitempty"` // 生效日期 - 搜索范围结束

	DataDate *string `json:"data_date,omitempty"` // 查看数据日期，默认为今天

	PrimaryJobData *bool `json:"primary_job_data,omitempty"` // 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部

	AssignmentStartReasons []string `json:"assignment_start_reasons,omitempty"` // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
}

type BatchGetEmployeesJobDataReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetEmployeesJobDataReqBody `body:""`
}

type BatchGetEmployeesJobDataRespData struct {
	Items []*EmployeeJobData `json:"items,omitempty"` // 查询的雇佣信息
}

type BatchGetEmployeesJobDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetEmployeesJobDataRespData `json:"data"` // 业务数据
}

func (resp *BatchGetEmployeesJobDataResp) Success() bool {
	return resp.Code == 0
}

type QueryEmployeesJobDataReqBodyBuilder struct {
	getAllVersion     bool // 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false
	getAllVersionFlag bool

	dataDate     string // 查看数据日期
	dataDateFlag bool

	effectiveDateStart     string // 生效日期 - 搜索范围开始
	effectiveDateStartFlag bool

	effectiveDateEnd     string // 生效日期 - 搜索范围结束
	effectiveDateEndFlag bool

	departmentId     string // 部门 ID
	departmentIdFlag bool

	employmentIds     []string // 员工雇佣 ID 列表
	employmentIdsFlag bool

	primaryJobData     bool // 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部
	primaryJobDataFlag bool

	assignmentStartReasons     []string // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
	assignmentStartReasonsFlag bool
}

func NewQueryEmployeesJobDataReqBodyBuilder() *QueryEmployeesJobDataReqBodyBuilder {
	builder := &QueryEmployeesJobDataReqBodyBuilder{}
	return builder
}

// 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false
//
//示例值：false
func (builder *QueryEmployeesJobDataReqBodyBuilder) GetAllVersion(getAllVersion bool) *QueryEmployeesJobDataReqBodyBuilder {
	builder.getAllVersion = getAllVersion
	builder.getAllVersionFlag = true
	return builder
}

// 查看数据日期
//
//示例值：2020-01-01
func (builder *QueryEmployeesJobDataReqBodyBuilder) DataDate(dataDate string) *QueryEmployeesJobDataReqBodyBuilder {
	builder.dataDate = dataDate
	builder.dataDateFlag = true
	return builder
}

// 生效日期 - 搜索范围开始
//
//示例值：2020-01-01
func (builder *QueryEmployeesJobDataReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *QueryEmployeesJobDataReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 生效日期 - 搜索范围结束
//
//示例值：2020-01-01
func (builder *QueryEmployeesJobDataReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *QueryEmployeesJobDataReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 部门 ID
//
//示例值：6891251722631890445
func (builder *QueryEmployeesJobDataReqBodyBuilder) DepartmentId(departmentId string) *QueryEmployeesJobDataReqBodyBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 员工雇佣 ID 列表
//
//示例值：
func (builder *QueryEmployeesJobDataReqBodyBuilder) EmploymentIds(employmentIds []string) *QueryEmployeesJobDataReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部
//
//示例值：true
func (builder *QueryEmployeesJobDataReqBodyBuilder) PrimaryJobData(primaryJobData bool) *QueryEmployeesJobDataReqBodyBuilder {
	builder.primaryJobData = primaryJobData
	builder.primaryJobDataFlag = true
	return builder
}

// 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
//
//示例值：
func (builder *QueryEmployeesJobDataReqBodyBuilder) AssignmentStartReasons(assignmentStartReasons []string) *QueryEmployeesJobDataReqBodyBuilder {
	builder.assignmentStartReasons = assignmentStartReasons
	builder.assignmentStartReasonsFlag = true
	return builder
}

func (builder *QueryEmployeesJobDataReqBodyBuilder) Build() *QueryEmployeesJobDataReqBody {
	req := &QueryEmployeesJobDataReqBody{}
	if builder.getAllVersionFlag {
		req.GetAllVersion = &builder.getAllVersion
	}
	if builder.dataDateFlag {
		req.DataDate = &builder.dataDate
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId
	}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.primaryJobDataFlag {
		req.PrimaryJobData = &builder.primaryJobData
	}
	if builder.assignmentStartReasonsFlag {
		req.AssignmentStartReasons = builder.assignmentStartReasons
	}
	return req
}

type QueryEmployeesJobDataPathReqBodyBuilder struct {
	getAllVersion              bool
	getAllVersionFlag          bool
	dataDate                   string
	dataDateFlag               bool
	effectiveDateStart         string
	effectiveDateStartFlag     bool
	effectiveDateEnd           string
	effectiveDateEndFlag       bool
	departmentId               string
	departmentIdFlag           bool
	employmentIds              []string
	employmentIdsFlag          bool
	primaryJobData             bool
	primaryJobDataFlag         bool
	assignmentStartReasons     []string
	assignmentStartReasonsFlag bool
}

func NewQueryEmployeesJobDataPathReqBodyBuilder() *QueryEmployeesJobDataPathReqBodyBuilder {
	builder := &QueryEmployeesJobDataPathReqBodyBuilder{}
	return builder
}

// 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false
//
// 示例值：false
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) GetAllVersion(getAllVersion bool) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.getAllVersion = getAllVersion
	builder.getAllVersionFlag = true
	return builder
}

// 查看数据日期
//
// 示例值：2020-01-01
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) DataDate(dataDate string) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.dataDate = dataDate
	builder.dataDateFlag = true
	return builder
}

// 生效日期 - 搜索范围开始
//
// 示例值：2020-01-01
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 生效日期 - 搜索范围结束
//
// 示例值：2020-01-01
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 部门 ID
//
// 示例值：6891251722631890445
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) DepartmentId(departmentId string) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 员工雇佣 ID 列表
//
// 示例值：
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) EmploymentIds(employmentIds []string) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部
//
// 示例值：true
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) PrimaryJobData(primaryJobData bool) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.primaryJobData = primaryJobData
	builder.primaryJobDataFlag = true
	return builder
}

// 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
//
// 示例值：
func (builder *QueryEmployeesJobDataPathReqBodyBuilder) AssignmentStartReasons(assignmentStartReasons []string) *QueryEmployeesJobDataPathReqBodyBuilder {
	builder.assignmentStartReasons = assignmentStartReasons
	builder.assignmentStartReasonsFlag = true
	return builder
}

func (builder *QueryEmployeesJobDataPathReqBodyBuilder) Build() (*QueryEmployeesJobDataReqBody, error) {
	req := &QueryEmployeesJobDataReqBody{}
	if builder.getAllVersionFlag {
		req.GetAllVersion = &builder.getAllVersion
	}
	if builder.dataDateFlag {
		req.DataDate = &builder.dataDate
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId
	}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.primaryJobDataFlag {
		req.PrimaryJobData = &builder.primaryJobData
	}
	if builder.assignmentStartReasonsFlag {
		req.AssignmentStartReasons = builder.assignmentStartReasons
	}
	return req, nil
}

type QueryEmployeesJobDataReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryEmployeesJobDataReqBody
}

func NewQueryEmployeesJobDataReqBuilder() *QueryEmployeesJobDataReqBuilder {
	builder := &QueryEmployeesJobDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *QueryEmployeesJobDataReqBuilder) PageSize(pageSize int) *QueryEmployeesJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryEmployeesJobDataReqBuilder) PageToken(pageToken string) *QueryEmployeesJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *QueryEmployeesJobDataReqBuilder) UserIdType(userIdType string) *QueryEmployeesJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *QueryEmployeesJobDataReqBuilder) DepartmentIdType(departmentIdType string) *QueryEmployeesJobDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *QueryEmployeesJobDataReqBuilder) Body(body *QueryEmployeesJobDataReqBody) *QueryEmployeesJobDataReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryEmployeesJobDataReqBuilder) Build() *QueryEmployeesJobDataReq {
	req := &QueryEmployeesJobDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryEmployeesJobDataReqBody struct {
	GetAllVersion *bool `json:"get_all_version,omitempty"` // 是否获取所有任职记录，true 为获取员工所有版本的任职记录，false 为仅获取当前生效的任职记录，默认为 false

	DataDate *string `json:"data_date,omitempty"` // 查看数据日期

	EffectiveDateStart *string `json:"effective_date_start,omitempty"` // 生效日期 - 搜索范围开始

	EffectiveDateEnd *string `json:"effective_date_end,omitempty"` // 生效日期 - 搜索范围结束

	DepartmentId *string `json:"department_id,omitempty"` // 部门 ID

	EmploymentIds []string `json:"employment_ids,omitempty"` // 员工雇佣 ID 列表

	PrimaryJobData *bool `json:"primary_job_data,omitempty"` // 是否仅查询主职;- true：仅返回 primary_job_data 为 true 的任职记录;- false：仅返回 primary_job_data 为 false 的任职记录;- 不传：返回全部

	AssignmentStartReasons []string `json:"assignment_start_reasons,omitempty"` // 任职原因;- 可通过[【获取字段详情】](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/custom_field/get_by_param)接口查询，查询参数如下：;  - object_api_name：job_data;  - custom_api_name：assignment_start_reason
}

type QueryEmployeesJobDataReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryEmployeesJobDataReqBody `body:""`
}

type QueryEmployeesJobDataRespData struct {
	Items []*EmployeeJobData `json:"items,omitempty"` // 任职信息

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type QueryEmployeesJobDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryEmployeesJobDataRespData `json:"data"` // 业务数据
}

func (resp *QueryEmployeesJobDataResp) Success() bool {
	return resp.Code == 0
}

type SearchEnumReqBodyBuilder struct {
	enumApinameLists     []string // 枚举apiname列表
	enumApinameListsFlag bool
}

func NewSearchEnumReqBodyBuilder() *SearchEnumReqBodyBuilder {
	builder := &SearchEnumReqBodyBuilder{}
	return builder
}

// 枚举apiname列表
//
//示例值：
func (builder *SearchEnumReqBodyBuilder) EnumApinameLists(enumApinameLists []string) *SearchEnumReqBodyBuilder {
	builder.enumApinameLists = enumApinameLists
	builder.enumApinameListsFlag = true
	return builder
}

func (builder *SearchEnumReqBodyBuilder) Build() *SearchEnumReqBody {
	req := &SearchEnumReqBody{}
	if builder.enumApinameListsFlag {
		req.EnumApinameLists = builder.enumApinameLists
	}
	return req
}

type SearchEnumPathReqBodyBuilder struct {
	enumApinameLists     []string
	enumApinameListsFlag bool
}

func NewSearchEnumPathReqBodyBuilder() *SearchEnumPathReqBodyBuilder {
	builder := &SearchEnumPathReqBodyBuilder{}
	return builder
}

// 枚举apiname列表
//
// 示例值：
func (builder *SearchEnumPathReqBodyBuilder) EnumApinameLists(enumApinameLists []string) *SearchEnumPathReqBodyBuilder {
	builder.enumApinameLists = enumApinameLists
	builder.enumApinameListsFlag = true
	return builder
}

func (builder *SearchEnumPathReqBodyBuilder) Build() (*SearchEnumReqBody, error) {
	req := &SearchEnumReqBody{}
	if builder.enumApinameListsFlag {
		req.EnumApinameLists = builder.enumApinameLists
	}
	return req, nil
}

type SearchEnumReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchEnumReqBody
}

func NewSearchEnumReqBuilder() *SearchEnumReqBuilder {
	builder := &SearchEnumReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 通过apiname批量获取枚举信息
func (builder *SearchEnumReqBuilder) Body(body *SearchEnumReqBody) *SearchEnumReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchEnumReqBuilder) Build() *SearchEnumReq {
	req := &SearchEnumReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type SearchEnumReqBody struct {
	EnumApinameLists []string `json:"enum_apiname_lists,omitempty"` // 枚举apiname列表
}

type SearchEnumReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchEnumReqBody `body:""`
}

type SearchEnumRespData struct {
	Enums []*Enums `json:"enums,omitempty"` // 查询的枚举信息
}

type SearchEnumResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchEnumRespData `json:"data"` // 业务数据
}

func (resp *SearchEnumResp) Success() bool {
	return resp.Code == 0
}

type BatchGetJobReqBodyBuilder struct {
	jobIds     []string // 职务 ID 列表
	jobIdsFlag bool

	jobCodes     []string // 职务 Code 列表
	jobCodesFlag bool

	fields     []string // 返回数据的字段列表
	fieldsFlag bool
}

func NewBatchGetJobReqBodyBuilder() *BatchGetJobReqBodyBuilder {
	builder := &BatchGetJobReqBodyBuilder{}
	return builder
}

// 职务 ID 列表
//
//示例值：
func (builder *BatchGetJobReqBodyBuilder) JobIds(jobIds []string) *BatchGetJobReqBodyBuilder {
	builder.jobIds = jobIds
	builder.jobIdsFlag = true
	return builder
}

// 职务 Code 列表
//
//示例值：
func (builder *BatchGetJobReqBodyBuilder) JobCodes(jobCodes []string) *BatchGetJobReqBodyBuilder {
	builder.jobCodes = jobCodes
	builder.jobCodesFlag = true
	return builder
}

// 返回数据的字段列表
//
//示例值：
func (builder *BatchGetJobReqBodyBuilder) Fields(fields []string) *BatchGetJobReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *BatchGetJobReqBodyBuilder) Build() *BatchGetJobReqBody {
	req := &BatchGetJobReqBody{}
	if builder.jobIdsFlag {
		req.JobIds = builder.jobIds
	}
	if builder.jobCodesFlag {
		req.JobCodes = builder.jobCodes
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type BatchGetJobPathReqBodyBuilder struct {
	jobIds       []string
	jobIdsFlag   bool
	jobCodes     []string
	jobCodesFlag bool
	fields       []string
	fieldsFlag   bool
}

func NewBatchGetJobPathReqBodyBuilder() *BatchGetJobPathReqBodyBuilder {
	builder := &BatchGetJobPathReqBodyBuilder{}
	return builder
}

// 职务 ID 列表
//
// 示例值：
func (builder *BatchGetJobPathReqBodyBuilder) JobIds(jobIds []string) *BatchGetJobPathReqBodyBuilder {
	builder.jobIds = jobIds
	builder.jobIdsFlag = true
	return builder
}

// 职务 Code 列表
//
// 示例值：
func (builder *BatchGetJobPathReqBodyBuilder) JobCodes(jobCodes []string) *BatchGetJobPathReqBodyBuilder {
	builder.jobCodes = jobCodes
	builder.jobCodesFlag = true
	return builder
}

// 返回数据的字段列表
//
// 示例值：
func (builder *BatchGetJobPathReqBodyBuilder) Fields(fields []string) *BatchGetJobPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *BatchGetJobPathReqBodyBuilder) Build() (*BatchGetJobReqBody, error) {
	req := &BatchGetJobReqBody{}
	if builder.jobIdsFlag {
		req.JobIds = builder.jobIds
	}
	if builder.jobCodesFlag {
		req.JobCodes = builder.jobCodes
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type BatchGetJobReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetJobReqBody
}

func NewBatchGetJobReqBuilder() *BatchGetJobReqBuilder {
	builder := &BatchGetJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *BatchGetJobReqBuilder) UserIdType(userIdType string) *BatchGetJobReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 批量获取职务信息
func (builder *BatchGetJobReqBuilder) Body(body *BatchGetJobReqBody) *BatchGetJobReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetJobReqBuilder) Build() *BatchGetJobReq {
	req := &BatchGetJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchGetJobReqBody struct {
	JobIds []string `json:"job_ids,omitempty"` // 职务 ID 列表

	JobCodes []string `json:"job_codes,omitempty"` // 职务 Code 列表

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表
}

type BatchGetJobReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetJobReqBody `body:""`
}

type BatchGetJobRespData struct {
	Items []*Job `json:"items,omitempty"` // 查询的职务信息
}

type BatchGetJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetJobRespData `json:"data"` // 业务数据
}

func (resp *BatchGetJobResp) Success() bool {
	return resp.Code == 0
}

type GetJobReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetJobReqBuilder() *GetJobReqBuilder {
	builder := &GetJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 序列级别ID
//
// 示例值：151515
func (builder *GetJobReqBuilder) JobId(jobId string) *GetJobReqBuilder {
	builder.apiReq.PathParams.Set("job_id", fmt.Sprint(jobId))
	return builder
}

func (builder *GetJobReqBuilder) Build() *GetJobReq {
	req := &GetJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetJobReq struct {
	apiReq *larkcore.ApiReq
}

type GetJobRespData struct {
	Job *Job `json:"job,omitempty"` // 职务信息
}

type GetJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetJobRespData `json:"data"` // 业务数据
}

func (resp *GetJobResp) Success() bool {
	return resp.Code == 0
}

type ListJobReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListJobReqBuilder() *ListJobReqBuilder {
	builder := &ListJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 页码标识，获取第一页传空，每次查询会返回下一页的page_token
//
// 示例值：1231231987
func (builder *ListJobReqBuilder) PageToken(pageToken string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页获取记录数量，最大100
//
// 示例值：100
func (builder *ListJobReqBuilder) PageSize(pageSize string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 名称
//
// 示例值：keyword
func (builder *ListJobReqBuilder) Name(name string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("name", fmt.Sprint(name))
	return builder
}

// 语言
//
// 示例值：zh
func (builder *ListJobReqBuilder) QueryLanguage(queryLanguage string) *ListJobReqBuilder {
	builder.apiReq.QueryParams.Set("query_language", fmt.Sprint(queryLanguage))
	return builder
}

func (builder *ListJobReqBuilder) Build() *ListJobReq {
	req := &ListJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListJobReq struct {
	apiReq *larkcore.ApiReq
}

type ListJobRespData struct {
	Items []*Job `json:"items,omitempty"` // 查询的职务信息

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type ListJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListJobRespData `json:"data"` // 业务数据
}

func (resp *ListJobResp) Success() bool {
	return resp.Code == 0
}

type QueryMultiTimelineJobReqBodyBuilder struct {
	jobIds     []string // 职务 ID 列表
	jobIdsFlag bool

	startDate     string // 查询开始时间（包含）
	startDateFlag bool

	endDate     string // 查询结束时间(包含)
	endDateFlag bool

	fields     []string // 返回数据的字段列表，可选["job_name", "code", "active", "parent_job", "description", "effective_date", "expiration_date"]
	fieldsFlag bool
}

func NewQueryMultiTimelineJobReqBodyBuilder() *QueryMultiTimelineJobReqBodyBuilder {
	builder := &QueryMultiTimelineJobReqBodyBuilder{}
	return builder
}

// 职务 ID 列表
//
//示例值：
func (builder *QueryMultiTimelineJobReqBodyBuilder) JobIds(jobIds []string) *QueryMultiTimelineJobReqBodyBuilder {
	builder.jobIds = jobIds
	builder.jobIdsFlag = true
	return builder
}

// 查询开始时间（包含）
//
//示例值：2024-01-01
func (builder *QueryMultiTimelineJobReqBodyBuilder) StartDate(startDate string) *QueryMultiTimelineJobReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 查询结束时间(包含)
//
//示例值：2024-12-31
func (builder *QueryMultiTimelineJobReqBodyBuilder) EndDate(endDate string) *QueryMultiTimelineJobReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 返回数据的字段列表，可选["job_name", "code", "active", "parent_job", "description", "effective_date", "expiration_date"]
//
//示例值：
func (builder *QueryMultiTimelineJobReqBodyBuilder) Fields(fields []string) *QueryMultiTimelineJobReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryMultiTimelineJobReqBodyBuilder) Build() *QueryMultiTimelineJobReqBody {
	req := &QueryMultiTimelineJobReqBody{}
	if builder.jobIdsFlag {
		req.JobIds = builder.jobIds
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type QueryMultiTimelineJobPathReqBodyBuilder struct {
	jobIds        []string
	jobIdsFlag    bool
	startDate     string
	startDateFlag bool
	endDate       string
	endDateFlag   bool
	fields        []string
	fieldsFlag    bool
}

func NewQueryMultiTimelineJobPathReqBodyBuilder() *QueryMultiTimelineJobPathReqBodyBuilder {
	builder := &QueryMultiTimelineJobPathReqBodyBuilder{}
	return builder
}

// 职务 ID 列表
//
// 示例值：
func (builder *QueryMultiTimelineJobPathReqBodyBuilder) JobIds(jobIds []string) *QueryMultiTimelineJobPathReqBodyBuilder {
	builder.jobIds = jobIds
	builder.jobIdsFlag = true
	return builder
}

// 查询开始时间（包含）
//
// 示例值：2024-01-01
func (builder *QueryMultiTimelineJobPathReqBodyBuilder) StartDate(startDate string) *QueryMultiTimelineJobPathReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 查询结束时间(包含)
//
// 示例值：2024-12-31
func (builder *QueryMultiTimelineJobPathReqBodyBuilder) EndDate(endDate string) *QueryMultiTimelineJobPathReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 返回数据的字段列表，可选["job_name", "code", "active", "parent_job", "description", "effective_date", "expiration_date"]
//
// 示例值：
func (builder *QueryMultiTimelineJobPathReqBodyBuilder) Fields(fields []string) *QueryMultiTimelineJobPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryMultiTimelineJobPathReqBodyBuilder) Build() (*QueryMultiTimelineJobReqBody, error) {
	req := &QueryMultiTimelineJobReqBody{}
	if builder.jobIdsFlag {
		req.JobIds = builder.jobIds
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type QueryMultiTimelineJobReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryMultiTimelineJobReqBody
}

func NewQueryMultiTimelineJobReqBuilder() *QueryMultiTimelineJobReqBuilder {
	builder := &QueryMultiTimelineJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 查询生效时间在指定时间范围的职务
func (builder *QueryMultiTimelineJobReqBuilder) Body(body *QueryMultiTimelineJobReqBody) *QueryMultiTimelineJobReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryMultiTimelineJobReqBuilder) Build() *QueryMultiTimelineJobReq {
	req := &QueryMultiTimelineJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type QueryMultiTimelineJobReqBody struct {
	JobIds []string `json:"job_ids,omitempty"` // 职务 ID 列表

	StartDate *string `json:"start_date,omitempty"` // 查询开始时间（包含）

	EndDate *string `json:"end_date,omitempty"` // 查询结束时间(包含)

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，可选["job_name", "code", "active", "parent_job", "description", "effective_date", "expiration_date"]
}

type QueryMultiTimelineJobReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryMultiTimelineJobReqBody `body:""`
}

type QueryMultiTimelineJobRespData struct {
	Items []*JobTimeline `json:"items,omitempty"` // 职务信息
}

type QueryMultiTimelineJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryMultiTimelineJobRespData `json:"data"` // 业务数据
}

func (resp *QueryMultiTimelineJobResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeJobReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeJobReqBuilder() *QueryRecentChangeJobReqBuilder {
	builder := &QueryRecentChangeJobReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeJobReqBuilder) PageSize(pageSize int) *QueryRecentChangeJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeJobReqBuilder) PageToken(pageToken string) *QueryRecentChangeJobReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeJobReqBuilder) StartDate(startDate string) *QueryRecentChangeJobReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeJobReqBuilder) EndDate(endDate string) *QueryRecentChangeJobReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeJobReqBuilder) Build() *QueryRecentChangeJobReq {
	req := &QueryRecentChangeJobReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeJobReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeJobRespData struct {
	JobIds []string `json:"job_ids,omitempty"` // 职务 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedJobIds []string `json:"deleted_job_ids,omitempty"` // 删除的职务 ID 列表
}

type QueryRecentChangeJobResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeJobRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeJobResp) Success() bool {
	return resp.Code == 0
}

type CreateJobChangeReqBodyBuilder struct {
	transferMode     int // 异动方式
	transferModeFlag bool

	employmentId     string // 雇员id
	employmentIdFlag bool

	transferTypeUniqueIdentifier     string // 异动类型唯一标识
	transferTypeUniqueIdentifierFlag bool

	flowId     string // 异动流程ID
	flowIdFlag bool

	effectiveDate     string // 生效日期
	effectiveDateFlag bool

	transferInfo     *CreateTransferInfo // 异动详细信息
	transferInfoFlag bool

	transferKey     string // 异动记录标识符
	transferKeyFlag bool

	initiatorId     string // 异动发起人 ID
	initiatorIdFlag bool

	transferReasonUniqueIdentifier     string // 异动原因唯一标识
	transferReasonUniqueIdentifierFlag bool

	updateMethod     string // 是否穿透更新异动类任职记录
	updateMethodFlag bool

	updateMethodOffboarding     string // 是否穿透更新离职类任职记录
	updateMethodOffboardingFlag bool
}

func NewCreateJobChangeReqBodyBuilder() *CreateJobChangeReqBodyBuilder {
	builder := &CreateJobChangeReqBodyBuilder{}
	return builder
}

// 异动方式
//
//示例值：2
func (builder *CreateJobChangeReqBodyBuilder) TransferMode(transferMode int) *CreateJobChangeReqBodyBuilder {
	builder.transferMode = transferMode
	builder.transferModeFlag = true
	return builder
}

// 雇员id
//
//示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangeReqBodyBuilder) EmploymentId(employmentId string) *CreateJobChangeReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 异动类型唯一标识
//
//示例值：internal_transfer
func (builder *CreateJobChangeReqBodyBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier string) *CreateJobChangeReqBodyBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动流程ID
//
//示例值：people_6963913041981490725_6983885526583627531
func (builder *CreateJobChangeReqBodyBuilder) FlowId(flowId string) *CreateJobChangeReqBodyBuilder {
	builder.flowId = flowId
	builder.flowIdFlag = true
	return builder
}

// 生效日期
//
//示例值：2022-03-01
func (builder *CreateJobChangeReqBodyBuilder) EffectiveDate(effectiveDate string) *CreateJobChangeReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 异动详细信息
//
//示例值：
func (builder *CreateJobChangeReqBodyBuilder) TransferInfo(transferInfo *CreateTransferInfo) *CreateJobChangeReqBodyBuilder {
	builder.transferInfo = transferInfo
	builder.transferInfoFlag = true
	return builder
}

// 异动记录标识符
//
//示例值：transfer_3627531
func (builder *CreateJobChangeReqBodyBuilder) TransferKey(transferKey string) *CreateJobChangeReqBodyBuilder {
	builder.transferKey = transferKey
	builder.transferKeyFlag = true
	return builder
}

// 异动发起人 ID
//
//示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangeReqBodyBuilder) InitiatorId(initiatorId string) *CreateJobChangeReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 异动原因唯一标识
//
//示例值：involuntary_transfer
func (builder *CreateJobChangeReqBodyBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier string) *CreateJobChangeReqBodyBuilder {
	builder.transferReasonUniqueIdentifier = transferReasonUniqueIdentifier
	builder.transferReasonUniqueIdentifierFlag = true
	return builder
}

// 是否穿透更新异动类任职记录
//
//示例值：update_all
func (builder *CreateJobChangeReqBodyBuilder) UpdateMethod(updateMethod string) *CreateJobChangeReqBodyBuilder {
	builder.updateMethod = updateMethod
	builder.updateMethodFlag = true
	return builder
}

// 是否穿透更新离职类任职记录
//
//示例值：update_all
func (builder *CreateJobChangeReqBodyBuilder) UpdateMethodOffboarding(updateMethodOffboarding string) *CreateJobChangeReqBodyBuilder {
	builder.updateMethodOffboarding = updateMethodOffboarding
	builder.updateMethodOffboardingFlag = true
	return builder
}

func (builder *CreateJobChangeReqBodyBuilder) Build() *CreateJobChangeReqBody {
	req := &CreateJobChangeReqBody{}
	if builder.transferModeFlag {
		req.TransferMode = &builder.transferMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = &builder.transferTypeUniqueIdentifier
	}
	if builder.flowIdFlag {
		req.FlowId = &builder.flowId
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.transferInfoFlag {
		req.TransferInfo = builder.transferInfo
	}
	if builder.transferKeyFlag {
		req.TransferKey = &builder.transferKey
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.transferReasonUniqueIdentifierFlag {
		req.TransferReasonUniqueIdentifier = &builder.transferReasonUniqueIdentifier
	}
	if builder.updateMethodFlag {
		req.UpdateMethod = &builder.updateMethod
	}
	if builder.updateMethodOffboardingFlag {
		req.UpdateMethodOffboarding = &builder.updateMethodOffboarding
	}
	return req
}

type CreateJobChangePathReqBodyBuilder struct {
	transferMode                       int
	transferModeFlag                   bool
	employmentId                       string
	employmentIdFlag                   bool
	transferTypeUniqueIdentifier       string
	transferTypeUniqueIdentifierFlag   bool
	flowId                             string
	flowIdFlag                         bool
	effectiveDate                      string
	effectiveDateFlag                  bool
	transferInfo                       *CreateTransferInfo
	transferInfoFlag                   bool
	transferKey                        string
	transferKeyFlag                    bool
	initiatorId                        string
	initiatorIdFlag                    bool
	transferReasonUniqueIdentifier     string
	transferReasonUniqueIdentifierFlag bool
	updateMethod                       string
	updateMethodFlag                   bool
	updateMethodOffboarding            string
	updateMethodOffboardingFlag        bool
}

func NewCreateJobChangePathReqBodyBuilder() *CreateJobChangePathReqBodyBuilder {
	builder := &CreateJobChangePathReqBodyBuilder{}
	return builder
}

// 异动方式
//
// 示例值：2
func (builder *CreateJobChangePathReqBodyBuilder) TransferMode(transferMode int) *CreateJobChangePathReqBodyBuilder {
	builder.transferMode = transferMode
	builder.transferModeFlag = true
	return builder
}

// 雇员id
//
// 示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangePathReqBodyBuilder) EmploymentId(employmentId string) *CreateJobChangePathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 异动类型唯一标识
//
// 示例值：internal_transfer
func (builder *CreateJobChangePathReqBodyBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier string) *CreateJobChangePathReqBodyBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动流程ID
//
// 示例值：people_6963913041981490725_6983885526583627531
func (builder *CreateJobChangePathReqBodyBuilder) FlowId(flowId string) *CreateJobChangePathReqBodyBuilder {
	builder.flowId = flowId
	builder.flowIdFlag = true
	return builder
}

// 生效日期
//
// 示例值：2022-03-01
func (builder *CreateJobChangePathReqBodyBuilder) EffectiveDate(effectiveDate string) *CreateJobChangePathReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 异动详细信息
//
// 示例值：
func (builder *CreateJobChangePathReqBodyBuilder) TransferInfo(transferInfo *CreateTransferInfo) *CreateJobChangePathReqBodyBuilder {
	builder.transferInfo = transferInfo
	builder.transferInfoFlag = true
	return builder
}

// 异动记录标识符
//
// 示例值：transfer_3627531
func (builder *CreateJobChangePathReqBodyBuilder) TransferKey(transferKey string) *CreateJobChangePathReqBodyBuilder {
	builder.transferKey = transferKey
	builder.transferKeyFlag = true
	return builder
}

// 异动发起人 ID
//
// 示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *CreateJobChangePathReqBodyBuilder) InitiatorId(initiatorId string) *CreateJobChangePathReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 异动原因唯一标识
//
// 示例值：involuntary_transfer
func (builder *CreateJobChangePathReqBodyBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier string) *CreateJobChangePathReqBodyBuilder {
	builder.transferReasonUniqueIdentifier = transferReasonUniqueIdentifier
	builder.transferReasonUniqueIdentifierFlag = true
	return builder
}

// 是否穿透更新异动类任职记录
//
// 示例值：update_all
func (builder *CreateJobChangePathReqBodyBuilder) UpdateMethod(updateMethod string) *CreateJobChangePathReqBodyBuilder {
	builder.updateMethod = updateMethod
	builder.updateMethodFlag = true
	return builder
}

// 是否穿透更新离职类任职记录
//
// 示例值：update_all
func (builder *CreateJobChangePathReqBodyBuilder) UpdateMethodOffboarding(updateMethodOffboarding string) *CreateJobChangePathReqBodyBuilder {
	builder.updateMethodOffboarding = updateMethodOffboarding
	builder.updateMethodOffboardingFlag = true
	return builder
}

func (builder *CreateJobChangePathReqBodyBuilder) Build() (*CreateJobChangeReqBody, error) {
	req := &CreateJobChangeReqBody{}
	if builder.transferModeFlag {
		req.TransferMode = &builder.transferMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = &builder.transferTypeUniqueIdentifier
	}
	if builder.flowIdFlag {
		req.FlowId = &builder.flowId
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	if builder.transferInfoFlag {
		req.TransferInfo = builder.transferInfo
	}
	if builder.transferKeyFlag {
		req.TransferKey = &builder.transferKey
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.transferReasonUniqueIdentifierFlag {
		req.TransferReasonUniqueIdentifier = &builder.transferReasonUniqueIdentifier
	}
	if builder.updateMethodFlag {
		req.UpdateMethod = &builder.updateMethod
	}
	if builder.updateMethodOffboardingFlag {
		req.UpdateMethodOffboarding = &builder.updateMethodOffboarding
	}
	return req, nil
}

type CreateJobChangeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateJobChangeReqBody
}

func NewCreateJobChangeReqBuilder() *CreateJobChangeReqBuilder {
	builder := &CreateJobChangeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：open_id
func (builder *CreateJobChangeReqBuilder) UserIdType(userIdType string) *CreateJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：
func (builder *CreateJobChangeReqBuilder) DepartmentIdType(departmentIdType string) *CreateJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *CreateJobChangeReqBuilder) Body(body *CreateJobChangeReqBody) *CreateJobChangeReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateJobChangeReqBuilder) Build() *CreateJobChangeReq {
	req := &CreateJobChangeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateJobChangeReqBody struct {
	TransferMode *int `json:"transfer_mode,omitempty"` // 异动方式

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员id

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型唯一标识

	FlowId *string `json:"flow_id,omitempty"` // 异动流程ID

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	TransferInfo *CreateTransferInfo `json:"transfer_info,omitempty"` // 异动详细信息

	TransferKey *string `json:"transfer_key,omitempty"` // 异动记录标识符

	InitiatorId *string `json:"initiator_id,omitempty"` // 异动发起人 ID

	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因唯一标识

	UpdateMethod *string `json:"update_method,omitempty"` // 是否穿透更新异动类任职记录

	UpdateMethodOffboarding *string `json:"update_method_offboarding,omitempty"` // 是否穿透更新离职类任职记录
}

type CreateJobChangeReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateJobChangeReqBody `body:""`
}

type CreateJobChangeRespData struct {
	JobChangeId *string `json:"job_change_id,omitempty"` // 异动记录 id

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	Status *string `json:"status,omitempty"` // 异动状态

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型

	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因

	ProcessId *string `json:"process_id,omitempty"` // 异动流程 id

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	TransferInfo *TransferInfo `json:"transfer_info,omitempty"` // 异动详细信息

	IsAdjustSalary *bool `json:"is_adjust_salary,omitempty"` // 是否调整薪酬

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 异动自定义字段

	DetailsOfJobStatusChange []string `json:"details_of_job_status_change,omitempty"` // 异动变更内容
}

type CreateJobChangeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateJobChangeRespData `json:"data"` // 业务数据
}

func (resp *CreateJobChangeResp) Success() bool {
	return resp.Code == 0
}

type RevokeJobChangeReqBodyBuilder struct {
	operatorId     string // 操作人id
	operatorIdFlag bool
}

func NewRevokeJobChangeReqBodyBuilder() *RevokeJobChangeReqBodyBuilder {
	builder := &RevokeJobChangeReqBodyBuilder{}
	return builder
}

// 操作人id
//
//示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *RevokeJobChangeReqBodyBuilder) OperatorId(operatorId string) *RevokeJobChangeReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

func (builder *RevokeJobChangeReqBodyBuilder) Build() *RevokeJobChangeReqBody {
	req := &RevokeJobChangeReqBody{}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	return req
}

type RevokeJobChangePathReqBodyBuilder struct {
	operatorId     string
	operatorIdFlag bool
}

func NewRevokeJobChangePathReqBodyBuilder() *RevokeJobChangePathReqBodyBuilder {
	builder := &RevokeJobChangePathReqBodyBuilder{}
	return builder
}

// 操作人id
//
// 示例值：ou_a294793e8fa21529f2a60e3e9de45520
func (builder *RevokeJobChangePathReqBodyBuilder) OperatorId(operatorId string) *RevokeJobChangePathReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

func (builder *RevokeJobChangePathReqBodyBuilder) Build() (*RevokeJobChangeReqBody, error) {
	req := &RevokeJobChangeReqBody{}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	return req, nil
}

type RevokeJobChangeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RevokeJobChangeReqBody
}

func NewRevokeJobChangeReqBuilder() *RevokeJobChangeReqBuilder {
	builder := &RevokeJobChangeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 异动id
//
// 示例值：7402156992338658860
func (builder *RevokeJobChangeReqBuilder) JobChangeId(jobChangeId string) *RevokeJobChangeReqBuilder {
	builder.apiReq.PathParams.Set("job_change_id", fmt.Sprint(jobChangeId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：open_id
func (builder *RevokeJobChangeReqBuilder) UserIdType(userIdType string) *RevokeJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *RevokeJobChangeReqBuilder) Body(body *RevokeJobChangeReqBody) *RevokeJobChangeReqBuilder {
	builder.body = body
	return builder
}

func (builder *RevokeJobChangeReqBuilder) Build() *RevokeJobChangeReq {
	req := &RevokeJobChangeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type RevokeJobChangeReqBody struct {
	OperatorId *string `json:"operator_id,omitempty"` // 操作人id
}

type RevokeJobChangeReq struct {
	apiReq *larkcore.ApiReq
	Body   *RevokeJobChangeReqBody `body:""`
}

type RevokeJobChangeRespData struct {
	Result *bool `json:"result,omitempty"` // 撤销结果

	Message *string `json:"message,omitempty"` // 撤销信息
}

type RevokeJobChangeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RevokeJobChangeRespData `json:"data"` // 业务数据
}

func (resp *RevokeJobChangeResp) Success() bool {
	return resp.Code == 0
}

type SearchJobChangeReqBodyBuilder struct {
	employmentIds     []string // 雇员 ID 列表
	employmentIdsFlag bool

	jobChangeIds     []string // 异动记录 ID 列表
	jobChangeIdsFlag bool

	statuses     []string // 异动状态，多个状态之间为「或」的关系
	statusesFlag bool

	effectiveDateStart     string // 异动生效日期 - 搜索范围开始，需要与搜索范围结束一同使用
	effectiveDateStartFlag bool

	effectiveDateEnd     string // 异动生效日期 - 搜索范围结束
	effectiveDateEndFlag bool

	updatedTimeStart     string // 异动更新时间 - 搜索范围开始，需要与搜索范围结束一同使用
	updatedTimeStartFlag bool

	updatedTimeEnd     string // 异动更新时间 - 搜索范围结束
	updatedTimeEndFlag bool

	targetDepartmentIds     []string // 新部门 ID 列表
	targetDepartmentIdsFlag bool

	transferTypeUniqueIdentifier     []string // 异动类型唯一标识
	transferTypeUniqueIdentifierFlag bool

	transferReasonUniqueIdentifier     []string // 异动原因唯一标识
	transferReasonUniqueIdentifierFlag bool

	exceptionStatuses     []string // 异常处理状态，多个状态之间为「或」的关系
	exceptionStatusesFlag bool
}

func NewSearchJobChangeReqBodyBuilder() *SearchJobChangeReqBodyBuilder {
	builder := &SearchJobChangeReqBodyBuilder{}
	return builder
}

// 雇员 ID 列表
//
//示例值：
func (builder *SearchJobChangeReqBodyBuilder) EmploymentIds(employmentIds []string) *SearchJobChangeReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 异动记录 ID 列表
//
//示例值：
func (builder *SearchJobChangeReqBodyBuilder) JobChangeIds(jobChangeIds []string) *SearchJobChangeReqBodyBuilder {
	builder.jobChangeIds = jobChangeIds
	builder.jobChangeIdsFlag = true
	return builder
}

// 异动状态，多个状态之间为「或」的关系
//
//示例值：Approved
func (builder *SearchJobChangeReqBodyBuilder) Statuses(statuses []string) *SearchJobChangeReqBodyBuilder {
	builder.statuses = statuses
	builder.statusesFlag = true
	return builder
}

// 异动生效日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-01-01
func (builder *SearchJobChangeReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *SearchJobChangeReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 异动生效日期 - 搜索范围结束
//
//示例值：2022-01-01
func (builder *SearchJobChangeReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *SearchJobChangeReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 异动更新时间 - 搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：1704084635000
func (builder *SearchJobChangeReqBodyBuilder) UpdatedTimeStart(updatedTimeStart string) *SearchJobChangeReqBodyBuilder {
	builder.updatedTimeStart = updatedTimeStart
	builder.updatedTimeStartFlag = true
	return builder
}

// 异动更新时间 - 搜索范围结束
//
//示例值：1704084635000
func (builder *SearchJobChangeReqBodyBuilder) UpdatedTimeEnd(updatedTimeEnd string) *SearchJobChangeReqBodyBuilder {
	builder.updatedTimeEnd = updatedTimeEnd
	builder.updatedTimeEndFlag = true
	return builder
}

// 新部门 ID 列表
//
//示例值：
func (builder *SearchJobChangeReqBodyBuilder) TargetDepartmentIds(targetDepartmentIds []string) *SearchJobChangeReqBodyBuilder {
	builder.targetDepartmentIds = targetDepartmentIds
	builder.targetDepartmentIdsFlag = true
	return builder
}

// 异动类型唯一标识
//
//示例值：internal_transfer
func (builder *SearchJobChangeReqBodyBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier []string) *SearchJobChangeReqBodyBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动原因唯一标识
//
//示例值：involuntary_transfer
func (builder *SearchJobChangeReqBodyBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier []string) *SearchJobChangeReqBodyBuilder {
	builder.transferReasonUniqueIdentifier = transferReasonUniqueIdentifier
	builder.transferReasonUniqueIdentifierFlag = true
	return builder
}

// 异常处理状态，多个状态之间为「或」的关系
//
//示例值：pending
func (builder *SearchJobChangeReqBodyBuilder) ExceptionStatuses(exceptionStatuses []string) *SearchJobChangeReqBodyBuilder {
	builder.exceptionStatuses = exceptionStatuses
	builder.exceptionStatusesFlag = true
	return builder
}

func (builder *SearchJobChangeReqBodyBuilder) Build() *SearchJobChangeReqBody {
	req := &SearchJobChangeReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.jobChangeIdsFlag {
		req.JobChangeIds = builder.jobChangeIds
	}
	if builder.statusesFlag {
		req.Statuses = builder.statuses
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.updatedTimeStartFlag {
		req.UpdatedTimeStart = &builder.updatedTimeStart
	}
	if builder.updatedTimeEndFlag {
		req.UpdatedTimeEnd = &builder.updatedTimeEnd
	}
	if builder.targetDepartmentIdsFlag {
		req.TargetDepartmentIds = builder.targetDepartmentIds
	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = builder.transferTypeUniqueIdentifier
	}
	if builder.transferReasonUniqueIdentifierFlag {
		req.TransferReasonUniqueIdentifier = builder.transferReasonUniqueIdentifier
	}
	if builder.exceptionStatusesFlag {
		req.ExceptionStatuses = builder.exceptionStatuses
	}
	return req
}

type SearchJobChangePathReqBodyBuilder struct {
	employmentIds                      []string
	employmentIdsFlag                  bool
	jobChangeIds                       []string
	jobChangeIdsFlag                   bool
	statuses                           []string
	statusesFlag                       bool
	effectiveDateStart                 string
	effectiveDateStartFlag             bool
	effectiveDateEnd                   string
	effectiveDateEndFlag               bool
	updatedTimeStart                   string
	updatedTimeStartFlag               bool
	updatedTimeEnd                     string
	updatedTimeEndFlag                 bool
	targetDepartmentIds                []string
	targetDepartmentIdsFlag            bool
	transferTypeUniqueIdentifier       []string
	transferTypeUniqueIdentifierFlag   bool
	transferReasonUniqueIdentifier     []string
	transferReasonUniqueIdentifierFlag bool
	exceptionStatuses                  []string
	exceptionStatusesFlag              bool
}

func NewSearchJobChangePathReqBodyBuilder() *SearchJobChangePathReqBodyBuilder {
	builder := &SearchJobChangePathReqBodyBuilder{}
	return builder
}

// 雇员 ID 列表
//
// 示例值：
func (builder *SearchJobChangePathReqBodyBuilder) EmploymentIds(employmentIds []string) *SearchJobChangePathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 异动记录 ID 列表
//
// 示例值：
func (builder *SearchJobChangePathReqBodyBuilder) JobChangeIds(jobChangeIds []string) *SearchJobChangePathReqBodyBuilder {
	builder.jobChangeIds = jobChangeIds
	builder.jobChangeIdsFlag = true
	return builder
}

// 异动状态，多个状态之间为「或」的关系
//
// 示例值：Approved
func (builder *SearchJobChangePathReqBodyBuilder) Statuses(statuses []string) *SearchJobChangePathReqBodyBuilder {
	builder.statuses = statuses
	builder.statusesFlag = true
	return builder
}

// 异动生效日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-01-01
func (builder *SearchJobChangePathReqBodyBuilder) EffectiveDateStart(effectiveDateStart string) *SearchJobChangePathReqBodyBuilder {
	builder.effectiveDateStart = effectiveDateStart
	builder.effectiveDateStartFlag = true
	return builder
}

// 异动生效日期 - 搜索范围结束
//
// 示例值：2022-01-01
func (builder *SearchJobChangePathReqBodyBuilder) EffectiveDateEnd(effectiveDateEnd string) *SearchJobChangePathReqBodyBuilder {
	builder.effectiveDateEnd = effectiveDateEnd
	builder.effectiveDateEndFlag = true
	return builder
}

// 异动更新时间 - 搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：1704084635000
func (builder *SearchJobChangePathReqBodyBuilder) UpdatedTimeStart(updatedTimeStart string) *SearchJobChangePathReqBodyBuilder {
	builder.updatedTimeStart = updatedTimeStart
	builder.updatedTimeStartFlag = true
	return builder
}

// 异动更新时间 - 搜索范围结束
//
// 示例值：1704084635000
func (builder *SearchJobChangePathReqBodyBuilder) UpdatedTimeEnd(updatedTimeEnd string) *SearchJobChangePathReqBodyBuilder {
	builder.updatedTimeEnd = updatedTimeEnd
	builder.updatedTimeEndFlag = true
	return builder
}

// 新部门 ID 列表
//
// 示例值：
func (builder *SearchJobChangePathReqBodyBuilder) TargetDepartmentIds(targetDepartmentIds []string) *SearchJobChangePathReqBodyBuilder {
	builder.targetDepartmentIds = targetDepartmentIds
	builder.targetDepartmentIdsFlag = true
	return builder
}

// 异动类型唯一标识
//
// 示例值：internal_transfer
func (builder *SearchJobChangePathReqBodyBuilder) TransferTypeUniqueIdentifier(transferTypeUniqueIdentifier []string) *SearchJobChangePathReqBodyBuilder {
	builder.transferTypeUniqueIdentifier = transferTypeUniqueIdentifier
	builder.transferTypeUniqueIdentifierFlag = true
	return builder
}

// 异动原因唯一标识
//
// 示例值：involuntary_transfer
func (builder *SearchJobChangePathReqBodyBuilder) TransferReasonUniqueIdentifier(transferReasonUniqueIdentifier []string) *SearchJobChangePathReqBodyBuilder {
	builder.transferReasonUniqueIdentifier = transferReasonUniqueIdentifier
	builder.transferReasonUniqueIdentifierFlag = true
	return builder
}

// 异常处理状态，多个状态之间为「或」的关系
//
// 示例值：pending
func (builder *SearchJobChangePathReqBodyBuilder) ExceptionStatuses(exceptionStatuses []string) *SearchJobChangePathReqBodyBuilder {
	builder.exceptionStatuses = exceptionStatuses
	builder.exceptionStatusesFlag = true
	return builder
}

func (builder *SearchJobChangePathReqBodyBuilder) Build() (*SearchJobChangeReqBody, error) {
	req := &SearchJobChangeReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.jobChangeIdsFlag {
		req.JobChangeIds = builder.jobChangeIds
	}
	if builder.statusesFlag {
		req.Statuses = builder.statuses
	}
	if builder.effectiveDateStartFlag {
		req.EffectiveDateStart = &builder.effectiveDateStart
	}
	if builder.effectiveDateEndFlag {
		req.EffectiveDateEnd = &builder.effectiveDateEnd
	}
	if builder.updatedTimeStartFlag {
		req.UpdatedTimeStart = &builder.updatedTimeStart
	}
	if builder.updatedTimeEndFlag {
		req.UpdatedTimeEnd = &builder.updatedTimeEnd
	}
	if builder.targetDepartmentIdsFlag {
		req.TargetDepartmentIds = builder.targetDepartmentIds
	}
	if builder.transferTypeUniqueIdentifierFlag {
		req.TransferTypeUniqueIdentifier = builder.transferTypeUniqueIdentifier
	}
	if builder.transferReasonUniqueIdentifierFlag {
		req.TransferReasonUniqueIdentifier = builder.transferReasonUniqueIdentifier
	}
	if builder.exceptionStatusesFlag {
		req.ExceptionStatuses = builder.exceptionStatuses
	}
	return req, nil
}

type SearchJobChangeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchJobChangeReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchJobChangeReqBuilder() *SearchJobChangeReqBuilder {
	builder := &SearchJobChangeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchJobChangeReqBuilder) Limit(limit int) *SearchJobChangeReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchJobChangeReqBuilder) PageSize(pageSize int) *SearchJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchJobChangeReqBuilder) PageToken(pageToken string) *SearchJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SearchJobChangeReqBuilder) UserIdType(userIdType string) *SearchJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *SearchJobChangeReqBuilder) DepartmentIdType(departmentIdType string) *SearchJobChangeReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 获取员工异动列表
func (builder *SearchJobChangeReqBuilder) Body(body *SearchJobChangeReqBody) *SearchJobChangeReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchJobChangeReqBuilder) Build() *SearchJobChangeReq {
	req := &SearchJobChangeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchJobChangeReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 雇员 ID 列表

	JobChangeIds []string `json:"job_change_ids,omitempty"` // 异动记录 ID 列表

	Statuses []string `json:"statuses,omitempty"` // 异动状态，多个状态之间为「或」的关系

	EffectiveDateStart *string `json:"effective_date_start,omitempty"` // 异动生效日期 - 搜索范围开始，需要与搜索范围结束一同使用

	EffectiveDateEnd *string `json:"effective_date_end,omitempty"` // 异动生效日期 - 搜索范围结束

	UpdatedTimeStart *string `json:"updated_time_start,omitempty"` // 异动更新时间 - 搜索范围开始，需要与搜索范围结束一同使用

	UpdatedTimeEnd *string `json:"updated_time_end,omitempty"` // 异动更新时间 - 搜索范围结束

	TargetDepartmentIds []string `json:"target_department_ids,omitempty"` // 新部门 ID 列表

	TransferTypeUniqueIdentifier []string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型唯一标识

	TransferReasonUniqueIdentifier []string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因唯一标识

	ExceptionStatuses []string `json:"exception_statuses,omitempty"` // 异常处理状态，多个状态之间为「或」的关系
}

type SearchJobChangeReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchJobChangeReqBody `body:""`
	Limit  int                     // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchJobChangeRespData struct {
	Items []*JobChange `json:"items,omitempty"` // 员工异动列表

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	PageToken *string `json:"page_token,omitempty"` // 下一页页码
}

type SearchJobChangeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchJobChangeRespData `json:"data"` // 业务数据
}

func (resp *SearchJobChangeResp) Success() bool {
	return resp.Code == 0
}

type BatchGetJobFamilyReqBodyBuilder struct {
	jobFamilyIds     []string // 序列 ID 列表
	jobFamilyIdsFlag bool

	jobFamilyCodes     []string // 序列 Code 列表
	jobFamilyCodesFlag bool
}

func NewBatchGetJobFamilyReqBodyBuilder() *BatchGetJobFamilyReqBodyBuilder {
	builder := &BatchGetJobFamilyReqBodyBuilder{}
	return builder
}

// 序列 ID 列表
//
//示例值：
func (builder *BatchGetJobFamilyReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *BatchGetJobFamilyReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 序列 Code 列表
//
//示例值：
func (builder *BatchGetJobFamilyReqBodyBuilder) JobFamilyCodes(jobFamilyCodes []string) *BatchGetJobFamilyReqBodyBuilder {
	builder.jobFamilyCodes = jobFamilyCodes
	builder.jobFamilyCodesFlag = true
	return builder
}

func (builder *BatchGetJobFamilyReqBodyBuilder) Build() *BatchGetJobFamilyReqBody {
	req := &BatchGetJobFamilyReqBody{}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobFamilyCodesFlag {
		req.JobFamilyCodes = builder.jobFamilyCodes
	}
	return req
}

type BatchGetJobFamilyPathReqBodyBuilder struct {
	jobFamilyIds       []string
	jobFamilyIdsFlag   bool
	jobFamilyCodes     []string
	jobFamilyCodesFlag bool
}

func NewBatchGetJobFamilyPathReqBodyBuilder() *BatchGetJobFamilyPathReqBodyBuilder {
	builder := &BatchGetJobFamilyPathReqBodyBuilder{}
	return builder
}

// 序列 ID 列表
//
// 示例值：
func (builder *BatchGetJobFamilyPathReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *BatchGetJobFamilyPathReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 序列 Code 列表
//
// 示例值：
func (builder *BatchGetJobFamilyPathReqBodyBuilder) JobFamilyCodes(jobFamilyCodes []string) *BatchGetJobFamilyPathReqBodyBuilder {
	builder.jobFamilyCodes = jobFamilyCodes
	builder.jobFamilyCodesFlag = true
	return builder
}

func (builder *BatchGetJobFamilyPathReqBodyBuilder) Build() (*BatchGetJobFamilyReqBody, error) {
	req := &BatchGetJobFamilyReqBody{}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobFamilyCodesFlag {
		req.JobFamilyCodes = builder.jobFamilyCodes
	}
	return req, nil
}

type BatchGetJobFamilyReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetJobFamilyReqBody
}

func NewBatchGetJobFamilyReqBuilder() *BatchGetJobFamilyReqBuilder {
	builder := &BatchGetJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 批量获取序列信息
func (builder *BatchGetJobFamilyReqBuilder) Body(body *BatchGetJobFamilyReqBody) *BatchGetJobFamilyReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetJobFamilyReqBuilder) Build() *BatchGetJobFamilyReq {
	req := &BatchGetJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchGetJobFamilyReqBody struct {
	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列 ID 列表

	JobFamilyCodes []string `json:"job_family_codes,omitempty"` // 序列 Code 列表
}

type BatchGetJobFamilyReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetJobFamilyReqBody `body:""`
}

type BatchGetJobFamilyRespData struct {
	Items []*JobFamily `json:"items,omitempty"` // 查询的序列信息
}

type BatchGetJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetJobFamilyRespData `json:"data"` // 业务数据
}

func (resp *BatchGetJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type QueryMultiTimelineJobFamilyReqBodyBuilder struct {
	jobFamilyIds     []string // 序列 ID 列表
	jobFamilyIdsFlag bool

	startDate     string // 查询开始时间（包含）
	startDateFlag bool

	endDate     string // 查询结束时间(包含)
	endDateFlag bool

	fields     []string // 返回数据的字段列表，可选["job_family_name", "code", "active", "parent_job_family_id", "description", "effective_date"]
	fieldsFlag bool
}

func NewQueryMultiTimelineJobFamilyReqBodyBuilder() *QueryMultiTimelineJobFamilyReqBodyBuilder {
	builder := &QueryMultiTimelineJobFamilyReqBodyBuilder{}
	return builder
}

// 序列 ID 列表
//
//示例值：
func (builder *QueryMultiTimelineJobFamilyReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryMultiTimelineJobFamilyReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 查询开始时间（包含）
//
//示例值：2024-01-01
func (builder *QueryMultiTimelineJobFamilyReqBodyBuilder) StartDate(startDate string) *QueryMultiTimelineJobFamilyReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 查询结束时间(包含)
//
//示例值：2024-12-31
func (builder *QueryMultiTimelineJobFamilyReqBodyBuilder) EndDate(endDate string) *QueryMultiTimelineJobFamilyReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 返回数据的字段列表，可选["job_family_name", "code", "active", "parent_job_family_id", "description", "effective_date"]
//
//示例值：
func (builder *QueryMultiTimelineJobFamilyReqBodyBuilder) Fields(fields []string) *QueryMultiTimelineJobFamilyReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryMultiTimelineJobFamilyReqBodyBuilder) Build() *QueryMultiTimelineJobFamilyReqBody {
	req := &QueryMultiTimelineJobFamilyReqBody{}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type QueryMultiTimelineJobFamilyPathReqBodyBuilder struct {
	jobFamilyIds     []string
	jobFamilyIdsFlag bool
	startDate        string
	startDateFlag    bool
	endDate          string
	endDateFlag      bool
	fields           []string
	fieldsFlag       bool
}

func NewQueryMultiTimelineJobFamilyPathReqBodyBuilder() *QueryMultiTimelineJobFamilyPathReqBodyBuilder {
	builder := &QueryMultiTimelineJobFamilyPathReqBodyBuilder{}
	return builder
}

// 序列 ID 列表
//
// 示例值：
func (builder *QueryMultiTimelineJobFamilyPathReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryMultiTimelineJobFamilyPathReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 查询开始时间（包含）
//
// 示例值：2024-01-01
func (builder *QueryMultiTimelineJobFamilyPathReqBodyBuilder) StartDate(startDate string) *QueryMultiTimelineJobFamilyPathReqBodyBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 查询结束时间(包含)
//
// 示例值：2024-12-31
func (builder *QueryMultiTimelineJobFamilyPathReqBodyBuilder) EndDate(endDate string) *QueryMultiTimelineJobFamilyPathReqBodyBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 返回数据的字段列表，可选["job_family_name", "code", "active", "parent_job_family_id", "description", "effective_date"]
//
// 示例值：
func (builder *QueryMultiTimelineJobFamilyPathReqBodyBuilder) Fields(fields []string) *QueryMultiTimelineJobFamilyPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryMultiTimelineJobFamilyPathReqBodyBuilder) Build() (*QueryMultiTimelineJobFamilyReqBody, error) {
	req := &QueryMultiTimelineJobFamilyReqBody{}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate
	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type QueryMultiTimelineJobFamilyReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryMultiTimelineJobFamilyReqBody
}

func NewQueryMultiTimelineJobFamilyReqBuilder() *QueryMultiTimelineJobFamilyReqBuilder {
	builder := &QueryMultiTimelineJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 查询生效时间在指定时间范围的序列
func (builder *QueryMultiTimelineJobFamilyReqBuilder) Body(body *QueryMultiTimelineJobFamilyReqBody) *QueryMultiTimelineJobFamilyReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryMultiTimelineJobFamilyReqBuilder) Build() *QueryMultiTimelineJobFamilyReq {
	req := &QueryMultiTimelineJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type QueryMultiTimelineJobFamilyReqBody struct {
	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列 ID 列表

	StartDate *string `json:"start_date,omitempty"` // 查询开始时间（包含）

	EndDate *string `json:"end_date,omitempty"` // 查询结束时间(包含)

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，可选["job_family_name", "code", "active", "parent_job_family_id", "description", "effective_date"]
}

type QueryMultiTimelineJobFamilyReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryMultiTimelineJobFamilyReqBody `body:""`
}

type QueryMultiTimelineJobFamilyRespData struct {
	Items []*JobFamilyTimeline `json:"items,omitempty"` // 序列信息
}

type QueryMultiTimelineJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryMultiTimelineJobFamilyRespData `json:"data"` // 业务数据
}

func (resp *QueryMultiTimelineJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeJobFamilyReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeJobFamilyReqBuilder() *QueryRecentChangeJobFamilyReqBuilder {
	builder := &QueryRecentChangeJobFamilyReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeJobFamilyReqBuilder) PageSize(pageSize int) *QueryRecentChangeJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeJobFamilyReqBuilder) PageToken(pageToken string) *QueryRecentChangeJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeJobFamilyReqBuilder) StartDate(startDate string) *QueryRecentChangeJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeJobFamilyReqBuilder) EndDate(endDate string) *QueryRecentChangeJobFamilyReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeJobFamilyReqBuilder) Build() *QueryRecentChangeJobFamilyReq {
	req := &QueryRecentChangeJobFamilyReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeJobFamilyReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeJobFamilyRespData struct {
	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedJobFamilyIds []string `json:"deleted_job_family_ids,omitempty"` // 删除的序列 ID 列表
}

type QueryRecentChangeJobFamilyResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeJobFamilyRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeJobFamilyResp) Success() bool {
	return resp.Code == 0
}

type CreateJobGradeReqBuilder struct {
	apiReq         *larkcore.ApiReq
	jobGradeCreate *JobGradeCreate
}

func NewCreateJobGradeReqBuilder() *CreateJobGradeReqBuilder {
	builder := &CreateJobGradeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateJobGradeReqBuilder) ClientToken(clientToken string) *CreateJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建职等数据
func (builder *CreateJobGradeReqBuilder) JobGradeCreate(jobGradeCreate *JobGradeCreate) *CreateJobGradeReqBuilder {
	builder.jobGradeCreate = jobGradeCreate
	return builder
}

func (builder *CreateJobGradeReqBuilder) Build() *CreateJobGradeReq {
	req := &CreateJobGradeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobGradeCreate
	return req
}

type CreateJobGradeReq struct {
	apiReq         *larkcore.ApiReq
	JobGradeCreate *JobGradeCreate `body:""`
}

type CreateJobGradeRespData struct {
	GradeId *string `json:"grade_id,omitempty"` // 职等ID
}

type CreateJobGradeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateJobGradeRespData `json:"data"` // 业务数据
}

func (resp *CreateJobGradeResp) Success() bool {
	return resp.Code == 0
}

type DeleteJobGradeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteJobGradeReqBuilder() *DeleteJobGradeReqBuilder {
	builder := &DeleteJobGradeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 需要删除的职等ID
//
// 示例值：1616161616
func (builder *DeleteJobGradeReqBuilder) JobGradeId(jobGradeId string) *DeleteJobGradeReqBuilder {
	builder.apiReq.PathParams.Set("job_grade_id", fmt.Sprint(jobGradeId))
	return builder
}

func (builder *DeleteJobGradeReqBuilder) Build() *DeleteJobGradeReq {
	req := &DeleteJobGradeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteJobGradeReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteJobGradeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteJobGradeResp) Success() bool {
	return resp.Code == 0
}

type PatchJobGradeReqBuilder struct {
	apiReq         *larkcore.ApiReq
	jobGradeUpdate *JobGradeUpdate
}

func NewPatchJobGradeReqBuilder() *PatchJobGradeReqBuilder {
	builder := &PatchJobGradeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 职等ID
//
// 示例值：6862995757234914824
func (builder *PatchJobGradeReqBuilder) JobGradeId(jobGradeId string) *PatchJobGradeReqBuilder {
	builder.apiReq.PathParams.Set("job_grade_id", fmt.Sprint(jobGradeId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *PatchJobGradeReqBuilder) ClientToken(clientToken string) *PatchJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新职等信息
func (builder *PatchJobGradeReqBuilder) JobGradeUpdate(jobGradeUpdate *JobGradeUpdate) *PatchJobGradeReqBuilder {
	builder.jobGradeUpdate = jobGradeUpdate
	return builder
}

func (builder *PatchJobGradeReqBuilder) Build() *PatchJobGradeReq {
	req := &PatchJobGradeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.jobGradeUpdate
	return req
}

type PatchJobGradeReq struct {
	apiReq         *larkcore.ApiReq
	JobGradeUpdate *JobGradeUpdate `body:""`
}

type PatchJobGradeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchJobGradeResp) Success() bool {
	return resp.Code == 0
}

type QueryJobGradeReqBodyBuilder struct {
	ids     []string // 职等ID列表
	idsFlag bool

	codes     []string // 职等code列表
	codesFlag bool

	active     bool // 是否启用
	activeFlag bool
}

func NewQueryJobGradeReqBodyBuilder() *QueryJobGradeReqBodyBuilder {
	builder := &QueryJobGradeReqBodyBuilder{}
	return builder
}

// 职等ID列表
//
//示例值：
func (builder *QueryJobGradeReqBodyBuilder) Ids(ids []string) *QueryJobGradeReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// 职等code列表
//
//示例值：
func (builder *QueryJobGradeReqBodyBuilder) Codes(codes []string) *QueryJobGradeReqBodyBuilder {
	builder.codes = codes
	builder.codesFlag = true
	return builder
}

// 是否启用
//
//示例值：true
func (builder *QueryJobGradeReqBodyBuilder) Active(active bool) *QueryJobGradeReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *QueryJobGradeReqBodyBuilder) Build() *QueryJobGradeReqBody {
	req := &QueryJobGradeReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.codesFlag {
		req.Codes = builder.codes
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	return req
}

type QueryJobGradePathReqBodyBuilder struct {
	ids        []string
	idsFlag    bool
	codes      []string
	codesFlag  bool
	active     bool
	activeFlag bool
}

func NewQueryJobGradePathReqBodyBuilder() *QueryJobGradePathReqBodyBuilder {
	builder := &QueryJobGradePathReqBodyBuilder{}
	return builder
}

// 职等ID列表
//
// 示例值：
func (builder *QueryJobGradePathReqBodyBuilder) Ids(ids []string) *QueryJobGradePathReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// 职等code列表
//
// 示例值：
func (builder *QueryJobGradePathReqBodyBuilder) Codes(codes []string) *QueryJobGradePathReqBodyBuilder {
	builder.codes = codes
	builder.codesFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *QueryJobGradePathReqBodyBuilder) Active(active bool) *QueryJobGradePathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *QueryJobGradePathReqBodyBuilder) Build() (*QueryJobGradeReqBody, error) {
	req := &QueryJobGradeReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.codesFlag {
		req.Codes = builder.codes
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	return req, nil
}

type QueryJobGradeReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryJobGradeReqBody
}

func NewQueryJobGradeReqBuilder() *QueryJobGradeReqBuilder {
	builder := &QueryJobGradeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *QueryJobGradeReqBuilder) PageSize(pageSize int) *QueryJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryJobGradeReqBuilder) PageToken(pageToken string) *QueryJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询职等信息
func (builder *QueryJobGradeReqBuilder) Body(body *QueryJobGradeReqBody) *QueryJobGradeReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryJobGradeReqBuilder) Build() *QueryJobGradeReq {
	req := &QueryJobGradeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryJobGradeReqBody struct {
	Ids []string `json:"ids,omitempty"` // 职等ID列表

	Codes []string `json:"codes,omitempty"` // 职等code列表

	Active *bool `json:"active,omitempty"` // 是否启用
}

type QueryJobGradeReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryJobGradeReqBody `body:""`
}

type QueryJobGradeRespData struct {
	Items []*JobGrade `json:"items,omitempty"` // 职等信息列表

	PageToken *string `json:"page_token,omitempty"` // 下一页token

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type QueryJobGradeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryJobGradeRespData `json:"data"` // 业务数据
}

func (resp *QueryJobGradeResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeJobGradeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeJobGradeReqBuilder() *QueryRecentChangeJobGradeReqBuilder {
	builder := &QueryRecentChangeJobGradeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeJobGradeReqBuilder) PageSize(pageSize int) *QueryRecentChangeJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeJobGradeReqBuilder) PageToken(pageToken string) *QueryRecentChangeJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeJobGradeReqBuilder) StartDate(startDate string) *QueryRecentChangeJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeJobGradeReqBuilder) EndDate(endDate string) *QueryRecentChangeJobGradeReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeJobGradeReqBuilder) Build() *QueryRecentChangeJobGradeReq {
	req := &QueryRecentChangeJobGradeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeJobGradeReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeJobGradeRespData struct {
	JobGradeIds []string `json:"job_grade_ids,omitempty"` // 职等 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedJobGradeIds []string `json:"deleted_job_grade_ids,omitempty"` // 删除的职等 ID 列表
}

type QueryRecentChangeJobGradeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeJobGradeRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeJobGradeResp) Success() bool {
	return resp.Code == 0
}

type BatchGetJobLevelReqBodyBuilder struct {
	jobLevelIds     []string // 职级 ID 列表
	jobLevelIdsFlag bool

	jobLevelCodes     []string // 职级 Code 列表
	jobLevelCodesFlag bool
}

func NewBatchGetJobLevelReqBodyBuilder() *BatchGetJobLevelReqBodyBuilder {
	builder := &BatchGetJobLevelReqBodyBuilder{}
	return builder
}

// 职级 ID 列表
//
//示例值：
func (builder *BatchGetJobLevelReqBodyBuilder) JobLevelIds(jobLevelIds []string) *BatchGetJobLevelReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 职级 Code 列表
//
//示例值：
func (builder *BatchGetJobLevelReqBodyBuilder) JobLevelCodes(jobLevelCodes []string) *BatchGetJobLevelReqBodyBuilder {
	builder.jobLevelCodes = jobLevelCodes
	builder.jobLevelCodesFlag = true
	return builder
}

func (builder *BatchGetJobLevelReqBodyBuilder) Build() *BatchGetJobLevelReqBody {
	req := &BatchGetJobLevelReqBody{}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.jobLevelCodesFlag {
		req.JobLevelCodes = builder.jobLevelCodes
	}
	return req
}

type BatchGetJobLevelPathReqBodyBuilder struct {
	jobLevelIds       []string
	jobLevelIdsFlag   bool
	jobLevelCodes     []string
	jobLevelCodesFlag bool
}

func NewBatchGetJobLevelPathReqBodyBuilder() *BatchGetJobLevelPathReqBodyBuilder {
	builder := &BatchGetJobLevelPathReqBodyBuilder{}
	return builder
}

// 职级 ID 列表
//
// 示例值：
func (builder *BatchGetJobLevelPathReqBodyBuilder) JobLevelIds(jobLevelIds []string) *BatchGetJobLevelPathReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 职级 Code 列表
//
// 示例值：
func (builder *BatchGetJobLevelPathReqBodyBuilder) JobLevelCodes(jobLevelCodes []string) *BatchGetJobLevelPathReqBodyBuilder {
	builder.jobLevelCodes = jobLevelCodes
	builder.jobLevelCodesFlag = true
	return builder
}

func (builder *BatchGetJobLevelPathReqBodyBuilder) Build() (*BatchGetJobLevelReqBody, error) {
	req := &BatchGetJobLevelReqBody{}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.jobLevelCodesFlag {
		req.JobLevelCodes = builder.jobLevelCodes
	}
	return req, nil
}

type BatchGetJobLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetJobLevelReqBody
}

func NewBatchGetJobLevelReqBuilder() *BatchGetJobLevelReqBuilder {
	builder := &BatchGetJobLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 批量获取职级信息
func (builder *BatchGetJobLevelReqBuilder) Body(body *BatchGetJobLevelReqBody) *BatchGetJobLevelReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetJobLevelReqBuilder) Build() *BatchGetJobLevelReq {
	req := &BatchGetJobLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchGetJobLevelReqBody struct {
	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级 ID 列表

	JobLevelCodes []string `json:"job_level_codes,omitempty"` // 职级 Code 列表
}

type BatchGetJobLevelReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetJobLevelReqBody `body:""`
}

type BatchGetJobLevelRespData struct {
	Items []*JobLevel `json:"items,omitempty"` // 查询的职级信息
}

type BatchGetJobLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetJobLevelRespData `json:"data"` // 业务数据
}

func (resp *BatchGetJobLevelResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeJobLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeJobLevelReqBuilder() *QueryRecentChangeJobLevelReqBuilder {
	builder := &QueryRecentChangeJobLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeJobLevelReqBuilder) PageSize(pageSize int) *QueryRecentChangeJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeJobLevelReqBuilder) PageToken(pageToken string) *QueryRecentChangeJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeJobLevelReqBuilder) StartDate(startDate string) *QueryRecentChangeJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeJobLevelReqBuilder) EndDate(endDate string) *QueryRecentChangeJobLevelReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeJobLevelReqBuilder) Build() *QueryRecentChangeJobLevelReq {
	req := &QueryRecentChangeJobLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeJobLevelReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeJobLevelRespData struct {
	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedJobLevelIds []string `json:"deleted_job_level_ids,omitempty"` // 删除的职级 ID 列表
}

type QueryRecentChangeJobLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeJobLevelRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeJobLevelResp) Success() bool {
	return resp.Code == 0
}

type ActiveLocationReqBodyBuilder struct {
	locationId     string // 地点 ID
	locationIdFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool

	active     bool // 启用停用状态
	activeFlag bool

	operationReason     string // 操作原因
	operationReasonFlag bool
}

func NewActiveLocationReqBodyBuilder() *ActiveLocationReqBodyBuilder {
	builder := &ActiveLocationReqBodyBuilder{}
	return builder
}

// 地点 ID
//
//示例值：1616161616
func (builder *ActiveLocationReqBodyBuilder) LocationId(locationId string) *ActiveLocationReqBodyBuilder {
	builder.locationId = locationId
	builder.locationIdFlag = true
	return builder
}

// 生效时间
//
//示例值：2020-01-01
func (builder *ActiveLocationReqBodyBuilder) EffectiveTime(effectiveTime string) *ActiveLocationReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启用停用状态
//
//示例值：true
func (builder *ActiveLocationReqBodyBuilder) Active(active bool) *ActiveLocationReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
//示例值：业务操作
func (builder *ActiveLocationReqBodyBuilder) OperationReason(operationReason string) *ActiveLocationReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *ActiveLocationReqBodyBuilder) Build() *ActiveLocationReqBody {
	req := &ActiveLocationReqBody{}
	if builder.locationIdFlag {
		req.LocationId = &builder.locationId
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req
}

type ActiveLocationPathReqBodyBuilder struct {
	locationId          string
	locationIdFlag      bool
	effectiveTime       string
	effectiveTimeFlag   bool
	active              bool
	activeFlag          bool
	operationReason     string
	operationReasonFlag bool
}

func NewActiveLocationPathReqBodyBuilder() *ActiveLocationPathReqBodyBuilder {
	builder := &ActiveLocationPathReqBodyBuilder{}
	return builder
}

// 地点 ID
//
// 示例值：1616161616
func (builder *ActiveLocationPathReqBodyBuilder) LocationId(locationId string) *ActiveLocationPathReqBodyBuilder {
	builder.locationId = locationId
	builder.locationIdFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *ActiveLocationPathReqBodyBuilder) EffectiveTime(effectiveTime string) *ActiveLocationPathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启用停用状态
//
// 示例值：true
func (builder *ActiveLocationPathReqBodyBuilder) Active(active bool) *ActiveLocationPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 操作原因
//
// 示例值：业务操作
func (builder *ActiveLocationPathReqBodyBuilder) OperationReason(operationReason string) *ActiveLocationPathReqBodyBuilder {
	builder.operationReason = operationReason
	builder.operationReasonFlag = true
	return builder
}

func (builder *ActiveLocationPathReqBodyBuilder) Build() (*ActiveLocationReqBody, error) {
	req := &ActiveLocationReqBody{}
	if builder.locationIdFlag {
		req.LocationId = &builder.locationId
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.operationReasonFlag {
		req.OperationReason = &builder.operationReason
	}
	return req, nil
}

type ActiveLocationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ActiveLocationReqBody
}

func NewActiveLocationReqBuilder() *ActiveLocationReqBuilder {
	builder := &ActiveLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 启停/停用地点
func (builder *ActiveLocationReqBuilder) Body(body *ActiveLocationReqBody) *ActiveLocationReqBuilder {
	builder.body = body
	return builder
}

func (builder *ActiveLocationReqBuilder) Build() *ActiveLocationReq {
	req := &ActiveLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type ActiveLocationReqBody struct {
	LocationId *string `json:"location_id,omitempty"` // 地点 ID

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间

	Active *bool `json:"active,omitempty"` // 启用停用状态

	OperationReason *string `json:"operation_reason,omitempty"` // 操作原因
}

type ActiveLocationReq struct {
	apiReq *larkcore.ApiReq
	Body   *ActiveLocationReqBody `body:""`
}

type ActiveLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *ActiveLocationResp) Success() bool {
	return resp.Code == 0
}

type BatchGetLocationReqBodyBuilder struct {
	locationIds     []string // 地点 ID 列表
	locationIdsFlag bool
}

func NewBatchGetLocationReqBodyBuilder() *BatchGetLocationReqBodyBuilder {
	builder := &BatchGetLocationReqBodyBuilder{}
	return builder
}

// 地点 ID 列表
//
//示例值：
func (builder *BatchGetLocationReqBodyBuilder) LocationIds(locationIds []string) *BatchGetLocationReqBodyBuilder {
	builder.locationIds = locationIds
	builder.locationIdsFlag = true
	return builder
}

func (builder *BatchGetLocationReqBodyBuilder) Build() *BatchGetLocationReqBody {
	req := &BatchGetLocationReqBody{}
	if builder.locationIdsFlag {
		req.LocationIds = builder.locationIds
	}
	return req
}

type BatchGetLocationPathReqBodyBuilder struct {
	locationIds     []string
	locationIdsFlag bool
}

func NewBatchGetLocationPathReqBodyBuilder() *BatchGetLocationPathReqBodyBuilder {
	builder := &BatchGetLocationPathReqBodyBuilder{}
	return builder
}

// 地点 ID 列表
//
// 示例值：
func (builder *BatchGetLocationPathReqBodyBuilder) LocationIds(locationIds []string) *BatchGetLocationPathReqBodyBuilder {
	builder.locationIds = locationIds
	builder.locationIdsFlag = true
	return builder
}

func (builder *BatchGetLocationPathReqBodyBuilder) Build() (*BatchGetLocationReqBody, error) {
	req := &BatchGetLocationReqBody{}
	if builder.locationIdsFlag {
		req.LocationIds = builder.locationIds
	}
	return req, nil
}

type BatchGetLocationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetLocationReqBody
}

func NewBatchGetLocationReqBuilder() *BatchGetLocationReqBuilder {
	builder := &BatchGetLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 通过地点 ID 批量获取地点信息
func (builder *BatchGetLocationReqBuilder) Body(body *BatchGetLocationReqBody) *BatchGetLocationReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetLocationReqBuilder) Build() *BatchGetLocationReq {
	req := &BatchGetLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchGetLocationReqBody struct {
	LocationIds []string `json:"location_ids,omitempty"` // 地点 ID 列表
}

type BatchGetLocationReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetLocationReqBody `body:""`
}

type BatchGetLocationRespData struct {
	Items []*Location `json:"items,omitempty"` // 查询的地点信息
}

type BatchGetLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetLocationRespData `json:"data"` // 业务数据
}

func (resp *BatchGetLocationResp) Success() bool {
	return resp.Code == 0
}

type PatchLocationReqBuilder struct {
	apiReq         *larkcore.ApiReq
	locationUpdate *LocationUpdate
}

func NewPatchLocationReqBuilder() *PatchLocationReqBuilder {
	builder := &PatchLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 地点 ID
//
// 示例值：1616161616
func (builder *PatchLocationReqBuilder) LocationId(locationId string) *PatchLocationReqBuilder {
	builder.apiReq.PathParams.Set("location_id", fmt.Sprint(locationId))
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchLocationReqBuilder) ClientToken(clientToken string) *PatchLocationReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新地点
func (builder *PatchLocationReqBuilder) LocationUpdate(locationUpdate *LocationUpdate) *PatchLocationReqBuilder {
	builder.locationUpdate = locationUpdate
	return builder
}

func (builder *PatchLocationReqBuilder) Build() *PatchLocationReq {
	req := &PatchLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.locationUpdate
	return req
}

type PatchLocationReq struct {
	apiReq         *larkcore.ApiReq
	LocationUpdate *LocationUpdate `body:""`
}

type PatchLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchLocationResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangeLocationReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangeLocationReqBuilder() *QueryRecentChangeLocationReqBuilder {
	builder := &QueryRecentChangeLocationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangeLocationReqBuilder) PageSize(pageSize int) *QueryRecentChangeLocationReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangeLocationReqBuilder) PageToken(pageToken string) *QueryRecentChangeLocationReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangeLocationReqBuilder) StartDate(startDate string) *QueryRecentChangeLocationReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangeLocationReqBuilder) EndDate(endDate string) *QueryRecentChangeLocationReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangeLocationReqBuilder) Build() *QueryRecentChangeLocationReq {
	req := &QueryRecentChangeLocationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangeLocationReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangeLocationRespData struct {
	LocationIds []string `json:"location_ids,omitempty"` // 地点 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedLocationIds []string `json:"deleted_location_ids,omitempty"` // 删除的地点 ID 列表
}

type QueryRecentChangeLocationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangeLocationRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangeLocationResp) Success() bool {
	return resp.Code == 0
}

type CreateLocationAddressReqBuilder struct {
	apiReq                *larkcore.ApiReq
	locationAddressCreate *LocationAddressCreate
}

func NewCreateLocationAddressReqBuilder() *CreateLocationAddressReqBuilder {
	builder := &CreateLocationAddressReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 地点 ID
//
// 示例值：1616161616
func (builder *CreateLocationAddressReqBuilder) LocationId(locationId string) *CreateLocationAddressReqBuilder {
	builder.apiReq.PathParams.Set("location_id", fmt.Sprint(locationId))
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreateLocationAddressReqBuilder) ClientToken(clientToken string) *CreateLocationAddressReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 是否需要自定义传入国际化拉丁语系地址。如果传入true能够自定义传入address_line_xx的值，否则address_line_xx跟随local_address_line_xx的值
//
// 示例值：true
func (builder *CreateLocationAddressReqBuilder) NeedCustomLatinAddress(needCustomLatinAddress bool) *CreateLocationAddressReqBuilder {
	builder.apiReq.QueryParams.Set("need_custom_latin_address", fmt.Sprint(needCustomLatinAddress))
	return builder
}

// 添加地点地址
func (builder *CreateLocationAddressReqBuilder) LocationAddressCreate(locationAddressCreate *LocationAddressCreate) *CreateLocationAddressReqBuilder {
	builder.locationAddressCreate = locationAddressCreate
	return builder
}

func (builder *CreateLocationAddressReqBuilder) Build() *CreateLocationAddressReq {
	req := &CreateLocationAddressReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.locationAddressCreate
	return req
}

type CreateLocationAddressReq struct {
	apiReq                *larkcore.ApiReq
	LocationAddressCreate *LocationAddressCreate `body:""`
}

type CreateLocationAddressRespData struct {
	AddressId *string `json:"address_id,omitempty"` // 地址 ID
}

type CreateLocationAddressResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateLocationAddressRespData `json:"data"` // 业务数据
}

func (resp *CreateLocationAddressResp) Success() bool {
	return resp.Code == 0
}

type DeleteLocationAddressReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteLocationAddressReqBuilder() *DeleteLocationAddressReqBuilder {
	builder := &DeleteLocationAddressReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 地点 ID
//
// 示例值：1616161616
func (builder *DeleteLocationAddressReqBuilder) LocationId(locationId string) *DeleteLocationAddressReqBuilder {
	builder.apiReq.PathParams.Set("location_id", fmt.Sprint(locationId))
	return builder
}

// 地址 ID
//
// 示例值：1515151515
func (builder *DeleteLocationAddressReqBuilder) AddressId(addressId string) *DeleteLocationAddressReqBuilder {
	builder.apiReq.PathParams.Set("address_id", fmt.Sprint(addressId))
	return builder
}

func (builder *DeleteLocationAddressReqBuilder) Build() *DeleteLocationAddressReq {
	req := &DeleteLocationAddressReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteLocationAddressReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteLocationAddressResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteLocationAddressResp) Success() bool {
	return resp.Code == 0
}

type PatchLocationAddressReqBuilder struct {
	apiReq                *larkcore.ApiReq
	locationAddressUpdate *LocationAddressUpdate
}

func NewPatchLocationAddressReqBuilder() *PatchLocationAddressReqBuilder {
	builder := &PatchLocationAddressReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 地点 ID
//
// 示例值：1616161616
func (builder *PatchLocationAddressReqBuilder) LocationId(locationId string) *PatchLocationAddressReqBuilder {
	builder.apiReq.PathParams.Set("location_id", fmt.Sprint(locationId))
	return builder
}

// 地址 ID
//
// 示例值：1515151515
func (builder *PatchLocationAddressReqBuilder) AddressId(addressId string) *PatchLocationAddressReqBuilder {
	builder.apiReq.PathParams.Set("address_id", fmt.Sprint(addressId))
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchLocationAddressReqBuilder) ClientToken(clientToken string) *PatchLocationAddressReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 是否需要自定义传入国际化拉丁语系地址。如果传入true能够自定义传入address_line_xx的值，否则address_line_xx跟随local_address_line_xx的值
//
// 示例值：true
func (builder *PatchLocationAddressReqBuilder) NeedCustomLatinAddress(needCustomLatinAddress bool) *PatchLocationAddressReqBuilder {
	builder.apiReq.QueryParams.Set("need_custom_latin_address", fmt.Sprint(needCustomLatinAddress))
	return builder
}

// 更新地点地址
func (builder *PatchLocationAddressReqBuilder) LocationAddressUpdate(locationAddressUpdate *LocationAddressUpdate) *PatchLocationAddressReqBuilder {
	builder.locationAddressUpdate = locationAddressUpdate
	return builder
}

func (builder *PatchLocationAddressReqBuilder) Build() *PatchLocationAddressReq {
	req := &PatchLocationAddressReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.locationAddressUpdate
	return req
}

type PatchLocationAddressReq struct {
	apiReq                *larkcore.ApiReq
	LocationAddressUpdate *LocationAddressUpdate `body:""`
}

type PatchLocationAddressResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchLocationAddressResp) Success() bool {
	return resp.Code == 0
}

type EditOffboardingReqBodyBuilder struct {
	offboardingId     string // 离职记录 ID
	offboardingIdFlag bool

	operatorId     string // 操作人雇佣 ID（employment_id），为空默认为系统操作。
	operatorIdFlag bool

	updateData     []*ObjectFieldData // 编辑字段数据信息
	updateDataFlag bool
}

func NewEditOffboardingReqBodyBuilder() *EditOffboardingReqBodyBuilder {
	builder := &EditOffboardingReqBodyBuilder{}
	return builder
}

// 离职记录 ID
//
//示例值：7095671727698478604
func (builder *EditOffboardingReqBodyBuilder) OffboardingId(offboardingId string) *EditOffboardingReqBodyBuilder {
	builder.offboardingId = offboardingId
	builder.offboardingIdFlag = true
	return builder
}

// 操作人雇佣 ID（employment_id），为空默认为系统操作。
//
//示例值：6982509313466189341
func (builder *EditOffboardingReqBodyBuilder) OperatorId(operatorId string) *EditOffboardingReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 编辑字段数据信息
//
//示例值：
func (builder *EditOffboardingReqBodyBuilder) UpdateData(updateData []*ObjectFieldData) *EditOffboardingReqBodyBuilder {
	builder.updateData = updateData
	builder.updateDataFlag = true
	return builder
}

func (builder *EditOffboardingReqBodyBuilder) Build() *EditOffboardingReqBody {
	req := &EditOffboardingReqBody{}
	if builder.offboardingIdFlag {
		req.OffboardingId = &builder.offboardingId
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	if builder.updateDataFlag {
		req.UpdateData = builder.updateData
	}
	return req
}

type EditOffboardingPathReqBodyBuilder struct {
	offboardingId     string
	offboardingIdFlag bool
	operatorId        string
	operatorIdFlag    bool
	updateData        []*ObjectFieldData
	updateDataFlag    bool
}

func NewEditOffboardingPathReqBodyBuilder() *EditOffboardingPathReqBodyBuilder {
	builder := &EditOffboardingPathReqBodyBuilder{}
	return builder
}

// 离职记录 ID
//
// 示例值：7095671727698478604
func (builder *EditOffboardingPathReqBodyBuilder) OffboardingId(offboardingId string) *EditOffboardingPathReqBodyBuilder {
	builder.offboardingId = offboardingId
	builder.offboardingIdFlag = true
	return builder
}

// 操作人雇佣 ID（employment_id），为空默认为系统操作。
//
// 示例值：6982509313466189341
func (builder *EditOffboardingPathReqBodyBuilder) OperatorId(operatorId string) *EditOffboardingPathReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 编辑字段数据信息
//
// 示例值：
func (builder *EditOffboardingPathReqBodyBuilder) UpdateData(updateData []*ObjectFieldData) *EditOffboardingPathReqBodyBuilder {
	builder.updateData = updateData
	builder.updateDataFlag = true
	return builder
}

func (builder *EditOffboardingPathReqBodyBuilder) Build() (*EditOffboardingReqBody, error) {
	req := &EditOffboardingReqBody{}
	if builder.offboardingIdFlag {
		req.OffboardingId = &builder.offboardingId
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	if builder.updateDataFlag {
		req.UpdateData = builder.updateData
	}
	return req, nil
}

type EditOffboardingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *EditOffboardingReqBody
}

func NewEditOffboardingReqBuilder() *EditOffboardingReqBuilder {
	builder := &EditOffboardingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *EditOffboardingReqBuilder) UserIdType(userIdType string) *EditOffboardingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 编辑离职信息
func (builder *EditOffboardingReqBuilder) Body(body *EditOffboardingReqBody) *EditOffboardingReqBuilder {
	builder.body = body
	return builder
}

func (builder *EditOffboardingReqBuilder) Build() *EditOffboardingReq {
	req := &EditOffboardingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type EditOffboardingReqBody struct {
	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 ID

	OperatorId *string `json:"operator_id,omitempty"` // 操作人雇佣 ID（employment_id），为空默认为系统操作。

	UpdateData []*ObjectFieldData `json:"update_data,omitempty"` // 编辑字段数据信息
}

type EditOffboardingReq struct {
	apiReq *larkcore.ApiReq
	Body   *EditOffboardingReqBody `body:""`
}

type EditOffboardingRespData struct {
	Data []*ObjectFieldData `json:"data,omitempty"` // 编辑字段数据信息
}

type EditOffboardingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *EditOffboardingRespData `json:"data"` // 业务数据
}

func (resp *EditOffboardingResp) Success() bool {
	return resp.Code == 0
}

type RevokeOffboardingReqBodyBuilder struct {
	offboardingId     string // 离职记录 ID
	offboardingIdFlag bool

	operatorId     string // 操作人雇佣 ID（employment_id），为空默认为系统操作。
	operatorIdFlag bool
}

func NewRevokeOffboardingReqBodyBuilder() *RevokeOffboardingReqBodyBuilder {
	builder := &RevokeOffboardingReqBodyBuilder{}
	return builder
}

// 离职记录 ID
//
//示例值：7095671727698478604
func (builder *RevokeOffboardingReqBodyBuilder) OffboardingId(offboardingId string) *RevokeOffboardingReqBodyBuilder {
	builder.offboardingId = offboardingId
	builder.offboardingIdFlag = true
	return builder
}

// 操作人雇佣 ID（employment_id），为空默认为系统操作。
//
//示例值：6982509313466189341
func (builder *RevokeOffboardingReqBodyBuilder) OperatorId(operatorId string) *RevokeOffboardingReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

func (builder *RevokeOffboardingReqBodyBuilder) Build() *RevokeOffboardingReqBody {
	req := &RevokeOffboardingReqBody{}
	if builder.offboardingIdFlag {
		req.OffboardingId = &builder.offboardingId
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	return req
}

type RevokeOffboardingPathReqBodyBuilder struct {
	offboardingId     string
	offboardingIdFlag bool
	operatorId        string
	operatorIdFlag    bool
}

func NewRevokeOffboardingPathReqBodyBuilder() *RevokeOffboardingPathReqBodyBuilder {
	builder := &RevokeOffboardingPathReqBodyBuilder{}
	return builder
}

// 离职记录 ID
//
// 示例值：7095671727698478604
func (builder *RevokeOffboardingPathReqBodyBuilder) OffboardingId(offboardingId string) *RevokeOffboardingPathReqBodyBuilder {
	builder.offboardingId = offboardingId
	builder.offboardingIdFlag = true
	return builder
}

// 操作人雇佣 ID（employment_id），为空默认为系统操作。
//
// 示例值：6982509313466189341
func (builder *RevokeOffboardingPathReqBodyBuilder) OperatorId(operatorId string) *RevokeOffboardingPathReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

func (builder *RevokeOffboardingPathReqBodyBuilder) Build() (*RevokeOffboardingReqBody, error) {
	req := &RevokeOffboardingReqBody{}
	if builder.offboardingIdFlag {
		req.OffboardingId = &builder.offboardingId
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	return req, nil
}

type RevokeOffboardingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RevokeOffboardingReqBody
}

func NewRevokeOffboardingReqBuilder() *RevokeOffboardingReqBuilder {
	builder := &RevokeOffboardingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *RevokeOffboardingReqBuilder) UserIdType(userIdType string) *RevokeOffboardingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 撤销离职信息
func (builder *RevokeOffboardingReqBuilder) Body(body *RevokeOffboardingReqBody) *RevokeOffboardingReqBuilder {
	builder.body = body
	return builder
}

func (builder *RevokeOffboardingReqBuilder) Build() *RevokeOffboardingReq {
	req := &RevokeOffboardingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type RevokeOffboardingReqBody struct {
	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 ID

	OperatorId *string `json:"operator_id,omitempty"` // 操作人雇佣 ID（employment_id），为空默认为系统操作。
}

type RevokeOffboardingReq struct {
	apiReq *larkcore.ApiReq
	Body   *RevokeOffboardingReqBody `body:""`
}

type RevokeOffboardingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *RevokeOffboardingResp) Success() bool {
	return resp.Code == 0
}

type SubmitV2OffboardingReqBodyBuilder struct {
	offboardingMode     int // 离职方式
	offboardingModeFlag bool

	employmentId     string // 雇员 id
	employmentIdFlag bool

	offboardingDate     string // 离职日期
	offboardingDateFlag bool

	offboardingReasonUniqueIdentifier     string // 离职原因
	offboardingReasonUniqueIdentifierFlag bool

	offboardingReasonExplanation     string // 离职原因说明
	offboardingReasonExplanationFlag bool

	initiatorId     string // 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程
	initiatorIdFlag bool

	addBlockList     bool // 是否加入离职屏蔽名单
	addBlockListFlag bool

	blockReason     string // 屏蔽原因
	blockReasonFlag bool

	blockReasonExplanation     string // 屏蔽原因说明
	blockReasonExplanationFlag bool

	customFields     []*ObjectFieldData // 自定义字段
	customFieldsFlag bool

	retainAccount     bool // 离职是否保留飞书账号
	retainAccountFlag bool

	isTransferWithWorkforce     bool // 编制随人员一起调整
	isTransferWithWorkforceFlag bool
}

func NewSubmitV2OffboardingReqBodyBuilder() *SubmitV2OffboardingReqBodyBuilder {
	builder := &SubmitV2OffboardingReqBodyBuilder{}
	return builder
}

// 离职方式
//
//示例值：1
func (builder *SubmitV2OffboardingReqBodyBuilder) OffboardingMode(offboardingMode int) *SubmitV2OffboardingReqBodyBuilder {
	builder.offboardingMode = offboardingMode
	builder.offboardingModeFlag = true
	return builder
}

// 雇员 id
//
//示例值：6982509313466189342
func (builder *SubmitV2OffboardingReqBodyBuilder) EmploymentId(employmentId string) *SubmitV2OffboardingReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 离职日期
//
//示例值：2022-05-18
func (builder *SubmitV2OffboardingReqBodyBuilder) OffboardingDate(offboardingDate string) *SubmitV2OffboardingReqBodyBuilder {
	builder.offboardingDate = offboardingDate
	builder.offboardingDateFlag = true
	return builder
}

// 离职原因
//
//示例值：reason_for_offboarding_option8
func (builder *SubmitV2OffboardingReqBodyBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier string) *SubmitV2OffboardingReqBodyBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

// 离职原因说明
//
//示例值：离职原因说明
func (builder *SubmitV2OffboardingReqBodyBuilder) OffboardingReasonExplanation(offboardingReasonExplanation string) *SubmitV2OffboardingReqBodyBuilder {
	builder.offboardingReasonExplanation = offboardingReasonExplanation
	builder.offboardingReasonExplanationFlag = true
	return builder
}

// 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程
//
//示例值：6982509313466189341
func (builder *SubmitV2OffboardingReqBodyBuilder) InitiatorId(initiatorId string) *SubmitV2OffboardingReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 是否加入离职屏蔽名单
//
//示例值：false
func (builder *SubmitV2OffboardingReqBodyBuilder) AddBlockList(addBlockList bool) *SubmitV2OffboardingReqBodyBuilder {
	builder.addBlockList = addBlockList
	builder.addBlockListFlag = true
	return builder
}

// 屏蔽原因
//
//示例值：红线
func (builder *SubmitV2OffboardingReqBodyBuilder) BlockReason(blockReason string) *SubmitV2OffboardingReqBodyBuilder {
	builder.blockReason = blockReason
	builder.blockReasonFlag = true
	return builder
}

// 屏蔽原因说明
//
//示例值：xx 年 xx 月 xx 日因 xx 原因红线
func (builder *SubmitV2OffboardingReqBodyBuilder) BlockReasonExplanation(blockReasonExplanation string) *SubmitV2OffboardingReqBodyBuilder {
	builder.blockReasonExplanation = blockReasonExplanation
	builder.blockReasonExplanationFlag = true
	return builder
}

// 自定义字段
//
//示例值：
func (builder *SubmitV2OffboardingReqBodyBuilder) CustomFields(customFields []*ObjectFieldData) *SubmitV2OffboardingReqBodyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 离职是否保留飞书账号
//
//示例值：false
func (builder *SubmitV2OffboardingReqBodyBuilder) RetainAccount(retainAccount bool) *SubmitV2OffboardingReqBodyBuilder {
	builder.retainAccount = retainAccount
	builder.retainAccountFlag = true
	return builder
}

// 编制随人员一起调整
//
//示例值：false
func (builder *SubmitV2OffboardingReqBodyBuilder) IsTransferWithWorkforce(isTransferWithWorkforce bool) *SubmitV2OffboardingReqBodyBuilder {
	builder.isTransferWithWorkforce = isTransferWithWorkforce
	builder.isTransferWithWorkforceFlag = true
	return builder
}

func (builder *SubmitV2OffboardingReqBodyBuilder) Build() *SubmitV2OffboardingReqBody {
	req := &SubmitV2OffboardingReqBody{}
	if builder.offboardingModeFlag {
		req.OffboardingMode = &builder.offboardingMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.offboardingDateFlag {
		req.OffboardingDate = &builder.offboardingDate
	}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = &builder.offboardingReasonUniqueIdentifier
	}
	if builder.offboardingReasonExplanationFlag {
		req.OffboardingReasonExplanation = &builder.offboardingReasonExplanation
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.addBlockListFlag {
		req.AddBlockList = &builder.addBlockList
	}
	if builder.blockReasonFlag {
		req.BlockReason = &builder.blockReason
	}
	if builder.blockReasonExplanationFlag {
		req.BlockReasonExplanation = &builder.blockReasonExplanation
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.retainAccountFlag {
		req.RetainAccount = &builder.retainAccount
	}
	if builder.isTransferWithWorkforceFlag {
		req.IsTransferWithWorkforce = &builder.isTransferWithWorkforce
	}
	return req
}

type SubmitV2OffboardingPathReqBodyBuilder struct {
	offboardingMode                       int
	offboardingModeFlag                   bool
	employmentId                          string
	employmentIdFlag                      bool
	offboardingDate                       string
	offboardingDateFlag                   bool
	offboardingReasonUniqueIdentifier     string
	offboardingReasonUniqueIdentifierFlag bool
	offboardingReasonExplanation          string
	offboardingReasonExplanationFlag      bool
	initiatorId                           string
	initiatorIdFlag                       bool
	addBlockList                          bool
	addBlockListFlag                      bool
	blockReason                           string
	blockReasonFlag                       bool
	blockReasonExplanation                string
	blockReasonExplanationFlag            bool
	customFields                          []*ObjectFieldData
	customFieldsFlag                      bool
	retainAccount                         bool
	retainAccountFlag                     bool
	isTransferWithWorkforce               bool
	isTransferWithWorkforceFlag           bool
}

func NewSubmitV2OffboardingPathReqBodyBuilder() *SubmitV2OffboardingPathReqBodyBuilder {
	builder := &SubmitV2OffboardingPathReqBodyBuilder{}
	return builder
}

// 离职方式
//
// 示例值：1
func (builder *SubmitV2OffboardingPathReqBodyBuilder) OffboardingMode(offboardingMode int) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.offboardingMode = offboardingMode
	builder.offboardingModeFlag = true
	return builder
}

// 雇员 id
//
// 示例值：6982509313466189342
func (builder *SubmitV2OffboardingPathReqBodyBuilder) EmploymentId(employmentId string) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 离职日期
//
// 示例值：2022-05-18
func (builder *SubmitV2OffboardingPathReqBodyBuilder) OffboardingDate(offboardingDate string) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.offboardingDate = offboardingDate
	builder.offboardingDateFlag = true
	return builder
}

// 离职原因
//
// 示例值：reason_for_offboarding_option8
func (builder *SubmitV2OffboardingPathReqBodyBuilder) OffboardingReasonUniqueIdentifier(offboardingReasonUniqueIdentifier string) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.offboardingReasonUniqueIdentifier = offboardingReasonUniqueIdentifier
	builder.offboardingReasonUniqueIdentifierFlag = true
	return builder
}

// 离职原因说明
//
// 示例值：离职原因说明
func (builder *SubmitV2OffboardingPathReqBodyBuilder) OffboardingReasonExplanation(offboardingReasonExplanation string) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.offboardingReasonExplanation = offboardingReasonExplanation
	builder.offboardingReasonExplanationFlag = true
	return builder
}

// 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程
//
// 示例值：6982509313466189341
func (builder *SubmitV2OffboardingPathReqBodyBuilder) InitiatorId(initiatorId string) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 是否加入离职屏蔽名单
//
// 示例值：false
func (builder *SubmitV2OffboardingPathReqBodyBuilder) AddBlockList(addBlockList bool) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.addBlockList = addBlockList
	builder.addBlockListFlag = true
	return builder
}

// 屏蔽原因
//
// 示例值：红线
func (builder *SubmitV2OffboardingPathReqBodyBuilder) BlockReason(blockReason string) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.blockReason = blockReason
	builder.blockReasonFlag = true
	return builder
}

// 屏蔽原因说明
//
// 示例值：xx 年 xx 月 xx 日因 xx 原因红线
func (builder *SubmitV2OffboardingPathReqBodyBuilder) BlockReasonExplanation(blockReasonExplanation string) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.blockReasonExplanation = blockReasonExplanation
	builder.blockReasonExplanationFlag = true
	return builder
}

// 自定义字段
//
// 示例值：
func (builder *SubmitV2OffboardingPathReqBodyBuilder) CustomFields(customFields []*ObjectFieldData) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

// 离职是否保留飞书账号
//
// 示例值：false
func (builder *SubmitV2OffboardingPathReqBodyBuilder) RetainAccount(retainAccount bool) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.retainAccount = retainAccount
	builder.retainAccountFlag = true
	return builder
}

// 编制随人员一起调整
//
// 示例值：false
func (builder *SubmitV2OffboardingPathReqBodyBuilder) IsTransferWithWorkforce(isTransferWithWorkforce bool) *SubmitV2OffboardingPathReqBodyBuilder {
	builder.isTransferWithWorkforce = isTransferWithWorkforce
	builder.isTransferWithWorkforceFlag = true
	return builder
}

func (builder *SubmitV2OffboardingPathReqBodyBuilder) Build() (*SubmitV2OffboardingReqBody, error) {
	req := &SubmitV2OffboardingReqBody{}
	if builder.offboardingModeFlag {
		req.OffboardingMode = &builder.offboardingMode
	}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.offboardingDateFlag {
		req.OffboardingDate = &builder.offboardingDate
	}
	if builder.offboardingReasonUniqueIdentifierFlag {
		req.OffboardingReasonUniqueIdentifier = &builder.offboardingReasonUniqueIdentifier
	}
	if builder.offboardingReasonExplanationFlag {
		req.OffboardingReasonExplanation = &builder.offboardingReasonExplanation
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.addBlockListFlag {
		req.AddBlockList = &builder.addBlockList
	}
	if builder.blockReasonFlag {
		req.BlockReason = &builder.blockReason
	}
	if builder.blockReasonExplanationFlag {
		req.BlockReasonExplanation = &builder.blockReasonExplanation
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	if builder.retainAccountFlag {
		req.RetainAccount = &builder.retainAccount
	}
	if builder.isTransferWithWorkforceFlag {
		req.IsTransferWithWorkforce = &builder.isTransferWithWorkforce
	}
	return req, nil
}

type SubmitV2OffboardingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SubmitV2OffboardingReqBody
}

func NewSubmitV2OffboardingReqBuilder() *SubmitV2OffboardingReqBuilder {
	builder := &SubmitV2OffboardingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *SubmitV2OffboardingReqBuilder) UserIdType(userIdType string) *SubmitV2OffboardingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *SubmitV2OffboardingReqBuilder) Body(body *SubmitV2OffboardingReqBody) *SubmitV2OffboardingReqBuilder {
	builder.body = body
	return builder
}

func (builder *SubmitV2OffboardingReqBuilder) Build() *SubmitV2OffboardingReq {
	req := &SubmitV2OffboardingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SubmitV2OffboardingReqBody struct {
	OffboardingMode *int `json:"offboarding_mode,omitempty"` // 离职方式

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	OffboardingDate *string `json:"offboarding_date,omitempty"` // 离职日期

	OffboardingReasonUniqueIdentifier *string `json:"offboarding_reason_unique_identifier,omitempty"` // 离职原因

	OffboardingReasonExplanation *string `json:"offboarding_reason_explanation,omitempty"` // 离职原因说明

	InitiatorId *string `json:"initiator_id,omitempty"` // 操作发起人 ID（employment_id），为空默认为系统发起。注意：只有操作发起人可以撤销流程

	AddBlockList *bool `json:"add_block_list,omitempty"` // 是否加入离职屏蔽名单

	BlockReason *string `json:"block_reason,omitempty"` // 屏蔽原因

	BlockReasonExplanation *string `json:"block_reason_explanation,omitempty"` // 屏蔽原因说明

	CustomFields []*ObjectFieldData `json:"custom_fields,omitempty"` // 自定义字段

	RetainAccount *bool `json:"retain_account,omitempty"` // 离职是否保留飞书账号

	IsTransferWithWorkforce *bool `json:"is_transfer_with_workforce,omitempty"` // 编制随人员一起调整
}

type SubmitV2OffboardingReq struct {
	apiReq *larkcore.ApiReq
	Body   *SubmitV2OffboardingReqBody `body:""`
}

type SubmitV2OffboardingRespData struct {
	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 id

	EmploymentId *string `json:"employment_id,omitempty"` // 雇员 id

	OffboardingReasonUniqueIdentifier *string `json:"offboarding_reason_unique_identifier,omitempty"` // 离职原因

	OffboardingDate *string `json:"offboarding_date,omitempty"` // 离职日期

	OffboardingReasonExplanation *string `json:"offboarding_reason_explanation,omitempty"` // 离职原因说明

	AddBlockList *bool `json:"add_block_list,omitempty"` // 是否加入离职屏蔽名单

	BlockReason *string `json:"block_reason,omitempty"` // 屏蔽原因

	BlockReasonExplanation *string `json:"block_reason_explanation,omitempty"` // 屏蔽原因说明

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	RetainAccount *bool `json:"retain_account,omitempty"` // 离职是否保留飞书账号

	IsTransferWithWorkforce *bool `json:"is_transfer_with_workforce,omitempty"` // 编制随人员一起调整
}

type SubmitV2OffboardingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SubmitV2OffboardingRespData `json:"data"` // 业务数据
}

func (resp *SubmitV2OffboardingResp) Success() bool {
	return resp.Code == 0
}

type ActivePathwayReqBodyBuilder struct {
	pathwayId     string // 通道ID
	pathwayIdFlag bool

	active     bool // 启用停用状态
	activeFlag bool
}

func NewActivePathwayReqBodyBuilder() *ActivePathwayReqBodyBuilder {
	builder := &ActivePathwayReqBodyBuilder{}
	return builder
}

// 通道ID
//
//示例值：6862995757234914823
func (builder *ActivePathwayReqBodyBuilder) PathwayId(pathwayId string) *ActivePathwayReqBodyBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 启用停用状态
//
//示例值：true
func (builder *ActivePathwayReqBodyBuilder) Active(active bool) *ActivePathwayReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *ActivePathwayReqBodyBuilder) Build() *ActivePathwayReqBody {
	req := &ActivePathwayReqBody{}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	return req
}

type ActivePathwayPathReqBodyBuilder struct {
	pathwayId     string
	pathwayIdFlag bool
	active        bool
	activeFlag    bool
}

func NewActivePathwayPathReqBodyBuilder() *ActivePathwayPathReqBodyBuilder {
	builder := &ActivePathwayPathReqBodyBuilder{}
	return builder
}

// 通道ID
//
// 示例值：6862995757234914823
func (builder *ActivePathwayPathReqBodyBuilder) PathwayId(pathwayId string) *ActivePathwayPathReqBodyBuilder {
	builder.pathwayId = pathwayId
	builder.pathwayIdFlag = true
	return builder
}

// 启用停用状态
//
// 示例值：true
func (builder *ActivePathwayPathReqBodyBuilder) Active(active bool) *ActivePathwayPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

func (builder *ActivePathwayPathReqBodyBuilder) Build() (*ActivePathwayReqBody, error) {
	req := &ActivePathwayReqBody{}
	if builder.pathwayIdFlag {
		req.PathwayId = &builder.pathwayId
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	return req, nil
}

type ActivePathwayReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ActivePathwayReqBody
}

func NewActivePathwayReqBuilder() *ActivePathwayReqBuilder {
	builder := &ActivePathwayReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 启/停用通道
func (builder *ActivePathwayReqBuilder) Body(body *ActivePathwayReqBody) *ActivePathwayReqBuilder {
	builder.body = body
	return builder
}

func (builder *ActivePathwayReqBuilder) Build() *ActivePathwayReq {
	req := &ActivePathwayReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type ActivePathwayReqBody struct {
	PathwayId *string `json:"pathway_id,omitempty"` // 通道ID

	Active *bool `json:"active,omitempty"` // 启用停用状态
}

type ActivePathwayReq struct {
	apiReq *larkcore.ApiReq
	Body   *ActivePathwayReqBody `body:""`
}

type ActivePathwayResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *ActivePathwayResp) Success() bool {
	return resp.Code == 0
}

type BatchGetPathwayReqBodyBuilder struct {
	pathwayIds     []string // 通道 ID 列表
	pathwayIdsFlag bool
}

func NewBatchGetPathwayReqBodyBuilder() *BatchGetPathwayReqBodyBuilder {
	builder := &BatchGetPathwayReqBodyBuilder{}
	return builder
}

// 通道 ID 列表
//
//示例值：
func (builder *BatchGetPathwayReqBodyBuilder) PathwayIds(pathwayIds []string) *BatchGetPathwayReqBodyBuilder {
	builder.pathwayIds = pathwayIds
	builder.pathwayIdsFlag = true
	return builder
}

func (builder *BatchGetPathwayReqBodyBuilder) Build() *BatchGetPathwayReqBody {
	req := &BatchGetPathwayReqBody{}
	if builder.pathwayIdsFlag {
		req.PathwayIds = builder.pathwayIds
	}
	return req
}

type BatchGetPathwayPathReqBodyBuilder struct {
	pathwayIds     []string
	pathwayIdsFlag bool
}

func NewBatchGetPathwayPathReqBodyBuilder() *BatchGetPathwayPathReqBodyBuilder {
	builder := &BatchGetPathwayPathReqBodyBuilder{}
	return builder
}

// 通道 ID 列表
//
// 示例值：
func (builder *BatchGetPathwayPathReqBodyBuilder) PathwayIds(pathwayIds []string) *BatchGetPathwayPathReqBodyBuilder {
	builder.pathwayIds = pathwayIds
	builder.pathwayIdsFlag = true
	return builder
}

func (builder *BatchGetPathwayPathReqBodyBuilder) Build() (*BatchGetPathwayReqBody, error) {
	req := &BatchGetPathwayReqBody{}
	if builder.pathwayIdsFlag {
		req.PathwayIds = builder.pathwayIds
	}
	return req, nil
}

type BatchGetPathwayReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchGetPathwayReqBody
}

func NewBatchGetPathwayReqBuilder() *BatchGetPathwayReqBuilder {
	builder := &BatchGetPathwayReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 通过通道 ID 批量获取通道信息
func (builder *BatchGetPathwayReqBuilder) Body(body *BatchGetPathwayReqBody) *BatchGetPathwayReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchGetPathwayReqBuilder) Build() *BatchGetPathwayReq {
	req := &BatchGetPathwayReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchGetPathwayReqBody struct {
	PathwayIds []string `json:"pathway_ids,omitempty"` // 通道 ID 列表
}

type BatchGetPathwayReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchGetPathwayReqBody `body:""`
}

type BatchGetPathwayRespData struct {
	Items []*Pathway `json:"items,omitempty"` // 查询的通道信息
}

type BatchGetPathwayResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchGetPathwayRespData `json:"data"` // 业务数据
}

func (resp *BatchGetPathwayResp) Success() bool {
	return resp.Code == 0
}

type CreatePathwayReqBuilder struct {
	apiReq        *larkcore.ApiReq
	pathwayCreate *PathwayCreate
}

func NewCreatePathwayReqBuilder() *CreatePathwayReqBuilder {
	builder := &CreatePathwayReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreatePathwayReqBuilder) ClientToken(clientToken string) *CreatePathwayReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建通道
func (builder *CreatePathwayReqBuilder) PathwayCreate(pathwayCreate *PathwayCreate) *CreatePathwayReqBuilder {
	builder.pathwayCreate = pathwayCreate
	return builder
}

func (builder *CreatePathwayReqBuilder) Build() *CreatePathwayReq {
	req := &CreatePathwayReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.pathwayCreate
	return req
}

type CreatePathwayReq struct {
	apiReq        *larkcore.ApiReq
	PathwayCreate *PathwayCreate `body:""`
}

type CreatePathwayRespData struct {
	PathwayId *string `json:"pathway_id,omitempty"` // 通道ID
}

type CreatePathwayResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreatePathwayRespData `json:"data"` // 业务数据
}

func (resp *CreatePathwayResp) Success() bool {
	return resp.Code == 0
}

type DeletePathwayReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeletePathwayReqBuilder() *DeletePathwayReqBuilder {
	builder := &DeletePathwayReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 通道ID
//
// 示例值：6862995757234914824
func (builder *DeletePathwayReqBuilder) PathwayId(pathwayId string) *DeletePathwayReqBuilder {
	builder.apiReq.PathParams.Set("pathway_id", fmt.Sprint(pathwayId))
	return builder
}

func (builder *DeletePathwayReqBuilder) Build() *DeletePathwayReq {
	req := &DeletePathwayReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeletePathwayReq struct {
	apiReq *larkcore.ApiReq
}

type DeletePathwayResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeletePathwayResp) Success() bool {
	return resp.Code == 0
}

type PatchPathwayReqBuilder struct {
	apiReq        *larkcore.ApiReq
	pathwayUpdate *PathwayUpdate
}

func NewPatchPathwayReqBuilder() *PatchPathwayReqBuilder {
	builder := &PatchPathwayReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 通道ID
//
// 示例值：6862995757234914824
func (builder *PatchPathwayReqBuilder) PathwayId(pathwayId string) *PatchPathwayReqBuilder {
	builder.apiReq.PathParams.Set("pathway_id", fmt.Sprint(pathwayId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *PatchPathwayReqBuilder) ClientToken(clientToken string) *PatchPathwayReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 更新通道信息
func (builder *PatchPathwayReqBuilder) PathwayUpdate(pathwayUpdate *PathwayUpdate) *PatchPathwayReqBuilder {
	builder.pathwayUpdate = pathwayUpdate
	return builder
}

func (builder *PatchPathwayReqBuilder) Build() *PatchPathwayReq {
	req := &PatchPathwayReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.pathwayUpdate
	return req
}

type PatchPathwayReq struct {
	apiReq        *larkcore.ApiReq
	PathwayUpdate *PathwayUpdate `body:""`
}

type PatchPathwayResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchPathwayResp) Success() bool {
	return resp.Code == 0
}

type CreatePersonReqBuilder struct {
	apiReq     *larkcore.ApiReq
	personInfo *PersonInfo
}

func NewCreatePersonReqBuilder() *CreatePersonReqBuilder {
	builder := &CreatePersonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *CreatePersonReqBuilder) ClientToken(clientToken string) *CreatePersonReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 创建个人信息数据
func (builder *CreatePersonReqBuilder) PersonInfo(personInfo *PersonInfo) *CreatePersonReqBuilder {
	builder.personInfo = personInfo
	return builder
}

func (builder *CreatePersonReqBuilder) Build() *CreatePersonReq {
	req := &CreatePersonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.personInfo
	return req
}

type CreatePersonReq struct {
	apiReq     *larkcore.ApiReq
	PersonInfo *PersonInfo `body:""`
}

type CreatePersonRespData struct {
	Person *PersonInfo `json:"person,omitempty"` //
}

type CreatePersonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreatePersonRespData `json:"data"` // 业务数据
}

func (resp *CreatePersonResp) Success() bool {
	return resp.Code == 0
}

type PatchPersonReqBuilder struct {
	apiReq     *larkcore.ApiReq
	personInfo *PersonInfo
}

func NewPatchPersonReqBuilder() *PatchPersonReqBuilder {
	builder := &PatchPersonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// person的ID
//
// 示例值：12454646
func (builder *PatchPersonReqBuilder) PersonId(personId string) *PatchPersonReqBuilder {
	builder.apiReq.PathParams.Set("person_id", fmt.Sprint(personId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：12454646
func (builder *PatchPersonReqBuilder) ClientToken(clientToken string) *PatchPersonReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 根据no_need_query判断更新后是否做查询请求并返回个人信息
//
// 示例值：false
func (builder *PatchPersonReqBuilder) NoNeedQuery(noNeedQuery bool) *PatchPersonReqBuilder {
	builder.apiReq.QueryParams.Set("no_need_query", fmt.Sprint(noNeedQuery))
	return builder
}

//
func (builder *PatchPersonReqBuilder) PersonInfo(personInfo *PersonInfo) *PatchPersonReqBuilder {
	builder.personInfo = personInfo
	return builder
}

func (builder *PatchPersonReqBuilder) Build() *PatchPersonReq {
	req := &PatchPersonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.personInfo
	return req
}

type PatchPersonReq struct {
	apiReq     *larkcore.ApiReq
	PersonInfo *PersonInfo `body:""`
}

type PatchPersonRespData struct {
	Person *PersonInfo `json:"person,omitempty"` //
}

type PatchPersonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchPersonRespData `json:"data"` // 业务数据
}

func (resp *PatchPersonResp) Success() bool {
	return resp.Code == 0
}

type ActivePositionReqBodyBuilder struct {
	positionId     string // 岗位ID
	positionIdFlag bool

	active     bool // 启用停用状态
	activeFlag bool

	effectiveTime     string // 生效时间
	effectiveTimeFlag bool
}

func NewActivePositionReqBodyBuilder() *ActivePositionReqBodyBuilder {
	builder := &ActivePositionReqBodyBuilder{}
	return builder
}

// 岗位ID
//
//示例值：6862995757234914823
func (builder *ActivePositionReqBodyBuilder) PositionId(positionId string) *ActivePositionReqBodyBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 启用停用状态
//
//示例值：true
func (builder *ActivePositionReqBodyBuilder) Active(active bool) *ActivePositionReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 生效时间
//
//示例值：2020-01-01
func (builder *ActivePositionReqBodyBuilder) EffectiveTime(effectiveTime string) *ActivePositionReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

func (builder *ActivePositionReqBodyBuilder) Build() *ActivePositionReqBody {
	req := &ActivePositionReqBody{}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	return req
}

type ActivePositionPathReqBodyBuilder struct {
	positionId        string
	positionIdFlag    bool
	active            bool
	activeFlag        bool
	effectiveTime     string
	effectiveTimeFlag bool
}

func NewActivePositionPathReqBodyBuilder() *ActivePositionPathReqBodyBuilder {
	builder := &ActivePositionPathReqBodyBuilder{}
	return builder
}

// 岗位ID
//
// 示例值：6862995757234914823
func (builder *ActivePositionPathReqBodyBuilder) PositionId(positionId string) *ActivePositionPathReqBodyBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

// 启用停用状态
//
// 示例值：true
func (builder *ActivePositionPathReqBodyBuilder) Active(active bool) *ActivePositionPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 生效时间
//
// 示例值：2020-01-01
func (builder *ActivePositionPathReqBodyBuilder) EffectiveTime(effectiveTime string) *ActivePositionPathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

func (builder *ActivePositionPathReqBodyBuilder) Build() (*ActivePositionReqBody, error) {
	req := &ActivePositionReqBody{}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	return req, nil
}

type ActivePositionReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ActivePositionReqBody
}

func NewActivePositionReqBuilder() *ActivePositionReqBuilder {
	builder := &ActivePositionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 启/停用岗位
func (builder *ActivePositionReqBuilder) Body(body *ActivePositionReqBody) *ActivePositionReqBuilder {
	builder.body = body
	return builder
}

func (builder *ActivePositionReqBuilder) Build() *ActivePositionReq {
	req := &ActivePositionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type ActivePositionReqBody struct {
	PositionId *string `json:"position_id,omitempty"` // 岗位ID

	Active *bool `json:"active,omitempty"` // 启用停用状态

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间
}

type ActivePositionReq struct {
	apiReq *larkcore.ApiReq
	Body   *ActivePositionReqBody `body:""`
}

type ActivePositionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *ActivePositionResp) Success() bool {
	return resp.Code == 0
}

type CreatePositionReqBuilder struct {
	apiReq         *larkcore.ApiReq
	positionCreate *PositionCreate
}

func NewCreatePositionReqBuilder() *CreatePositionReqBuilder {
	builder := &CreatePositionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *CreatePositionReqBuilder) ClientToken(clientToken string) *CreatePositionReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *CreatePositionReqBuilder) DepartmentIdType(departmentIdType string) *CreatePositionReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *CreatePositionReqBuilder) PositionCreate(positionCreate *PositionCreate) *CreatePositionReqBuilder {
	builder.positionCreate = positionCreate
	return builder
}

func (builder *CreatePositionReqBuilder) Build() *CreatePositionReq {
	req := &CreatePositionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.positionCreate
	return req
}

type CreatePositionReq struct {
	apiReq         *larkcore.ApiReq
	PositionCreate *PositionCreate `body:""`
}

type CreatePositionRespData struct {
	PositionId *string `json:"position_id,omitempty"` // 岗位ID
}

type CreatePositionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreatePositionRespData `json:"data"` // 业务数据
}

func (resp *CreatePositionResp) Success() bool {
	return resp.Code == 0
}

type DelPositionPositionReqBodyBuilder struct {
	positionId     string // 岗位ID
	positionIdFlag bool
}

func NewDelPositionPositionReqBodyBuilder() *DelPositionPositionReqBodyBuilder {
	builder := &DelPositionPositionReqBodyBuilder{}
	return builder
}

// 岗位ID
//
//示例值：6862995757234914824
func (builder *DelPositionPositionReqBodyBuilder) PositionId(positionId string) *DelPositionPositionReqBodyBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

func (builder *DelPositionPositionReqBodyBuilder) Build() *DelPositionPositionReqBody {
	req := &DelPositionPositionReqBody{}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId
	}
	return req
}

type DelPositionPositionPathReqBodyBuilder struct {
	positionId     string
	positionIdFlag bool
}

func NewDelPositionPositionPathReqBodyBuilder() *DelPositionPositionPathReqBodyBuilder {
	builder := &DelPositionPositionPathReqBodyBuilder{}
	return builder
}

// 岗位ID
//
// 示例值：6862995757234914824
func (builder *DelPositionPositionPathReqBodyBuilder) PositionId(positionId string) *DelPositionPositionPathReqBodyBuilder {
	builder.positionId = positionId
	builder.positionIdFlag = true
	return builder
}

func (builder *DelPositionPositionPathReqBodyBuilder) Build() (*DelPositionPositionReqBody, error) {
	req := &DelPositionPositionReqBody{}
	if builder.positionIdFlag {
		req.PositionId = &builder.positionId
	}
	return req, nil
}

type DelPositionPositionReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *DelPositionPositionReqBody
}

func NewDelPositionPositionReqBuilder() *DelPositionPositionReqBuilder {
	builder := &DelPositionPositionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 删除岗位
func (builder *DelPositionPositionReqBuilder) Body(body *DelPositionPositionReqBody) *DelPositionPositionReqBuilder {
	builder.body = body
	return builder
}

func (builder *DelPositionPositionReqBuilder) Build() *DelPositionPositionReq {
	req := &DelPositionPositionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type DelPositionPositionReqBody struct {
	PositionId *string `json:"position_id,omitempty"` // 岗位ID
}

type DelPositionPositionReq struct {
	apiReq *larkcore.ApiReq
	Body   *DelPositionPositionReqBody `body:""`
}

type DelPositionPositionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DelPositionPositionResp) Success() bool {
	return resp.Code == 0
}

type PatchPositionReqBuilder struct {
	apiReq         *larkcore.ApiReq
	positionUpdate *PositionUpdate
}

func NewPatchPositionReqBuilder() *PatchPositionReqBuilder {
	builder := &PatchPositionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 岗位ID
//
// 示例值：6862995757234914824
func (builder *PatchPositionReqBuilder) PositionId(positionId string) *PatchPositionReqBuilder {
	builder.apiReq.PathParams.Set("position_id", fmt.Sprint(positionId))
	return builder
}

// 根据client_token是否一致来判断是否为同一请求
//
// 示例值：1245464678
func (builder *PatchPositionReqBuilder) ClientToken(clientToken string) *PatchPositionReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *PatchPositionReqBuilder) DepartmentIdType(departmentIdType string) *PatchPositionReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 更新岗位
func (builder *PatchPositionReqBuilder) PositionUpdate(positionUpdate *PositionUpdate) *PatchPositionReqBuilder {
	builder.positionUpdate = positionUpdate
	return builder
}

func (builder *PatchPositionReqBuilder) Build() *PatchPositionReq {
	req := &PatchPositionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.positionUpdate
	return req
}

type PatchPositionReq struct {
	apiReq         *larkcore.ApiReq
	PositionUpdate *PositionUpdate `body:""`
}

type PatchPositionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchPositionResp) Success() bool {
	return resp.Code == 0
}

type QueryPositionReqBodyBuilder struct {
	departmentIds     []string // 部门 ID 列表
	departmentIdsFlag bool

	effectiveTime     string // 生效日期
	effectiveTimeFlag bool

	active     bool // 启停用状态
	activeFlag bool

	fields     []string // 返回数据的字段列表
	fieldsFlag bool

	positionIds     []string // 岗位 ID 列表
	positionIdsFlag bool

	positionCodes     []string // 岗位 Code 列表
	positionCodesFlag bool
}

func NewQueryPositionReqBodyBuilder() *QueryPositionReqBodyBuilder {
	builder := &QueryPositionReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
//示例值：
func (builder *QueryPositionReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryPositionReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 生效日期
//
//示例值：2020-01-01
func (builder *QueryPositionReqBodyBuilder) EffectiveTime(effectiveTime string) *QueryPositionReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启停用状态
//
//示例值：true
func (builder *QueryPositionReqBodyBuilder) Active(active bool) *QueryPositionReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 返回数据的字段列表
//
//示例值：
func (builder *QueryPositionReqBodyBuilder) Fields(fields []string) *QueryPositionReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 岗位 ID 列表
//
//示例值：
func (builder *QueryPositionReqBodyBuilder) PositionIds(positionIds []string) *QueryPositionReqBodyBuilder {
	builder.positionIds = positionIds
	builder.positionIdsFlag = true
	return builder
}

// 岗位 Code 列表
//
//示例值：
func (builder *QueryPositionReqBodyBuilder) PositionCodes(positionCodes []string) *QueryPositionReqBodyBuilder {
	builder.positionCodes = positionCodes
	builder.positionCodesFlag = true
	return builder
}

func (builder *QueryPositionReqBodyBuilder) Build() *QueryPositionReqBody {
	req := &QueryPositionReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.positionIdsFlag {
		req.PositionIds = builder.positionIds
	}
	if builder.positionCodesFlag {
		req.PositionCodes = builder.positionCodes
	}
	return req
}

type QueryPositionPathReqBodyBuilder struct {
	departmentIds     []string
	departmentIdsFlag bool
	effectiveTime     string
	effectiveTimeFlag bool
	active            bool
	activeFlag        bool
	fields            []string
	fieldsFlag        bool
	positionIds       []string
	positionIdsFlag   bool
	positionCodes     []string
	positionCodesFlag bool
}

func NewQueryPositionPathReqBodyBuilder() *QueryPositionPathReqBodyBuilder {
	builder := &QueryPositionPathReqBodyBuilder{}
	return builder
}

// 部门 ID 列表
//
// 示例值：
func (builder *QueryPositionPathReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryPositionPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 生效日期
//
// 示例值：2020-01-01
func (builder *QueryPositionPathReqBodyBuilder) EffectiveTime(effectiveTime string) *QueryPositionPathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 启停用状态
//
// 示例值：true
func (builder *QueryPositionPathReqBodyBuilder) Active(active bool) *QueryPositionPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 返回数据的字段列表
//
// 示例值：
func (builder *QueryPositionPathReqBodyBuilder) Fields(fields []string) *QueryPositionPathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

// 岗位 ID 列表
//
// 示例值：
func (builder *QueryPositionPathReqBodyBuilder) PositionIds(positionIds []string) *QueryPositionPathReqBodyBuilder {
	builder.positionIds = positionIds
	builder.positionIdsFlag = true
	return builder
}

// 岗位 Code 列表
//
// 示例值：
func (builder *QueryPositionPathReqBodyBuilder) PositionCodes(positionCodes []string) *QueryPositionPathReqBodyBuilder {
	builder.positionCodes = positionCodes
	builder.positionCodesFlag = true
	return builder
}

func (builder *QueryPositionPathReqBodyBuilder) Build() (*QueryPositionReqBody, error) {
	req := &QueryPositionReqBody{}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	if builder.positionIdsFlag {
		req.PositionIds = builder.positionIds
	}
	if builder.positionCodesFlag {
		req.PositionCodes = builder.positionCodes
	}
	return req, nil
}

type QueryPositionReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryPositionReqBody
}

func NewQueryPositionReqBuilder() *QueryPositionReqBuilder {
	builder := &QueryPositionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *QueryPositionReqBuilder) DepartmentIdType(departmentIdType string) *QueryPositionReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *QueryPositionReqBuilder) UserIdType(userIdType string) *QueryPositionReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *QueryPositionReqBuilder) PageSize(pageSize int) *QueryPositionReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryPositionReqBuilder) PageToken(pageToken string) *QueryPositionReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询岗位信息
func (builder *QueryPositionReqBuilder) Body(body *QueryPositionReqBody) *QueryPositionReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryPositionReqBuilder) Build() *QueryPositionReq {
	req := &QueryPositionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryPositionReqBody struct {
	DepartmentIds []string `json:"department_ids,omitempty"` // 部门 ID 列表

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效日期

	Active *bool `json:"active,omitempty"` // 启停用状态

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表

	PositionIds []string `json:"position_ids,omitempty"` // 岗位 ID 列表

	PositionCodes []string `json:"position_codes,omitempty"` // 岗位 Code 列表
}

type QueryPositionReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryPositionReqBody `body:""`
}

type QueryPositionRespData struct {
	Items []*Position `json:"items,omitempty"` // 岗位信息列表

	PageToken *string `json:"page_token,omitempty"` // 下一页token

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type QueryPositionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryPositionRespData `json:"data"` // 业务数据
}

func (resp *QueryPositionResp) Success() bool {
	return resp.Code == 0
}

type QueryRecentChangePositionReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRecentChangePositionReqBuilder() *QueryRecentChangePositionReqBuilder {
	builder := &QueryRecentChangePositionReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小，最大 2000
//
// 示例值：100
func (builder *QueryRecentChangePositionReqBuilder) PageSize(pageSize int) *QueryRecentChangePositionReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryRecentChangePositionReqBuilder) PageToken(pageToken string) *QueryRecentChangePositionReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询的开始时间，支持"yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-01-01 00:00:00
func (builder *QueryRecentChangePositionReqBuilder) StartDate(startDate string) *QueryRecentChangePositionReqBuilder {
	builder.apiReq.QueryParams.Set("start_date", fmt.Sprint(startDate))
	return builder
}

// 查询的结束时间，格式 "yyyy-MM-dd HH:MM:SS"
//
// 示例值：2024-04-01 00:00:00
func (builder *QueryRecentChangePositionReqBuilder) EndDate(endDate string) *QueryRecentChangePositionReqBuilder {
	builder.apiReq.QueryParams.Set("end_date", fmt.Sprint(endDate))
	return builder
}

func (builder *QueryRecentChangePositionReqBuilder) Build() *QueryRecentChangePositionReq {
	req := &QueryRecentChangePositionReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRecentChangePositionReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRecentChangePositionRespData struct {
	PositionIds []string `json:"position_ids,omitempty"` // 岗位 ID 列表

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页

	DeletedPositionIds []string `json:"deleted_position_ids,omitempty"` // 删除的岗位 ID 列表
}

type QueryRecentChangePositionResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecentChangePositionRespData `json:"data"` // 业务数据
}

func (resp *QueryRecentChangePositionResp) Success() bool {
	return resp.Code == 0
}

type CompletePreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewCompletePreHireReqBuilder() *CompletePreHireReqBuilder {
	builder := &CompletePreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 待入职ID
//
// 示例值：7345005664477775407
func (builder *CompletePreHireReqBuilder) PreHireId(preHireId string) *CompletePreHireReqBuilder {
	builder.apiReq.PathParams.Set("pre_hire_id", fmt.Sprint(preHireId))
	return builder
}

func (builder *CompletePreHireReqBuilder) Build() *CompletePreHireReq {
	req := &CompletePreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type CompletePreHireReq struct {
	apiReq *larkcore.ApiReq
}

type CompletePreHireRespData struct {
	Success *bool `json:"success,omitempty"` // 是否成功完成入职
}

type CompletePreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CompletePreHireRespData `json:"data"` // 业务数据
}

func (resp *CompletePreHireResp) Success() bool {
	return resp.Code == 0
}

type CreatePreHireReqBuilder struct {
	apiReq        *larkcore.ApiReq
	prehireCreate *PrehireCreate
}

func NewCreatePreHireReqBuilder() *CreatePreHireReqBuilder {
	builder := &CreatePreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 创建待入职人员
func (builder *CreatePreHireReqBuilder) PrehireCreate(prehireCreate *PrehireCreate) *CreatePreHireReqBuilder {
	builder.prehireCreate = prehireCreate
	return builder
}

func (builder *CreatePreHireReqBuilder) Build() *CreatePreHireReq {
	req := &CreatePreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.prehireCreate
	return req
}

type CreatePreHireReq struct {
	apiReq        *larkcore.ApiReq
	PrehireCreate *PrehireCreate `body:""`
}

type CreatePreHireRespData struct {
	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职 ID
}

type CreatePreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreatePreHireRespData `json:"data"` // 业务数据
}

func (resp *CreatePreHireResp) Success() bool {
	return resp.Code == 0
}

type DeletePreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeletePreHireReqBuilder() *DeletePreHireReqBuilder {
	builder := &DeletePreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 待入职ID
//
// 示例值：7345005664477775407
func (builder *DeletePreHireReqBuilder) PreHireId(preHireId string) *DeletePreHireReqBuilder {
	builder.apiReq.PathParams.Set("pre_hire_id", fmt.Sprint(preHireId))
	return builder
}

func (builder *DeletePreHireReqBuilder) Build() *DeletePreHireReq {
	req := &DeletePreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeletePreHireReq struct {
	apiReq *larkcore.ApiReq
}

type DeletePreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeletePreHireResp) Success() bool {
	return resp.Code == 0
}

type PatchPreHireReqBuilder struct {
	apiReq        *larkcore.ApiReq
	prehireUpdate *PrehireUpdate
}

func NewPatchPreHireReqBuilder() *PatchPreHireReqBuilder {
	builder := &PatchPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 待入职ID
//
// 示例值：7345005664477775411
func (builder *PatchPreHireReqBuilder) PreHireId(preHireId string) *PatchPreHireReqBuilder {
	builder.apiReq.PathParams.Set("pre_hire_id", fmt.Sprint(preHireId))
	return builder
}

// 更新待入职
func (builder *PatchPreHireReqBuilder) PrehireUpdate(prehireUpdate *PrehireUpdate) *PatchPreHireReqBuilder {
	builder.prehireUpdate = prehireUpdate
	return builder
}

func (builder *PatchPreHireReqBuilder) Build() *PatchPreHireReq {
	req := &PatchPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.Body = builder.prehireUpdate
	return req
}

type PatchPreHireReq struct {
	apiReq        *larkcore.ApiReq
	PrehireUpdate *PrehireUpdate `body:""`
}

type PatchPreHireRespData struct {
	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职ID
}

type PatchPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *PatchPreHireRespData `json:"data"` // 业务数据
}

func (resp *PatchPreHireResp) Success() bool {
	return resp.Code == 0
}

type QueryPreHireReqBodyBuilder struct {
	preHireIds     []string // 待入职人员 ID 列表；如果该字段非空，则不按照page_size、page_token分页方式查询
	preHireIdsFlag bool

	fields     []string // 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
	fieldsFlag bool
}

func NewQueryPreHireReqBodyBuilder() *QueryPreHireReqBodyBuilder {
	builder := &QueryPreHireReqBodyBuilder{}
	return builder
}

// 待入职人员 ID 列表；如果该字段非空，则不按照page_size、page_token分页方式查询
//
//示例值：
func (builder *QueryPreHireReqBodyBuilder) PreHireIds(preHireIds []string) *QueryPreHireReqBodyBuilder {
	builder.preHireIds = preHireIds
	builder.preHireIdsFlag = true
	return builder
}

// 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
//
//示例值：\["person_info","employment_info.department","probation_info.probation_period"\]
func (builder *QueryPreHireReqBodyBuilder) Fields(fields []string) *QueryPreHireReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryPreHireReqBodyBuilder) Build() *QueryPreHireReqBody {
	req := &QueryPreHireReqBody{}
	if builder.preHireIdsFlag {
		req.PreHireIds = builder.preHireIds
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type QueryPreHirePathReqBodyBuilder struct {
	preHireIds     []string
	preHireIdsFlag bool
	fields         []string
	fieldsFlag     bool
}

func NewQueryPreHirePathReqBodyBuilder() *QueryPreHirePathReqBodyBuilder {
	builder := &QueryPreHirePathReqBodyBuilder{}
	return builder
}

// 待入职人员 ID 列表；如果该字段非空，则不按照page_size、page_token分页方式查询
//
// 示例值：
func (builder *QueryPreHirePathReqBodyBuilder) PreHireIds(preHireIds []string) *QueryPreHirePathReqBodyBuilder {
	builder.preHireIds = preHireIds
	builder.preHireIdsFlag = true
	return builder
}

// 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
//
// 示例值：\["person_info","employment_info.department","probation_info.probation_period"\]
func (builder *QueryPreHirePathReqBodyBuilder) Fields(fields []string) *QueryPreHirePathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *QueryPreHirePathReqBodyBuilder) Build() (*QueryPreHireReqBody, error) {
	req := &QueryPreHireReqBody{}
	if builder.preHireIdsFlag {
		req.PreHireIds = builder.preHireIds
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type QueryPreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryPreHireReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewQueryPreHireReqBuilder() *QueryPreHireReqBuilder {
	builder := &QueryPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *QueryPreHireReqBuilder) Limit(limit int) *QueryPreHireReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 10
//
// 示例值：10
func (builder *QueryPreHireReqBuilder) PageSize(pageSize int) *QueryPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *QueryPreHireReqBuilder) PageToken(pageToken string) *QueryPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *QueryPreHireReqBuilder) UserIdType(userIdType string) *QueryPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *QueryPreHireReqBuilder) DepartmentIdType(departmentIdType string) *QueryPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 批量查询待入职数据
func (builder *QueryPreHireReqBuilder) Body(body *QueryPreHireReqBody) *QueryPreHireReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryPreHireReqBuilder) Build() *QueryPreHireReq {
	req := &QueryPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryPreHireReqBody struct {
	PreHireIds []string `json:"pre_hire_ids,omitempty"` // 待入职人员 ID 列表；如果该字段非空，则不按照page_size、page_token分页方式查询

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
}

type QueryPreHireReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryPreHireReqBody `body:""`
	Limit  int                  // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type QueryPreHireRespData struct {
	Items []*PreHire `json:"items,omitempty"` // 查询待入职的信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type QueryPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryPreHireRespData `json:"data"` // 业务数据
}

func (resp *QueryPreHireResp) Success() bool {
	return resp.Code == 0
}

type RestoreFlowInstancePreHireReqBodyBuilder struct {
	preHireId     string // 待入职ID，可从待入职列表接口获取
	preHireIdFlag bool

	confirmWorkforce     bool // 是否强制占编；true为强制占编；false为非强制占编
	confirmWorkforceFlag bool
}

func NewRestoreFlowInstancePreHireReqBodyBuilder() *RestoreFlowInstancePreHireReqBodyBuilder {
	builder := &RestoreFlowInstancePreHireReqBodyBuilder{}
	return builder
}

// 待入职ID，可从待入职列表接口获取
//
//示例值：7345005664477775407
func (builder *RestoreFlowInstancePreHireReqBodyBuilder) PreHireId(preHireId string) *RestoreFlowInstancePreHireReqBodyBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 是否强制占编；true为强制占编；false为非强制占编
//
//示例值：false
func (builder *RestoreFlowInstancePreHireReqBodyBuilder) ConfirmWorkforce(confirmWorkforce bool) *RestoreFlowInstancePreHireReqBodyBuilder {
	builder.confirmWorkforce = confirmWorkforce
	builder.confirmWorkforceFlag = true
	return builder
}

func (builder *RestoreFlowInstancePreHireReqBodyBuilder) Build() *RestoreFlowInstancePreHireReqBody {
	req := &RestoreFlowInstancePreHireReqBody{}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId
	}
	if builder.confirmWorkforceFlag {
		req.ConfirmWorkforce = &builder.confirmWorkforce
	}
	return req
}

type RestoreFlowInstancePreHirePathReqBodyBuilder struct {
	preHireId            string
	preHireIdFlag        bool
	confirmWorkforce     bool
	confirmWorkforceFlag bool
}

func NewRestoreFlowInstancePreHirePathReqBodyBuilder() *RestoreFlowInstancePreHirePathReqBodyBuilder {
	builder := &RestoreFlowInstancePreHirePathReqBodyBuilder{}
	return builder
}

// 待入职ID，可从待入职列表接口获取
//
// 示例值：7345005664477775407
func (builder *RestoreFlowInstancePreHirePathReqBodyBuilder) PreHireId(preHireId string) *RestoreFlowInstancePreHirePathReqBodyBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 是否强制占编；true为强制占编；false为非强制占编
//
// 示例值：false
func (builder *RestoreFlowInstancePreHirePathReqBodyBuilder) ConfirmWorkforce(confirmWorkforce bool) *RestoreFlowInstancePreHirePathReqBodyBuilder {
	builder.confirmWorkforce = confirmWorkforce
	builder.confirmWorkforceFlag = true
	return builder
}

func (builder *RestoreFlowInstancePreHirePathReqBodyBuilder) Build() (*RestoreFlowInstancePreHireReqBody, error) {
	req := &RestoreFlowInstancePreHireReqBody{}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId
	}
	if builder.confirmWorkforceFlag {
		req.ConfirmWorkforce = &builder.confirmWorkforce
	}
	return req, nil
}

type RestoreFlowInstancePreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *RestoreFlowInstancePreHireReqBody
}

func NewRestoreFlowInstancePreHireReqBuilder() *RestoreFlowInstancePreHireReqBuilder {
	builder := &RestoreFlowInstancePreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *RestoreFlowInstancePreHireReqBuilder) Body(body *RestoreFlowInstancePreHireReqBody) *RestoreFlowInstancePreHireReqBuilder {
	builder.body = body
	return builder
}

func (builder *RestoreFlowInstancePreHireReqBuilder) Build() *RestoreFlowInstancePreHireReq {
	req := &RestoreFlowInstancePreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type RestoreFlowInstancePreHireReqBody struct {
	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职ID，可从待入职列表接口获取

	ConfirmWorkforce *bool `json:"confirm_workforce,omitempty"` // 是否强制占编；true为强制占编；false为非强制占编
}

type RestoreFlowInstancePreHireReq struct {
	apiReq *larkcore.ApiReq
	Body   *RestoreFlowInstancePreHireReqBody `body:""`
}

type RestoreFlowInstancePreHireRespData struct {
	Success *bool `json:"success,omitempty"` // 是否成功恢复入职
}

type RestoreFlowInstancePreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *RestoreFlowInstancePreHireRespData `json:"data"` // 业务数据
}

func (resp *RestoreFlowInstancePreHireResp) Success() bool {
	return resp.Code == 0
}

type SearchPreHireReqBodyBuilder struct {
	workerIds     []string // 待入职人员工号列表
	workerIdsFlag bool

	preHireIds     []string // 待入职人员 ID 列表
	preHireIdsFlag bool

	personIds     []string // 个人信息 ID 列表
	personIdsFlag bool

	onboardingDateStart     string // 入职日期-搜索范围开始，需要与搜索范围结束一同使用
	onboardingDateStartFlag bool

	onboardingDateEnd     string // 入职日期-搜索范围结束
	onboardingDateEndFlag bool

	updatedDateStart     string // 待入职数据更新时间-搜索范围开始，需要与搜索范围结束一同使用
	updatedDateStartFlag bool

	updatedDateEnd     string // 待入职数据更新时间-搜索范围结束，需要与搜索范围结束一同使用
	updatedDateEndFlag bool

	onboardingLocationIds     []string // 入职地点 ID 列表
	onboardingLocationIdsFlag bool

	onboardingStatus     string // 入职状态
	onboardingStatusFlag bool

	departmentIds     []string // 部门 ID 列表
	departmentIdsFlag bool

	directManagerIds     []string // 直接上级的雇佣 ID 列表
	directManagerIdsFlag bool

	employeeTypeIds     []string // 人员类型 ID 列表
	employeeTypeIdsFlag bool

	employeeSubtypeIds     []string // 人员子类型 ID 列表
	employeeSubtypeIdsFlag bool

	jobFamilyIds     []string // 序列 ID 列表
	jobFamilyIdsFlag bool

	keyWord     string // 搜索关键字，支持对常用名模糊搜索 + 工号精确搜索
	keyWordFlag bool

	conditionWorker     bool // 是否外部人员
	conditionWorkerFlag bool

	rehire     string // 是否离职重聘
	rehireFlag bool

	fields     []string // 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
	fieldsFlag bool
}

func NewSearchPreHireReqBodyBuilder() *SearchPreHireReqBodyBuilder {
	builder := &SearchPreHireReqBodyBuilder{}
	return builder
}

// 待入职人员工号列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) WorkerIds(workerIds []string) *SearchPreHireReqBodyBuilder {
	builder.workerIds = workerIds
	builder.workerIdsFlag = true
	return builder
}

// 待入职人员 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) PreHireIds(preHireIds []string) *SearchPreHireReqBodyBuilder {
	builder.preHireIds = preHireIds
	builder.preHireIdsFlag = true
	return builder
}

// 个人信息 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) PersonIds(personIds []string) *SearchPreHireReqBodyBuilder {
	builder.personIds = personIds
	builder.personIdsFlag = true
	return builder
}

// 入职日期-搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2006-01-02
func (builder *SearchPreHireReqBodyBuilder) OnboardingDateStart(onboardingDateStart string) *SearchPreHireReqBodyBuilder {
	builder.onboardingDateStart = onboardingDateStart
	builder.onboardingDateStartFlag = true
	return builder
}

// 入职日期-搜索范围结束
//
//示例值：2006-01-02
func (builder *SearchPreHireReqBodyBuilder) OnboardingDateEnd(onboardingDateEnd string) *SearchPreHireReqBodyBuilder {
	builder.onboardingDateEnd = onboardingDateEnd
	builder.onboardingDateEndFlag = true
	return builder
}

// 待入职数据更新时间-搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2006-01-02
func (builder *SearchPreHireReqBodyBuilder) UpdatedDateStart(updatedDateStart string) *SearchPreHireReqBodyBuilder {
	builder.updatedDateStart = updatedDateStart
	builder.updatedDateStartFlag = true
	return builder
}

// 待入职数据更新时间-搜索范围结束，需要与搜索范围结束一同使用
//
//示例值：2006-01-02
func (builder *SearchPreHireReqBodyBuilder) UpdatedDateEnd(updatedDateEnd string) *SearchPreHireReqBodyBuilder {
	builder.updatedDateEnd = updatedDateEnd
	builder.updatedDateEndFlag = true
	return builder
}

// 入职地点 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) OnboardingLocationIds(onboardingLocationIds []string) *SearchPreHireReqBodyBuilder {
	builder.onboardingLocationIds = onboardingLocationIds
	builder.onboardingLocationIdsFlag = true
	return builder
}

// 入职状态
//
//示例值：待入职(preboarding)
func (builder *SearchPreHireReqBodyBuilder) OnboardingStatus(onboardingStatus string) *SearchPreHireReqBodyBuilder {
	builder.onboardingStatus = onboardingStatus
	builder.onboardingStatusFlag = true
	return builder
}

// 部门 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) DepartmentIds(departmentIds []string) *SearchPreHireReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 直接上级的雇佣 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) DirectManagerIds(directManagerIds []string) *SearchPreHireReqBodyBuilder {
	builder.directManagerIds = directManagerIds
	builder.directManagerIdsFlag = true
	return builder
}

// 人员类型 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *SearchPreHireReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 人员子类型 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) EmployeeSubtypeIds(employeeSubtypeIds []string) *SearchPreHireReqBodyBuilder {
	builder.employeeSubtypeIds = employeeSubtypeIds
	builder.employeeSubtypeIdsFlag = true
	return builder
}

// 序列 ID 列表
//
//示例值：
func (builder *SearchPreHireReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *SearchPreHireReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 搜索关键字，支持对常用名模糊搜索 + 工号精确搜索
//
//示例值：张三
func (builder *SearchPreHireReqBodyBuilder) KeyWord(keyWord string) *SearchPreHireReqBodyBuilder {
	builder.keyWord = keyWord
	builder.keyWordFlag = true
	return builder
}

// 是否外部人员
//
//示例值：true
func (builder *SearchPreHireReqBodyBuilder) ConditionWorker(conditionWorker bool) *SearchPreHireReqBodyBuilder {
	builder.conditionWorker = conditionWorker
	builder.conditionWorkerFlag = true
	return builder
}

// 是否离职重聘
//
//示例值：张三
func (builder *SearchPreHireReqBodyBuilder) Rehire(rehire string) *SearchPreHireReqBodyBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
//
//示例值：\["person_info","employment_info.department","probation_info.probation_period"\]
func (builder *SearchPreHireReqBodyBuilder) Fields(fields []string) *SearchPreHireReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *SearchPreHireReqBodyBuilder) Build() *SearchPreHireReqBody {
	req := &SearchPreHireReqBody{}
	if builder.workerIdsFlag {
		req.WorkerIds = builder.workerIds
	}
	if builder.preHireIdsFlag {
		req.PreHireIds = builder.preHireIds
	}
	if builder.personIdsFlag {
		req.PersonIds = builder.personIds
	}
	if builder.onboardingDateStartFlag {
		req.OnboardingDateStart = &builder.onboardingDateStart
	}
	if builder.onboardingDateEndFlag {
		req.OnboardingDateEnd = &builder.onboardingDateEnd
	}
	if builder.updatedDateStartFlag {
		req.UpdatedDateStart = &builder.updatedDateStart
	}
	if builder.updatedDateEndFlag {
		req.UpdatedDateEnd = &builder.updatedDateEnd
	}
	if builder.onboardingLocationIdsFlag {
		req.OnboardingLocationIds = builder.onboardingLocationIds
	}
	if builder.onboardingStatusFlag {
		req.OnboardingStatus = &builder.onboardingStatus
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.directManagerIdsFlag {
		req.DirectManagerIds = builder.directManagerIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.employeeSubtypeIdsFlag {
		req.EmployeeSubtypeIds = builder.employeeSubtypeIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.keyWordFlag {
		req.KeyWord = &builder.keyWord
	}
	if builder.conditionWorkerFlag {
		req.ConditionWorker = &builder.conditionWorker
	}
	if builder.rehireFlag {
		req.Rehire = &builder.rehire
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req
}

type SearchPreHirePathReqBodyBuilder struct {
	workerIds                 []string
	workerIdsFlag             bool
	preHireIds                []string
	preHireIdsFlag            bool
	personIds                 []string
	personIdsFlag             bool
	onboardingDateStart       string
	onboardingDateStartFlag   bool
	onboardingDateEnd         string
	onboardingDateEndFlag     bool
	updatedDateStart          string
	updatedDateStartFlag      bool
	updatedDateEnd            string
	updatedDateEndFlag        bool
	onboardingLocationIds     []string
	onboardingLocationIdsFlag bool
	onboardingStatus          string
	onboardingStatusFlag      bool
	departmentIds             []string
	departmentIdsFlag         bool
	directManagerIds          []string
	directManagerIdsFlag      bool
	employeeTypeIds           []string
	employeeTypeIdsFlag       bool
	employeeSubtypeIds        []string
	employeeSubtypeIdsFlag    bool
	jobFamilyIds              []string
	jobFamilyIdsFlag          bool
	keyWord                   string
	keyWordFlag               bool
	conditionWorker           bool
	conditionWorkerFlag       bool
	rehire                    string
	rehireFlag                bool
	fields                    []string
	fieldsFlag                bool
}

func NewSearchPreHirePathReqBodyBuilder() *SearchPreHirePathReqBodyBuilder {
	builder := &SearchPreHirePathReqBodyBuilder{}
	return builder
}

// 待入职人员工号列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) WorkerIds(workerIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.workerIds = workerIds
	builder.workerIdsFlag = true
	return builder
}

// 待入职人员 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) PreHireIds(preHireIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.preHireIds = preHireIds
	builder.preHireIdsFlag = true
	return builder
}

// 个人信息 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) PersonIds(personIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.personIds = personIds
	builder.personIdsFlag = true
	return builder
}

// 入职日期-搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2006-01-02
func (builder *SearchPreHirePathReqBodyBuilder) OnboardingDateStart(onboardingDateStart string) *SearchPreHirePathReqBodyBuilder {
	builder.onboardingDateStart = onboardingDateStart
	builder.onboardingDateStartFlag = true
	return builder
}

// 入职日期-搜索范围结束
//
// 示例值：2006-01-02
func (builder *SearchPreHirePathReqBodyBuilder) OnboardingDateEnd(onboardingDateEnd string) *SearchPreHirePathReqBodyBuilder {
	builder.onboardingDateEnd = onboardingDateEnd
	builder.onboardingDateEndFlag = true
	return builder
}

// 待入职数据更新时间-搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2006-01-02
func (builder *SearchPreHirePathReqBodyBuilder) UpdatedDateStart(updatedDateStart string) *SearchPreHirePathReqBodyBuilder {
	builder.updatedDateStart = updatedDateStart
	builder.updatedDateStartFlag = true
	return builder
}

// 待入职数据更新时间-搜索范围结束，需要与搜索范围结束一同使用
//
// 示例值：2006-01-02
func (builder *SearchPreHirePathReqBodyBuilder) UpdatedDateEnd(updatedDateEnd string) *SearchPreHirePathReqBodyBuilder {
	builder.updatedDateEnd = updatedDateEnd
	builder.updatedDateEndFlag = true
	return builder
}

// 入职地点 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) OnboardingLocationIds(onboardingLocationIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.onboardingLocationIds = onboardingLocationIds
	builder.onboardingLocationIdsFlag = true
	return builder
}

// 入职状态
//
// 示例值：待入职(preboarding)
func (builder *SearchPreHirePathReqBodyBuilder) OnboardingStatus(onboardingStatus string) *SearchPreHirePathReqBodyBuilder {
	builder.onboardingStatus = onboardingStatus
	builder.onboardingStatusFlag = true
	return builder
}

// 部门 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) DepartmentIds(departmentIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 直接上级的雇佣 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) DirectManagerIds(directManagerIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.directManagerIds = directManagerIds
	builder.directManagerIdsFlag = true
	return builder
}

// 人员类型 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 人员子类型 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) EmployeeSubtypeIds(employeeSubtypeIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.employeeSubtypeIds = employeeSubtypeIds
	builder.employeeSubtypeIdsFlag = true
	return builder
}

// 序列 ID 列表
//
// 示例值：
func (builder *SearchPreHirePathReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *SearchPreHirePathReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 搜索关键字，支持对常用名模糊搜索 + 工号精确搜索
//
// 示例值：张三
func (builder *SearchPreHirePathReqBodyBuilder) KeyWord(keyWord string) *SearchPreHirePathReqBodyBuilder {
	builder.keyWord = keyWord
	builder.keyWordFlag = true
	return builder
}

// 是否外部人员
//
// 示例值：true
func (builder *SearchPreHirePathReqBodyBuilder) ConditionWorker(conditionWorker bool) *SearchPreHirePathReqBodyBuilder {
	builder.conditionWorker = conditionWorker
	builder.conditionWorkerFlag = true
	return builder
}

// 是否离职重聘
//
// 示例值：张三
func (builder *SearchPreHirePathReqBodyBuilder) Rehire(rehire string) *SearchPreHirePathReqBodyBuilder {
	builder.rehire = rehire
	builder.rehireFlag = true
	return builder
}

// 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
//
// 示例值：\["person_info","employment_info.department","probation_info.probation_period"\]
func (builder *SearchPreHirePathReqBodyBuilder) Fields(fields []string) *SearchPreHirePathReqBodyBuilder {
	builder.fields = fields
	builder.fieldsFlag = true
	return builder
}

func (builder *SearchPreHirePathReqBodyBuilder) Build() (*SearchPreHireReqBody, error) {
	req := &SearchPreHireReqBody{}
	if builder.workerIdsFlag {
		req.WorkerIds = builder.workerIds
	}
	if builder.preHireIdsFlag {
		req.PreHireIds = builder.preHireIds
	}
	if builder.personIdsFlag {
		req.PersonIds = builder.personIds
	}
	if builder.onboardingDateStartFlag {
		req.OnboardingDateStart = &builder.onboardingDateStart
	}
	if builder.onboardingDateEndFlag {
		req.OnboardingDateEnd = &builder.onboardingDateEnd
	}
	if builder.updatedDateStartFlag {
		req.UpdatedDateStart = &builder.updatedDateStart
	}
	if builder.updatedDateEndFlag {
		req.UpdatedDateEnd = &builder.updatedDateEnd
	}
	if builder.onboardingLocationIdsFlag {
		req.OnboardingLocationIds = builder.onboardingLocationIds
	}
	if builder.onboardingStatusFlag {
		req.OnboardingStatus = &builder.onboardingStatus
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.directManagerIdsFlag {
		req.DirectManagerIds = builder.directManagerIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.employeeSubtypeIdsFlag {
		req.EmployeeSubtypeIds = builder.employeeSubtypeIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.keyWordFlag {
		req.KeyWord = &builder.keyWord
	}
	if builder.conditionWorkerFlag {
		req.ConditionWorker = &builder.conditionWorker
	}
	if builder.rehireFlag {
		req.Rehire = &builder.rehire
	}
	if builder.fieldsFlag {
		req.Fields = builder.fields
	}
	return req, nil
}

type SearchPreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchPreHireReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchPreHireReqBuilder() *SearchPreHireReqBuilder {
	builder := &SearchPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchPreHireReqBuilder) Limit(limit int) *SearchPreHireReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchPreHireReqBuilder) PageSize(pageSize int) *SearchPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchPreHireReqBuilder) PageToken(pageToken string) *SearchPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SearchPreHireReqBuilder) UserIdType(userIdType string) *SearchPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *SearchPreHireReqBuilder) DepartmentIdType(departmentIdType string) *SearchPreHireReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 根据部门 ID，上级部门查询部门列表
func (builder *SearchPreHireReqBuilder) Body(body *SearchPreHireReqBody) *SearchPreHireReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchPreHireReqBuilder) Build() *SearchPreHireReq {
	req := &SearchPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchPreHireReqBody struct {
	WorkerIds []string `json:"worker_ids,omitempty"` // 待入职人员工号列表

	PreHireIds []string `json:"pre_hire_ids,omitempty"` // 待入职人员 ID 列表

	PersonIds []string `json:"person_ids,omitempty"` // 个人信息 ID 列表

	OnboardingDateStart *string `json:"onboarding_date_start,omitempty"` // 入职日期-搜索范围开始，需要与搜索范围结束一同使用

	OnboardingDateEnd *string `json:"onboarding_date_end,omitempty"` // 入职日期-搜索范围结束

	UpdatedDateStart *string `json:"updated_date_start,omitempty"` // 待入职数据更新时间-搜索范围开始，需要与搜索范围结束一同使用

	UpdatedDateEnd *string `json:"updated_date_end,omitempty"` // 待入职数据更新时间-搜索范围结束，需要与搜索范围结束一同使用

	OnboardingLocationIds []string `json:"onboarding_location_ids,omitempty"` // 入职地点 ID 列表

	OnboardingStatus *string `json:"onboarding_status,omitempty"` // 入职状态

	DepartmentIds []string `json:"department_ids,omitempty"` // 部门 ID 列表

	DirectManagerIds []string `json:"direct_manager_ids,omitempty"` // 直接上级的雇佣 ID 列表

	EmployeeTypeIds []string `json:"employee_type_ids,omitempty"` // 人员类型 ID 列表

	EmployeeSubtypeIds []string `json:"employee_subtype_ids,omitempty"` // 人员子类型 ID 列表

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列 ID 列表

	KeyWord *string `json:"key_word,omitempty"` // 搜索关键字，支持对常用名模糊搜索 + 工号精确搜索

	ConditionWorker *bool `json:"condition_worker,omitempty"` // 是否外部人员

	Rehire *string `json:"rehire,omitempty"` // 是否离职重聘

	Fields []string `json:"fields,omitempty"` // 返回数据的字段列表，填写方式：;- 为空时只返回 pre_hire_id;- 不为空时按照传入的字段返回数据，格式如下：;	- person_info 字段：person_info.gender，person_info.age;	- employment_info 字段：employment_info.department;	- onboarding_info 字段：onboarding_info.onboarding_date;	- probation_info 字段：probation_info.probation_period;	- contract_info 字段：contract_info.contract_type;- 如果要返回所有下级，只用传上级结构体名称，例如 person_info;- 返回数据越多，查询接口性能越慢，请按需填写返回字段
}

type SearchPreHireReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchPreHireReqBody `body:""`
	Limit  int                   // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchPreHireRespData struct {
	Items []*PreHire `json:"items,omitempty"` // 查询的部门信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchPreHireRespData `json:"data"` // 业务数据
}

func (resp *SearchPreHireResp) Success() bool {
	return resp.Code == 0
}

type TransformOnboardingTaskPreHireReqBodyBuilder struct {
	preHireId     string // 待入职ID，可从待入职列表接口获取
	preHireIdFlag bool

	taskCode     string // 任务的标识ID,入职系统的任务分为预置任务和自定义任务，预置任务的task_code是系统写死的，如职位信息任务的task_code为1，自定义任务的task_code为一串UUID。待入职人员任务的task_code可以通过查询待入职接口获取
	taskCodeFlag bool

	transformType     string // 流转类型，描述对任务做何种流转，manual_start_task表示手动开启任务，submit_task表示提交任务，review_task表示审批任务
	transformTypeFlag bool

	reviewDecision     string // 审批结果，approve表示通过，reject表示拒绝，当审批任务时，该字段需要传值，否则报错
	reviewDecisionFlag bool

	reason     string // 审批原因，审批任务时，如果审批通过，审批原因可以不填；如果审批拒绝，审批原因必填
	reasonFlag bool
}

func NewTransformOnboardingTaskPreHireReqBodyBuilder() *TransformOnboardingTaskPreHireReqBodyBuilder {
	builder := &TransformOnboardingTaskPreHireReqBodyBuilder{}
	return builder
}

// 待入职ID，可从待入职列表接口获取
//
//示例值：7345005664477775407
func (builder *TransformOnboardingTaskPreHireReqBodyBuilder) PreHireId(preHireId string) *TransformOnboardingTaskPreHireReqBodyBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 任务的标识ID,入职系统的任务分为预置任务和自定义任务，预置任务的task_code是系统写死的，如职位信息任务的task_code为1，自定义任务的task_code为一串UUID。待入职人员任务的task_code可以通过查询待入职接口获取
//
//示例值：27691344-699b-47fb-a352-7b41e992a536
func (builder *TransformOnboardingTaskPreHireReqBodyBuilder) TaskCode(taskCode string) *TransformOnboardingTaskPreHireReqBodyBuilder {
	builder.taskCode = taskCode
	builder.taskCodeFlag = true
	return builder
}

// 流转类型，描述对任务做何种流转，manual_start_task表示手动开启任务，submit_task表示提交任务，review_task表示审批任务
//
//示例值：manual_start_task/submit_task/review_task
func (builder *TransformOnboardingTaskPreHireReqBodyBuilder) TransformType(transformType string) *TransformOnboardingTaskPreHireReqBodyBuilder {
	builder.transformType = transformType
	builder.transformTypeFlag = true
	return builder
}

// 审批结果，approve表示通过，reject表示拒绝，当审批任务时，该字段需要传值，否则报错
//
//示例值：approve/reject
func (builder *TransformOnboardingTaskPreHireReqBodyBuilder) ReviewDecision(reviewDecision string) *TransformOnboardingTaskPreHireReqBodyBuilder {
	builder.reviewDecision = reviewDecision
	builder.reviewDecisionFlag = true
	return builder
}

// 审批原因，审批任务时，如果审批通过，审批原因可以不填；如果审批拒绝，审批原因必填
//
//示例值：信息填写完整，允许通过
func (builder *TransformOnboardingTaskPreHireReqBodyBuilder) Reason(reason string) *TransformOnboardingTaskPreHireReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *TransformOnboardingTaskPreHireReqBodyBuilder) Build() *TransformOnboardingTaskPreHireReqBody {
	req := &TransformOnboardingTaskPreHireReqBody{}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId
	}
	if builder.taskCodeFlag {
		req.TaskCode = &builder.taskCode
	}
	if builder.transformTypeFlag {
		req.TransformType = &builder.transformType
	}
	if builder.reviewDecisionFlag {
		req.ReviewDecision = &builder.reviewDecision
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason
	}
	return req
}

type TransformOnboardingTaskPreHirePathReqBodyBuilder struct {
	preHireId          string
	preHireIdFlag      bool
	taskCode           string
	taskCodeFlag       bool
	transformType      string
	transformTypeFlag  bool
	reviewDecision     string
	reviewDecisionFlag bool
	reason             string
	reasonFlag         bool
}

func NewTransformOnboardingTaskPreHirePathReqBodyBuilder() *TransformOnboardingTaskPreHirePathReqBodyBuilder {
	builder := &TransformOnboardingTaskPreHirePathReqBodyBuilder{}
	return builder
}

// 待入职ID，可从待入职列表接口获取
//
// 示例值：7345005664477775407
func (builder *TransformOnboardingTaskPreHirePathReqBodyBuilder) PreHireId(preHireId string) *TransformOnboardingTaskPreHirePathReqBodyBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 任务的标识ID,入职系统的任务分为预置任务和自定义任务，预置任务的task_code是系统写死的，如职位信息任务的task_code为1，自定义任务的task_code为一串UUID。待入职人员任务的task_code可以通过查询待入职接口获取
//
// 示例值：27691344-699b-47fb-a352-7b41e992a536
func (builder *TransformOnboardingTaskPreHirePathReqBodyBuilder) TaskCode(taskCode string) *TransformOnboardingTaskPreHirePathReqBodyBuilder {
	builder.taskCode = taskCode
	builder.taskCodeFlag = true
	return builder
}

// 流转类型，描述对任务做何种流转，manual_start_task表示手动开启任务，submit_task表示提交任务，review_task表示审批任务
//
// 示例值：manual_start_task/submit_task/review_task
func (builder *TransformOnboardingTaskPreHirePathReqBodyBuilder) TransformType(transformType string) *TransformOnboardingTaskPreHirePathReqBodyBuilder {
	builder.transformType = transformType
	builder.transformTypeFlag = true
	return builder
}

// 审批结果，approve表示通过，reject表示拒绝，当审批任务时，该字段需要传值，否则报错
//
// 示例值：approve/reject
func (builder *TransformOnboardingTaskPreHirePathReqBodyBuilder) ReviewDecision(reviewDecision string) *TransformOnboardingTaskPreHirePathReqBodyBuilder {
	builder.reviewDecision = reviewDecision
	builder.reviewDecisionFlag = true
	return builder
}

// 审批原因，审批任务时，如果审批通过，审批原因可以不填；如果审批拒绝，审批原因必填
//
// 示例值：信息填写完整，允许通过
func (builder *TransformOnboardingTaskPreHirePathReqBodyBuilder) Reason(reason string) *TransformOnboardingTaskPreHirePathReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *TransformOnboardingTaskPreHirePathReqBodyBuilder) Build() (*TransformOnboardingTaskPreHireReqBody, error) {
	req := &TransformOnboardingTaskPreHireReqBody{}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId
	}
	if builder.taskCodeFlag {
		req.TaskCode = &builder.taskCode
	}
	if builder.transformTypeFlag {
		req.TransformType = &builder.transformType
	}
	if builder.reviewDecisionFlag {
		req.ReviewDecision = &builder.reviewDecision
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason
	}
	return req, nil
}

type TransformOnboardingTaskPreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *TransformOnboardingTaskPreHireReqBody
}

func NewTransformOnboardingTaskPreHireReqBuilder() *TransformOnboardingTaskPreHireReqBuilder {
	builder := &TransformOnboardingTaskPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 入职常规任务的流转，支持手动开启任务，提交任务以及审批任务
func (builder *TransformOnboardingTaskPreHireReqBuilder) Body(body *TransformOnboardingTaskPreHireReqBody) *TransformOnboardingTaskPreHireReqBuilder {
	builder.body = body
	return builder
}

func (builder *TransformOnboardingTaskPreHireReqBuilder) Build() *TransformOnboardingTaskPreHireReq {
	req := &TransformOnboardingTaskPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type TransformOnboardingTaskPreHireReqBody struct {
	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职ID，可从待入职列表接口获取

	TaskCode *string `json:"task_code,omitempty"` // 任务的标识ID,入职系统的任务分为预置任务和自定义任务，预置任务的task_code是系统写死的，如职位信息任务的task_code为1，自定义任务的task_code为一串UUID。待入职人员任务的task_code可以通过查询待入职接口获取

	TransformType *string `json:"transform_type,omitempty"` // 流转类型，描述对任务做何种流转，manual_start_task表示手动开启任务，submit_task表示提交任务，review_task表示审批任务

	ReviewDecision *string `json:"review_decision,omitempty"` // 审批结果，approve表示通过，reject表示拒绝，当审批任务时，该字段需要传值，否则报错

	Reason *string `json:"reason,omitempty"` // 审批原因，审批任务时，如果审批通过，审批原因可以不填；如果审批拒绝，审批原因必填
}

type TransformOnboardingTaskPreHireReq struct {
	apiReq *larkcore.ApiReq
	Body   *TransformOnboardingTaskPreHireReqBody `body:""`
}

type TransformOnboardingTaskPreHireRespData struct {
	Success *bool `json:"success,omitempty"` // 是否成功流转任务
}

type TransformOnboardingTaskPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *TransformOnboardingTaskPreHireRespData `json:"data"` // 业务数据
}

func (resp *TransformOnboardingTaskPreHireResp) Success() bool {
	return resp.Code == 0
}

type TransitTaskPreHireReqBodyBuilder struct {
	taskId     string // 系统预置的职位信息和个人信息任务的task_id分别为1和2，自定义任务的task_id是一串UUID
	taskIdFlag bool
}

func NewTransitTaskPreHireReqBodyBuilder() *TransitTaskPreHireReqBodyBuilder {
	builder := &TransitTaskPreHireReqBodyBuilder{}
	return builder
}

// 系统预置的职位信息和个人信息任务的task_id分别为1和2，自定义任务的task_id是一串UUID
//
//示例值：1
func (builder *TransitTaskPreHireReqBodyBuilder) TaskId(taskId string) *TransitTaskPreHireReqBodyBuilder {
	builder.taskId = taskId
	builder.taskIdFlag = true
	return builder
}

func (builder *TransitTaskPreHireReqBodyBuilder) Build() *TransitTaskPreHireReqBody {
	req := &TransitTaskPreHireReqBody{}
	if builder.taskIdFlag {
		req.TaskId = &builder.taskId
	}
	return req
}

type TransitTaskPreHirePathReqBodyBuilder struct {
	taskId     string
	taskIdFlag bool
}

func NewTransitTaskPreHirePathReqBodyBuilder() *TransitTaskPreHirePathReqBodyBuilder {
	builder := &TransitTaskPreHirePathReqBodyBuilder{}
	return builder
}

// 系统预置的职位信息和个人信息任务的task_id分别为1和2，自定义任务的task_id是一串UUID
//
// 示例值：1
func (builder *TransitTaskPreHirePathReqBodyBuilder) TaskId(taskId string) *TransitTaskPreHirePathReqBodyBuilder {
	builder.taskId = taskId
	builder.taskIdFlag = true
	return builder
}

func (builder *TransitTaskPreHirePathReqBodyBuilder) Build() (*TransitTaskPreHireReqBody, error) {
	req := &TransitTaskPreHireReqBody{}
	if builder.taskIdFlag {
		req.TaskId = &builder.taskId
	}
	return req, nil
}

type TransitTaskPreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *TransitTaskPreHireReqBody
}

func NewTransitTaskPreHireReqBuilder() *TransitTaskPreHireReqBuilder {
	builder := &TransitTaskPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 待入职ID
//
// 示例值：7345005664477775407
func (builder *TransitTaskPreHireReqBuilder) PreHireId(preHireId string) *TransitTaskPreHireReqBuilder {
	builder.apiReq.PathParams.Set("pre_hire_id", fmt.Sprint(preHireId))
	return builder
}

// 任务流转
func (builder *TransitTaskPreHireReqBuilder) Body(body *TransitTaskPreHireReqBody) *TransitTaskPreHireReqBuilder {
	builder.body = body
	return builder
}

func (builder *TransitTaskPreHireReqBuilder) Build() *TransitTaskPreHireReq {
	req := &TransitTaskPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.Body = builder.body
	return req
}

type TransitTaskPreHireReqBody struct {
	TaskId *string `json:"task_id,omitempty"` // 系统预置的职位信息和个人信息任务的task_id分别为1和2，自定义任务的task_id是一串UUID
}

type TransitTaskPreHireReq struct {
	apiReq *larkcore.ApiReq
	Body   *TransitTaskPreHireReqBody `body:""`
}

type TransitTaskPreHireRespData struct {
	Success *bool `json:"success,omitempty"` // 是否成功流转任务
}

type TransitTaskPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *TransitTaskPreHireRespData `json:"data"` // 业务数据
}

func (resp *TransitTaskPreHireResp) Success() bool {
	return resp.Code == 0
}

type WithdrawOnboardingPreHireReqBodyBuilder struct {
	preHireId     string // 待入职ID，可从待入职列表接口获取
	preHireIdFlag bool

	withdrawReason     string // 撤销原因
	withdrawReasonFlag bool
}

func NewWithdrawOnboardingPreHireReqBodyBuilder() *WithdrawOnboardingPreHireReqBodyBuilder {
	builder := &WithdrawOnboardingPreHireReqBodyBuilder{}
	return builder
}

// 待入职ID，可从待入职列表接口获取
//
//示例值：7345005664477775407
func (builder *WithdrawOnboardingPreHireReqBodyBuilder) PreHireId(preHireId string) *WithdrawOnboardingPreHireReqBodyBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 撤销原因
//
//示例值：withdraw reason
func (builder *WithdrawOnboardingPreHireReqBodyBuilder) WithdrawReason(withdrawReason string) *WithdrawOnboardingPreHireReqBodyBuilder {
	builder.withdrawReason = withdrawReason
	builder.withdrawReasonFlag = true
	return builder
}

func (builder *WithdrawOnboardingPreHireReqBodyBuilder) Build() *WithdrawOnboardingPreHireReqBody {
	req := &WithdrawOnboardingPreHireReqBody{}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId
	}
	if builder.withdrawReasonFlag {
		req.WithdrawReason = &builder.withdrawReason
	}
	return req
}

type WithdrawOnboardingPreHirePathReqBodyBuilder struct {
	preHireId          string
	preHireIdFlag      bool
	withdrawReason     string
	withdrawReasonFlag bool
}

func NewWithdrawOnboardingPreHirePathReqBodyBuilder() *WithdrawOnboardingPreHirePathReqBodyBuilder {
	builder := &WithdrawOnboardingPreHirePathReqBodyBuilder{}
	return builder
}

// 待入职ID，可从待入职列表接口获取
//
// 示例值：7345005664477775407
func (builder *WithdrawOnboardingPreHirePathReqBodyBuilder) PreHireId(preHireId string) *WithdrawOnboardingPreHirePathReqBodyBuilder {
	builder.preHireId = preHireId
	builder.preHireIdFlag = true
	return builder
}

// 撤销原因
//
// 示例值：withdraw reason
func (builder *WithdrawOnboardingPreHirePathReqBodyBuilder) WithdrawReason(withdrawReason string) *WithdrawOnboardingPreHirePathReqBodyBuilder {
	builder.withdrawReason = withdrawReason
	builder.withdrawReasonFlag = true
	return builder
}

func (builder *WithdrawOnboardingPreHirePathReqBodyBuilder) Build() (*WithdrawOnboardingPreHireReqBody, error) {
	req := &WithdrawOnboardingPreHireReqBody{}
	if builder.preHireIdFlag {
		req.PreHireId = &builder.preHireId
	}
	if builder.withdrawReasonFlag {
		req.WithdrawReason = &builder.withdrawReason
	}
	return req, nil
}

type WithdrawOnboardingPreHireReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *WithdrawOnboardingPreHireReqBody
}

func NewWithdrawOnboardingPreHireReqBuilder() *WithdrawOnboardingPreHireReqBuilder {
	builder := &WithdrawOnboardingPreHireReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *WithdrawOnboardingPreHireReqBuilder) Body(body *WithdrawOnboardingPreHireReqBody) *WithdrawOnboardingPreHireReqBuilder {
	builder.body = body
	return builder
}

func (builder *WithdrawOnboardingPreHireReqBuilder) Build() *WithdrawOnboardingPreHireReq {
	req := &WithdrawOnboardingPreHireReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type WithdrawOnboardingPreHireReqBody struct {
	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职ID，可从待入职列表接口获取

	WithdrawReason *string `json:"withdraw_reason,omitempty"` // 撤销原因
}

type WithdrawOnboardingPreHireReq struct {
	apiReq *larkcore.ApiReq
	Body   *WithdrawOnboardingPreHireReqBody `body:""`
}

type WithdrawOnboardingPreHireRespData struct {
	Success *bool `json:"success,omitempty"` // 是否成功撤销入职
}

type WithdrawOnboardingPreHireResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *WithdrawOnboardingPreHireRespData `json:"data"` // 业务数据
}

func (resp *WithdrawOnboardingPreHireResp) Success() bool {
	return resp.Code == 0
}

type EnableDisableAssessmentProbationReqBodyBuilder struct {
	active     bool // 启用 / 停用状态。启用后可在试用期管理页面中可见试用期考核相关的字段。
	activeFlag bool

	appUrl     string // 试用期考核系统入口链接，当启用功能时该字段必填。
	appUrlFlag bool
}

func NewEnableDisableAssessmentProbationReqBodyBuilder() *EnableDisableAssessmentProbationReqBodyBuilder {
	builder := &EnableDisableAssessmentProbationReqBodyBuilder{}
	return builder
}

// 启用 / 停用状态。启用后可在试用期管理页面中可见试用期考核相关的字段。
//
//示例值：true
func (builder *EnableDisableAssessmentProbationReqBodyBuilder) Active(active bool) *EnableDisableAssessmentProbationReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 试用期考核系统入口链接，当启用功能时该字段必填。
//
//示例值：https://qwe111.feishuapp.bytedance.net/ae/ui/apps/176612345027111/appPages/l11bsrwss13yt?dataGrid%41pye4fsbajo21l=%7B%7D&key=ffm41o1&dataGrid%41wmv98t29vif3kj=%1B%7D
func (builder *EnableDisableAssessmentProbationReqBodyBuilder) AppUrl(appUrl string) *EnableDisableAssessmentProbationReqBodyBuilder {
	builder.appUrl = appUrl
	builder.appUrlFlag = true
	return builder
}

func (builder *EnableDisableAssessmentProbationReqBodyBuilder) Build() *EnableDisableAssessmentProbationReqBody {
	req := &EnableDisableAssessmentProbationReqBody{}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.appUrlFlag {
		req.AppUrl = &builder.appUrl
	}
	return req
}

type EnableDisableAssessmentProbationPathReqBodyBuilder struct {
	active     bool
	activeFlag bool
	appUrl     string
	appUrlFlag bool
}

func NewEnableDisableAssessmentProbationPathReqBodyBuilder() *EnableDisableAssessmentProbationPathReqBodyBuilder {
	builder := &EnableDisableAssessmentProbationPathReqBodyBuilder{}
	return builder
}

// 启用 / 停用状态。启用后可在试用期管理页面中可见试用期考核相关的字段。
//
// 示例值：true
func (builder *EnableDisableAssessmentProbationPathReqBodyBuilder) Active(active bool) *EnableDisableAssessmentProbationPathReqBodyBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 试用期考核系统入口链接，当启用功能时该字段必填。
//
// 示例值：https://qwe111.feishuapp.bytedance.net/ae/ui/apps/176612345027111/appPages/l11bsrwss13yt?dataGrid%41pye4fsbajo21l=%7B%7D&key=ffm41o1&dataGrid%41wmv98t29vif3kj=%1B%7D
func (builder *EnableDisableAssessmentProbationPathReqBodyBuilder) AppUrl(appUrl string) *EnableDisableAssessmentProbationPathReqBodyBuilder {
	builder.appUrl = appUrl
	builder.appUrlFlag = true
	return builder
}

func (builder *EnableDisableAssessmentProbationPathReqBodyBuilder) Build() (*EnableDisableAssessmentProbationReqBody, error) {
	req := &EnableDisableAssessmentProbationReqBody{}
	if builder.activeFlag {
		req.Active = &builder.active
	}
	if builder.appUrlFlag {
		req.AppUrl = &builder.appUrl
	}
	return req, nil
}

type EnableDisableAssessmentProbationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *EnableDisableAssessmentProbationReqBody
}

func NewEnableDisableAssessmentProbationReqBuilder() *EnableDisableAssessmentProbationReqBuilder {
	builder := &EnableDisableAssessmentProbationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *EnableDisableAssessmentProbationReqBuilder) Body(body *EnableDisableAssessmentProbationReqBody) *EnableDisableAssessmentProbationReqBuilder {
	builder.body = body
	return builder
}

func (builder *EnableDisableAssessmentProbationReqBuilder) Build() *EnableDisableAssessmentProbationReq {
	req := &EnableDisableAssessmentProbationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type EnableDisableAssessmentProbationReqBody struct {
	Active *bool `json:"active,omitempty"` // 启用 / 停用状态。启用后可在试用期管理页面中可见试用期考核相关的字段。

	AppUrl *string `json:"app_url,omitempty"` // 试用期考核系统入口链接，当启用功能时该字段必填。
}

type EnableDisableAssessmentProbationReq struct {
	apiReq *larkcore.ApiReq
	Body   *EnableDisableAssessmentProbationReqBody `body:""`
}

type EnableDisableAssessmentProbationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *EnableDisableAssessmentProbationResp) Success() bool {
	return resp.Code == 0
}

type SearchProbationReqBodyBuilder struct {
	employmentIds     []string // 雇佣 ID 列表
	employmentIdsFlag bool

	departmentIds     []string // 部门 ID 列表
	departmentIdsFlag bool

	probationStartDateStart     string // 试用期开始日期 - 搜索范围开始，需要与搜索范围结束一同使用
	probationStartDateStartFlag bool

	probationStartDateEnd     string // 试用期开始日期 - 搜索范围结束
	probationStartDateEndFlag bool

	probationExpectedEndDateStart     string // 试用期预计结束日期 - 搜索范围开始，需要与搜索范围结束一同使用
	probationExpectedEndDateStartFlag bool

	probationExpectedEndDateEnd     string // 试用期预计结束日期 - 搜索范围结束
	probationExpectedEndDateEndFlag bool

	actualProbationEndDateStart     string // 试用期实际结束日期 - 搜索范围开始，需要与搜索范围结束一同使用
	actualProbationEndDateStartFlag bool

	actualProbationEndDateEnd     string // 试用期实际结束日期 - 搜索范围结束
	actualProbationEndDateEndFlag bool

	initiatingTimeStart     string // 转正发起日期 - 搜索范围开始，需要与搜索范围结束一同使用
	initiatingTimeStartFlag bool

	initiatingTimeEnd     string // 转正发起日期 - 搜索范围结束
	initiatingTimeEndFlag bool

	probationStatus     string // 试用期状态
	probationStatusFlag bool

	finalAssessmentResult     string // 试用期最终考核结果
	finalAssessmentResultFlag bool

	finalAssessmentGrade     string // 试用期最终考核等级
	finalAssessmentGradeFlag bool
}

func NewSearchProbationReqBodyBuilder() *SearchProbationReqBodyBuilder {
	builder := &SearchProbationReqBodyBuilder{}
	return builder
}

// 雇佣 ID 列表
//
//示例值：
func (builder *SearchProbationReqBodyBuilder) EmploymentIds(employmentIds []string) *SearchProbationReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 部门 ID 列表
//
//示例值：
func (builder *SearchProbationReqBodyBuilder) DepartmentIds(departmentIds []string) *SearchProbationReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 试用期开始日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-05-18
func (builder *SearchProbationReqBodyBuilder) ProbationStartDateStart(probationStartDateStart string) *SearchProbationReqBodyBuilder {
	builder.probationStartDateStart = probationStartDateStart
	builder.probationStartDateStartFlag = true
	return builder
}

// 试用期开始日期 - 搜索范围结束
//
//示例值：2022-05-20
func (builder *SearchProbationReqBodyBuilder) ProbationStartDateEnd(probationStartDateEnd string) *SearchProbationReqBodyBuilder {
	builder.probationStartDateEnd = probationStartDateEnd
	builder.probationStartDateEndFlag = true
	return builder
}

// 试用期预计结束日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-06-20
func (builder *SearchProbationReqBodyBuilder) ProbationExpectedEndDateStart(probationExpectedEndDateStart string) *SearchProbationReqBodyBuilder {
	builder.probationExpectedEndDateStart = probationExpectedEndDateStart
	builder.probationExpectedEndDateStartFlag = true
	return builder
}

// 试用期预计结束日期 - 搜索范围结束
//
//示例值：2022-07-20
func (builder *SearchProbationReqBodyBuilder) ProbationExpectedEndDateEnd(probationExpectedEndDateEnd string) *SearchProbationReqBodyBuilder {
	builder.probationExpectedEndDateEnd = probationExpectedEndDateEnd
	builder.probationExpectedEndDateEndFlag = true
	return builder
}

// 试用期实际结束日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-08-20
func (builder *SearchProbationReqBodyBuilder) ActualProbationEndDateStart(actualProbationEndDateStart string) *SearchProbationReqBodyBuilder {
	builder.actualProbationEndDateStart = actualProbationEndDateStart
	builder.actualProbationEndDateStartFlag = true
	return builder
}

// 试用期实际结束日期 - 搜索范围结束
//
//示例值：2022-09-20
func (builder *SearchProbationReqBodyBuilder) ActualProbationEndDateEnd(actualProbationEndDateEnd string) *SearchProbationReqBodyBuilder {
	builder.actualProbationEndDateEnd = actualProbationEndDateEnd
	builder.actualProbationEndDateEndFlag = true
	return builder
}

// 转正发起日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
//示例值：2022-10-20
func (builder *SearchProbationReqBodyBuilder) InitiatingTimeStart(initiatingTimeStart string) *SearchProbationReqBodyBuilder {
	builder.initiatingTimeStart = initiatingTimeStart
	builder.initiatingTimeStartFlag = true
	return builder
}

// 转正发起日期 - 搜索范围结束
//
//示例值：2022-11-20
func (builder *SearchProbationReqBodyBuilder) InitiatingTimeEnd(initiatingTimeEnd string) *SearchProbationReqBodyBuilder {
	builder.initiatingTimeEnd = initiatingTimeEnd
	builder.initiatingTimeEndFlag = true
	return builder
}

// 试用期状态
//
//示例值：approved
func (builder *SearchProbationReqBodyBuilder) ProbationStatus(probationStatus string) *SearchProbationReqBodyBuilder {
	builder.probationStatus = probationStatus
	builder.probationStatusFlag = true
	return builder
}

// 试用期最终考核结果
//
//示例值：approved
func (builder *SearchProbationReqBodyBuilder) FinalAssessmentResult(finalAssessmentResult string) *SearchProbationReqBodyBuilder {
	builder.finalAssessmentResult = finalAssessmentResult
	builder.finalAssessmentResultFlag = true
	return builder
}

// 试用期最终考核等级
//
//示例值：grade_a
func (builder *SearchProbationReqBodyBuilder) FinalAssessmentGrade(finalAssessmentGrade string) *SearchProbationReqBodyBuilder {
	builder.finalAssessmentGrade = finalAssessmentGrade
	builder.finalAssessmentGradeFlag = true
	return builder
}

func (builder *SearchProbationReqBodyBuilder) Build() *SearchProbationReqBody {
	req := &SearchProbationReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.probationStartDateStartFlag {
		req.ProbationStartDateStart = &builder.probationStartDateStart
	}
	if builder.probationStartDateEndFlag {
		req.ProbationStartDateEnd = &builder.probationStartDateEnd
	}
	if builder.probationExpectedEndDateStartFlag {
		req.ProbationExpectedEndDateStart = &builder.probationExpectedEndDateStart
	}
	if builder.probationExpectedEndDateEndFlag {
		req.ProbationExpectedEndDateEnd = &builder.probationExpectedEndDateEnd
	}
	if builder.actualProbationEndDateStartFlag {
		req.ActualProbationEndDateStart = &builder.actualProbationEndDateStart
	}
	if builder.actualProbationEndDateEndFlag {
		req.ActualProbationEndDateEnd = &builder.actualProbationEndDateEnd
	}
	if builder.initiatingTimeStartFlag {
		req.InitiatingTimeStart = &builder.initiatingTimeStart
	}
	if builder.initiatingTimeEndFlag {
		req.InitiatingTimeEnd = &builder.initiatingTimeEnd
	}
	if builder.probationStatusFlag {
		req.ProbationStatus = &builder.probationStatus
	}
	if builder.finalAssessmentResultFlag {
		req.FinalAssessmentResult = &builder.finalAssessmentResult
	}
	if builder.finalAssessmentGradeFlag {
		req.FinalAssessmentGrade = &builder.finalAssessmentGrade
	}
	return req
}

type SearchProbationPathReqBodyBuilder struct {
	employmentIds                     []string
	employmentIdsFlag                 bool
	departmentIds                     []string
	departmentIdsFlag                 bool
	probationStartDateStart           string
	probationStartDateStartFlag       bool
	probationStartDateEnd             string
	probationStartDateEndFlag         bool
	probationExpectedEndDateStart     string
	probationExpectedEndDateStartFlag bool
	probationExpectedEndDateEnd       string
	probationExpectedEndDateEndFlag   bool
	actualProbationEndDateStart       string
	actualProbationEndDateStartFlag   bool
	actualProbationEndDateEnd         string
	actualProbationEndDateEndFlag     bool
	initiatingTimeStart               string
	initiatingTimeStartFlag           bool
	initiatingTimeEnd                 string
	initiatingTimeEndFlag             bool
	probationStatus                   string
	probationStatusFlag               bool
	finalAssessmentResult             string
	finalAssessmentResultFlag         bool
	finalAssessmentGrade              string
	finalAssessmentGradeFlag          bool
}

func NewSearchProbationPathReqBodyBuilder() *SearchProbationPathReqBodyBuilder {
	builder := &SearchProbationPathReqBodyBuilder{}
	return builder
}

// 雇佣 ID 列表
//
// 示例值：
func (builder *SearchProbationPathReqBodyBuilder) EmploymentIds(employmentIds []string) *SearchProbationPathReqBodyBuilder {
	builder.employmentIds = employmentIds
	builder.employmentIdsFlag = true
	return builder
}

// 部门 ID 列表
//
// 示例值：
func (builder *SearchProbationPathReqBodyBuilder) DepartmentIds(departmentIds []string) *SearchProbationPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 试用期开始日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-05-18
func (builder *SearchProbationPathReqBodyBuilder) ProbationStartDateStart(probationStartDateStart string) *SearchProbationPathReqBodyBuilder {
	builder.probationStartDateStart = probationStartDateStart
	builder.probationStartDateStartFlag = true
	return builder
}

// 试用期开始日期 - 搜索范围结束
//
// 示例值：2022-05-20
func (builder *SearchProbationPathReqBodyBuilder) ProbationStartDateEnd(probationStartDateEnd string) *SearchProbationPathReqBodyBuilder {
	builder.probationStartDateEnd = probationStartDateEnd
	builder.probationStartDateEndFlag = true
	return builder
}

// 试用期预计结束日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-06-20
func (builder *SearchProbationPathReqBodyBuilder) ProbationExpectedEndDateStart(probationExpectedEndDateStart string) *SearchProbationPathReqBodyBuilder {
	builder.probationExpectedEndDateStart = probationExpectedEndDateStart
	builder.probationExpectedEndDateStartFlag = true
	return builder
}

// 试用期预计结束日期 - 搜索范围结束
//
// 示例值：2022-07-20
func (builder *SearchProbationPathReqBodyBuilder) ProbationExpectedEndDateEnd(probationExpectedEndDateEnd string) *SearchProbationPathReqBodyBuilder {
	builder.probationExpectedEndDateEnd = probationExpectedEndDateEnd
	builder.probationExpectedEndDateEndFlag = true
	return builder
}

// 试用期实际结束日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-08-20
func (builder *SearchProbationPathReqBodyBuilder) ActualProbationEndDateStart(actualProbationEndDateStart string) *SearchProbationPathReqBodyBuilder {
	builder.actualProbationEndDateStart = actualProbationEndDateStart
	builder.actualProbationEndDateStartFlag = true
	return builder
}

// 试用期实际结束日期 - 搜索范围结束
//
// 示例值：2022-09-20
func (builder *SearchProbationPathReqBodyBuilder) ActualProbationEndDateEnd(actualProbationEndDateEnd string) *SearchProbationPathReqBodyBuilder {
	builder.actualProbationEndDateEnd = actualProbationEndDateEnd
	builder.actualProbationEndDateEndFlag = true
	return builder
}

// 转正发起日期 - 搜索范围开始，需要与搜索范围结束一同使用
//
// 示例值：2022-10-20
func (builder *SearchProbationPathReqBodyBuilder) InitiatingTimeStart(initiatingTimeStart string) *SearchProbationPathReqBodyBuilder {
	builder.initiatingTimeStart = initiatingTimeStart
	builder.initiatingTimeStartFlag = true
	return builder
}

// 转正发起日期 - 搜索范围结束
//
// 示例值：2022-11-20
func (builder *SearchProbationPathReqBodyBuilder) InitiatingTimeEnd(initiatingTimeEnd string) *SearchProbationPathReqBodyBuilder {
	builder.initiatingTimeEnd = initiatingTimeEnd
	builder.initiatingTimeEndFlag = true
	return builder
}

// 试用期状态
//
// 示例值：approved
func (builder *SearchProbationPathReqBodyBuilder) ProbationStatus(probationStatus string) *SearchProbationPathReqBodyBuilder {
	builder.probationStatus = probationStatus
	builder.probationStatusFlag = true
	return builder
}

// 试用期最终考核结果
//
// 示例值：approved
func (builder *SearchProbationPathReqBodyBuilder) FinalAssessmentResult(finalAssessmentResult string) *SearchProbationPathReqBodyBuilder {
	builder.finalAssessmentResult = finalAssessmentResult
	builder.finalAssessmentResultFlag = true
	return builder
}

// 试用期最终考核等级
//
// 示例值：grade_a
func (builder *SearchProbationPathReqBodyBuilder) FinalAssessmentGrade(finalAssessmentGrade string) *SearchProbationPathReqBodyBuilder {
	builder.finalAssessmentGrade = finalAssessmentGrade
	builder.finalAssessmentGradeFlag = true
	return builder
}

func (builder *SearchProbationPathReqBodyBuilder) Build() (*SearchProbationReqBody, error) {
	req := &SearchProbationReqBody{}
	if builder.employmentIdsFlag {
		req.EmploymentIds = builder.employmentIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.probationStartDateStartFlag {
		req.ProbationStartDateStart = &builder.probationStartDateStart
	}
	if builder.probationStartDateEndFlag {
		req.ProbationStartDateEnd = &builder.probationStartDateEnd
	}
	if builder.probationExpectedEndDateStartFlag {
		req.ProbationExpectedEndDateStart = &builder.probationExpectedEndDateStart
	}
	if builder.probationExpectedEndDateEndFlag {
		req.ProbationExpectedEndDateEnd = &builder.probationExpectedEndDateEnd
	}
	if builder.actualProbationEndDateStartFlag {
		req.ActualProbationEndDateStart = &builder.actualProbationEndDateStart
	}
	if builder.actualProbationEndDateEndFlag {
		req.ActualProbationEndDateEnd = &builder.actualProbationEndDateEnd
	}
	if builder.initiatingTimeStartFlag {
		req.InitiatingTimeStart = &builder.initiatingTimeStart
	}
	if builder.initiatingTimeEndFlag {
		req.InitiatingTimeEnd = &builder.initiatingTimeEnd
	}
	if builder.probationStatusFlag {
		req.ProbationStatus = &builder.probationStatus
	}
	if builder.finalAssessmentResultFlag {
		req.FinalAssessmentResult = &builder.finalAssessmentResult
	}
	if builder.finalAssessmentGradeFlag {
		req.FinalAssessmentGrade = &builder.finalAssessmentGrade
	}
	return req, nil
}

type SearchProbationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchProbationReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewSearchProbationReqBuilder() *SearchProbationReqBuilder {
	builder := &SearchProbationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *SearchProbationReqBuilder) Limit(limit int) *SearchProbationReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小，最大 100
//
// 示例值：100
func (builder *SearchProbationReqBuilder) PageSize(pageSize int) *SearchProbationReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：6891251722631890445
func (builder *SearchProbationReqBuilder) PageToken(pageToken string) *SearchProbationReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SearchProbationReqBuilder) UserIdType(userIdType string) *SearchProbationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *SearchProbationReqBuilder) DepartmentIdType(departmentIdType string) *SearchProbationReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *SearchProbationReqBuilder) Body(body *SearchProbationReqBody) *SearchProbationReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchProbationReqBuilder) Build() *SearchProbationReq {
	req := &SearchProbationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchProbationReqBody struct {
	EmploymentIds []string `json:"employment_ids,omitempty"` // 雇佣 ID 列表

	DepartmentIds []string `json:"department_ids,omitempty"` // 部门 ID 列表

	ProbationStartDateStart *string `json:"probation_start_date_start,omitempty"` // 试用期开始日期 - 搜索范围开始，需要与搜索范围结束一同使用

	ProbationStartDateEnd *string `json:"probation_start_date_end,omitempty"` // 试用期开始日期 - 搜索范围结束

	ProbationExpectedEndDateStart *string `json:"probation_expected_end_date_start,omitempty"` // 试用期预计结束日期 - 搜索范围开始，需要与搜索范围结束一同使用

	ProbationExpectedEndDateEnd *string `json:"probation_expected_end_date_end,omitempty"` // 试用期预计结束日期 - 搜索范围结束

	ActualProbationEndDateStart *string `json:"actual_probation_end_date_start,omitempty"` // 试用期实际结束日期 - 搜索范围开始，需要与搜索范围结束一同使用

	ActualProbationEndDateEnd *string `json:"actual_probation_end_date_end,omitempty"` // 试用期实际结束日期 - 搜索范围结束

	InitiatingTimeStart *string `json:"initiating_time_start,omitempty"` // 转正发起日期 - 搜索范围开始，需要与搜索范围结束一同使用

	InitiatingTimeEnd *string `json:"initiating_time_end,omitempty"` // 转正发起日期 - 搜索范围结束

	ProbationStatus *string `json:"probation_status,omitempty"` // 试用期状态

	FinalAssessmentResult *string `json:"final_assessment_result,omitempty"` // 试用期最终考核结果

	FinalAssessmentGrade *string `json:"final_assessment_grade,omitempty"` // 试用期最终考核等级
}

type SearchProbationReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchProbationReqBody `body:""`
	Limit  int                     // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type SearchProbationRespData struct {
	Items []*ProbationInfo `json:"items,omitempty"` // 查询的试用期信息

	PageToken *string `json:"page_token,omitempty"` // 下一页页码

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type SearchProbationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchProbationRespData `json:"data"` // 业务数据
}

func (resp *SearchProbationResp) Success() bool {
	return resp.Code == 0
}

type SubmitProbationReqBodyBuilder struct {
	employmentId     string // 试用期人员的雇佣 ID
	employmentIdFlag bool

	conversionMode     int // 转正方式
	conversionModeFlag bool

	actualProbationEndDate     string // 实际结束日期，如果为空则默认填入试用期预计结束日期，填入日期需满足：试用期开始时间 <= 实际结束日期 <= 试用期预计结束日期
	actualProbationEndDateFlag bool

	submissionType     string // 发起方
	submissionTypeFlag bool

	initiatorId     string // 发起人 ID，当发起方为 HR 时填写，为其他发起方时该字段会自动计算
	initiatorIdFlag bool

	notes     string // 备注，当为直接转正时必填
	notesFlag bool

	selfReview     string // 员工自评
	selfReviewFlag bool

	customFields     []*CustomFieldData // 自定义字段（试用期中如果有附件自定义字段，当前不支持使用「上传文件」接口写入）
	customFieldsFlag bool
}

func NewSubmitProbationReqBodyBuilder() *SubmitProbationReqBodyBuilder {
	builder := &SubmitProbationReqBodyBuilder{}
	return builder
}

// 试用期人员的雇佣 ID
//
//示例值：7140964208476371111
func (builder *SubmitProbationReqBodyBuilder) EmploymentId(employmentId string) *SubmitProbationReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 转正方式
//
//示例值：1
func (builder *SubmitProbationReqBodyBuilder) ConversionMode(conversionMode int) *SubmitProbationReqBodyBuilder {
	builder.conversionMode = conversionMode
	builder.conversionModeFlag = true
	return builder
}

// 实际结束日期，如果为空则默认填入试用期预计结束日期，填入日期需满足：试用期开始时间 <= 实际结束日期 <= 试用期预计结束日期
//
//示例值：2022-05-20
func (builder *SubmitProbationReqBodyBuilder) ActualProbationEndDate(actualProbationEndDate string) *SubmitProbationReqBodyBuilder {
	builder.actualProbationEndDate = actualProbationEndDate
	builder.actualProbationEndDateFlag = true
	return builder
}

// 发起方
//
//示例值：system
func (builder *SubmitProbationReqBodyBuilder) SubmissionType(submissionType string) *SubmitProbationReqBodyBuilder {
	builder.submissionType = submissionType
	builder.submissionTypeFlag = true
	return builder
}

// 发起人 ID，当发起方为 HR 时填写，为其他发起方时该字段会自动计算
//
//示例值：7140964208476371111
func (builder *SubmitProbationReqBodyBuilder) InitiatorId(initiatorId string) *SubmitProbationReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 备注，当为直接转正时必填
//
//示例值：符合预期
func (builder *SubmitProbationReqBodyBuilder) Notes(notes string) *SubmitProbationReqBodyBuilder {
	builder.notes = notes
	builder.notesFlag = true
	return builder
}

// 员工自评
//
//示例值：符合预期
func (builder *SubmitProbationReqBodyBuilder) SelfReview(selfReview string) *SubmitProbationReqBodyBuilder {
	builder.selfReview = selfReview
	builder.selfReviewFlag = true
	return builder
}

// 自定义字段（试用期中如果有附件自定义字段，当前不支持使用「上传文件」接口写入）
//
//示例值：
func (builder *SubmitProbationReqBodyBuilder) CustomFields(customFields []*CustomFieldData) *SubmitProbationReqBodyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *SubmitProbationReqBodyBuilder) Build() *SubmitProbationReqBody {
	req := &SubmitProbationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.conversionModeFlag {
		req.ConversionMode = &builder.conversionMode
	}
	if builder.actualProbationEndDateFlag {
		req.ActualProbationEndDate = &builder.actualProbationEndDate
	}
	if builder.submissionTypeFlag {
		req.SubmissionType = &builder.submissionType
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.notesFlag {
		req.Notes = &builder.notes
	}
	if builder.selfReviewFlag {
		req.SelfReview = &builder.selfReview
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req
}

type SubmitProbationPathReqBodyBuilder struct {
	employmentId               string
	employmentIdFlag           bool
	conversionMode             int
	conversionModeFlag         bool
	actualProbationEndDate     string
	actualProbationEndDateFlag bool
	submissionType             string
	submissionTypeFlag         bool
	initiatorId                string
	initiatorIdFlag            bool
	notes                      string
	notesFlag                  bool
	selfReview                 string
	selfReviewFlag             bool
	customFields               []*CustomFieldData
	customFieldsFlag           bool
}

func NewSubmitProbationPathReqBodyBuilder() *SubmitProbationPathReqBodyBuilder {
	builder := &SubmitProbationPathReqBodyBuilder{}
	return builder
}

// 试用期人员的雇佣 ID
//
// 示例值：7140964208476371111
func (builder *SubmitProbationPathReqBodyBuilder) EmploymentId(employmentId string) *SubmitProbationPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 转正方式
//
// 示例值：1
func (builder *SubmitProbationPathReqBodyBuilder) ConversionMode(conversionMode int) *SubmitProbationPathReqBodyBuilder {
	builder.conversionMode = conversionMode
	builder.conversionModeFlag = true
	return builder
}

// 实际结束日期，如果为空则默认填入试用期预计结束日期，填入日期需满足：试用期开始时间 <= 实际结束日期 <= 试用期预计结束日期
//
// 示例值：2022-05-20
func (builder *SubmitProbationPathReqBodyBuilder) ActualProbationEndDate(actualProbationEndDate string) *SubmitProbationPathReqBodyBuilder {
	builder.actualProbationEndDate = actualProbationEndDate
	builder.actualProbationEndDateFlag = true
	return builder
}

// 发起方
//
// 示例值：system
func (builder *SubmitProbationPathReqBodyBuilder) SubmissionType(submissionType string) *SubmitProbationPathReqBodyBuilder {
	builder.submissionType = submissionType
	builder.submissionTypeFlag = true
	return builder
}

// 发起人 ID，当发起方为 HR 时填写，为其他发起方时该字段会自动计算
//
// 示例值：7140964208476371111
func (builder *SubmitProbationPathReqBodyBuilder) InitiatorId(initiatorId string) *SubmitProbationPathReqBodyBuilder {
	builder.initiatorId = initiatorId
	builder.initiatorIdFlag = true
	return builder
}

// 备注，当为直接转正时必填
//
// 示例值：符合预期
func (builder *SubmitProbationPathReqBodyBuilder) Notes(notes string) *SubmitProbationPathReqBodyBuilder {
	builder.notes = notes
	builder.notesFlag = true
	return builder
}

// 员工自评
//
// 示例值：符合预期
func (builder *SubmitProbationPathReqBodyBuilder) SelfReview(selfReview string) *SubmitProbationPathReqBodyBuilder {
	builder.selfReview = selfReview
	builder.selfReviewFlag = true
	return builder
}

// 自定义字段（试用期中如果有附件自定义字段，当前不支持使用「上传文件」接口写入）
//
// 示例值：
func (builder *SubmitProbationPathReqBodyBuilder) CustomFields(customFields []*CustomFieldData) *SubmitProbationPathReqBodyBuilder {
	builder.customFields = customFields
	builder.customFieldsFlag = true
	return builder
}

func (builder *SubmitProbationPathReqBodyBuilder) Build() (*SubmitProbationReqBody, error) {
	req := &SubmitProbationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.conversionModeFlag {
		req.ConversionMode = &builder.conversionMode
	}
	if builder.actualProbationEndDateFlag {
		req.ActualProbationEndDate = &builder.actualProbationEndDate
	}
	if builder.submissionTypeFlag {
		req.SubmissionType = &builder.submissionType
	}
	if builder.initiatorIdFlag {
		req.InitiatorId = &builder.initiatorId
	}
	if builder.notesFlag {
		req.Notes = &builder.notes
	}
	if builder.selfReviewFlag {
		req.SelfReview = &builder.selfReview
	}
	if builder.customFieldsFlag {
		req.CustomFields = builder.customFields
	}
	return req, nil
}

type SubmitProbationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SubmitProbationReqBody
}

func NewSubmitProbationReqBuilder() *SubmitProbationReqBuilder {
	builder := &SubmitProbationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：6822122262122064111
func (builder *SubmitProbationReqBuilder) ClientToken(clientToken string) *SubmitProbationReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *SubmitProbationReqBuilder) UserIdType(userIdType string) *SubmitProbationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *SubmitProbationReqBuilder) Body(body *SubmitProbationReqBody) *SubmitProbationReqBuilder {
	builder.body = body
	return builder
}

func (builder *SubmitProbationReqBuilder) Build() *SubmitProbationReq {
	req := &SubmitProbationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SubmitProbationReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 试用期人员的雇佣 ID

	ConversionMode *int `json:"conversion_mode,omitempty"` // 转正方式

	ActualProbationEndDate *string `json:"actual_probation_end_date,omitempty"` // 实际结束日期，如果为空则默认填入试用期预计结束日期，填入日期需满足：试用期开始时间 <= 实际结束日期 <= 试用期预计结束日期

	SubmissionType *string `json:"submission_type,omitempty"` // 发起方

	InitiatorId *string `json:"initiator_id,omitempty"` // 发起人 ID，当发起方为 HR 时填写，为其他发起方时该字段会自动计算

	Notes *string `json:"notes,omitempty"` // 备注，当为直接转正时必填

	SelfReview *string `json:"self_review,omitempty"` // 员工自评

	CustomFields []*CustomFieldData `json:"custom_fields,omitempty"` // 自定义字段（试用期中如果有附件自定义字段，当前不支持使用「上传文件」接口写入）
}

type SubmitProbationReq struct {
	apiReq *larkcore.ApiReq
	Body   *SubmitProbationReqBody `body:""`
}

type SubmitProbationRespData struct {
	ProbationInfo *ProbationInfoForSubmit `json:"probation_info,omitempty"` // 试用期信息
}

type SubmitProbationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SubmitProbationRespData `json:"data"` // 业务数据
}

func (resp *SubmitProbationResp) Success() bool {
	return resp.Code == 0
}

type WithdrawProbationReqBodyBuilder struct {
	employmentId     string // 试用期人员的雇佣 ID
	employmentIdFlag bool
}

func NewWithdrawProbationReqBodyBuilder() *WithdrawProbationReqBodyBuilder {
	builder := &WithdrawProbationReqBodyBuilder{}
	return builder
}

// 试用期人员的雇佣 ID
//
//示例值：7140964208476371111
func (builder *WithdrawProbationReqBodyBuilder) EmploymentId(employmentId string) *WithdrawProbationReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

func (builder *WithdrawProbationReqBodyBuilder) Build() *WithdrawProbationReqBody {
	req := &WithdrawProbationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	return req
}

type WithdrawProbationPathReqBodyBuilder struct {
	employmentId     string
	employmentIdFlag bool
}

func NewWithdrawProbationPathReqBodyBuilder() *WithdrawProbationPathReqBodyBuilder {
	builder := &WithdrawProbationPathReqBodyBuilder{}
	return builder
}

// 试用期人员的雇佣 ID
//
// 示例值：7140964208476371111
func (builder *WithdrawProbationPathReqBodyBuilder) EmploymentId(employmentId string) *WithdrawProbationPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

func (builder *WithdrawProbationPathReqBodyBuilder) Build() (*WithdrawProbationReqBody, error) {
	req := &WithdrawProbationReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	return req, nil
}

type WithdrawProbationReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *WithdrawProbationReqBody
}

func NewWithdrawProbationReqBuilder() *WithdrawProbationReqBuilder {
	builder := &WithdrawProbationReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：6822122262122064111
func (builder *WithdrawProbationReqBuilder) ClientToken(clientToken string) *WithdrawProbationReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *WithdrawProbationReqBuilder) UserIdType(userIdType string) *WithdrawProbationReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *WithdrawProbationReqBuilder) Body(body *WithdrawProbationReqBody) *WithdrawProbationReqBuilder {
	builder.body = body
	return builder
}

func (builder *WithdrawProbationReqBuilder) Build() *WithdrawProbationReq {
	req := &WithdrawProbationReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type WithdrawProbationReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 试用期人员的雇佣 ID
}

type WithdrawProbationReq struct {
	apiReq *larkcore.ApiReq
	Body   *WithdrawProbationReqBody `body:""`
}

type WithdrawProbationResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *WithdrawProbationResp) Success() bool {
	return resp.Code == 0
}

type CreateProbationAssessmentReqBodyBuilder struct {
	employmentId     string // 试用期人员的雇佣 ID
	employmentIdFlag bool

	assessments     []*AssessmentForCreate // 试用期考核结果列表
	assessmentsFlag bool
}

func NewCreateProbationAssessmentReqBodyBuilder() *CreateProbationAssessmentReqBodyBuilder {
	builder := &CreateProbationAssessmentReqBodyBuilder{}
	return builder
}

// 试用期人员的雇佣 ID
//
//示例值：7140964208476371111
func (builder *CreateProbationAssessmentReqBodyBuilder) EmploymentId(employmentId string) *CreateProbationAssessmentReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 试用期考核结果列表
//
//示例值：
func (builder *CreateProbationAssessmentReqBodyBuilder) Assessments(assessments []*AssessmentForCreate) *CreateProbationAssessmentReqBodyBuilder {
	builder.assessments = assessments
	builder.assessmentsFlag = true
	return builder
}

func (builder *CreateProbationAssessmentReqBodyBuilder) Build() *CreateProbationAssessmentReqBody {
	req := &CreateProbationAssessmentReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.assessmentsFlag {
		req.Assessments = builder.assessments
	}
	return req
}

type CreateProbationAssessmentPathReqBodyBuilder struct {
	employmentId     string
	employmentIdFlag bool
	assessments      []*AssessmentForCreate
	assessmentsFlag  bool
}

func NewCreateProbationAssessmentPathReqBodyBuilder() *CreateProbationAssessmentPathReqBodyBuilder {
	builder := &CreateProbationAssessmentPathReqBodyBuilder{}
	return builder
}

// 试用期人员的雇佣 ID
//
// 示例值：7140964208476371111
func (builder *CreateProbationAssessmentPathReqBodyBuilder) EmploymentId(employmentId string) *CreateProbationAssessmentPathReqBodyBuilder {
	builder.employmentId = employmentId
	builder.employmentIdFlag = true
	return builder
}

// 试用期考核结果列表
//
// 示例值：
func (builder *CreateProbationAssessmentPathReqBodyBuilder) Assessments(assessments []*AssessmentForCreate) *CreateProbationAssessmentPathReqBodyBuilder {
	builder.assessments = assessments
	builder.assessmentsFlag = true
	return builder
}

func (builder *CreateProbationAssessmentPathReqBodyBuilder) Build() (*CreateProbationAssessmentReqBody, error) {
	req := &CreateProbationAssessmentReqBody{}
	if builder.employmentIdFlag {
		req.EmploymentId = &builder.employmentId
	}
	if builder.assessmentsFlag {
		req.Assessments = builder.assessments
	}
	return req, nil
}

type CreateProbationAssessmentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateProbationAssessmentReqBody
}

func NewCreateProbationAssessmentReqBuilder() *CreateProbationAssessmentReqBuilder {
	builder := &CreateProbationAssessmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：6822122262122064111
func (builder *CreateProbationAssessmentReqBuilder) ClientToken(clientToken string) *CreateProbationAssessmentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *CreateProbationAssessmentReqBuilder) UserIdType(userIdType string) *CreateProbationAssessmentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *CreateProbationAssessmentReqBuilder) Body(body *CreateProbationAssessmentReqBody) *CreateProbationAssessmentReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateProbationAssessmentReqBuilder) Build() *CreateProbationAssessmentReq {
	req := &CreateProbationAssessmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateProbationAssessmentReqBody struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 试用期人员的雇佣 ID

	Assessments []*AssessmentForCreate `json:"assessments,omitempty"` // 试用期考核结果列表
}

type CreateProbationAssessmentReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateProbationAssessmentReqBody `body:""`
}

type CreateProbationAssessmentRespData struct {
	AssessmentIds []string `json:"assessment_ids,omitempty"` // 创建的试用期考核记录 ID 列表，有序返回
}

type CreateProbationAssessmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateProbationAssessmentRespData `json:"data"` // 业务数据
}

func (resp *CreateProbationAssessmentResp) Success() bool {
	return resp.Code == 0
}

type DeleteProbationAssessmentReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteProbationAssessmentReqBuilder() *DeleteProbationAssessmentReqBuilder {
	builder := &DeleteProbationAssessmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 考核结果 ID
//
// 示例值：7140964208476371331
func (builder *DeleteProbationAssessmentReqBuilder) AssessmentId(assessmentId string) *DeleteProbationAssessmentReqBuilder {
	builder.apiReq.PathParams.Set("assessment_id", fmt.Sprint(assessmentId))
	return builder
}

func (builder *DeleteProbationAssessmentReqBuilder) Build() *DeleteProbationAssessmentReq {
	req := &DeleteProbationAssessmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteProbationAssessmentReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteProbationAssessmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteProbationAssessmentResp) Success() bool {
	return resp.Code == 0
}

type PatchProbationAssessmentReqBuilder struct {
	apiReq              *larkcore.ApiReq
	assessmentForCreate *AssessmentForCreate
}

func NewPatchProbationAssessmentReqBuilder() *PatchProbationAssessmentReqBuilder {
	builder := &PatchProbationAssessmentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 考核结果 ID
//
// 示例值：7140964208476371331
func (builder *PatchProbationAssessmentReqBuilder) AssessmentId(assessmentId string) *PatchProbationAssessmentReqBuilder {
	builder.apiReq.PathParams.Set("assessment_id", fmt.Sprint(assessmentId))
	return builder
}

// 根据 client_token 是否一致来判断是否为同一请求
//
// 示例值：6822122262122064111
func (builder *PatchProbationAssessmentReqBuilder) ClientToken(clientToken string) *PatchProbationAssessmentReqBuilder {
	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
	return builder
}

//
func (builder *PatchProbationAssessmentReqBuilder) AssessmentForCreate(assessmentForCreate *AssessmentForCreate) *PatchProbationAssessmentReqBuilder {
	builder.assessmentForCreate = assessmentForCreate
	return builder
}

func (builder *PatchProbationAssessmentReqBuilder) Build() *PatchProbationAssessmentReq {
	req := &PatchProbationAssessmentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.assessmentForCreate
	return req
}

type PatchProbationAssessmentReq struct {
	apiReq              *larkcore.ApiReq
	AssessmentForCreate *AssessmentForCreate `body:""`
}

type PatchProbationAssessmentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchProbationAssessmentResp) Success() bool {
	return resp.Code == 0
}

type FlowVariableDataProcessReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewFlowVariableDataProcessReqBuilder() *FlowVariableDataProcessReqBuilder {
	builder := &FlowVariableDataProcessReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程实例id
//
// 示例值：7341373094948242956
func (builder *FlowVariableDataProcessReqBuilder) ProcessId(processId string) *FlowVariableDataProcessReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *FlowVariableDataProcessReqBuilder) UserIdType(userIdType string) *FlowVariableDataProcessReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *FlowVariableDataProcessReqBuilder) DepartmentIdType(departmentIdType string) *FlowVariableDataProcessReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

// 需要查询变量key
//
// 示例值：
func (builder *FlowVariableDataProcessReqBuilder) VariableKeys(variableKeys []string) *FlowVariableDataProcessReqBuilder {
	for _, v := range variableKeys {
		builder.apiReq.QueryParams.Add("variable_keys", fmt.Sprint(v))
	}
	return builder
}

func (builder *FlowVariableDataProcessReqBuilder) Build() *FlowVariableDataProcessReq {
	req := &FlowVariableDataProcessReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type FlowVariableDataProcessReq struct {
	apiReq *larkcore.ApiReq
}

type FlowVariableDataProcessRespData struct {
	FieldVariableValues []*FieldVariableValue `json:"field_variable_values,omitempty"` // 流程数据

	ProcessId *string `json:"process_id,omitempty"` // 流程实例id
}

type FlowVariableDataProcessResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *FlowVariableDataProcessRespData `json:"data"` // 业务数据
}

func (resp *FlowVariableDataProcessResp) Success() bool {
	return resp.Code == 0
}

type GetProcessReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetProcessReqBuilder() *GetProcessReqBuilder {
	builder := &GetProcessReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程ID
//
// 示例值：7278949005675988535
func (builder *GetProcessReqBuilder) ProcessId(processId string) *GetProcessReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *GetProcessReqBuilder) UserIdType(userIdType string) *GetProcessReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetProcessReqBuilder) Build() *GetProcessReq {
	req := &GetProcessReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetProcessReq struct {
	apiReq *larkcore.ApiReq
}

type GetProcessRespData struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程实例ID

	Status *int `json:"status,omitempty"` // 流程状态

	FlowTemplateId *string `json:"flow_template_id,omitempty"` // 业务类型ID

	FlowTemplateName *DataengineI18n `json:"flow_template_name,omitempty"` // 业务类型名称

	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义ID

	FlowDefinitionName *DataengineI18n `json:"flow_definition_name,omitempty"` // 流程定义名称

	InitiatorId *string `json:"initiator_id,omitempty"` // 流程发起人ID

	InitiatorName *DataengineI18n `json:"initiator_name,omitempty"` // 流程发起人姓名

	CreateTime *string `json:"create_time,omitempty"` // 流程发起时间，Unix毫秒时间戳

	CompleteTime *string `json:"complete_time,omitempty"` // 流程结束时间，Unix毫秒时间戳

	StartLinks *ProcessLink `json:"start_links,omitempty"` // 发起单据地址

	Abstracts []*ProcessAbstractItem `json:"abstracts,omitempty"` // 流程摘要，会随着流程流转发生变化

	Todos []*ProcessTodoItem `json:"todos,omitempty"` // 待办列表

	CcList []*ProcessCcItem `json:"cc_list,omitempty"` // 抄送列表

	DoneList []*ProcessDoneItem `json:"done_list,omitempty"` // 已办列表

	Properties *int `json:"properties,omitempty"` // 普通流程或撤销流程等

	SystemTodos []*ProcessSystemTodoItem `json:"system_todos,omitempty"` // 系统待办列表

	SystemDoneList []*ProcessSystemDoneItem `json:"system_done_list,omitempty"` // 系统已办列表

	CommentInfos []*ProcessCommentInfo `json:"comment_infos,omitempty"` // 评论列表

	OriginalProcessId *string `json:"original_process_id,omitempty"` // 更正流程原流程ID

	IsLastCompletedCorrectProcess *bool `json:"is_last_completed_correct_process,omitempty"` // 是否最新的「已完成」的更正流程

	ProcessName *DataengineI18n `json:"process_name,omitempty"` // 流程实例名称，取流程发起时的流程定义名称
}

type GetProcessResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetProcessRespData `json:"data"` // 业务数据
}

func (resp *GetProcessResp) Success() bool {
	return resp.Code == 0
}

type ListProcessReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListProcessReqBuilder() *ListProcessReqBuilder {
	builder := &ListProcessReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListProcessReqBuilder) Limit(limit int) *ListProcessReqBuilder {
	builder.limit = limit
	return builder
}

// 查询流程状态列表。
//
// 示例值：
func (builder *ListProcessReqBuilder) Statuses(statuses []int) *ListProcessReqBuilder {
	for _, v := range statuses {
		builder.apiReq.QueryParams.Add("statuses", fmt.Sprint(v))
	}
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：7278949005675988535
func (builder *ListProcessReqBuilder) PageToken(pageToken string) *ListProcessReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *ListProcessReqBuilder) PageSize(pageSize int) *ListProcessReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 查询开始时间（unix毫秒时间戳），闭区间，开始时间和结束时间跨度不能超过31天
//
// 示例值：1547654251506
func (builder *ListProcessReqBuilder) ModifyTimeFrom(modifyTimeFrom string) *ListProcessReqBuilder {
	builder.apiReq.QueryParams.Set("modify_time_from", fmt.Sprint(modifyTimeFrom))
	return builder
}

// 1. 任务查询结束时间，闭区间 2. 单位：ms。从1970年1月1日(UTC/GMT的午夜) 开始经过的毫秒数 3. 注意：开始时间和结束时间跨度不能超过31天 4. 示例值：1719549169735
//
// 示例值：1547654251506
func (builder *ListProcessReqBuilder) ModifyTimeTo(modifyTimeTo string) *ListProcessReqBuilder {
	builder.apiReq.QueryParams.Set("modify_time_to", fmt.Sprint(modifyTimeTo))
	return builder
}

// 流程定义ID
//
// 示例值：people_6961286846093788680_7081951411982077732
func (builder *ListProcessReqBuilder) FlowDefinitionId(flowDefinitionId string) *ListProcessReqBuilder {
	builder.apiReq.QueryParams.Set("flow_definition_id", fmt.Sprint(flowDefinitionId))
	return builder
}

func (builder *ListProcessReqBuilder) Build() *ListProcessReq {
	req := &ListProcessReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListProcessReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListProcessRespData struct {
	ProcessIds []string `json:"process_ids,omitempty"` // 流程实例ID列表

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项

	PageToken *string `json:"page_token,omitempty"` // 有更多项时的分页键
}

type ListProcessResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListProcessRespData `json:"data"` // 业务数据
}

func (resp *ListProcessResp) Success() bool {
	return resp.Code == 0
}

type UpdateProcessApproverReqBuilder struct {
	apiReq          *larkcore.ApiReq
	processApprover *ProcessApprover
}

func NewUpdateProcessApproverReqBuilder() *UpdateProcessApproverReqBuilder {
	builder := &UpdateProcessApproverReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程实例id
//
// 示例值：7328345170959681068
func (builder *UpdateProcessApproverReqBuilder) ProcessId(processId string) *UpdateProcessApproverReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 审批任务id
//
// 示例值：7328345235136726572
func (builder *UpdateProcessApproverReqBuilder) ApproverId(approverId string) *UpdateProcessApproverReqBuilder {
	builder.apiReq.PathParams.Set("approver_id", fmt.Sprint(approverId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *UpdateProcessApproverReqBuilder) UserIdType(userIdType string) *UpdateProcessApproverReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：open_department_id
func (builder *UpdateProcessApproverReqBuilder) DepartmentIdType(departmentIdType string) *UpdateProcessApproverReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

//
func (builder *UpdateProcessApproverReqBuilder) ProcessApprover(processApprover *ProcessApprover) *UpdateProcessApproverReqBuilder {
	builder.processApprover = processApprover
	return builder
}

func (builder *UpdateProcessApproverReqBuilder) Build() *UpdateProcessApproverReq {
	req := &UpdateProcessApproverReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.processApprover
	return req
}

type UpdateProcessApproverReq struct {
	apiReq          *larkcore.ApiReq
	ProcessApprover *ProcessApprover `body:""`
}

type UpdateProcessApproverRespData struct {
	Code *int `json:"code,omitempty"` // 错误码，非 0 表示失败

	Msg *string `json:"msg,omitempty"` // 错误描述
}

type UpdateProcessApproverResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *UpdateProcessApproverRespData `json:"data"` // 业务数据
}

func (resp *UpdateProcessApproverResp) Success() bool {
	return resp.Code == 0
}

type UpdateProcessExtraReqBuilder struct {
	apiReq       *larkcore.ApiReq
	processExtra *ProcessExtra
}

func NewUpdateProcessExtraReqBuilder() *UpdateProcessExtraReqBuilder {
	builder := &UpdateProcessExtraReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程实例id
//
// 示例值：7410664363763172908
func (builder *UpdateProcessExtraReqBuilder) ProcessId(processId string) *UpdateProcessExtraReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *UpdateProcessExtraReqBuilder) UserIdType(userIdType string) *UpdateProcessExtraReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *UpdateProcessExtraReqBuilder) ProcessExtra(processExtra *ProcessExtra) *UpdateProcessExtraReqBuilder {
	builder.processExtra = processExtra
	return builder
}

func (builder *UpdateProcessExtraReqBuilder) Build() *UpdateProcessExtraReq {
	req := &UpdateProcessExtraReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.processExtra
	return req
}

type UpdateProcessExtraReq struct {
	apiReq       *larkcore.ApiReq
	ProcessExtra *ProcessExtra `body:""`
}

type UpdateProcessExtraResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *UpdateProcessExtraResp) Success() bool {
	return resp.Code == 0
}

type GetProcessFormVariableDataReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetProcessFormVariableDataReqBuilder() *GetProcessFormVariableDataReqBuilder {
	builder := &GetProcessFormVariableDataReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程实例id
//
// 示例值：7341373094948242956
func (builder *GetProcessFormVariableDataReqBuilder) ProcessId(processId string) *GetProcessFormVariableDataReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *GetProcessFormVariableDataReqBuilder) UserIdType(userIdType string) *GetProcessFormVariableDataReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次调用中使用的部门 ID 类型
//
// 示例值：people_corehr_department_id
func (builder *GetProcessFormVariableDataReqBuilder) DepartmentIdType(departmentIdType string) *GetProcessFormVariableDataReqBuilder {
	builder.apiReq.QueryParams.Set("department_id_type", fmt.Sprint(departmentIdType))
	return builder
}

func (builder *GetProcessFormVariableDataReqBuilder) Build() *GetProcessFormVariableDataReq {
	req := &GetProcessFormVariableDataReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetProcessFormVariableDataReq struct {
	apiReq *larkcore.ApiReq
}

type GetProcessFormVariableDataRespData struct {
	FieldVariableValues []*FieldVariableValue `json:"field_variable_values,omitempty"` // 表单数据

	ProcessId *string `json:"process_id,omitempty"` // 流程实例id
}

type GetProcessFormVariableDataResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetProcessFormVariableDataRespData `json:"data"` // 业务数据
}

func (resp *GetProcessFormVariableDataResp) Success() bool {
	return resp.Code == 0
}

type UpdateProcessTransferReqBuilder struct {
	apiReq          *larkcore.ApiReq
	processTransfer *ProcessTransfer
}

func NewUpdateProcessTransferReqBuilder() *UpdateProcessTransferReqBuilder {
	builder := &UpdateProcessTransferReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程实例id
//
// 示例值：7410664363763172908
func (builder *UpdateProcessTransferReqBuilder) ProcessId(processId string) *UpdateProcessTransferReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *UpdateProcessTransferReqBuilder) UserIdType(userIdType string) *UpdateProcessTransferReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *UpdateProcessTransferReqBuilder) ProcessTransfer(processTransfer *ProcessTransfer) *UpdateProcessTransferReqBuilder {
	builder.processTransfer = processTransfer
	return builder
}

func (builder *UpdateProcessTransferReqBuilder) Build() *UpdateProcessTransferReq {
	req := &UpdateProcessTransferReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.processTransfer
	return req
}

type UpdateProcessTransferReq struct {
	apiReq          *larkcore.ApiReq
	ProcessTransfer *ProcessTransfer `body:""`
}

type UpdateProcessTransferResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *UpdateProcessTransferResp) Success() bool {
	return resp.Code == 0
}

type UpdateProcessRevokeReqBuilder struct {
	apiReq                   *larkcore.ApiReq
	processRevokeAndWithdraw *ProcessRevokeAndWithdraw
}

func NewUpdateProcessRevokeReqBuilder() *UpdateProcessRevokeReqBuilder {
	builder := &UpdateProcessRevokeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程实例id
//
// 示例值：7328345170959681068
func (builder *UpdateProcessRevokeReqBuilder) ProcessId(processId string) *UpdateProcessRevokeReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *UpdateProcessRevokeReqBuilder) UserIdType(userIdType string) *UpdateProcessRevokeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *UpdateProcessRevokeReqBuilder) ProcessRevokeAndWithdraw(processRevokeAndWithdraw *ProcessRevokeAndWithdraw) *UpdateProcessRevokeReqBuilder {
	builder.processRevokeAndWithdraw = processRevokeAndWithdraw
	return builder
}

func (builder *UpdateProcessRevokeReqBuilder) Build() *UpdateProcessRevokeReq {
	req := &UpdateProcessRevokeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.processRevokeAndWithdraw
	return req
}

type UpdateProcessRevokeReq struct {
	apiReq                   *larkcore.ApiReq
	ProcessRevokeAndWithdraw *ProcessRevokeAndWithdraw `body:""`
}

type UpdateProcessRevokeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *UpdateProcessRevokeResp) Success() bool {
	return resp.Code == 0
}

type UpdateProcessWithdrawReqBuilder struct {
	apiReq                   *larkcore.ApiReq
	processRevokeAndWithdraw *ProcessRevokeAndWithdraw
}

func NewUpdateProcessWithdrawReqBuilder() *UpdateProcessWithdrawReqBuilder {
	builder := &UpdateProcessWithdrawReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 流程实例id
//
// 示例值：7328345170959681068
func (builder *UpdateProcessWithdrawReqBuilder) ProcessId(processId string) *UpdateProcessWithdrawReqBuilder {
	builder.apiReq.PathParams.Set("process_id", fmt.Sprint(processId))
	return builder
}

// 用户 ID 类型
//
// 示例值：open_id
func (builder *UpdateProcessWithdrawReqBuilder) UserIdType(userIdType string) *UpdateProcessWithdrawReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *UpdateProcessWithdrawReqBuilder) ProcessRevokeAndWithdraw(processRevokeAndWithdraw *ProcessRevokeAndWithdraw) *UpdateProcessWithdrawReqBuilder {
	builder.processRevokeAndWithdraw = processRevokeAndWithdraw
	return builder
}

func (builder *UpdateProcessWithdrawReqBuilder) Build() *UpdateProcessWithdrawReq {
	req := &UpdateProcessWithdrawReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.processRevokeAndWithdraw
	return req
}

type UpdateProcessWithdrawReq struct {
	apiReq                   *larkcore.ApiReq
	ProcessRevokeAndWithdraw *ProcessRevokeAndWithdraw `body:""`
}

type UpdateProcessWithdrawResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *UpdateProcessWithdrawResp) Success() bool {
	return resp.Code == 0
}

type BatchDeleteReportDetailRowReqBuilder struct {
	apiReq          *larkcore.ApiReq
	reportDetailReq *ReportDetailReq
}

func NewBatchDeleteReportDetailRowReqBuilder() *BatchDeleteReportDetailRowReqBuilder {
	builder := &BatchDeleteReportDetailRowReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 批量删除填报行
func (builder *BatchDeleteReportDetailRowReqBuilder) ReportDetailReq(reportDetailReq *ReportDetailReq) *BatchDeleteReportDetailRowReqBuilder {
	builder.reportDetailReq = reportDetailReq
	return builder
}

func (builder *BatchDeleteReportDetailRowReqBuilder) Build() *BatchDeleteReportDetailRowReq {
	req := &BatchDeleteReportDetailRowReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.reportDetailReq
	return req
}

type BatchDeleteReportDetailRowReq struct {
	apiReq          *larkcore.ApiReq
	ReportDetailReq *ReportDetailReq `body:""`
}

type BatchDeleteReportDetailRowResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *BatchDeleteReportDetailRowResp) Success() bool {
	return resp.Code == 0
}

type BatchSaveReportDetailRowReqBuilder struct {
	apiReq          *larkcore.ApiReq
	reportDetailReq *ReportDetailReq
}

func NewBatchSaveReportDetailRowReqBuilder() *BatchSaveReportDetailRowReqBuilder {
	builder := &BatchSaveReportDetailRowReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 批量创建/更新填报行
func (builder *BatchSaveReportDetailRowReqBuilder) ReportDetailReq(reportDetailReq *ReportDetailReq) *BatchSaveReportDetailRowReqBuilder {
	builder.reportDetailReq = reportDetailReq
	return builder
}

func (builder *BatchSaveReportDetailRowReqBuilder) Build() *BatchSaveReportDetailRowReq {
	req := &BatchSaveReportDetailRowReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.reportDetailReq
	return req
}

type BatchSaveReportDetailRowReq struct {
	apiReq          *larkcore.ApiReq
	ReportDetailReq *ReportDetailReq `body:""`
}

type BatchSaveReportDetailRowResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *BatchSaveReportDetailRowResp) Success() bool {
	return resp.Code == 0
}

type DownloadSignatureFileReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDownloadSignatureFileReqBuilder() *DownloadSignatureFileReqBuilder {
	builder := &DownloadSignatureFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 电子签文件id
//
// 示例值：6891251722631890445
func (builder *DownloadSignatureFileReqBuilder) SignatureFileId(signatureFileId string) *DownloadSignatureFileReqBuilder {
	builder.apiReq.PathParams.Set("signature_file_id", fmt.Sprint(signatureFileId))
	return builder
}

func (builder *DownloadSignatureFileReqBuilder) Build() *DownloadSignatureFileReq {
	req := &DownloadSignatureFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DownloadSignatureFileReq struct {
	apiReq *larkcore.ApiReq
}

type DownloadSignatureFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	File     io.Reader `json:"-"`
	FileName string    `json:"-"`
}

func (resp *DownloadSignatureFileResp) Success() bool {
	return resp.Code == 0
}

func (resp *DownloadSignatureFileResp) WriteFile(fileName string) error {
	bs, err := ioutil.ReadAll(resp.File)
	if err != nil {
		return err
	}

	err = ioutil.WriteFile(fileName, bs, 0666)
	if err != nil {
		return err
	}
	return nil
}

type ListSignatureFileReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListSignatureFileReqBuilder() *ListSignatureFileReqBuilder {
	builder := &ListSignatureFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListSignatureFileReqBuilder) Limit(limit int) *ListSignatureFileReqBuilder {
	builder.limit = limit
	return builder
}

// 电子签文件id
//
// 示例值：6891251722631890445
func (builder *ListSignatureFileReqBuilder) SignatureFileId(signatureFileId string) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("signature_file_id", fmt.Sprint(signatureFileId))
	return builder
}

// 分页大小
//
// 示例值：
func (builder *ListSignatureFileReqBuilder) PageSize(pageSize int) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：
func (builder *ListSignatureFileReqBuilder) PageToken(pageToken string) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 电子签文件状态状态，多个状态之间为「或」的关系
//
// 示例值：sign_finished,terminated
func (builder *ListSignatureFileReqBuilder) States(states string) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("states", fmt.Sprint(states))
	return builder
}

// 更新时间早于等于某个时间点，按照东八区时区
//
// 示例值：2022-01-01 00:00:00
func (builder *ListSignatureFileReqBuilder) UpdateTimeStart(updateTimeStart string) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("update_time_start", fmt.Sprint(updateTimeStart))
	return builder
}

// 更新时间晚于等于某个时间点，按照东八区时区
//
// 示例值：2022-01-01 00:00:00
func (builder *ListSignatureFileReqBuilder) UpdateTimeEnd(updateTimeEnd string) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("update_time_end", fmt.Sprint(updateTimeEnd))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *ListSignatureFileReqBuilder) UserIdType(userIdType string) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 根据电子签模板id列表筛选电子签文件,返回的电子签文件使用的模板id在该list中
//
// 示例值：7282756156156560940,6282751234556561278
func (builder *ListSignatureFileReqBuilder) TemplateIds(templateIds string) *ListSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("template_ids", fmt.Sprint(templateIds))
	return builder
}

func (builder *ListSignatureFileReqBuilder) Build() *ListSignatureFileReq {
	req := &ListSignatureFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListSignatureFileReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListSignatureFileRespData struct {
	Items []*SignatureFile `json:"items,omitempty"` // 电子签文件信息

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type ListSignatureFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListSignatureFileRespData `json:"data"` // 业务数据
}

func (resp *ListSignatureFileResp) Success() bool {
	return resp.Code == 0
}

type ListByBizIdSignatureFileReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListByBizIdSignatureFileReqBuilder() *ListByBizIdSignatureFileReqBuilder {
	builder := &ListByBizIdSignatureFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 业务自定义流程ID
//
// 示例值：129b83f5-c023-4e85-b2c7-80ce777e57fd
func (builder *ListByBizIdSignatureFileReqBuilder) BizProcessId(bizProcessId string) *ListByBizIdSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("biz_process_id", fmt.Sprint(bizProcessId))
	return builder
}

// 业务类型，开放平台平应用可以传递"OpenAPI"
//
// 示例值：OpenAPI
func (builder *ListByBizIdSignatureFileReqBuilder) BizType(bizType string) *ListByBizIdSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("biz_type", fmt.Sprint(bizType))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *ListByBizIdSignatureFileReqBuilder) UserIdType(userIdType string) *ListByBizIdSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 是否需要签署链接
//
// 示例值：
func (builder *ListByBizIdSignatureFileReqBuilder) SelectSignUrl(selectSignUrl bool) *ListByBizIdSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("select_sign_url", fmt.Sprint(selectSignUrl))
	return builder
}

func (builder *ListByBizIdSignatureFileReqBuilder) Build() *ListByBizIdSignatureFileReq {
	req := &ListByBizIdSignatureFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListByBizIdSignatureFileReq struct {
	apiReq *larkcore.ApiReq
}

type ListByBizIdSignatureFileRespData struct {
	SignatureFiles []*SignatureFile `json:"signature_files,omitempty"` // 返回的流程关联的电子签文件列表

	BatchSignUrl *string `json:"batch_sign_url,omitempty"` // 批量签署链接
}

type ListByBizIdSignatureFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListByBizIdSignatureFileRespData `json:"data"` // 业务数据
}

func (resp *ListByBizIdSignatureFileResp) Success() bool {
	return resp.Code == 0
}

type QuerySignatureFileReqBodyBuilder struct {
	states     []string // 电子签文件状态状态列表，多个状态之间为「或」的关系
	statesFlag bool

	templateIds     []string // 电子签模板ID列表，返回的电子签文件使用的模板id在该list中
	templateIdsFlag bool
}

func NewQuerySignatureFileReqBodyBuilder() *QuerySignatureFileReqBodyBuilder {
	builder := &QuerySignatureFileReqBodyBuilder{}
	return builder
}

// 电子签文件状态状态列表，多个状态之间为「或」的关系
//
//示例值：
func (builder *QuerySignatureFileReqBodyBuilder) States(states []string) *QuerySignatureFileReqBodyBuilder {
	builder.states = states
	builder.statesFlag = true
	return builder
}

// 电子签模板ID列表，返回的电子签文件使用的模板id在该list中
//
//示例值：
func (builder *QuerySignatureFileReqBodyBuilder) TemplateIds(templateIds []string) *QuerySignatureFileReqBodyBuilder {
	builder.templateIds = templateIds
	builder.templateIdsFlag = true
	return builder
}

func (builder *QuerySignatureFileReqBodyBuilder) Build() *QuerySignatureFileReqBody {
	req := &QuerySignatureFileReqBody{}
	if builder.statesFlag {
		req.States = builder.states
	}
	if builder.templateIdsFlag {
		req.TemplateIds = builder.templateIds
	}
	return req
}

type QuerySignatureFilePathReqBodyBuilder struct {
	states          []string
	statesFlag      bool
	templateIds     []string
	templateIdsFlag bool
}

func NewQuerySignatureFilePathReqBodyBuilder() *QuerySignatureFilePathReqBodyBuilder {
	builder := &QuerySignatureFilePathReqBodyBuilder{}
	return builder
}

// 电子签文件状态状态列表，多个状态之间为「或」的关系
//
// 示例值：
func (builder *QuerySignatureFilePathReqBodyBuilder) States(states []string) *QuerySignatureFilePathReqBodyBuilder {
	builder.states = states
	builder.statesFlag = true
	return builder
}

// 电子签模板ID列表，返回的电子签文件使用的模板id在该list中
//
// 示例值：
func (builder *QuerySignatureFilePathReqBodyBuilder) TemplateIds(templateIds []string) *QuerySignatureFilePathReqBodyBuilder {
	builder.templateIds = templateIds
	builder.templateIdsFlag = true
	return builder
}

func (builder *QuerySignatureFilePathReqBodyBuilder) Build() (*QuerySignatureFileReqBody, error) {
	req := &QuerySignatureFileReqBody{}
	if builder.statesFlag {
		req.States = builder.states
	}
	if builder.templateIdsFlag {
		req.TemplateIds = builder.templateIds
	}
	return req, nil
}

type QuerySignatureFileReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QuerySignatureFileReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewQuerySignatureFileReqBuilder() *QuerySignatureFileReqBuilder {
	builder := &QuerySignatureFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *QuerySignatureFileReqBuilder) Limit(limit int) *QuerySignatureFileReqBuilder {
	builder.limit = limit
	return builder
}

// 电子签文件id
//
// 示例值：6891251722631890445
func (builder *QuerySignatureFileReqBuilder) SignatureFileId(signatureFileId string) *QuerySignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("signature_file_id", fmt.Sprint(signatureFileId))
	return builder
}

// 分页大小
//
// 示例值：
func (builder *QuerySignatureFileReqBuilder) PageSize(pageSize int) *QuerySignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：
func (builder *QuerySignatureFileReqBuilder) PageToken(pageToken string) *QuerySignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 更新时间早于等于某个时间点，按照东八区时区
//
// 示例值：2022-01-01 00:00:00
func (builder *QuerySignatureFileReqBuilder) UpdateTimeStart(updateTimeStart string) *QuerySignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("update_time_start", fmt.Sprint(updateTimeStart))
	return builder
}

// 更新时间晚于等于某个时间点，按照东八区时区
//
// 示例值：2022-01-01 00:00:00
func (builder *QuerySignatureFileReqBuilder) UpdateTimeEnd(updateTimeEnd string) *QuerySignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("update_time_end", fmt.Sprint(updateTimeEnd))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *QuerySignatureFileReqBuilder) UserIdType(userIdType string) *QuerySignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *QuerySignatureFileReqBuilder) Body(body *QuerySignatureFileReqBody) *QuerySignatureFileReqBuilder {
	builder.body = body
	return builder
}

func (builder *QuerySignatureFileReqBuilder) Build() *QuerySignatureFileReq {
	req := &QuerySignatureFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QuerySignatureFileReqBody struct {
	States []string `json:"states,omitempty"` // 电子签文件状态状态列表，多个状态之间为「或」的关系

	TemplateIds []string `json:"template_ids,omitempty"` // 电子签模板ID列表，返回的电子签文件使用的模板id在该list中
}

type QuerySignatureFileReq struct {
	apiReq *larkcore.ApiReq
	Body   *QuerySignatureFileReqBody `body:""`
	Limit  int                        // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type QuerySignatureFileRespData struct {
	Items []*SignatureFile `json:"items,omitempty"` // 电子签文件信息

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type QuerySignatureFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QuerySignatureFileRespData `json:"data"` // 业务数据
}

func (resp *QuerySignatureFileResp) Success() bool {
	return resp.Code == 0
}

type TerminateSignatureFileReqBodyBuilder struct {
	ids     []string // 欲终止的电子签文件id列表
	idsFlag bool

	operator     string // 操作人ID
	operatorFlag bool

	terminateReason     string // 终止原因
	terminateReasonFlag bool
}

func NewTerminateSignatureFileReqBodyBuilder() *TerminateSignatureFileReqBodyBuilder {
	builder := &TerminateSignatureFileReqBodyBuilder{}
	return builder
}

// 欲终止的电子签文件id列表
//
//示例值：
func (builder *TerminateSignatureFileReqBodyBuilder) Ids(ids []string) *TerminateSignatureFileReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// 操作人ID
//
//示例值：7386593105085988884
func (builder *TerminateSignatureFileReqBodyBuilder) Operator(operator string) *TerminateSignatureFileReqBodyBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 终止原因
//
//示例值：需要重新签署, 因此终止签署的文件
func (builder *TerminateSignatureFileReqBodyBuilder) TerminateReason(terminateReason string) *TerminateSignatureFileReqBodyBuilder {
	builder.terminateReason = terminateReason
	builder.terminateReasonFlag = true
	return builder
}

func (builder *TerminateSignatureFileReqBodyBuilder) Build() *TerminateSignatureFileReqBody {
	req := &TerminateSignatureFileReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.operatorFlag {
		req.Operator = &builder.operator
	}
	if builder.terminateReasonFlag {
		req.TerminateReason = &builder.terminateReason
	}
	return req
}

type TerminateSignatureFilePathReqBodyBuilder struct {
	ids                 []string
	idsFlag             bool
	operator            string
	operatorFlag        bool
	terminateReason     string
	terminateReasonFlag bool
}

func NewTerminateSignatureFilePathReqBodyBuilder() *TerminateSignatureFilePathReqBodyBuilder {
	builder := &TerminateSignatureFilePathReqBodyBuilder{}
	return builder
}

// 欲终止的电子签文件id列表
//
// 示例值：
func (builder *TerminateSignatureFilePathReqBodyBuilder) Ids(ids []string) *TerminateSignatureFilePathReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// 操作人ID
//
// 示例值：7386593105085988884
func (builder *TerminateSignatureFilePathReqBodyBuilder) Operator(operator string) *TerminateSignatureFilePathReqBodyBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 终止原因
//
// 示例值：需要重新签署, 因此终止签署的文件
func (builder *TerminateSignatureFilePathReqBodyBuilder) TerminateReason(terminateReason string) *TerminateSignatureFilePathReqBodyBuilder {
	builder.terminateReason = terminateReason
	builder.terminateReasonFlag = true
	return builder
}

func (builder *TerminateSignatureFilePathReqBodyBuilder) Build() (*TerminateSignatureFileReqBody, error) {
	req := &TerminateSignatureFileReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.operatorFlag {
		req.Operator = &builder.operator
	}
	if builder.terminateReasonFlag {
		req.TerminateReason = &builder.terminateReason
	}
	return req, nil
}

type TerminateSignatureFileReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *TerminateSignatureFileReqBody
}

func NewTerminateSignatureFileReqBuilder() *TerminateSignatureFileReqBuilder {
	builder := &TerminateSignatureFileReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *TerminateSignatureFileReqBuilder) UserIdType(userIdType string) *TerminateSignatureFileReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *TerminateSignatureFileReqBuilder) Body(body *TerminateSignatureFileReqBody) *TerminateSignatureFileReqBuilder {
	builder.body = body
	return builder
}

func (builder *TerminateSignatureFileReqBuilder) Build() *TerminateSignatureFileReq {
	req := &TerminateSignatureFileReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type TerminateSignatureFileReqBody struct {
	Ids []string `json:"ids,omitempty"` // 欲终止的电子签文件id列表

	Operator *string `json:"operator,omitempty"` // 操作人ID

	TerminateReason *string `json:"terminate_reason,omitempty"` // 终止原因
}

type TerminateSignatureFileReq struct {
	apiReq *larkcore.ApiReq
	Body   *TerminateSignatureFileReqBody `body:""`
}

type TerminateSignatureFileRespData struct {
	TotalCount *int `json:"total_count,omitempty"` // 欲终止的文件总数量

	SuccessCount *int `json:"success_count,omitempty"` // 成功总数量

	FailCount *int `json:"fail_count,omitempty"` // 失败总数量

	SuccessFileIdList []string `json:"success_file_id_list,omitempty"` // 终止成功的文件id列表

	FailFileIdAndReasons []*TerminateSignatureFailIdAndReason `json:"fail_file_id_and_reasons,omitempty"` // 终止失败的文件id和对应的原因列表
}

type TerminateSignatureFileResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *TerminateSignatureFileRespData `json:"data"` // 业务数据
}

func (resp *TerminateSignatureFileResp) Success() bool {
	return resp.Code == 0
}

type ListByFileIdSignatureNodeReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewListByFileIdSignatureNodeReqBuilder() *ListByFileIdSignatureNodeReqBuilder {
	builder := &ListByFileIdSignatureNodeReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 电子签文件id
//
// 示例值：7149088311624091180
func (builder *ListByFileIdSignatureNodeReqBuilder) FileId(fileId string) *ListByFileIdSignatureNodeReqBuilder {
	builder.apiReq.QueryParams.Set("file_id", fmt.Sprint(fileId))
	return builder
}

// 用户 ID 类型
//
// 示例值：people_corehr_id
func (builder *ListByFileIdSignatureNodeReqBuilder) UserIdType(userIdType string) *ListByFileIdSignatureNodeReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *ListByFileIdSignatureNodeReqBuilder) Build() *ListByFileIdSignatureNodeReq {
	req := &ListByFileIdSignatureNodeReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListByFileIdSignatureNodeReq struct {
	apiReq *larkcore.ApiReq
}

type ListByFileIdSignatureNodeRespData struct {
	SignatureNodes []*SignatureNode `json:"signature_nodes,omitempty"` // 返回的电子签节点列表
}

type ListByFileIdSignatureNodeResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListByFileIdSignatureNodeRespData `json:"data"` // 业务数据
}

func (resp *ListByFileIdSignatureNodeResp) Success() bool {
	return resp.Code == 0
}

type SearchSignatureTemplateReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewSearchSignatureTemplateReqBuilder() *SearchSignatureTemplateReqBuilder {
	builder := &SearchSignatureTemplateReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 电子签模板ids,用英文逗号分隔;如果不传 则返回所有模版信息（字节线上几百条）
//
// 示例值：1,2,3,4
func (builder *SearchSignatureTemplateReqBuilder) TemplateIds(templateIds string) *SearchSignatureTemplateReqBuilder {
	builder.apiReq.QueryParams.Set("template_ids", fmt.Sprint(templateIds))
	return builder
}

// 是否需要自定义字段,如-自定义签署方、合同变更前后公司等
//
// 示例值：
func (builder *SearchSignatureTemplateReqBuilder) SelectCustomField(selectCustomField bool) *SearchSignatureTemplateReqBuilder {
	builder.apiReq.QueryParams.Set("select_custom_field", fmt.Sprint(selectCustomField))
	return builder
}

func (builder *SearchSignatureTemplateReqBuilder) Build() *SearchSignatureTemplateReq {
	req := &SearchSignatureTemplateReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type SearchSignatureTemplateReq struct {
	apiReq *larkcore.ApiReq
}

type SearchSignatureTemplateRespData struct {
	SignatureTemplates []*SignatureTemplate `json:"signature_templates,omitempty"` // 返回的电子签模板list
}

type SearchSignatureTemplateResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchSignatureTemplateRespData `json:"data"` // 业务数据
}

func (resp *SearchSignatureTemplateResp) Success() bool {
	return resp.Code == 0
}

type ListSignatureTemplateInfoWithThumbnailReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListSignatureTemplateInfoWithThumbnailReqBuilder() *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder := &ListSignatureTemplateInfoWithThumbnailReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) Limit(limit int) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) PageSize(pageSize int) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求可以不填，表示从头（0）开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) PageToken(pageToken string) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 模版名
//
// 示例值：入职电子签模板
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) Name(name string) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("name", fmt.Sprint(name))
	return builder
}

// 模板类别;多个类别之间使用英文,分隔
//
// 示例值：contract_agreement,certificate
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) CategoryApiname(categoryApiname string) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("category_apiname", fmt.Sprint(categoryApiname))
	return builder
}

// 模板用途;多个用途之间使用英文,分隔
//
// 示例值：dispatch,general
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) UsageApiname(usageApiname string) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("usage_apiname", fmt.Sprint(usageApiname))
	return builder
}

// 是否停用
//
// 示例值：false
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) Active(active bool) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("active", fmt.Sprint(active))
	return builder
}

// 是否需要模板适用区域信息;默认false，不会返回region_info信息
//
// 示例值：false
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) NeedRegionInfo(needRegionInfo bool) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("need_region_info", fmt.Sprint(needRegionInfo))
	return builder
}

// 电子签适用范围
//
// 示例值：
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) ApplicabilityApinames(applicabilityApinames []string) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	for _, v := range applicabilityApinames {
		builder.apiReq.QueryParams.Add("applicability_apinames", fmt.Sprint(v))
	}
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) UserIdType(userIdType string) *ListSignatureTemplateInfoWithThumbnailReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *ListSignatureTemplateInfoWithThumbnailReqBuilder) Build() *ListSignatureTemplateInfoWithThumbnailReq {
	req := &ListSignatureTemplateInfoWithThumbnailReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListSignatureTemplateInfoWithThumbnailReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListSignatureTemplateInfoWithThumbnailRespData struct {
	Items []*SignatureTemplateInfoWithThumbnail `json:"items,omitempty"` // 电子签模板缩略图列表

	PageToken *int `json:"page_token,omitempty"` // 查询偏移量；下次查询可以从page_token开始查询

	Count *int `json:"count,omitempty"` // 数据总数
}

type ListSignatureTemplateInfoWithThumbnailResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListSignatureTemplateInfoWithThumbnailRespData `json:"data"` // 业务数据
}

func (resp *ListSignatureTemplateInfoWithThumbnailResp) Success() bool {
	return resp.Code == 0
}

type ListWorkforcePlanReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListWorkforcePlanReqBuilder() *ListWorkforcePlanReqBuilder {
	builder := &ListWorkforcePlanReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 查询数量
//
// 示例值：1
func (builder *ListWorkforcePlanReqBuilder) Limit(limit int) *ListWorkforcePlanReqBuilder {
	builder.apiReq.QueryParams.Set("limit", fmt.Sprint(limit))
	return builder
}

// 跳过数量
//
// 示例值：1
func (builder *ListWorkforcePlanReqBuilder) Offset(offset int) *ListWorkforcePlanReqBuilder {
	builder.apiReq.QueryParams.Set("offset", fmt.Sprint(offset))
	return builder
}

// 是否获取所有编制规划方案，true 所有编制规划方案列表，false 为仅获取当前生效的编制规划方案，默认为 false示例值：false
//
// 示例值：
func (builder *ListWorkforcePlanReqBuilder) GetAllPlan(getAllPlan bool) *ListWorkforcePlanReqBuilder {
	builder.apiReq.QueryParams.Set("get_all_plan", fmt.Sprint(getAllPlan))
	return builder
}

// 是否只获取已启用的方案，true 获取已启用编制规划方案，false 获取所有编制规划方案，默认为 true示例值：true
//
// 示例值：
func (builder *ListWorkforcePlanReqBuilder) Active(active bool) *ListWorkforcePlanReqBuilder {
	builder.apiReq.QueryParams.Set("active", fmt.Sprint(active))
	return builder
}

// 分页标识
//
// 示例值：34523459
func (builder *ListWorkforcePlanReqBuilder) PageToken(pageToken string) *ListWorkforcePlanReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 每页数量
//
// 示例值：100
func (builder *ListWorkforcePlanReqBuilder) PageSize(pageSize int) *ListWorkforcePlanReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListWorkforcePlanReqBuilder) Build() *ListWorkforcePlanReq {
	req := &ListWorkforcePlanReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListWorkforcePlanReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListWorkforcePlanRespData struct {
	Items []*WorkforcePlan `json:"items,omitempty"` // 方案列表

	Total *int `json:"total,omitempty"` // 方案总数

	PageToken *string `json:"page_token,omitempty"` // 分页标识

	HasMore *bool `json:"has_more,omitempty"` // 是否有下一页
}

type ListWorkforcePlanResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListWorkforcePlanRespData `json:"data"` // 业务数据
}

func (resp *ListWorkforcePlanResp) Success() bool {
	return resp.Code == 0
}

type BatchWorkforcePlanDetailReqBodyBuilder struct {
	workforcePlanId     string // 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）
	workforcePlanIdFlag bool

	isCentralizedReportingProject     bool // 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。
	isCentralizedReportingProjectFlag bool

	centralizedReportingProjectId     string // 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）
	centralizedReportingProjectIdFlag bool

	departmentIds     []string // 部门 ID 列表，枚举值及详细信息可通过查询单个部门接口查询获得
	departmentIdsFlag bool

	employeeTypeIds     []string // 人员类型 ID 列表，枚举值及详细信息可通过查询单个人员类型接口查询获得
	employeeTypeIdsFlag bool

	workLocationIds     []string // 工作地点 ID 列表，枚举值及详细信息可通过查询单个地点接口查询获得
	workLocationIdsFlag bool

	jobFamilyIds     []string // 序列 ID 列表，枚举值及详细信息可通过查询单个序列接口查询获得
	jobFamilyIdsFlag bool

	jobLevelIds     []string // 职级 ID 列表，枚举值及详细信息可通过查询单个职级接口查询获得
	jobLevelIdsFlag bool

	jobIds     []string // 职务 ID 列表，枚举值及详细信息可通过查询单个职务接口查询获得
	jobIdsFlag bool

	costCenterIds     []string // 成本中心 ID 列表，可以通过搜索成本中心信息接口获取对应的成本中心信息
	costCenterIdsFlag bool

	includeMissingDimensionRows     bool // 是否包含缺维度明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false
	includeMissingDimensionRowsFlag bool
}

func NewBatchWorkforcePlanDetailReqBodyBuilder() *BatchWorkforcePlanDetailReqBodyBuilder {
	builder := &BatchWorkforcePlanDetailReqBodyBuilder{}
	return builder
}

// 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）
//
//示例值：781234834512
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) WorkforcePlanId(workforcePlanId string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.workforcePlanId = workforcePlanId
	builder.workforcePlanIdFlag = true
	return builder
}

// 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。
//
//示例值：false
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) IsCentralizedReportingProject(isCentralizedReportingProject bool) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.isCentralizedReportingProject = isCentralizedReportingProject
	builder.isCentralizedReportingProjectFlag = true
	return builder
}

// 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）
//
//示例值：7140964208476371111
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) CentralizedReportingProjectId(centralizedReportingProjectId string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.centralizedReportingProjectId = centralizedReportingProjectId
	builder.centralizedReportingProjectIdFlag = true
	return builder
}

// 部门 ID 列表，枚举值及详细信息可通过查询单个部门接口查询获得
//
//示例值：
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) DepartmentIds(departmentIds []string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 人员类型 ID 列表，枚举值及详细信息可通过查询单个人员类型接口查询获得
//
//示例值：
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 工作地点 ID 列表，枚举值及详细信息可通过查询单个地点接口查询获得
//
//示例值：
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) WorkLocationIds(workLocationIds []string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 序列 ID 列表，枚举值及详细信息可通过查询单个序列接口查询获得
//
//示例值：
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级 ID 列表，枚举值及详细信息可通过查询单个职级接口查询获得
//
//示例值：
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) JobLevelIds(jobLevelIds []string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 职务 ID 列表，枚举值及详细信息可通过查询单个职务接口查询获得
//
//示例值：
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) JobIds(jobIds []string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.jobIds = jobIds
	builder.jobIdsFlag = true
	return builder
}

// 成本中心 ID 列表，可以通过搜索成本中心信息接口获取对应的成本中心信息
//
//示例值：
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) CostCenterIds(costCenterIds []string) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.costCenterIds = costCenterIds
	builder.costCenterIdsFlag = true
	return builder
}

// 是否包含缺维度明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false
//
//示例值：false
func (builder *BatchWorkforcePlanDetailReqBodyBuilder) IncludeMissingDimensionRows(includeMissingDimensionRows bool) *BatchWorkforcePlanDetailReqBodyBuilder {
	builder.includeMissingDimensionRows = includeMissingDimensionRows
	builder.includeMissingDimensionRowsFlag = true
	return builder
}

func (builder *BatchWorkforcePlanDetailReqBodyBuilder) Build() *BatchWorkforcePlanDetailReqBody {
	req := &BatchWorkforcePlanDetailReqBody{}
	if builder.workforcePlanIdFlag {
		req.WorkforcePlanId = &builder.workforcePlanId
	}
	if builder.isCentralizedReportingProjectFlag {
		req.IsCentralizedReportingProject = &builder.isCentralizedReportingProject
	}
	if builder.centralizedReportingProjectIdFlag {
		req.CentralizedReportingProjectId = &builder.centralizedReportingProjectId
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.jobIdsFlag {
		req.JobIds = builder.jobIds
	}
	if builder.costCenterIdsFlag {
		req.CostCenterIds = builder.costCenterIds
	}
	if builder.includeMissingDimensionRowsFlag {
		req.IncludeMissingDimensionRows = &builder.includeMissingDimensionRows
	}
	return req
}

type BatchWorkforcePlanDetailPathReqBodyBuilder struct {
	workforcePlanId                   string
	workforcePlanIdFlag               bool
	isCentralizedReportingProject     bool
	isCentralizedReportingProjectFlag bool
	centralizedReportingProjectId     string
	centralizedReportingProjectIdFlag bool
	departmentIds                     []string
	departmentIdsFlag                 bool
	employeeTypeIds                   []string
	employeeTypeIdsFlag               bool
	workLocationIds                   []string
	workLocationIdsFlag               bool
	jobFamilyIds                      []string
	jobFamilyIdsFlag                  bool
	jobLevelIds                       []string
	jobLevelIdsFlag                   bool
	jobIds                            []string
	jobIdsFlag                        bool
	costCenterIds                     []string
	costCenterIdsFlag                 bool
	includeMissingDimensionRows       bool
	includeMissingDimensionRowsFlag   bool
}

func NewBatchWorkforcePlanDetailPathReqBodyBuilder() *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder := &BatchWorkforcePlanDetailPathReqBodyBuilder{}
	return builder
}

// 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）
//
// 示例值：781234834512
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) WorkforcePlanId(workforcePlanId string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.workforcePlanId = workforcePlanId
	builder.workforcePlanIdFlag = true
	return builder
}

// 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。
//
// 示例值：false
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) IsCentralizedReportingProject(isCentralizedReportingProject bool) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.isCentralizedReportingProject = isCentralizedReportingProject
	builder.isCentralizedReportingProjectFlag = true
	return builder
}

// 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）
//
// 示例值：7140964208476371111
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) CentralizedReportingProjectId(centralizedReportingProjectId string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.centralizedReportingProjectId = centralizedReportingProjectId
	builder.centralizedReportingProjectIdFlag = true
	return builder
}

// 部门 ID 列表，枚举值及详细信息可通过查询单个部门接口查询获得
//
// 示例值：
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) DepartmentIds(departmentIds []string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 人员类型 ID 列表，枚举值及详细信息可通过查询单个人员类型接口查询获得
//
// 示例值：
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 工作地点 ID 列表，枚举值及详细信息可通过查询单个地点接口查询获得
//
// 示例值：
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) WorkLocationIds(workLocationIds []string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 序列 ID 列表，枚举值及详细信息可通过查询单个序列接口查询获得
//
// 示例值：
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级 ID 列表，枚举值及详细信息可通过查询单个职级接口查询获得
//
// 示例值：
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) JobLevelIds(jobLevelIds []string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 职务 ID 列表，枚举值及详细信息可通过查询单个职务接口查询获得
//
// 示例值：
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) JobIds(jobIds []string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.jobIds = jobIds
	builder.jobIdsFlag = true
	return builder
}

// 成本中心 ID 列表，可以通过搜索成本中心信息接口获取对应的成本中心信息
//
// 示例值：
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) CostCenterIds(costCenterIds []string) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.costCenterIds = costCenterIds
	builder.costCenterIdsFlag = true
	return builder
}

// 是否包含缺维度明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false
//
// 示例值：false
func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) IncludeMissingDimensionRows(includeMissingDimensionRows bool) *BatchWorkforcePlanDetailPathReqBodyBuilder {
	builder.includeMissingDimensionRows = includeMissingDimensionRows
	builder.includeMissingDimensionRowsFlag = true
	return builder
}

func (builder *BatchWorkforcePlanDetailPathReqBodyBuilder) Build() (*BatchWorkforcePlanDetailReqBody, error) {
	req := &BatchWorkforcePlanDetailReqBody{}
	if builder.workforcePlanIdFlag {
		req.WorkforcePlanId = &builder.workforcePlanId
	}
	if builder.isCentralizedReportingProjectFlag {
		req.IsCentralizedReportingProject = &builder.isCentralizedReportingProject
	}
	if builder.centralizedReportingProjectIdFlag {
		req.CentralizedReportingProjectId = &builder.centralizedReportingProjectId
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.jobIdsFlag {
		req.JobIds = builder.jobIds
	}
	if builder.costCenterIdsFlag {
		req.CostCenterIds = builder.costCenterIds
	}
	if builder.includeMissingDimensionRowsFlag {
		req.IncludeMissingDimensionRows = &builder.includeMissingDimensionRows
	}
	return req, nil
}

type BatchWorkforcePlanDetailReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchWorkforcePlanDetailReqBody
}

func NewBatchWorkforcePlanDetailReqBuilder() *BatchWorkforcePlanDetailReqBuilder {
	builder := &BatchWorkforcePlanDetailReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：["123456"]
func (builder *BatchWorkforcePlanDetailReqBuilder) PageToken(pageToken string) *BatchWorkforcePlanDetailReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *BatchWorkforcePlanDetailReqBuilder) PageSize(pageSize int) *BatchWorkforcePlanDetailReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

//
func (builder *BatchWorkforcePlanDetailReqBuilder) Body(body *BatchWorkforcePlanDetailReqBody) *BatchWorkforcePlanDetailReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchWorkforcePlanDetailReqBuilder) Build() *BatchWorkforcePlanDetailReq {
	req := &BatchWorkforcePlanDetailReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchWorkforcePlanDetailReqBody struct {
	WorkforcePlanId *string `json:"workforce_plan_id,omitempty"` // 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）

	IsCentralizedReportingProject *bool `json:"is_centralized_reporting_project,omitempty"` // 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。

	CentralizedReportingProjectId *string `json:"centralized_reporting_project_id,omitempty"` // 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）

	DepartmentIds []string `json:"department_ids,omitempty"` // 部门 ID 列表，枚举值及详细信息可通过查询单个部门接口查询获得

	EmployeeTypeIds []string `json:"employee_type_ids,omitempty"` // 人员类型 ID 列表，枚举值及详细信息可通过查询单个人员类型接口查询获得

	WorkLocationIds []string `json:"work_location_ids,omitempty"` // 工作地点 ID 列表，枚举值及详细信息可通过查询单个地点接口查询获得

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列 ID 列表，枚举值及详细信息可通过查询单个序列接口查询获得

	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级 ID 列表，枚举值及详细信息可通过查询单个职级接口查询获得

	JobIds []string `json:"job_ids,omitempty"` // 职务 ID 列表，枚举值及详细信息可通过查询单个职务接口查询获得

	CostCenterIds []string `json:"cost_center_ids,omitempty"` // 成本中心 ID 列表，可以通过搜索成本中心信息接口获取对应的成本中心信息

	IncludeMissingDimensionRows *bool `json:"include_missing_dimension_rows,omitempty"` // 是否包含缺维度明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false
}

type BatchWorkforcePlanDetailReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchWorkforcePlanDetailReqBody `body:""`
}

type BatchWorkforcePlanDetailRespData struct {
	WorkforcePlanId *string `json:"workforce_plan_id,omitempty"` // 编制规划方案 ID

	CentralizedReportingProjectId *string `json:"centralized_reporting_project_id,omitempty"` // 集中填报项目 ID

	Items []*WorkforcePlanDetail `json:"items,omitempty"` // 编制规划明细信息

	PageToken *string `json:"page_token,omitempty"` // 分页标识

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type BatchWorkforcePlanDetailResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchWorkforcePlanDetailRespData `json:"data"` // 业务数据
}

func (resp *BatchWorkforcePlanDetailResp) Success() bool {
	return resp.Code == 0
}

type BatchV2WorkforcePlanDetailReqBodyBuilder struct {
	workforcePlanId     string // 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）
	workforcePlanIdFlag bool

	isCentralizedReportingProject     bool // 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。
	isCentralizedReportingProjectFlag bool

	centralizedReportingProjectId     string // 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）
	centralizedReportingProjectIdFlag bool

	dimensionIdInDatas     []*DimensionIdInData // 维度筛选
	dimensionIdInDatasFlag bool

	includeMissingDimensionRows     bool // 是否包含缺维度的明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false
	includeMissingDimensionRowsFlag bool

	filterAllZeroValueRows     bool // 是否过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，true为过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，false为不过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，默认为 false
	filterAllZeroValueRowsFlag bool
}

func NewBatchV2WorkforcePlanDetailReqBodyBuilder() *BatchV2WorkforcePlanDetailReqBodyBuilder {
	builder := &BatchV2WorkforcePlanDetailReqBodyBuilder{}
	return builder
}

// 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）
//
//示例值：781234834512
func (builder *BatchV2WorkforcePlanDetailReqBodyBuilder) WorkforcePlanId(workforcePlanId string) *BatchV2WorkforcePlanDetailReqBodyBuilder {
	builder.workforcePlanId = workforcePlanId
	builder.workforcePlanIdFlag = true
	return builder
}

// 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。
//
//示例值：false
func (builder *BatchV2WorkforcePlanDetailReqBodyBuilder) IsCentralizedReportingProject(isCentralizedReportingProject bool) *BatchV2WorkforcePlanDetailReqBodyBuilder {
	builder.isCentralizedReportingProject = isCentralizedReportingProject
	builder.isCentralizedReportingProjectFlag = true
	return builder
}

// 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）
//
//示例值：7140964208476371111
func (builder *BatchV2WorkforcePlanDetailReqBodyBuilder) CentralizedReportingProjectId(centralizedReportingProjectId string) *BatchV2WorkforcePlanDetailReqBodyBuilder {
	builder.centralizedReportingProjectId = centralizedReportingProjectId
	builder.centralizedReportingProjectIdFlag = true
	return builder
}

// 维度筛选
//
//示例值：
func (builder *BatchV2WorkforcePlanDetailReqBodyBuilder) DimensionIdInDatas(dimensionIdInDatas []*DimensionIdInData) *BatchV2WorkforcePlanDetailReqBodyBuilder {
	builder.dimensionIdInDatas = dimensionIdInDatas
	builder.dimensionIdInDatasFlag = true
	return builder
}

// 是否包含缺维度的明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false
//
//示例值：false
func (builder *BatchV2WorkforcePlanDetailReqBodyBuilder) IncludeMissingDimensionRows(includeMissingDimensionRows bool) *BatchV2WorkforcePlanDetailReqBodyBuilder {
	builder.includeMissingDimensionRows = includeMissingDimensionRows
	builder.includeMissingDimensionRowsFlag = true
	return builder
}

// 是否过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，true为过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，false为不过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，默认为 false
//
//示例值：false
func (builder *BatchV2WorkforcePlanDetailReqBodyBuilder) FilterAllZeroValueRows(filterAllZeroValueRows bool) *BatchV2WorkforcePlanDetailReqBodyBuilder {
	builder.filterAllZeroValueRows = filterAllZeroValueRows
	builder.filterAllZeroValueRowsFlag = true
	return builder
}

func (builder *BatchV2WorkforcePlanDetailReqBodyBuilder) Build() *BatchV2WorkforcePlanDetailReqBody {
	req := &BatchV2WorkforcePlanDetailReqBody{}
	if builder.workforcePlanIdFlag {
		req.WorkforcePlanId = &builder.workforcePlanId
	}
	if builder.isCentralizedReportingProjectFlag {
		req.IsCentralizedReportingProject = &builder.isCentralizedReportingProject
	}
	if builder.centralizedReportingProjectIdFlag {
		req.CentralizedReportingProjectId = &builder.centralizedReportingProjectId
	}
	if builder.dimensionIdInDatasFlag {
		req.DimensionIdInDatas = builder.dimensionIdInDatas
	}
	if builder.includeMissingDimensionRowsFlag {
		req.IncludeMissingDimensionRows = &builder.includeMissingDimensionRows
	}
	if builder.filterAllZeroValueRowsFlag {
		req.FilterAllZeroValueRows = &builder.filterAllZeroValueRows
	}
	return req
}

type BatchV2WorkforcePlanDetailPathReqBodyBuilder struct {
	workforcePlanId                   string
	workforcePlanIdFlag               bool
	isCentralizedReportingProject     bool
	isCentralizedReportingProjectFlag bool
	centralizedReportingProjectId     string
	centralizedReportingProjectIdFlag bool
	dimensionIdInDatas                []*DimensionIdInData
	dimensionIdInDatasFlag            bool
	includeMissingDimensionRows       bool
	includeMissingDimensionRowsFlag   bool
	filterAllZeroValueRows            bool
	filterAllZeroValueRowsFlag        bool
}

func NewBatchV2WorkforcePlanDetailPathReqBodyBuilder() *BatchV2WorkforcePlanDetailPathReqBodyBuilder {
	builder := &BatchV2WorkforcePlanDetailPathReqBodyBuilder{}
	return builder
}

// 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）
//
// 示例值：781234834512
func (builder *BatchV2WorkforcePlanDetailPathReqBodyBuilder) WorkforcePlanId(workforcePlanId string) *BatchV2WorkforcePlanDetailPathReqBodyBuilder {
	builder.workforcePlanId = workforcePlanId
	builder.workforcePlanIdFlag = true
	return builder
}

// 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。
//
// 示例值：false
func (builder *BatchV2WorkforcePlanDetailPathReqBodyBuilder) IsCentralizedReportingProject(isCentralizedReportingProject bool) *BatchV2WorkforcePlanDetailPathReqBodyBuilder {
	builder.isCentralizedReportingProject = isCentralizedReportingProject
	builder.isCentralizedReportingProjectFlag = true
	return builder
}

// 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）
//
// 示例值：7140964208476371111
func (builder *BatchV2WorkforcePlanDetailPathReqBodyBuilder) CentralizedReportingProjectId(centralizedReportingProjectId string) *BatchV2WorkforcePlanDetailPathReqBodyBuilder {
	builder.centralizedReportingProjectId = centralizedReportingProjectId
	builder.centralizedReportingProjectIdFlag = true
	return builder
}

// 维度筛选
//
// 示例值：
func (builder *BatchV2WorkforcePlanDetailPathReqBodyBuilder) DimensionIdInDatas(dimensionIdInDatas []*DimensionIdInData) *BatchV2WorkforcePlanDetailPathReqBodyBuilder {
	builder.dimensionIdInDatas = dimensionIdInDatas
	builder.dimensionIdInDatasFlag = true
	return builder
}

// 是否包含缺维度的明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false
//
// 示例值：false
func (builder *BatchV2WorkforcePlanDetailPathReqBodyBuilder) IncludeMissingDimensionRows(includeMissingDimensionRows bool) *BatchV2WorkforcePlanDetailPathReqBodyBuilder {
	builder.includeMissingDimensionRows = includeMissingDimensionRows
	builder.includeMissingDimensionRowsFlag = true
	return builder
}

// 是否过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，true为过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，false为不过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，默认为 false
//
// 示例值：false
func (builder *BatchV2WorkforcePlanDetailPathReqBodyBuilder) FilterAllZeroValueRows(filterAllZeroValueRows bool) *BatchV2WorkforcePlanDetailPathReqBodyBuilder {
	builder.filterAllZeroValueRows = filterAllZeroValueRows
	builder.filterAllZeroValueRowsFlag = true
	return builder
}

func (builder *BatchV2WorkforcePlanDetailPathReqBodyBuilder) Build() (*BatchV2WorkforcePlanDetailReqBody, error) {
	req := &BatchV2WorkforcePlanDetailReqBody{}
	if builder.workforcePlanIdFlag {
		req.WorkforcePlanId = &builder.workforcePlanId
	}
	if builder.isCentralizedReportingProjectFlag {
		req.IsCentralizedReportingProject = &builder.isCentralizedReportingProject
	}
	if builder.centralizedReportingProjectIdFlag {
		req.CentralizedReportingProjectId = &builder.centralizedReportingProjectId
	}
	if builder.dimensionIdInDatasFlag {
		req.DimensionIdInDatas = builder.dimensionIdInDatas
	}
	if builder.includeMissingDimensionRowsFlag {
		req.IncludeMissingDimensionRows = &builder.includeMissingDimensionRows
	}
	if builder.filterAllZeroValueRowsFlag {
		req.FilterAllZeroValueRows = &builder.filterAllZeroValueRows
	}
	return req, nil
}

type BatchV2WorkforcePlanDetailReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchV2WorkforcePlanDetailReqBody
}

func NewBatchV2WorkforcePlanDetailReqBuilder() *BatchV2WorkforcePlanDetailReqBuilder {
	builder := &BatchV2WorkforcePlanDetailReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：["123456"]
func (builder *BatchV2WorkforcePlanDetailReqBuilder) PageToken(pageToken string) *BatchV2WorkforcePlanDetailReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *BatchV2WorkforcePlanDetailReqBuilder) PageSize(pageSize int) *BatchV2WorkforcePlanDetailReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

//
func (builder *BatchV2WorkforcePlanDetailReqBuilder) Body(body *BatchV2WorkforcePlanDetailReqBody) *BatchV2WorkforcePlanDetailReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchV2WorkforcePlanDetailReqBuilder) Build() *BatchV2WorkforcePlanDetailReq {
	req := &BatchV2WorkforcePlanDetailReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchV2WorkforcePlanDetailReqBody struct {
	WorkforcePlanId *string `json:"workforce_plan_id,omitempty"` // 编制规划方案ID，ID及详细信息可通过获取编制规划方案列表接口查询获得。查询编制规划明细信息时，编制规划方案ID必填，是否为集中填报项目设置为false，不填写集中填报项目ID（是否填写不影响返回结果）

	IsCentralizedReportingProject *bool `json:"is_centralized_reporting_project,omitempty"` // 是否为集中填报项目。如果租户未使用集中填报功能，将此参数置空即可。如果查询集中填报明细，将此参数设置为true。

	CentralizedReportingProjectId *string `json:"centralized_reporting_project_id,omitempty"` // 编制规划集中填报项目ID，ID可通过访问集中填报页面，从URL中提取report_id参数。如果租户未使用集中填报功能，将此参数置空即可。查询集中填报信息时，集中填报项目ID必填，是否为集中填报项目设置为true，不填写编制规划方案ID（是否填写不影响返回结果）

	DimensionIdInDatas []*DimensionIdInData `json:"dimension_id_in_datas,omitempty"` // 维度筛选

	IncludeMissingDimensionRows *bool `json:"include_missing_dimension_rows,omitempty"` // 是否包含缺维度的明细行数据，true为包含缺维度明细行数据，false为仅获取所有维度都有值的明细行数据，默认为 false

	FilterAllZeroValueRows *bool `json:"filter_all_zero_value_rows,omitempty"` // 是否过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，true为过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，false为不过滤在职、预增/预减人员、编制数、预估在职人数都为0的明细行，默认为 false
}

type BatchV2WorkforcePlanDetailReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchV2WorkforcePlanDetailReqBody `body:""`
}

type BatchV2WorkforcePlanDetailRespData struct {
	WorkforcePlanId *string `json:"workforce_plan_id,omitempty"` // 编制规划方案 ID

	CentralizedReportingProjectId *string `json:"centralized_reporting_project_id,omitempty"` // 集中填报项目 ID

	Items []*WorkforcePlanDetailV2 `json:"items,omitempty"` // 编制规划明细信息

	PageToken *string `json:"page_token,omitempty"` // 分页标识

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type BatchV2WorkforcePlanDetailResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchV2WorkforcePlanDetailRespData `json:"data"` // 业务数据
}

func (resp *BatchV2WorkforcePlanDetailResp) Success() bool {
	return resp.Code == 0
}

type BatchDeleteWorkforcePlanDetailRowReqBuilder struct {
	apiReq                 *larkcore.ApiReq
	workforcePlanDetailReq *WorkforcePlanDetailReq
}

func NewBatchDeleteWorkforcePlanDetailRowReqBuilder() *BatchDeleteWorkforcePlanDetailRowReqBuilder {
	builder := &BatchDeleteWorkforcePlanDetailRowReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 批量删除明细行
func (builder *BatchDeleteWorkforcePlanDetailRowReqBuilder) WorkforcePlanDetailReq(workforcePlanDetailReq *WorkforcePlanDetailReq) *BatchDeleteWorkforcePlanDetailRowReqBuilder {
	builder.workforcePlanDetailReq = workforcePlanDetailReq
	return builder
}

func (builder *BatchDeleteWorkforcePlanDetailRowReqBuilder) Build() *BatchDeleteWorkforcePlanDetailRowReq {
	req := &BatchDeleteWorkforcePlanDetailRowReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.workforcePlanDetailReq
	return req
}

type BatchDeleteWorkforcePlanDetailRowReq struct {
	apiReq                 *larkcore.ApiReq
	WorkforcePlanDetailReq *WorkforcePlanDetailReq `body:""`
}

type BatchDeleteWorkforcePlanDetailRowResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *BatchDeleteWorkforcePlanDetailRowResp) Success() bool {
	return resp.Code == 0
}

type BatchSaveWorkforcePlanDetailRowReqBuilder struct {
	apiReq                 *larkcore.ApiReq
	workforcePlanDetailReq *WorkforcePlanDetailReq
}

func NewBatchSaveWorkforcePlanDetailRowReqBuilder() *BatchSaveWorkforcePlanDetailRowReqBuilder {
	builder := &BatchSaveWorkforcePlanDetailRowReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 批量创建/更新明细行
func (builder *BatchSaveWorkforcePlanDetailRowReqBuilder) WorkforcePlanDetailReq(workforcePlanDetailReq *WorkforcePlanDetailReq) *BatchSaveWorkforcePlanDetailRowReqBuilder {
	builder.workforcePlanDetailReq = workforcePlanDetailReq
	return builder
}

func (builder *BatchSaveWorkforcePlanDetailRowReqBuilder) Build() *BatchSaveWorkforcePlanDetailRowReq {
	req := &BatchSaveWorkforcePlanDetailRowReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.workforcePlanDetailReq
	return req
}

type BatchSaveWorkforcePlanDetailRowReq struct {
	apiReq                 *larkcore.ApiReq
	WorkforcePlanDetailReq *WorkforcePlanDetailReq `body:""`
}

type BatchSaveWorkforcePlanDetailRowResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *BatchSaveWorkforcePlanDetailRowResp) Success() bool {
	return resp.Code == 0
}

type P2ApprovalGroupsUpdatedV2Data struct {
	ApprovalGroupId *string `json:"approval_group_id,omitempty"` // 组织架构调整审批组 ID

	ProcessId *string `json:"process_id,omitempty"` // 组织架构调整流程 ID

	ApprovalGroupStatus *int `json:"approval_group_status,omitempty"` // 组织架构调整流程状态

	Topic *string `json:"topic,omitempty"` // 调整主题

	AdjustReason *string `json:"adjust_reason,omitempty"` // 调整原因

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期

	CreatedBy *string `json:"created_by,omitempty"` // 发起人

	DraftId *string `json:"draft_id,omitempty"` // 组织架构调整任务 ID

	DraftStatus *int `json:"draft_status,omitempty"` // 组织架构调整任务状态

	ApprovalGroupStatusV2 *int `json:"approval_group_status_v2,omitempty"` // 组织架构调整流程状态V2
}

type P2ApprovalGroupsUpdatedV2 struct {
	*larkevent.EventV2Base                                // 事件基础数据
	*larkevent.EventReq                                   // 请求原生数据
	Event                  *P2ApprovalGroupsUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2ApprovalGroupsUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CompanyCreatedV2Data struct {
	CompanyId *string `json:"company_id,omitempty"` // 公司ID
}

type P2CompanyCreatedV2 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2CompanyCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2CompanyCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CompanyDeletedV2Data struct {
	CompanyId *string `json:"company_id,omitempty"` // 公司ID
}

type P2CompanyDeletedV2 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2CompanyDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2CompanyDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CompanyUpdatedV2Data struct {
	CompanyId *string `json:"company_id,omitempty"` // 公司ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段

	SubEvents []*OrganizationDomainEventData `json:"sub_events,omitempty"` // 子变更事件
}

type P2CompanyUpdatedV2 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2CompanyUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2CompanyUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CostCenterCreatedV2Data struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心ID
}

type P2CostCenterCreatedV2 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2CostCenterCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2CostCenterCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CostCenterDeletedV2Data struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心ID
}

type P2CostCenterDeletedV2 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2CostCenterDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2CostCenterDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CostCenterUpdatedV2Data struct {
	CostCenterId *string `json:"cost_center_id,omitempty"` // 成本中心ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2CostCenterUpdatedV2 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2CostCenterUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2CostCenterUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CustomOrgCreatedV2Data struct {
	OrgId *string `json:"org_id,omitempty"` // 自定义组织id

	ObjectApiName *string `json:"object_api_name,omitempty"` // 自定义组织类型
}

type P2CustomOrgCreatedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2CustomOrgCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2CustomOrgCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CustomOrgDeletedV2Data struct {
	OrgId *string `json:"org_id,omitempty"` // 自定义组织id

	ObjectApiName *string `json:"object_api_name,omitempty"` // 自定义组织类型
}

type P2CustomOrgDeletedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2CustomOrgDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2CustomOrgDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2CustomOrgUpdatedV2Data struct {
	OrgId *string `json:"org_id,omitempty"` // 自定义组织id

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段

	ObjectApiName *string `json:"object_api_name,omitempty"` // 自定义组织类型
}

type P2CustomOrgUpdatedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2CustomOrgUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2CustomOrgUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2DepartmentCreatedV2Data struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门id
}

type P2DepartmentCreatedV2 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2DepartmentCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2DepartmentCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2DepartmentUpdatedV2Data struct {
	DepartmentId *string `json:"department_id,omitempty"` // 部门id

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2DepartmentUpdatedV2 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2DepartmentUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2DepartmentUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2EmployeeDomainEventV2Data struct {
	EventType *int `json:"event_type,omitempty"` // 事件类型

	SubEventType *int `json:"sub_event_type,omitempty"` // 子事件类型

	OperatorUserId *string `json:"operator_user_id,omitempty"` // 操作用户 ID

	OptScene *string `json:"opt_scene,omitempty"` // 业务场景

	OptDesc *string `json:"opt_desc,omitempty"` // 操作描述

	OptTime *string `json:"opt_time,omitempty"` // 操作时间

	OptId *string `json:"opt_id,omitempty"` // 操作ID

	EmploymentId *string `json:"employment_id,omitempty"` // 被操作人的雇佣 ID

	Data []*EmployeeDomainEventData `json:"data,omitempty"` // 变更数据
}

type P2EmployeeDomainEventV2 struct {
	*larkevent.EventV2Base                              // 事件基础数据
	*larkevent.EventReq                                 // 请求原生数据
	Event                  *P2EmployeeDomainEventV2Data `json:"event"` // 事件内容
}

func (m *P2EmployeeDomainEventV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobChangeStatusUpdatedV2Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇员ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 员工的飞书用户 ID

	JobChangeId *string `json:"job_change_id,omitempty"` // 异动记录 id

	TransferMode *int `json:"transfer_mode,omitempty"` // 异动属性/方式

	TransferTypeUniqueIdentifier *string `json:"transfer_type_unique_identifier,omitempty"` // 异动类型唯一标识

	TransferReasonUniqueIdentifier *string `json:"transfer_reason_unique_identifier,omitempty"` // 异动原因唯一标识

	ProcessId *string `json:"process_id,omitempty"` // 异动关联流程 id，如果是直接异动，则不需要关联流程

	EffectiveDate *string `json:"effective_date,omitempty"` // 异动生效日期

	Status *int `json:"status,omitempty"` // 异动状态

	OriginalStatus *int `json:"original_status,omitempty"` // 原异动状态

	TransferKey *string `json:"transfer_key,omitempty"` // 异动记录标识符

	DetailsOfJobStatusChange []string `json:"details_of_job_status_change,omitempty"` // 异动变更内容
}

type P2JobChangeStatusUpdatedV2 struct {
	*larkevent.EventV2Base                                 // 事件基础数据
	*larkevent.EventReq                                    // 请求原生数据
	Event                  *P2JobChangeStatusUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobChangeStatusUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobChangeUpdatedV2Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 异动员工雇员ID

	TenantId *string `json:"tenant_id,omitempty"` // Saas租户ID

	ProcessId *string `json:"process_id,omitempty"` // 流程ID

	Initiator *string `json:"initiator,omitempty"` // 发起人雇员ID

	Operator *string `json:"operator,omitempty"` // 操作人雇员ID

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间毫秒时间戳

	JobChangeId *string `json:"job_change_id,omitempty"` // 异动记录ID

	Status *int `json:"status,omitempty"` // 变更后异动状态

	OperateReason *string `json:"operate_reason,omitempty"` // 操作原因

	TransferType *int `json:"transfer_type,omitempty"` // 变更类型

	UpdatedFields []string `json:"updated_fields,omitempty"` // 所有更新过的字段，异动字段为元数据定义的字段api name，工作信息字段为"target_employment_change." + 元数据定义的字段api name

	TransformType *string `json:"transform_type,omitempty"` // 异动类型

	TransformReason *string `json:"transform_reason,omitempty"` // 异动原因
}

type P2JobChangeUpdatedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2JobChangeUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobChangeUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobFamilyCreatedV2Data struct {
	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列ID
}

type P2JobFamilyCreatedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2JobFamilyCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobFamilyCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobFamilyDeletedV2Data struct {
	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列ID
}

type P2JobFamilyDeletedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2JobFamilyDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2JobFamilyDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobFamilyUpdatedV2Data struct {
	JobFamilyId *string `json:"job_family_id,omitempty"` // 序列ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2JobFamilyUpdatedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2JobFamilyUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobFamilyUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobGradeCreatedV2Data struct {
	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等ID
}

type P2JobGradeCreatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2JobGradeCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobGradeCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobGradeDeletedV2Data struct {
	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等ID
}

type P2JobGradeDeletedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2JobGradeDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2JobGradeDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobGradeUpdatedV2Data struct {
	JobGradeId *string `json:"job_grade_id,omitempty"` // 职等ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2JobGradeUpdatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2JobGradeUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobGradeUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobLevelCreatedV2Data struct {
	JobLevelId *string `json:"job_level_id,omitempty"` // 职级ID
}

type P2JobLevelCreatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2JobLevelCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobLevelCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobLevelDeletedV2Data struct {
	JobLevelId *string `json:"job_level_id,omitempty"` // 职级ID
}

type P2JobLevelDeletedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2JobLevelDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2JobLevelDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2JobLevelUpdatedV2Data struct {
	JobLevelId *string `json:"job_level_id,omitempty"` // 职级ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2JobLevelUpdatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2JobLevelUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2JobLevelUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2LocationCreatedV2Data struct {
	LocationId *string `json:"location_id,omitempty"` // 地点ID
}

type P2LocationCreatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2LocationCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2LocationCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2LocationDeletedV2Data struct {
	LocationId *string `json:"location_id,omitempty"` // 地点ID
}

type P2LocationDeletedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2LocationDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2LocationDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2LocationUpdatedV2Data struct {
	LocationId *string `json:"location_id,omitempty"` // 地点ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段

	SubEvents []*OrganizationDomainEventData `json:"sub_events,omitempty"` // 子变更事件
}

type P2LocationUpdatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2LocationUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2LocationUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2OffboardingChecklistUpdatedV2Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 员工的飞书用户 ID

	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 ID

	ChecklistProcessId *string `json:"checklist_process_id,omitempty"` // 离职流转流程发起后的审批流程实例 ID

	ChecklistStatus *int `json:"checklist_status,omitempty"` // 离职流转状态
}

type P2OffboardingChecklistUpdatedV2 struct {
	*larkevent.EventV2Base                                      // 事件基础数据
	*larkevent.EventReq                                         // 请求原生数据
	Event                  *P2OffboardingChecklistUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2OffboardingChecklistUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2OffboardingStatusUpdatedV2Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 员工的飞书用户 ID

	OffboardingId *string `json:"offboarding_id,omitempty"` // 离职记录 ID

	ProcessId *string `json:"process_id,omitempty"` // 离职发起后的审批流程实例 ID

	Status *int `json:"status,omitempty"` // 离职状态
}

type P2OffboardingStatusUpdatedV2 struct {
	*larkevent.EventV2Base                                   // 事件基础数据
	*larkevent.EventReq                                      // 请求原生数据
	Event                  *P2OffboardingStatusUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2OffboardingStatusUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2OffboardingUpdatedV2Data struct {
	TenantId *string `json:"tenant_id,omitempty"` // Saas租户ID

	OffboardingInfoId *string `json:"offboarding_info_id,omitempty"` // 离职记录ID

	ProcessId *string `json:"process_id,omitempty"` // 离职流程ID

	ChecklistProcessId *string `json:"checklist_process_id,omitempty"` // 离职手续办了流程ID

	EmploymentId *string `json:"employment_id,omitempty"` // 离职员工雇佣ID

	Operator *string `json:"operator,omitempty"` // 操作人雇佣ID

	Status *int `json:"status,omitempty"` // 变更后的离职状态

	ChecklistStatus *int `json:"checklist_status,omitempty"` // 变更后的离职手续办理状态

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间毫秒时间戳

	UpdatedFields []string `json:"updated_fields,omitempty"` // 所有变更的离职信息字段

	TargetUserId *UserId `json:"target_user_id,omitempty"` // 员工的飞书用户 ID
}

type P2OffboardingUpdatedV2 struct {
	*larkevent.EventV2Base                             // 事件基础数据
	*larkevent.EventReq                                // 请求原生数据
	Event                  *P2OffboardingUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2OffboardingUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PathwayCreatedV2Data struct {
	PathwayId *string `json:"pathway_id,omitempty"` // 通道ID
}

type P2PathwayCreatedV2 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2PathwayCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2PathwayCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PathwayDeletedV2Data struct {
	PathwayId *string `json:"pathway_id,omitempty"` // 通道ID
}

type P2PathwayDeletedV2 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2PathwayDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2PathwayDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PathwayUpdatedV2Data struct {
	PathwayId *string `json:"pathway_id,omitempty"` // 通道 ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2PathwayUpdatedV2 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2PathwayUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2PathwayUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PositionCreatedV2Data struct {
	PositionId *string `json:"position_id,omitempty"` // 岗位ID
}

type P2PositionCreatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2PositionCreatedV2Data `json:"event"` // 事件内容
}

func (m *P2PositionCreatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PositionDeletedV2Data struct {
	PositionId *string `json:"position_id,omitempty"` // 岗位ID
}

type P2PositionDeletedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2PositionDeletedV2Data `json:"event"` // 事件内容
}

func (m *P2PositionDeletedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PositionUpdatedV2Data struct {
	PositionId *string `json:"position_id,omitempty"` // 岗位 ID

	FieldChanges []string `json:"field_changes,omitempty"` // 发生变更的字段
}

type P2PositionUpdatedV2 struct {
	*larkevent.EventV2Base                          // 事件基础数据
	*larkevent.EventReq                             // 请求原生数据
	Event                  *P2PositionUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2PositionUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2PreHireOnboardingTaskChangedV2Data struct {
	TenantId *string `json:"tenant_id,omitempty"` // 飞书人事租户ID

	PreHireId *string `json:"pre_hire_id,omitempty"` // 待入职ID

	OnboardingTaskChanges []*OnboardingTaskChange `json:"onboarding_task_changes,omitempty"` // 入职任务状态变更

	OnboardingFlowChange *OnboardingFlowChange `json:"onboarding_flow_change,omitempty"` // 入职流程状态变更

	OnboardingFlowId *string `json:"onboarding_flow_id,omitempty"` // 待入职流程ID

	FlowInfo *OnboardingFlow `json:"flow_info,omitempty"` // 流程信息
}

type P2PreHireOnboardingTaskChangedV2 struct {
	*larkevent.EventV2Base                                       // 事件基础数据
	*larkevent.EventReq                                          // 请求原生数据
	Event                  *P2PreHireOnboardingTaskChangedV2Data `json:"event"` // 事件内容
}

func (m *P2PreHireOnboardingTaskChangedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ProbationUpdatedV2Data struct {
	EmploymentId *string `json:"employment_id,omitempty"` // 雇佣 ID

	ProbationStatus *string `json:"probation_status,omitempty"` // 试用期状态

	ActualProbationEndDate *string `json:"actual_probation_end_date,omitempty"` // 试用期实际结束日期
}

type P2ProbationUpdatedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2ProbationUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2ProbationUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ProcessUpdatedV2Data struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程实例ID

	Status *int `json:"status,omitempty"` // 变更后状态：1 发起/进行中，9 完成，2拒绝，4 撤回，8 撤销

	BizType *string `json:"biz_type,omitempty"` // 业务类型

	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义ID

	Properties *int `json:"properties,omitempty"` // 流程属性
}

type P2ProcessUpdatedV2 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2ProcessUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2ProcessUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ProcessApproverUpdatedV2Data struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程实例ID

	ApproverId *string `json:"approver_id,omitempty"` // 单据ID

	Type *int `json:"type,omitempty"` // 单据类型

	Status *int `json:"status,omitempty"` // 单据状态

	BizType *string `json:"biz_type,omitempty"` // 业务类型

	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义id

	NodeDefinitionId *string `json:"node_definition_id,omitempty"` // 节点定义id

	NodeId *string `json:"node_id,omitempty"` // 节点id（废弃，请使用node_id_str）

	NodeIdStr *string `json:"node_id_str,omitempty"` // 节点id
}

type P2ProcessApproverUpdatedV2 struct {
	*larkevent.EventV2Base                                 // 事件基础数据
	*larkevent.EventReq                                    // 请求原生数据
	Event                  *P2ProcessApproverUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2ProcessApproverUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ProcessCcUpdatedV2Data struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程实例ID

	ApproverId *string `json:"approver_id,omitempty"` // 抄送单据ID

	Status *int `json:"status,omitempty"` // 单据状态

	BizType *string `json:"biz_type,omitempty"` // 业务类型
}

type P2ProcessCcUpdatedV2 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2ProcessCcUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2ProcessCcUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ProcessNodeUpdatedV2Data struct {
	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义id

	NodeDefinitionId *string `json:"node_definition_id,omitempty"` // 节点定义id

	ProcessId *string `json:"process_id,omitempty"` // 流程运行实例id

	ProcessNodeId *string `json:"process_node_id,omitempty"` // 节点运行实例id

	NodeType *int `json:"node_type,omitempty"` // 节点类型

	NodeStatus *int `json:"node_status,omitempty"` // 单据状态

	BizType *string `json:"biz_type,omitempty"` // 业务类型
}

type P2ProcessNodeUpdatedV2 struct {
	*larkevent.EventV2Base                             // 事件基础数据
	*larkevent.EventReq                                // 请求原生数据
	Event                  *P2ProcessNodeUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2ProcessNodeUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ProcessStatusUpdateV2Data struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程实例ID

	Status *int `json:"status,omitempty"` // 变更后状态：1 发起/进行中，9 完成，2拒绝，4 撤回，8 撤销，15 撤销中

	BizType *string `json:"biz_type,omitempty"` // 业务类型

	FlowDefinitionId *string `json:"flow_definition_id,omitempty"` // 流程定义ID

	Properties *int `json:"properties,omitempty"` // 流程属性
}

type P2ProcessStatusUpdateV2 struct {
	*larkevent.EventV2Base                              // 事件基础数据
	*larkevent.EventReq                                 // 请求原生数据
	Event                  *P2ProcessStatusUpdateV2Data `json:"event"` // 事件内容
}

func (m *P2ProcessStatusUpdateV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ProcessCommentInfoUpdatedV2Data struct {
	ProcessId *string `json:"process_id,omitempty"` // 流程运行实例id

	CommentId *string `json:"comment_id,omitempty"` // 流程下评论的唯一id

	Type *int `json:"type,omitempty"` // 评论事件的类型
}

type P2ProcessCommentInfoUpdatedV2 struct {
	*larkevent.EventV2Base                                    // 事件基础数据
	*larkevent.EventReq                                       // 请求原生数据
	Event                  *P2ProcessCommentInfoUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2ProcessCommentInfoUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2SignatureFileStatusUpdatedV2Data struct {
	SignatureFileId *string `json:"signature_file_id,omitempty"` // 发生状态变更的电子签文件id

	BeforeStatus *string `json:"before_status,omitempty"` // 变更前的电子签文件状态

	AfterStatus *string `json:"after_status,omitempty"` // 变更后的电子签文件状态

	BizProcessId *string `json:"biz_process_id,omitempty"` // 业务id, 由接入业务自行维护,可以通过该流程id获取该流程下的签署文件信息list
}

type P2SignatureFileStatusUpdatedV2 struct {
	*larkevent.EventV2Base                                     // 事件基础数据
	*larkevent.EventReq                                        // 请求原生数据
	Event                  *P2SignatureFileStatusUpdatedV2Data `json:"event"` // 事件内容
}

func (m *P2SignatureFileStatusUpdatedV2) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type ListApproverIterator struct {
	nextPageToken *string
	items         []*ApproverInfo
	index         int
	limit         int
	ctx           context.Context
	req           *ListApproverReq
	listFunc      func(ctx context.Context, req *ListApproverReq, options ...larkcore.RequestOptionFunc) (*ListApproverResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListApproverIterator) Next() (bool, *ApproverInfo, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.ApproverList) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.ApproverList
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListApproverIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoBankIterator struct {
	nextPageToken *string
	items         []*Bank
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoBankReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoBankReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoBankResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoBankIterator) Next() (bool, *Bank, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoBankIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoBankBranchIterator struct {
	nextPageToken *string
	items         []*BankBranch
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoBankBranchReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoBankBranchReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoBankBranchResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoBankBranchIterator) Next() (bool, *BankBranch, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoBankBranchIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoCityIterator struct {
	nextPageToken *string
	items         []*City
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoCityReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoCityReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoCityResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoCityIterator) Next() (bool, *City, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoCityIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoCountryRegionIterator struct {
	nextPageToken *string
	items         []*CountryRegion
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoCountryRegionReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoCountryRegionReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoCountryRegionResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoCountryRegionIterator) Next() (bool, *CountryRegion, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoCountryRegionIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoCountryRegionSubdivisionIterator struct {
	nextPageToken *string
	items         []*CountryRegionSubdivision
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoCountryRegionSubdivisionReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoCountryRegionSubdivisionReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoCountryRegionSubdivisionResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoCountryRegionSubdivisionIterator) Next() (bool, *CountryRegionSubdivision, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoCountryRegionSubdivisionIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoCurrencyIterator struct {
	nextPageToken *string
	items         []*Currency
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoCurrencyReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoCurrencyReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoCurrencyResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoCurrencyIterator) Next() (bool, *Currency, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoCurrencyIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoDistrictIterator struct {
	nextPageToken *string
	items         []*District
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoDistrictReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoDistrictReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoDistrictResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoDistrictIterator) Next() (bool, *District, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoDistrictIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoLanguageIterator struct {
	nextPageToken *string
	items         []*Language
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoLanguageReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoLanguageReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoLanguageResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoLanguageIterator) Next() (bool, *Language, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoLanguageIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoNationalityIterator struct {
	nextPageToken *string
	items         []*Nationality
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoNationalityReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoNationalityReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoNationalityResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoNationalityIterator) Next() (bool, *Nationality, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoNationalityIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchBasicInfoTimeZoneIterator struct {
	nextPageToken *string
	items         []*TimeZone
	index         int
	limit         int
	ctx           context.Context
	req           *SearchBasicInfoTimeZoneReq
	listFunc      func(ctx context.Context, req *SearchBasicInfoTimeZoneReq, options ...larkcore.RequestOptionFunc) (*SearchBasicInfoTimeZoneResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchBasicInfoTimeZoneIterator) Next() (bool, *TimeZone, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchBasicInfoTimeZoneIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListBpIterator struct {
	nextPageToken *string
	items         []*Bp
	index         int
	limit         int
	ctx           context.Context
	req           *ListBpReq
	listFunc      func(ctx context.Context, req *ListBpReq, options ...larkcore.RequestOptionFunc) (*ListBpResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListBpIterator) Next() (bool, *Bp, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListBpIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchContractIterator struct {
	nextPageToken *string
	items         []*Contract
	index         int
	limit         int
	ctx           context.Context
	req           *SearchContractReq
	listFunc      func(ctx context.Context, req *SearchContractReq, options ...larkcore.RequestOptionFunc) (*SearchContractResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchContractIterator) Next() (bool, *Contract, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchContractIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchDepartmentIterator struct {
	nextPageToken *string
	items         []*Department
	index         int
	limit         int
	ctx           context.Context
	req           *SearchDepartmentReq
	listFunc      func(ctx context.Context, req *SearchDepartmentReq, options ...larkcore.RequestOptionFunc) (*SearchDepartmentResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchDepartmentIterator) Next() (bool, *Department, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchDepartmentIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchEmployeeIterator struct {
	nextPageToken *string
	items         []*Employee
	index         int
	limit         int
	ctx           context.Context
	req           *SearchEmployeeReq
	listFunc      func(ctx context.Context, req *SearchEmployeeReq, options ...larkcore.RequestOptionFunc) (*SearchEmployeeResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchEmployeeIterator) Next() (bool, *Employee, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchEmployeeIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type BatchEmployeesAdditionalJobIterator struct {
	nextPageToken *string
	items         []*EmployeesAdditionalJob
	index         int
	limit         int
	ctx           context.Context
	req           *BatchEmployeesAdditionalJobReq
	listFunc      func(ctx context.Context, req *BatchEmployeesAdditionalJobReq, options ...larkcore.RequestOptionFunc) (*BatchEmployeesAdditionalJobResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *BatchEmployeesAdditionalJobIterator) Next() (bool, *EmployeesAdditionalJob, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *BatchEmployeesAdditionalJobIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchJobChangeIterator struct {
	nextPageToken *string
	items         []*JobChange
	index         int
	limit         int
	ctx           context.Context
	req           *SearchJobChangeReq
	listFunc      func(ctx context.Context, req *SearchJobChangeReq, options ...larkcore.RequestOptionFunc) (*SearchJobChangeResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchJobChangeIterator) Next() (bool, *JobChange, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchJobChangeIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type QueryPreHireIterator struct {
	nextPageToken *string
	items         []*PreHire
	index         int
	limit         int
	ctx           context.Context
	req           *QueryPreHireReq
	listFunc      func(ctx context.Context, req *QueryPreHireReq, options ...larkcore.RequestOptionFunc) (*QueryPreHireResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *QueryPreHireIterator) Next() (bool, *PreHire, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *QueryPreHireIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchPreHireIterator struct {
	nextPageToken *string
	items         []*PreHire
	index         int
	limit         int
	ctx           context.Context
	req           *SearchPreHireReq
	listFunc      func(ctx context.Context, req *SearchPreHireReq, options ...larkcore.RequestOptionFunc) (*SearchPreHireResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchPreHireIterator) Next() (bool, *PreHire, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchPreHireIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type SearchProbationIterator struct {
	nextPageToken *string
	items         []*ProbationInfo
	index         int
	limit         int
	ctx           context.Context
	req           *SearchProbationReq
	listFunc      func(ctx context.Context, req *SearchProbationReq, options ...larkcore.RequestOptionFunc) (*SearchProbationResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *SearchProbationIterator) Next() (bool, *ProbationInfo, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *SearchProbationIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListProcessIterator struct {
	nextPageToken *string
	items         []string
	index         int
	limit         int
	ctx           context.Context
	req           *ListProcessReq
	listFunc      func(ctx context.Context, req *ListProcessReq, options ...larkcore.RequestOptionFunc) (*ListProcessResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListProcessIterator) Next() (bool, string, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, "", nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, "", nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, "", err
		}

		if resp.Code != 0 {
			return false, "", errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.ProcessIds) == 0 {
			return false, "", nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.ProcessIds
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListProcessIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListSignatureFileIterator struct {
	nextPageToken *string
	items         []*SignatureFile
	index         int
	limit         int
	ctx           context.Context
	req           *ListSignatureFileReq
	listFunc      func(ctx context.Context, req *ListSignatureFileReq, options ...larkcore.RequestOptionFunc) (*ListSignatureFileResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListSignatureFileIterator) Next() (bool, *SignatureFile, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListSignatureFileIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type QuerySignatureFileIterator struct {
	nextPageToken *string
	items         []*SignatureFile
	index         int
	limit         int
	ctx           context.Context
	req           *QuerySignatureFileReq
	listFunc      func(ctx context.Context, req *QuerySignatureFileReq, options ...larkcore.RequestOptionFunc) (*QuerySignatureFileResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *QuerySignatureFileIterator) Next() (bool, *SignatureFile, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *QuerySignatureFileIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListSignatureTemplateInfoWithThumbnailIterator struct {
	nextPageToken *string
	items         []*SignatureTemplateInfoWithThumbnail
	index         int
	limit         int
	ctx           context.Context
	req           *ListSignatureTemplateInfoWithThumbnailReq
	listFunc      func(ctx context.Context, req *ListSignatureTemplateInfoWithThumbnailReq, options ...larkcore.RequestOptionFunc) (*ListSignatureTemplateInfoWithThumbnailResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListSignatureTemplateInfoWithThumbnailIterator) Next() (bool, *SignatureTemplateInfoWithThumbnail, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		if resp.Data.PageToken == nil {
			iterator.nextPageToken = nil
		} else {
			pageTokenStr := strconv.Itoa(*resp.Data.PageToken)
			iterator.nextPageToken = &pageTokenStr
		}
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListSignatureTemplateInfoWithThumbnailIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListWorkforcePlanIterator struct {
	nextPageToken *string
	items         []*WorkforcePlan
	index         int
	limit         int
	ctx           context.Context
	req           *ListWorkforcePlanReq
	listFunc      func(ctx context.Context, req *ListWorkforcePlanReq, options ...larkcore.RequestOptionFunc) (*ListWorkforcePlanResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListWorkforcePlanIterator) Next() (bool, *WorkforcePlan, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListWorkforcePlanIterator) NextPageToken() *string {
	return iterator.nextPageToken
}
