// Package compensation 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 larkcompensation

import (
	"fmt"

	"context"
	"errors"

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

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

const (
	UserIDTypeUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypePeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	UserIDTypeQueryArchiveUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeQueryArchiveUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeQueryArchiveOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypeQueryArchivePeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	ItemTypeSalary           = "salary"            // 基本薪资
	ItemTypeBonus            = "bonus"             // 一次性支付
	ItemTypeRecurringPayment = "recurring_payment" // 经常性支付
)

const (
	UserIDTypeBatchCreateLumpSumPaymentUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeBatchCreateLumpSumPaymentUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeBatchCreateLumpSumPaymentOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypeBatchCreateLumpSumPaymentPeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	UserIDTypeQueryLumpSumPaymentUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeQueryLumpSumPaymentUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeQueryLumpSumPaymentOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypeQueryLumpSumPaymentPeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	UserIDTypeQueryDetailLumpSumPaymentUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeQueryDetailLumpSumPaymentUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeQueryDetailLumpSumPaymentOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypeQueryDetailLumpSumPaymentPeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	UserIdTypeUserId         = "user_id"          // 以user_id来识别用户
	UserIdTypeUnionId        = "union_id"         // 以union_id来识别用户
	UserIdTypeOpenId         = "open_id"          // 以open_id来识别用户
	UserIdTypePeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	UserIdTypeBatchUpdateRecurringPaymentUserId         = "user_id"          // 以user_id来识别用户
	UserIdTypeBatchUpdateRecurringPaymentUnionId        = "union_id"         // 以union_id来识别用户
	UserIdTypeBatchUpdateRecurringPaymentOpenId         = "open_id"          // 以open_id来识别用户
	UserIdTypeBatchUpdateRecurringPaymentPeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	UserIDTypeQueryRecurringPaymentUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeQueryRecurringPaymentUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeQueryRecurringPaymentOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypeQueryRecurringPaymentPeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	UserIDTypeQuerySocialArchiveUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeQuerySocialArchiveUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeQuerySocialArchiveOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypeQuerySocialArchivePeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	RecordTypeIncrease  = "increase"  // 增员
	RecordTypeAttrition = "attrition" // 减员
)

const (
	UserIDTypeQuerySocialArchiveAdjustRecordUserId         = "user_id"          // 以user_id来识别用户
	UserIDTypeQuerySocialArchiveAdjustRecordUnionId        = "union_id"         // 以union_id来识别用户
	UserIDTypeQuerySocialArchiveAdjustRecordOpenId         = "open_id"          // 以open_id来识别用户
	UserIDTypeQuerySocialArchiveAdjustRecordPeopleCorehrId = "people_corehr_id" // 以people_corehr_id来识别用户
)

const (
	InsuranceTypeSocialInsurance = "social_insurance" // 社保
	InsuranceTypeProvidentFund   = "provident_fund"   // 公积金
)

type AdjustmentLogic struct {
	Fixed *string `json:"fixed,omitempty"` // 固定值

	Formula *Formula `json:"formula,omitempty"` // 公式配置
}

type AdjustmentLogicBuilder struct {
	fixed     string // 固定值
	fixedFlag bool

	formula     *Formula // 公式配置
	formulaFlag bool
}

func NewAdjustmentLogicBuilder() *AdjustmentLogicBuilder {
	builder := &AdjustmentLogicBuilder{}
	return builder
}

// 固定值
//
// 示例值：60
func (builder *AdjustmentLogicBuilder) Fixed(fixed string) *AdjustmentLogicBuilder {
	builder.fixed = fixed
	builder.fixedFlag = true
	return builder
}

// 公式配置
//
// 示例值：
func (builder *AdjustmentLogicBuilder) Formula(formula *Formula) *AdjustmentLogicBuilder {
	builder.formula = formula
	builder.formulaFlag = true
	return builder
}

func (builder *AdjustmentLogicBuilder) Build() *AdjustmentLogic {
	req := &AdjustmentLogic{}
	if builder.fixedFlag {
		req.Fixed = &builder.fixed

	}
	if builder.formulaFlag {
		req.Formula = builder.formula
	}
	return req
}

type Archive struct {
	ArchiveId *string `json:"archive_id,omitempty"` // 档案ID

	ArchiveTid *string `json:"archive_tid,omitempty"` // 档案时间轴版本ID

	UserId *string `json:"user_id,omitempty"` // 员工ID

	Plan *Plan `json:"plan,omitempty"` // 关联方案

	EffectiveDate *string `json:"effective_date,omitempty"` // 档案生效时间
}

type ArchiveBuilder struct {
	archiveId     string // 档案ID
	archiveIdFlag bool

	archiveTid     string // 档案时间轴版本ID
	archiveTidFlag bool

	userId     string // 员工ID
	userIdFlag bool

	plan     *Plan // 关联方案
	planFlag bool

	effectiveDate     string // 档案生效时间
	effectiveDateFlag bool
}

func NewArchiveBuilder() *ArchiveBuilder {
	builder := &ArchiveBuilder{}
	return builder
}

// 档案ID
//
// 示例值：7196951947268589113
func (builder *ArchiveBuilder) ArchiveId(archiveId string) *ArchiveBuilder {
	builder.archiveId = archiveId
	builder.archiveIdFlag = true
	return builder
}

// 档案时间轴版本ID
//
// 示例值：7209959917078201911
func (builder *ArchiveBuilder) ArchiveTid(archiveTid string) *ArchiveBuilder {
	builder.archiveTid = archiveTid
	builder.archiveTidFlag = true
	return builder
}

// 员工ID
//
// 示例值：7117649868058789407
func (builder *ArchiveBuilder) UserId(userId string) *ArchiveBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 关联方案
//
// 示例值：
func (builder *ArchiveBuilder) Plan(plan *Plan) *ArchiveBuilder {
	builder.plan = plan
	builder.planFlag = true
	return builder
}

// 档案生效时间
//
// 示例值：2022-03-18
func (builder *ArchiveBuilder) EffectiveDate(effectiveDate string) *ArchiveBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *ArchiveBuilder) Build() *Archive {
	req := &Archive{}
	if builder.archiveIdFlag {
		req.ArchiveId = &builder.archiveId

	}
	if builder.archiveTidFlag {
		req.ArchiveTid = &builder.archiveTid

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.planFlag {
		req.Plan = builder.plan
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	return req
}

type ArchiveDetail struct {
	UserId *string `json:"user_id,omitempty"` // 员工ID

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

	Tid *string `json:"tid,omitempty"` // 档案TID

	PlanId *string `json:"plan_id,omitempty"` // 关联方案ID，详细信息可以通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口查询获得

	PlanTid *string `json:"plan_tid,omitempty"` // 关联方案TID，详细信息可以通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口查询获得

	CurrencyId *string `json:"currency_id,omitempty"` // 档案币种ID，详细信息可以通过[查询货币信息v2](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-currency/search)接口查询获得

	ChangeReasonId *string `json:"change_reason_id,omitempty"` // 调薪原因ID，详细信息可以通过[批量查询定调薪原因](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list)接口查询获得

	ChangeDescription *string `json:"change_description,omitempty"` // 调薪说明

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	ExpirationDate *string `json:"expiration_date,omitempty"` // 失效时间

	SalaryLevelId *string `json:"salary_level_id,omitempty"` // 薪级薪等ID

	CreatedTime *string `json:"created_time,omitempty"` // 创建时间

	UpdatedTime *string `json:"updated_time,omitempty"` // 更新时间

	ArchiveItems []*ArchiveItem `json:"archive_items,omitempty"` // 档案关联的薪资项

	ArchiveIndicators []*ArchiveIndicator `json:"archive_indicators,omitempty"` // 档案关联的薪资指标
}

type ArchiveDetailBuilder struct {
	userId     string // 员工ID
	userIdFlag bool

	id     string // 档案ID
	idFlag bool

	tid     string // 档案TID
	tidFlag bool

	planId     string // 关联方案ID，详细信息可以通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口查询获得
	planIdFlag bool

	planTid     string // 关联方案TID，详细信息可以通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口查询获得
	planTidFlag bool

	currencyId     string // 档案币种ID，详细信息可以通过[查询货币信息v2](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-currency/search)接口查询获得
	currencyIdFlag bool

	changeReasonId     string // 调薪原因ID，详细信息可以通过[批量查询定调薪原因](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list)接口查询获得
	changeReasonIdFlag bool

	changeDescription     string // 调薪说明
	changeDescriptionFlag bool

	effectiveDate     string // 生效时间
	effectiveDateFlag bool

	expirationDate     string // 失效时间
	expirationDateFlag bool

	salaryLevelId     string // 薪级薪等ID
	salaryLevelIdFlag bool

	createdTime     string // 创建时间
	createdTimeFlag bool

	updatedTime     string // 更新时间
	updatedTimeFlag bool

	archiveItems     []*ArchiveItem // 档案关联的薪资项
	archiveItemsFlag bool

	archiveIndicators     []*ArchiveIndicator // 档案关联的薪资指标
	archiveIndicatorsFlag bool
}

func NewArchiveDetailBuilder() *ArchiveDetailBuilder {
	builder := &ArchiveDetailBuilder{}
	return builder
}

// 员工ID
//
// 示例值：344325234123
func (builder *ArchiveDetailBuilder) UserId(userId string) *ArchiveDetailBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 档案ID
//
// 示例值：32141234412
func (builder *ArchiveDetailBuilder) Id(id string) *ArchiveDetailBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 档案TID
//
// 示例值：141541351
func (builder *ArchiveDetailBuilder) Tid(tid string) *ArchiveDetailBuilder {
	builder.tid = tid
	builder.tidFlag = true
	return builder
}

// 关联方案ID，详细信息可以通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口查询获得
//
// 示例值：123412433
func (builder *ArchiveDetailBuilder) PlanId(planId string) *ArchiveDetailBuilder {
	builder.planId = planId
	builder.planIdFlag = true
	return builder
}

// 关联方案TID，详细信息可以通过[批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list)接口查询获得
//
// 示例值：213412343
func (builder *ArchiveDetailBuilder) PlanTid(planTid string) *ArchiveDetailBuilder {
	builder.planTid = planTid
	builder.planTidFlag = true
	return builder
}

// 档案币种ID，详细信息可以通过[查询货币信息v2](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-currency/search)接口查询获得
//
// 示例值：324167823
func (builder *ArchiveDetailBuilder) CurrencyId(currencyId string) *ArchiveDetailBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 调薪原因ID，详细信息可以通过[批量查询定调薪原因](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list)接口查询获得
//
// 示例值：321414123
func (builder *ArchiveDetailBuilder) ChangeReasonId(changeReasonId string) *ArchiveDetailBuilder {
	builder.changeReasonId = changeReasonId
	builder.changeReasonIdFlag = true
	return builder
}

// 调薪说明
//
// 示例值：长期表现优异，产出高，本次给出涨幅
func (builder *ArchiveDetailBuilder) ChangeDescription(changeDescription string) *ArchiveDetailBuilder {
	builder.changeDescription = changeDescription
	builder.changeDescriptionFlag = true
	return builder
}

// 生效时间
//
// 示例值：2022-10-23
func (builder *ArchiveDetailBuilder) EffectiveDate(effectiveDate string) *ArchiveDetailBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 失效时间
//
// 示例值：2022-10-24
func (builder *ArchiveDetailBuilder) ExpirationDate(expirationDate string) *ArchiveDetailBuilder {
	builder.expirationDate = expirationDate
	builder.expirationDateFlag = true
	return builder
}

// 薪级薪等ID
//
// 示例值：12342313
func (builder *ArchiveDetailBuilder) SalaryLevelId(salaryLevelId string) *ArchiveDetailBuilder {
	builder.salaryLevelId = salaryLevelId
	builder.salaryLevelIdFlag = true
	return builder
}

// 创建时间
//
// 示例值：2024-01-01 00:00:00
func (builder *ArchiveDetailBuilder) CreatedTime(createdTime string) *ArchiveDetailBuilder {
	builder.createdTime = createdTime
	builder.createdTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2024-01-01 00:00:00
func (builder *ArchiveDetailBuilder) UpdatedTime(updatedTime string) *ArchiveDetailBuilder {
	builder.updatedTime = updatedTime
	builder.updatedTimeFlag = true
	return builder
}

// 档案关联的薪资项
//
// 示例值：
func (builder *ArchiveDetailBuilder) ArchiveItems(archiveItems []*ArchiveItem) *ArchiveDetailBuilder {
	builder.archiveItems = archiveItems
	builder.archiveItemsFlag = true
	return builder
}

// 档案关联的薪资指标
//
// 示例值：
func (builder *ArchiveDetailBuilder) ArchiveIndicators(archiveIndicators []*ArchiveIndicator) *ArchiveDetailBuilder {
	builder.archiveIndicators = archiveIndicators
	builder.archiveIndicatorsFlag = true
	return builder
}

func (builder *ArchiveDetailBuilder) Build() *ArchiveDetail {
	req := &ArchiveDetail{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.tidFlag {
		req.Tid = &builder.tid

	}
	if builder.planIdFlag {
		req.PlanId = &builder.planId

	}
	if builder.planTidFlag {
		req.PlanTid = &builder.planTid

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

	}
	if builder.changeReasonIdFlag {
		req.ChangeReasonId = &builder.changeReasonId

	}
	if builder.changeDescriptionFlag {
		req.ChangeDescription = &builder.changeDescription

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

	}
	if builder.expirationDateFlag {
		req.ExpirationDate = &builder.expirationDate

	}
	if builder.salaryLevelIdFlag {
		req.SalaryLevelId = &builder.salaryLevelId

	}
	if builder.createdTimeFlag {
		req.CreatedTime = &builder.createdTime

	}
	if builder.updatedTimeFlag {
		req.UpdatedTime = &builder.updatedTime

	}
	if builder.archiveItemsFlag {
		req.ArchiveItems = builder.archiveItems
	}
	if builder.archiveIndicatorsFlag {
		req.ArchiveIndicators = builder.archiveIndicators
	}
	return req
}

type ArchiveIndicator struct {
	IndicatorId *string `json:"indicator_id,omitempty"` // 薪资统计指标ID，详细信息可以通过[批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)接口查询获得

	IndicatorResult *string `json:"indicator_result,omitempty"` // 档案关联薪资统计指标数值

	IndicatorResultRegular *string `json:"indicator_result_regular,omitempty"` // 档案关联薪资统计指标转正后数值
}

type ArchiveIndicatorBuilder struct {
	indicatorId     string // 薪资统计指标ID，详细信息可以通过[批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)接口查询获得
	indicatorIdFlag bool

	indicatorResult     string // 档案关联薪资统计指标数值
	indicatorResultFlag bool

	indicatorResultRegular     string // 档案关联薪资统计指标转正后数值
	indicatorResultRegularFlag bool
}

func NewArchiveIndicatorBuilder() *ArchiveIndicatorBuilder {
	builder := &ArchiveIndicatorBuilder{}
	return builder
}

// 薪资统计指标ID，详细信息可以通过[批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)接口查询获得
//
// 示例值：23141423
func (builder *ArchiveIndicatorBuilder) IndicatorId(indicatorId string) *ArchiveIndicatorBuilder {
	builder.indicatorId = indicatorId
	builder.indicatorIdFlag = true
	return builder
}

// 档案关联薪资统计指标数值
//
// 示例值：15000
func (builder *ArchiveIndicatorBuilder) IndicatorResult(indicatorResult string) *ArchiveIndicatorBuilder {
	builder.indicatorResult = indicatorResult
	builder.indicatorResultFlag = true
	return builder
}

// 档案关联薪资统计指标转正后数值
//
// 示例值：18000
func (builder *ArchiveIndicatorBuilder) IndicatorResultRegular(indicatorResultRegular string) *ArchiveIndicatorBuilder {
	builder.indicatorResultRegular = indicatorResultRegular
	builder.indicatorResultRegularFlag = true
	return builder
}

func (builder *ArchiveIndicatorBuilder) Build() *ArchiveIndicator {
	req := &ArchiveIndicator{}
	if builder.indicatorIdFlag {
		req.IndicatorId = &builder.indicatorId

	}
	if builder.indicatorResultFlag {
		req.IndicatorResult = &builder.indicatorResult

	}
	if builder.indicatorResultRegularFlag {
		req.IndicatorResultRegular = &builder.indicatorResultRegular

	}
	return req
}

type ArchiveItem struct {
	ItemId *string `json:"item_id,omitempty"` // 薪酬项ID，详细信息可以通过[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)接口查询获得

	ItemResult *string `json:"item_result,omitempty"` // 档案关联薪酬项数值

	ItemResultRegular *string `json:"item_result_regular,omitempty"` // 档案关联薪酬项转正后数值
}

type ArchiveItemBuilder struct {
	itemId     string // 薪酬项ID，详细信息可以通过[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)接口查询获得
	itemIdFlag bool

	itemResult     string // 档案关联薪酬项数值
	itemResultFlag bool

	itemResultRegular     string // 档案关联薪酬项转正后数值
	itemResultRegularFlag bool
}

func NewArchiveItemBuilder() *ArchiveItemBuilder {
	builder := &ArchiveItemBuilder{}
	return builder
}

// 薪酬项ID，详细信息可以通过[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)接口查询获得
//
// 示例值：213423144
func (builder *ArchiveItemBuilder) ItemId(itemId string) *ArchiveItemBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 档案关联薪酬项数值
//
// 示例值：15000
func (builder *ArchiveItemBuilder) ItemResult(itemResult string) *ArchiveItemBuilder {
	builder.itemResult = itemResult
	builder.itemResultFlag = true
	return builder
}

// 档案关联薪酬项转正后数值
//
// 示例值：18000
func (builder *ArchiveItemBuilder) ItemResultRegular(itemResultRegular string) *ArchiveItemBuilder {
	builder.itemResultRegular = itemResultRegular
	builder.itemResultRegularFlag = true
	return builder
}

func (builder *ArchiveItemBuilder) Build() *ArchiveItem {
	req := &ArchiveItem{}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.itemResultFlag {
		req.ItemResult = &builder.itemResult

	}
	if builder.itemResultRegularFlag {
		req.ItemResultRegular = &builder.itemResultRegular

	}
	return req
}

type ArchiveItemValue struct {
	ItemId *string `json:"item_id,omitempty"` // 薪资项ID

	ItemValue *string `json:"item_value,omitempty"` // 薪资项的值

	ItemValueRegular *string `json:"item_value_regular,omitempty"` // 员工转正后薪资项的值，仅用于开启试用期的薪资方案，以及员工处于实习期
}

type ArchiveItemValueBuilder struct {
	itemId     string // 薪资项ID
	itemIdFlag bool

	itemValue     string // 薪资项的值
	itemValueFlag bool

	itemValueRegular     string // 员工转正后薪资项的值，仅用于开启试用期的薪资方案，以及员工处于实习期
	itemValueRegularFlag bool
}

func NewArchiveItemValueBuilder() *ArchiveItemValueBuilder {
	builder := &ArchiveItemValueBuilder{}
	return builder
}

// 薪资项ID
//
// 示例值：7244131355509917228
func (builder *ArchiveItemValueBuilder) ItemId(itemId string) *ArchiveItemValueBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 薪资项的值
//
// 示例值：200.00
func (builder *ArchiveItemValueBuilder) ItemValue(itemValue string) *ArchiveItemValueBuilder {
	builder.itemValue = itemValue
	builder.itemValueFlag = true
	return builder
}

// 员工转正后薪资项的值，仅用于开启试用期的薪资方案，以及员工处于实习期
//
// 示例值：600.00
func (builder *ArchiveItemValueBuilder) ItemValueRegular(itemValueRegular string) *ArchiveItemValueBuilder {
	builder.itemValueRegular = itemValueRegular
	builder.itemValueRegularFlag = true
	return builder
}

func (builder *ArchiveItemValueBuilder) Build() *ArchiveItemValue {
	req := &ArchiveItemValue{}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.itemValueFlag {
		req.ItemValue = &builder.itemValue

	}
	if builder.itemValueRegularFlag {
		req.ItemValueRegular = &builder.itemValueRegular

	}
	return req
}

type ChangeReason struct {
	Id *string `json:"id,omitempty"` // 调薪原因ID

	Name *string `json:"name,omitempty"` // 调薪原因名称

	Note *string `json:"note,omitempty"` // 调薪原因备注

	ActiveStatus *int `json:"active_status,omitempty"` // 启用状态

	I18nNames []*I18nContent `json:"i18n_names,omitempty"` // 多语言名称

	I18nNotes []*I18nContent `json:"i18n_notes,omitempty"` // 多语言描述
}

type ChangeReasonBuilder struct {
	id     string // 调薪原因ID
	idFlag bool

	name     string // 调薪原因名称
	nameFlag bool

	note     string // 调薪原因备注
	noteFlag bool

	activeStatus     int // 启用状态
	activeStatusFlag bool

	i18nNames     []*I18nContent // 多语言名称
	i18nNamesFlag bool

	i18nNotes     []*I18nContent // 多语言描述
	i18nNotesFlag bool
}

func NewChangeReasonBuilder() *ChangeReasonBuilder {
	builder := &ChangeReasonBuilder{}
	return builder
}

// 调薪原因ID
//
// 示例值：7196951947268589113
func (builder *ChangeReasonBuilder) Id(id string) *ChangeReasonBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 调薪原因名称
//
// 示例值：入职调薪
func (builder *ChangeReasonBuilder) Name(name string) *ChangeReasonBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 调薪原因备注
//
// 示例值：入职时使用的调薪原因
func (builder *ChangeReasonBuilder) Note(note string) *ChangeReasonBuilder {
	builder.note = note
	builder.noteFlag = true
	return builder
}

// 启用状态
//
// 示例值：1
func (builder *ChangeReasonBuilder) ActiveStatus(activeStatus int) *ChangeReasonBuilder {
	builder.activeStatus = activeStatus
	builder.activeStatusFlag = true
	return builder
}

// 多语言名称
//
// 示例值：
func (builder *ChangeReasonBuilder) I18nNames(i18nNames []*I18nContent) *ChangeReasonBuilder {
	builder.i18nNames = i18nNames
	builder.i18nNamesFlag = true
	return builder
}

// 多语言描述
//
// 示例值：
func (builder *ChangeReasonBuilder) I18nNotes(i18nNotes []*I18nContent) *ChangeReasonBuilder {
	builder.i18nNotes = i18nNotes
	builder.i18nNotesFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.noteFlag {
		req.Note = &builder.note

	}
	if builder.activeStatusFlag {
		req.ActiveStatus = &builder.activeStatus

	}
	if builder.i18nNamesFlag {
		req.I18nNames = builder.i18nNames
	}
	if builder.i18nNotesFlag {
		req.I18nNotes = builder.i18nNotes
	}
	return req
}

type Currency struct {
	Code *string `json:"code,omitempty"` // 编码

	CurrencyId *string `json:"currency_id,omitempty"` // 币种ID
}

type CurrencyBuilder struct {
	code     string // 编码
	codeFlag bool

	currencyId     string // 币种ID
	currencyIdFlag bool
}

func NewCurrencyBuilder() *CurrencyBuilder {
	builder := &CurrencyBuilder{}
	return builder
}

// 编码
//
// 示例值：CNY
func (builder *CurrencyBuilder) Code(code string) *CurrencyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 币种ID
//
// 示例值：6863329932261459464
func (builder *CurrencyBuilder) CurrencyId(currencyId string) *CurrencyBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

func (builder *CurrencyBuilder) Build() *Currency {
	req := &Currency{}
	if builder.codeFlag {
		req.Code = &builder.code

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

	}
	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 Formula struct {
	Expr *string `json:"expr,omitempty"` // 公式表达式

	FormulaParams []*FormulaParam `json:"formula_params,omitempty"` // 公式参数列表
}

type FormulaBuilder struct {
	expr     string // 公式表达式
	exprFlag bool

	formulaParams     []*FormulaParam // 公式参数列表
	formulaParamsFlag bool
}

func NewFormulaBuilder() *FormulaBuilder {
	builder := &FormulaBuilder{}
	return builder
}

// 公式表达式
//
// 示例值：${0} +${1}
func (builder *FormulaBuilder) Expr(expr string) *FormulaBuilder {
	builder.expr = expr
	builder.exprFlag = true
	return builder
}

// 公式参数列表
//
// 示例值：
func (builder *FormulaBuilder) FormulaParams(formulaParams []*FormulaParam) *FormulaBuilder {
	builder.formulaParams = formulaParams
	builder.formulaParamsFlag = true
	return builder
}

func (builder *FormulaBuilder) Build() *Formula {
	req := &Formula{}
	if builder.exprFlag {
		req.Expr = &builder.expr

	}
	if builder.formulaParamsFlag {
		req.FormulaParams = builder.formulaParams
	}
	return req
}

type FormulaParam struct {
	RefType *int `json:"ref_type,omitempty"` // 引用类型

	Id *string `json:"id,omitempty"` // 引用类型ID
}

type FormulaParamBuilder struct {
	refType     int // 引用类型
	refTypeFlag bool

	id     string // 引用类型ID
	idFlag bool
}

func NewFormulaParamBuilder() *FormulaParamBuilder {
	builder := &FormulaParamBuilder{}
	return builder
}

// 引用类型
//
// 示例值：1
func (builder *FormulaParamBuilder) RefType(refType int) *FormulaParamBuilder {
	builder.refType = refType
	builder.refTypeFlag = true
	return builder
}

// 引用类型ID
//
// 示例值：23143242
func (builder *FormulaParamBuilder) Id(id string) *FormulaParamBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *FormulaParamBuilder) Build() *FormulaParam {
	req := &FormulaParam{}
	if builder.refTypeFlag {
		req.RefType = &builder.refType

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type Grade struct {
	Id *string `json:"id,omitempty"` // 薪资标准明细ID

	Tid *string `json:"tid,omitempty"` // 薪资标准明细版本TID

	SerialNumber *string `json:"serial_number,omitempty"` // 编号

	GradeStandardValues []*GradeStandardValue `json:"grade_standard_values,omitempty"` // 薪资标准值列表

	Dimensions []*GradeStandardDimension `json:"dimensions,omitempty"` // 划分维度

	Currency *Currency `json:"currency,omitempty"` // 币种

	Description *I18n `json:"description,omitempty"` // 备注

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效日期，格式"2025-05-01"

	StandardGradeVersion *string `json:"standard_grade_version,omitempty"` // 版本

	CreatedAt *string `json:"created_at,omitempty"` // 创建时间，毫秒时间戳

	UpdatedAt *string `json:"updated_at,omitempty"` // 更新时间，毫秒时间戳

	StandardId *string `json:"standard_id,omitempty"` // 薪资标准表ID

	StandardKind *int `json:"standard_kind,omitempty"` // 标准明细类型
}

type GradeBuilder struct {
	id     string // 薪资标准明细ID
	idFlag bool

	tid     string // 薪资标准明细版本TID
	tidFlag bool

	serialNumber     string // 编号
	serialNumberFlag bool

	gradeStandardValues     []*GradeStandardValue // 薪资标准值列表
	gradeStandardValuesFlag bool

	dimensions     []*GradeStandardDimension // 划分维度
	dimensionsFlag bool

	currency     *Currency // 币种
	currencyFlag bool

	description     *I18n // 备注
	descriptionFlag bool

	effectiveTime     string // 生效日期，格式"2025-05-01"
	effectiveTimeFlag bool

	standardGradeVersion     string // 版本
	standardGradeVersionFlag bool

	createdAt     string // 创建时间，毫秒时间戳
	createdAtFlag bool

	updatedAt     string // 更新时间，毫秒时间戳
	updatedAtFlag bool

	standardId     string // 薪资标准表ID
	standardIdFlag bool

	standardKind     int // 标准明细类型
	standardKindFlag bool
}

func NewGradeBuilder() *GradeBuilder {
	builder := &GradeBuilder{}
	return builder
}

// 薪资标准明细ID
//
// 示例值：7481615459021637164
func (builder *GradeBuilder) Id(id string) *GradeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪资标准明细版本TID
//
// 示例值：7481615459021669932
func (builder *GradeBuilder) Tid(tid string) *GradeBuilder {
	builder.tid = tid
	builder.tidFlag = true
	return builder
}

// 编号
//
// 示例值：1
func (builder *GradeBuilder) SerialNumber(serialNumber string) *GradeBuilder {
	builder.serialNumber = serialNumber
	builder.serialNumberFlag = true
	return builder
}

// 薪资标准值列表
//
// 示例值：
func (builder *GradeBuilder) GradeStandardValues(gradeStandardValues []*GradeStandardValue) *GradeBuilder {
	builder.gradeStandardValues = gradeStandardValues
	builder.gradeStandardValuesFlag = true
	return builder
}

// 划分维度
//
// 示例值：
func (builder *GradeBuilder) Dimensions(dimensions []*GradeStandardDimension) *GradeBuilder {
	builder.dimensions = dimensions
	builder.dimensionsFlag = true
	return builder
}

// 币种
//
// 示例值：
func (builder *GradeBuilder) Currency(currency *Currency) *GradeBuilder {
	builder.currency = currency
	builder.currencyFlag = true
	return builder
}

// 备注
//
// 示例值：
func (builder *GradeBuilder) Description(description *I18n) *GradeBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 生效日期，格式"2025-05-01"
//
// 示例值：2025-05-01
func (builder *GradeBuilder) EffectiveTime(effectiveTime string) *GradeBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 版本
//
// 示例值：0
func (builder *GradeBuilder) StandardGradeVersion(standardGradeVersion string) *GradeBuilder {
	builder.standardGradeVersion = standardGradeVersion
	builder.standardGradeVersionFlag = true
	return builder
}

// 创建时间，毫秒时间戳
//
// 示例值：1704038400000
func (builder *GradeBuilder) CreatedAt(createdAt string) *GradeBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 更新时间，毫秒时间戳
//
// 示例值：1704038400000
func (builder *GradeBuilder) UpdatedAt(updatedAt string) *GradeBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 薪资标准表ID
//
// 示例值：7361627249681188396
func (builder *GradeBuilder) StandardId(standardId string) *GradeBuilder {
	builder.standardId = standardId
	builder.standardIdFlag = true
	return builder
}

// 标准明细类型
//
// 示例值：1
func (builder *GradeBuilder) StandardKind(standardKind int) *GradeBuilder {
	builder.standardKind = standardKind
	builder.standardKindFlag = true
	return builder
}

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

	}
	if builder.tidFlag {
		req.Tid = &builder.tid

	}
	if builder.serialNumberFlag {
		req.SerialNumber = &builder.serialNumber

	}
	if builder.gradeStandardValuesFlag {
		req.GradeStandardValues = builder.gradeStandardValues
	}
	if builder.dimensionsFlag {
		req.Dimensions = builder.dimensions
	}
	if builder.currencyFlag {
		req.Currency = builder.currency
	}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime

	}
	if builder.standardGradeVersionFlag {
		req.StandardGradeVersion = &builder.standardGradeVersion

	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

	}
	if builder.standardIdFlag {
		req.StandardId = &builder.standardId

	}
	if builder.standardKindFlag {
		req.StandardKind = &builder.standardKind

	}
	return req
}

type GradeStandardDimension struct {
	ApiName *string `json:"api_name,omitempty"` // 资源名

	ContainSub *bool `json:"contain_sub,omitempty"` // 是否包含下级

	Values []string `json:"values,omitempty"` // 维度明细值，招聘类型维度枚举值为【日常实习："routine_intern"】【社招："experienced_professionals"】【校招: "recent_graduates"】，其他维度类型具体值信息可通过接口查询[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)， [搜索部门信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/search)， [查询单个序列](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get) ，[查询单个职级](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)， [查询职等](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)，[查询单个职务](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/get)， [查询单个地点](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)， [批量查询人员类型](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)， [批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list) ，[批量查询定调薪原因](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list)，[获取薪级薪等列表数据](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/salary_level_type/query)
}

type GradeStandardDimensionBuilder struct {
	apiName     string // 资源名
	apiNameFlag bool

	containSub     bool // 是否包含下级
	containSubFlag bool

	values     []string // 维度明细值，招聘类型维度枚举值为【日常实习："routine_intern"】【社招："experienced_professionals"】【校招: "recent_graduates"】，其他维度类型具体值信息可通过接口查询[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)， [搜索部门信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/search)， [查询单个序列](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get) ，[查询单个职级](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)， [查询职等](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)，[查询单个职务](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/get)， [查询单个地点](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)， [批量查询人员类型](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)， [批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list) ，[批量查询定调薪原因](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list)，[获取薪级薪等列表数据](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/salary_level_type/query)
	valuesFlag bool
}

func NewGradeStandardDimensionBuilder() *GradeStandardDimensionBuilder {
	builder := &GradeStandardDimensionBuilder{}
	return builder
}

// 资源名
//
// 示例值：cpst_plan
func (builder *GradeStandardDimensionBuilder) ApiName(apiName string) *GradeStandardDimensionBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 是否包含下级
//
// 示例值：false
func (builder *GradeStandardDimensionBuilder) ContainSub(containSub bool) *GradeStandardDimensionBuilder {
	builder.containSub = containSub
	builder.containSubFlag = true
	return builder
}

// 维度明细值，招聘类型维度枚举值为【日常实习："routine_intern"】【社招："experienced_professionals"】【校招: "recent_graduates"】，其他维度类型具体值信息可通过接口查询[查询单个公司](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/company/get)， [搜索部门信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/search)， [查询单个序列](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_family/get) ，[查询单个职级](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/job_level/get)， [查询职等](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job_grade/query)，[查询单个职务](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/job/get)， [查询单个地点](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/location/get)， [批量查询人员类型](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/corehr-v1/employee_type/list)， [批量查询薪资方案](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list) ，[批量查询定调薪原因](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list)，[获取薪级薪等列表数据](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/salary_level_type/query)
//
// 示例值：
func (builder *GradeStandardDimensionBuilder) Values(values []string) *GradeStandardDimensionBuilder {
	builder.values = values
	builder.valuesFlag = true
	return builder
}

func (builder *GradeStandardDimensionBuilder) Build() *GradeStandardDimension {
	req := &GradeStandardDimension{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.containSubFlag {
		req.ContainSub = &builder.containSub

	}
	if builder.valuesFlag {
		req.Values = builder.values
	}
	return req
}

type GradeStandardValue struct {
	StandardValue *string `json:"standard_value,omitempty"` // 标准值

	ReferenceObject *StandardReferenceObject `json:"reference_object,omitempty"` // 适用项目

	UpperLimit *string `json:"upper_limit,omitempty"` // 上限

	LowerLimit *string `json:"lower_limit,omitempty"` // 下限
}

type GradeStandardValueBuilder struct {
	standardValue     string // 标准值
	standardValueFlag bool

	referenceObject     *StandardReferenceObject // 适用项目
	referenceObjectFlag bool

	upperLimit     string // 上限
	upperLimitFlag bool

	lowerLimit     string // 下限
	lowerLimitFlag bool
}

func NewGradeStandardValueBuilder() *GradeStandardValueBuilder {
	builder := &GradeStandardValueBuilder{}
	return builder
}

// 标准值
//
// 示例值：10
func (builder *GradeStandardValueBuilder) StandardValue(standardValue string) *GradeStandardValueBuilder {
	builder.standardValue = standardValue
	builder.standardValueFlag = true
	return builder
}

// 适用项目
//
// 示例值：
func (builder *GradeStandardValueBuilder) ReferenceObject(referenceObject *StandardReferenceObject) *GradeStandardValueBuilder {
	builder.referenceObject = referenceObject
	builder.referenceObjectFlag = true
	return builder
}

// 上限
//
// 示例值：10
func (builder *GradeStandardValueBuilder) UpperLimit(upperLimit string) *GradeStandardValueBuilder {
	builder.upperLimit = upperLimit
	builder.upperLimitFlag = true
	return builder
}

// 下限
//
// 示例值：1
func (builder *GradeStandardValueBuilder) LowerLimit(lowerLimit string) *GradeStandardValueBuilder {
	builder.lowerLimit = lowerLimit
	builder.lowerLimitFlag = true
	return builder
}

func (builder *GradeStandardValueBuilder) Build() *GradeStandardValue {
	req := &GradeStandardValue{}
	if builder.standardValueFlag {
		req.StandardValue = &builder.standardValue

	}
	if builder.referenceObjectFlag {
		req.ReferenceObject = builder.referenceObject
	}
	if builder.upperLimitFlag {
		req.UpperLimit = &builder.upperLimit

	}
	if builder.lowerLimitFlag {
		req.LowerLimit = &builder.lowerLimit

	}
	return req
}

type I18n struct {
	ZhCn *string `json:"zh_cn,omitempty"` // 中文名称

	EnUs *string `json:"en_us,omitempty"` // 英文名称
}

type I18nBuilder struct {
	zhCn     string // 中文名称
	zhCnFlag bool

	enUs     string // 英文名称
	enUsFlag bool
}

func NewI18nBuilder() *I18nBuilder {
	builder := &I18nBuilder{}
	return builder
}

// 中文名称
//
// 示例值：中文名称
func (builder *I18nBuilder) ZhCn(zhCn string) *I18nBuilder {
	builder.zhCn = zhCn
	builder.zhCnFlag = true
	return builder
}

// 英文名称
//
// 示例值：english_name
func (builder *I18nBuilder) EnUs(enUs string) *I18nBuilder {
	builder.enUs = enUs
	builder.enUsFlag = true
	return builder
}

func (builder *I18nBuilder) Build() *I18n {
	req := &I18n{}
	if builder.zhCnFlag {
		req.ZhCn = &builder.zhCn

	}
	if builder.enUsFlag {
		req.EnUs = &builder.enUs

	}
	return req
}

type I18nContent struct {
	Locale *string `json:"locale,omitempty"` // 语言版本

	Value *string `json:"value,omitempty"` // 语言名称
}

type I18nContentBuilder struct {
	locale     string // 语言版本
	localeFlag bool

	value     string // 语言名称
	valueFlag bool
}

func NewI18nContentBuilder() *I18nContentBuilder {
	builder := &I18nContentBuilder{}
	return builder
}

// 语言版本
//
// 示例值：zh_cn
func (builder *I18nContentBuilder) Locale(locale string) *I18nContentBuilder {
	builder.locale = locale
	builder.localeFlag = true
	return builder
}

// 语言名称
//
// 示例值：中文名称
func (builder *I18nContentBuilder) Value(value string) *I18nContentBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

func (builder *I18nContentBuilder) Build() *I18nContent {
	req := &I18nContent{}
	if builder.localeFlag {
		req.Locale = &builder.locale

	}
	if builder.valueFlag {
		req.Value = &builder.value

	}
	return req
}

type Indicator struct {
	Id *string `json:"id,omitempty"` // 薪资统计指标ID

	Name *string `json:"name,omitempty"` // 薪资统计指标名称

	ValueType *string `json:"value_type,omitempty"` // 薪资统计指标数值类型

	ActiveStatus *int `json:"active_status,omitempty"` // 启用状态

	I18nNames []*I18nContent `json:"i18n_names,omitempty"` // 多语言名称
}

type IndicatorBuilder struct {
	id     string // 薪资统计指标ID
	idFlag bool

	name     string // 薪资统计指标名称
	nameFlag bool

	valueType     string // 薪资统计指标数值类型
	valueTypeFlag bool

	activeStatus     int // 启用状态
	activeStatusFlag bool

	i18nNames     []*I18nContent // 多语言名称
	i18nNamesFlag bool
}

func NewIndicatorBuilder() *IndicatorBuilder {
	builder := &IndicatorBuilder{}
	return builder
}

// 薪资统计指标ID
//
// 示例值：7196951947228589113
func (builder *IndicatorBuilder) Id(id string) *IndicatorBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪资统计指标名称
//
// 示例值：年度现金总和
func (builder *IndicatorBuilder) Name(name string) *IndicatorBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 薪资统计指标数值类型
//
// 示例值：money
func (builder *IndicatorBuilder) ValueType(valueType string) *IndicatorBuilder {
	builder.valueType = valueType
	builder.valueTypeFlag = true
	return builder
}

// 启用状态
//
// 示例值：1
func (builder *IndicatorBuilder) ActiveStatus(activeStatus int) *IndicatorBuilder {
	builder.activeStatus = activeStatus
	builder.activeStatusFlag = true
	return builder
}

// 多语言名称
//
// 示例值：
func (builder *IndicatorBuilder) I18nNames(i18nNames []*I18nContent) *IndicatorBuilder {
	builder.i18nNames = i18nNames
	builder.i18nNamesFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.valueTypeFlag {
		req.ValueType = &builder.valueType

	}
	if builder.activeStatusFlag {
		req.ActiveStatus = &builder.activeStatus

	}
	if builder.i18nNamesFlag {
		req.I18nNames = builder.i18nNames
	}
	return req
}

type Item struct {
	Id *string `json:"id,omitempty"` // 薪酬项ID

	Name *string `json:"name,omitempty"` // 薪酬项名称

	Description *string `json:"description,omitempty"` // 薪酬项描述

	CategoryId *string `json:"category_id,omitempty"` // 薪酬项分类ID，详细信息可以通过[批量获取薪资项分类信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item_category/list)接口查询获得

	ValueType *string `json:"value_type,omitempty"` // 薪酬项数值类型

	PayOffFrequencyType *string `json:"pay_off_frequency_type,omitempty"` // 发放频率

	DecimalPlaces *int `json:"decimal_places,omitempty"` // 小数位数

	ActiveStatus *int `json:"active_status,omitempty"` // 启用状态

	I18nNames []*I18nContent `json:"i18n_names,omitempty"` // 多语言名称

	I18nDescriptions []*I18nContent `json:"i18n_descriptions,omitempty"` // 多语言描述

	ItemType *string `json:"item_type,omitempty"` // 薪酬项类型
}

type ItemBuilder struct {
	id     string // 薪酬项ID
	idFlag bool

	name     string // 薪酬项名称
	nameFlag bool

	description     string // 薪酬项描述
	descriptionFlag bool

	categoryId     string // 薪酬项分类ID，详细信息可以通过[批量获取薪资项分类信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item_category/list)接口查询获得
	categoryIdFlag bool

	valueType     string // 薪酬项数值类型
	valueTypeFlag bool

	payOffFrequencyType     string // 发放频率
	payOffFrequencyTypeFlag bool

	decimalPlaces     int // 小数位数
	decimalPlacesFlag bool

	activeStatus     int // 启用状态
	activeStatusFlag bool

	i18nNames     []*I18nContent // 多语言名称
	i18nNamesFlag bool

	i18nDescriptions     []*I18nContent // 多语言描述
	i18nDescriptionsFlag bool

	itemType     string // 薪酬项类型
	itemTypeFlag bool
}

func NewItemBuilder() *ItemBuilder {
	builder := &ItemBuilder{}
	return builder
}

// 薪酬项ID
//
// 示例值：7196951947268589113
func (builder *ItemBuilder) Id(id string) *ItemBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪酬项名称
//
// 示例值：基本月薪
func (builder *ItemBuilder) Name(name string) *ItemBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 薪酬项描述
//
// 示例值：每月份的薪酬
func (builder *ItemBuilder) Description(description string) *ItemBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 薪酬项分类ID，详细信息可以通过[批量获取薪资项分类信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item_category/list)接口查询获得
//
// 示例值：7196951947268589223
func (builder *ItemBuilder) CategoryId(categoryId string) *ItemBuilder {
	builder.categoryId = categoryId
	builder.categoryIdFlag = true
	return builder
}

// 薪酬项数值类型
//
// 示例值：money
func (builder *ItemBuilder) ValueType(valueType string) *ItemBuilder {
	builder.valueType = valueType
	builder.valueTypeFlag = true
	return builder
}

// 发放频率
//
// 示例值：month
func (builder *ItemBuilder) PayOffFrequencyType(payOffFrequencyType string) *ItemBuilder {
	builder.payOffFrequencyType = payOffFrequencyType
	builder.payOffFrequencyTypeFlag = true
	return builder
}

// 小数位数
//
// 示例值：2
func (builder *ItemBuilder) DecimalPlaces(decimalPlaces int) *ItemBuilder {
	builder.decimalPlaces = decimalPlaces
	builder.decimalPlacesFlag = true
	return builder
}

// 启用状态
//
// 示例值：1
func (builder *ItemBuilder) ActiveStatus(activeStatus int) *ItemBuilder {
	builder.activeStatus = activeStatus
	builder.activeStatusFlag = true
	return builder
}

// 多语言名称
//
// 示例值：
func (builder *ItemBuilder) I18nNames(i18nNames []*I18nContent) *ItemBuilder {
	builder.i18nNames = i18nNames
	builder.i18nNamesFlag = true
	return builder
}

// 多语言描述
//
// 示例值：
func (builder *ItemBuilder) I18nDescriptions(i18nDescriptions []*I18nContent) *ItemBuilder {
	builder.i18nDescriptions = i18nDescriptions
	builder.i18nDescriptionsFlag = true
	return builder
}

// 薪酬项类型
//
// 示例值：bonus
func (builder *ItemBuilder) ItemType(itemType string) *ItemBuilder {
	builder.itemType = itemType
	builder.itemTypeFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.categoryIdFlag {
		req.CategoryId = &builder.categoryId

	}
	if builder.valueTypeFlag {
		req.ValueType = &builder.valueType

	}
	if builder.payOffFrequencyTypeFlag {
		req.PayOffFrequencyType = &builder.payOffFrequencyType

	}
	if builder.decimalPlacesFlag {
		req.DecimalPlaces = &builder.decimalPlaces

	}
	if builder.activeStatusFlag {
		req.ActiveStatus = &builder.activeStatus

	}
	if builder.i18nNamesFlag {
		req.I18nNames = builder.i18nNames
	}
	if builder.i18nDescriptionsFlag {
		req.I18nDescriptions = builder.i18nDescriptions
	}
	if builder.itemTypeFlag {
		req.ItemType = &builder.itemType

	}
	return req
}

type ItemCategory struct {
	Id *string `json:"id,omitempty"` // 薪酬项分类ID

	Name *string `json:"name,omitempty"` // 薪酬项分类名称

	I18nNames []*I18nContent `json:"i18n_names,omitempty"` // 薪酬项多语言分类
}

type ItemCategoryBuilder struct {
	id     string // 薪酬项分类ID
	idFlag bool

	name     string // 薪酬项分类名称
	nameFlag bool

	i18nNames     []*I18nContent // 薪酬项多语言分类
	i18nNamesFlag bool
}

func NewItemCategoryBuilder() *ItemCategoryBuilder {
	builder := &ItemCategoryBuilder{}
	return builder
}

// 薪酬项分类ID
//
// 示例值：4532312334
func (builder *ItemCategoryBuilder) Id(id string) *ItemCategoryBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪酬项分类名称
//
// 示例值：基本薪资类
func (builder *ItemCategoryBuilder) Name(name string) *ItemCategoryBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 薪酬项多语言分类
//
// 示例值：
func (builder *ItemCategoryBuilder) I18nNames(i18nNames []*I18nContent) *ItemCategoryBuilder {
	builder.i18nNames = i18nNames
	builder.i18nNamesFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.i18nNamesFlag {
		req.I18nNames = builder.i18nNames
	}
	return req
}

type LumpSumPayment struct {
	Id *string `json:"id,omitempty"` // 一次性支付记录id

	UniqueId *string `json:"unique_id,omitempty"` // 外部幂等id，由上游业务决定

	UserId *string `json:"user_id,omitempty"` // 员工id，具体类型由入参中的 user_id_type 指定

	TotalAmount *string `json:"total_amount,omitempty"` // 总金额，字符串表达的数字

	BindingPeriod *int `json:"binding_period,omitempty"` // 绑定期，单位为月

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

	IssuanceFrequency *int `json:"issuance_frequency,omitempty"` // 发放次数

	ItemId *string `json:"item_id,omitempty"` // 薪酬项id

	Remark *string `json:"remark,omitempty"` // 备注

	IssuanceDetailText *I18n `json:"issuance_detail_text,omitempty"` // 发放规则描述文本

	ApplySource *int `json:"apply_source,omitempty"` // 申请来源

	ReturnAmountBeforeTax *string `json:"return_amount_before_tax,omitempty"` // 应退回金额（税前）

	ReturnAmountAfterTax *string `json:"return_amount_after_tax,omitempty"` // 应退回金额（税后）

	BindingPeriodOffboardingType *string `json:"binding_period_offboarding_type,omitempty"` // 绑定期内离职类型

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

	ModifyTime *string `json:"modify_time,omitempty"` // 更新时间

	ReferencePeriodStartDate *string `json:"reference_period_start_date,omitempty"` // 所属期开始日期

	ReferencePeriodEndDate *string `json:"reference_period_end_date,omitempty"` // 所属期结束日期

	Details []*LumpSumPaymentDetail `json:"details,omitempty"` // 发放明细列表

	BindingPeriodDecimal *string `json:"binding_period_decimal,omitempty"` // 绑定期带小数
}

type LumpSumPaymentBuilder struct {
	id     string // 一次性支付记录id
	idFlag bool

	uniqueId     string // 外部幂等id，由上游业务决定
	uniqueIdFlag bool

	userId     string // 员工id，具体类型由入参中的 user_id_type 指定
	userIdFlag bool

	totalAmount     string // 总金额，字符串表达的数字
	totalAmountFlag bool

	bindingPeriod     int // 绑定期，单位为月
	bindingPeriodFlag bool

	currencyId     string // 币种id
	currencyIdFlag bool

	issuanceFrequency     int // 发放次数
	issuanceFrequencyFlag bool

	itemId     string // 薪酬项id
	itemIdFlag bool

	remark     string // 备注
	remarkFlag bool

	issuanceDetailText     *I18n // 发放规则描述文本
	issuanceDetailTextFlag bool

	applySource     int // 申请来源
	applySourceFlag bool

	returnAmountBeforeTax     string // 应退回金额（税前）
	returnAmountBeforeTaxFlag bool

	returnAmountAfterTax     string // 应退回金额（税后）
	returnAmountAfterTaxFlag bool

	bindingPeriodOffboardingType     string // 绑定期内离职类型
	bindingPeriodOffboardingTypeFlag bool

	createTime     string // 创建时间
	createTimeFlag bool

	modifyTime     string // 更新时间
	modifyTimeFlag bool

	referencePeriodStartDate     string // 所属期开始日期
	referencePeriodStartDateFlag bool

	referencePeriodEndDate     string // 所属期结束日期
	referencePeriodEndDateFlag bool

	details     []*LumpSumPaymentDetail // 发放明细列表
	detailsFlag bool

	bindingPeriodDecimal     string // 绑定期带小数
	bindingPeriodDecimalFlag bool
}

func NewLumpSumPaymentBuilder() *LumpSumPaymentBuilder {
	builder := &LumpSumPaymentBuilder{}
	return builder
}

// 一次性支付记录id
//
// 示例值：7397033607132351532
func (builder *LumpSumPaymentBuilder) Id(id string) *LumpSumPaymentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 外部幂等id，由上游业务决定
//
// 示例值：7402510801304718380_7309316347007764012_7402523725868058156_1726070400000_10000
func (builder *LumpSumPaymentBuilder) UniqueId(uniqueId string) *LumpSumPaymentBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 员工id，具体类型由入参中的 user_id_type 指定
//
// 示例值：7337149697626801708
func (builder *LumpSumPaymentBuilder) UserId(userId string) *LumpSumPaymentBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 总金额，字符串表达的数字
//
// 示例值：2000.00
func (builder *LumpSumPaymentBuilder) TotalAmount(totalAmount string) *LumpSumPaymentBuilder {
	builder.totalAmount = totalAmount
	builder.totalAmountFlag = true
	return builder
}

// 绑定期，单位为月
//
// 示例值：2
func (builder *LumpSumPaymentBuilder) BindingPeriod(bindingPeriod int) *LumpSumPaymentBuilder {
	builder.bindingPeriod = bindingPeriod
	builder.bindingPeriodFlag = true
	return builder
}

// 币种id
//
// 示例值：6863329932261459464
func (builder *LumpSumPaymentBuilder) CurrencyId(currencyId string) *LumpSumPaymentBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 发放次数
//
// 示例值：3
func (builder *LumpSumPaymentBuilder) IssuanceFrequency(issuanceFrequency int) *LumpSumPaymentBuilder {
	builder.issuanceFrequency = issuanceFrequency
	builder.issuanceFrequencyFlag = true
	return builder
}

// 薪酬项id
//
// 示例值：7411039006180312620
func (builder *LumpSumPaymentBuilder) ItemId(itemId string) *LumpSumPaymentBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 备注
//
// 示例值：备注
func (builder *LumpSumPaymentBuilder) Remark(remark string) *LumpSumPaymentBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// 发放规则描述文本
//
// 示例值：
func (builder *LumpSumPaymentBuilder) IssuanceDetailText(issuanceDetailText *I18n) *LumpSumPaymentBuilder {
	builder.issuanceDetailText = issuanceDetailText
	builder.issuanceDetailTextFlag = true
	return builder
}

// 申请来源
//
// 示例值：1
func (builder *LumpSumPaymentBuilder) ApplySource(applySource int) *LumpSumPaymentBuilder {
	builder.applySource = applySource
	builder.applySourceFlag = true
	return builder
}

// 应退回金额（税前）
//
// 示例值：2000.00
func (builder *LumpSumPaymentBuilder) ReturnAmountBeforeTax(returnAmountBeforeTax string) *LumpSumPaymentBuilder {
	builder.returnAmountBeforeTax = returnAmountBeforeTax
	builder.returnAmountBeforeTaxFlag = true
	return builder
}

// 应退回金额（税后）
//
// 示例值：2000.00
func (builder *LumpSumPaymentBuilder) ReturnAmountAfterTax(returnAmountAfterTax string) *LumpSumPaymentBuilder {
	builder.returnAmountAfterTax = returnAmountAfterTax
	builder.returnAmountAfterTaxFlag = true
	return builder
}

// 绑定期内离职类型
//
// 示例值：
func (builder *LumpSumPaymentBuilder) BindingPeriodOffboardingType(bindingPeriodOffboardingType string) *LumpSumPaymentBuilder {
	builder.bindingPeriodOffboardingType = bindingPeriodOffboardingType
	builder.bindingPeriodOffboardingTypeFlag = true
	return builder
}

// 创建时间
//
// 示例值：2024-08-01 12:34:56
func (builder *LumpSumPaymentBuilder) CreateTime(createTime string) *LumpSumPaymentBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2024-08-01 12:34:56
func (builder *LumpSumPaymentBuilder) ModifyTime(modifyTime string) *LumpSumPaymentBuilder {
	builder.modifyTime = modifyTime
	builder.modifyTimeFlag = true
	return builder
}

// 所属期开始日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentBuilder) ReferencePeriodStartDate(referencePeriodStartDate string) *LumpSumPaymentBuilder {
	builder.referencePeriodStartDate = referencePeriodStartDate
	builder.referencePeriodStartDateFlag = true
	return builder
}

// 所属期结束日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentBuilder) ReferencePeriodEndDate(referencePeriodEndDate string) *LumpSumPaymentBuilder {
	builder.referencePeriodEndDate = referencePeriodEndDate
	builder.referencePeriodEndDateFlag = true
	return builder
}

// 发放明细列表
//
// 示例值：
func (builder *LumpSumPaymentBuilder) Details(details []*LumpSumPaymentDetail) *LumpSumPaymentBuilder {
	builder.details = details
	builder.detailsFlag = true
	return builder
}

// 绑定期带小数
//
// 示例值：12
func (builder *LumpSumPaymentBuilder) BindingPeriodDecimal(bindingPeriodDecimal string) *LumpSumPaymentBuilder {
	builder.bindingPeriodDecimal = bindingPeriodDecimal
	builder.bindingPeriodDecimalFlag = true
	return builder
}

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

	}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.totalAmountFlag {
		req.TotalAmount = &builder.totalAmount

	}
	if builder.bindingPeriodFlag {
		req.BindingPeriod = &builder.bindingPeriod

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

	}
	if builder.issuanceFrequencyFlag {
		req.IssuanceFrequency = &builder.issuanceFrequency

	}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.issuanceDetailTextFlag {
		req.IssuanceDetailText = builder.issuanceDetailText
	}
	if builder.applySourceFlag {
		req.ApplySource = &builder.applySource

	}
	if builder.returnAmountBeforeTaxFlag {
		req.ReturnAmountBeforeTax = &builder.returnAmountBeforeTax

	}
	if builder.returnAmountAfterTaxFlag {
		req.ReturnAmountAfterTax = &builder.returnAmountAfterTax

	}
	if builder.bindingPeriodOffboardingTypeFlag {
		req.BindingPeriodOffboardingType = &builder.bindingPeriodOffboardingType

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

	}
	if builder.modifyTimeFlag {
		req.ModifyTime = &builder.modifyTime

	}
	if builder.referencePeriodStartDateFlag {
		req.ReferencePeriodStartDate = &builder.referencePeriodStartDate

	}
	if builder.referencePeriodEndDateFlag {
		req.ReferencePeriodEndDate = &builder.referencePeriodEndDate

	}
	if builder.detailsFlag {
		req.Details = builder.details
	}
	if builder.bindingPeriodDecimalFlag {
		req.BindingPeriodDecimal = &builder.bindingPeriodDecimal

	}
	return req
}

type LumpSumPaymentDetail struct {
	Id *string `json:"id,omitempty"` // 一次性支付记录明细id

	RecordId *string `json:"record_id,omitempty"` // 一次性支付记录id

	UserId *string `json:"user_id,omitempty"` // 员工id，具体类型由入参中的 user_id_type 指定

	IssuanceAmount *string `json:"issuance_amount,omitempty"` // 一次性支付明细发放金额，可转数字的字符串

	IssuanceStatus *string `json:"issuance_status,omitempty"` // 发放状态

	IssuanceWay *string `json:"issuance_way,omitempty"` // 发放方式

	IssuanceTime *string `json:"issuance_time,omitempty"` // 发放日期

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

	BelongTime *string `json:"belong_time,omitempty"` // 申请发放日期

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

	ModifyTime *string `json:"modify_time,omitempty"` // 更新时间

	IssuanceCountryRegionId *string `json:"issuance_country_region_id,omitempty"` // 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）

	IssuancePayGroupId *string `json:"issuance_pay_group_id,omitempty"` // 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
}

type LumpSumPaymentDetailBuilder struct {
	id     string // 一次性支付记录明细id
	idFlag bool

	recordId     string // 一次性支付记录id
	recordIdFlag bool

	userId     string // 员工id，具体类型由入参中的 user_id_type 指定
	userIdFlag bool

	issuanceAmount     string // 一次性支付明细发放金额，可转数字的字符串
	issuanceAmountFlag bool

	issuanceStatus     string // 发放状态
	issuanceStatusFlag bool

	issuanceWay     string // 发放方式
	issuanceWayFlag bool

	issuanceTime     string // 发放日期
	issuanceTimeFlag bool

	currencyId     string // 币种id
	currencyIdFlag bool

	belongTime     string // 申请发放日期
	belongTimeFlag bool

	createTime     string // 创建时间
	createTimeFlag bool

	modifyTime     string // 更新时间
	modifyTimeFlag bool

	issuanceCountryRegionId     string // 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
	issuanceCountryRegionIdFlag bool

	issuancePayGroupId     string // 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
	issuancePayGroupIdFlag bool
}

func NewLumpSumPaymentDetailBuilder() *LumpSumPaymentDetailBuilder {
	builder := &LumpSumPaymentDetailBuilder{}
	return builder
}

// 一次性支付记录明细id
//
// 示例值：7395133551102200876
func (builder *LumpSumPaymentDetailBuilder) Id(id string) *LumpSumPaymentDetailBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 一次性支付记录id
//
// 示例值：7395133551102168108
func (builder *LumpSumPaymentDetailBuilder) RecordId(recordId string) *LumpSumPaymentDetailBuilder {
	builder.recordId = recordId
	builder.recordIdFlag = true
	return builder
}

// 员工id，具体类型由入参中的 user_id_type 指定
//
// 示例值：7337149697626801708
func (builder *LumpSumPaymentDetailBuilder) UserId(userId string) *LumpSumPaymentDetailBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 一次性支付明细发放金额，可转数字的字符串
//
// 示例值：2000.00
func (builder *LumpSumPaymentDetailBuilder) IssuanceAmount(issuanceAmount string) *LumpSumPaymentDetailBuilder {
	builder.issuanceAmount = issuanceAmount
	builder.issuanceAmountFlag = true
	return builder
}

// 发放状态
//
// 示例值：to_be_issued
func (builder *LumpSumPaymentDetailBuilder) IssuanceStatus(issuanceStatus string) *LumpSumPaymentDetailBuilder {
	builder.issuanceStatus = issuanceStatus
	builder.issuanceStatusFlag = true
	return builder
}

// 发放方式
//
// 示例值：with_salary
func (builder *LumpSumPaymentDetailBuilder) IssuanceWay(issuanceWay string) *LumpSumPaymentDetailBuilder {
	builder.issuanceWay = issuanceWay
	builder.issuanceWayFlag = true
	return builder
}

// 发放日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentDetailBuilder) IssuanceTime(issuanceTime string) *LumpSumPaymentDetailBuilder {
	builder.issuanceTime = issuanceTime
	builder.issuanceTimeFlag = true
	return builder
}

// 币种id
//
// 示例值：6863329932261459464
func (builder *LumpSumPaymentDetailBuilder) CurrencyId(currencyId string) *LumpSumPaymentDetailBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 申请发放日期
//
// 示例值：2025-01-20
func (builder *LumpSumPaymentDetailBuilder) BelongTime(belongTime string) *LumpSumPaymentDetailBuilder {
	builder.belongTime = belongTime
	builder.belongTimeFlag = true
	return builder
}

// 创建时间
//
// 示例值：2024-08-01 12:34:56
func (builder *LumpSumPaymentDetailBuilder) CreateTime(createTime string) *LumpSumPaymentDetailBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 更新时间
//
// 示例值：2024-08-01 12:34:56
func (builder *LumpSumPaymentDetailBuilder) ModifyTime(modifyTime string) *LumpSumPaymentDetailBuilder {
	builder.modifyTime = modifyTime
	builder.modifyTimeFlag = true
	return builder
}

// 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
//
// 示例值：6862995757234914824
func (builder *LumpSumPaymentDetailBuilder) IssuanceCountryRegionId(issuanceCountryRegionId string) *LumpSumPaymentDetailBuilder {
	builder.issuanceCountryRegionId = issuanceCountryRegionId
	builder.issuanceCountryRegionIdFlag = true
	return builder
}

// 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
//
// 示例值：6862995757234914824
func (builder *LumpSumPaymentDetailBuilder) IssuancePayGroupId(issuancePayGroupId string) *LumpSumPaymentDetailBuilder {
	builder.issuancePayGroupId = issuancePayGroupId
	builder.issuancePayGroupIdFlag = true
	return builder
}

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

	}
	if builder.recordIdFlag {
		req.RecordId = &builder.recordId

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.issuanceAmountFlag {
		req.IssuanceAmount = &builder.issuanceAmount

	}
	if builder.issuanceStatusFlag {
		req.IssuanceStatus = &builder.issuanceStatus

	}
	if builder.issuanceWayFlag {
		req.IssuanceWay = &builder.issuanceWay

	}
	if builder.issuanceTimeFlag {
		req.IssuanceTime = &builder.issuanceTime

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

	}
	if builder.belongTimeFlag {
		req.BelongTime = &builder.belongTime

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

	}
	if builder.modifyTimeFlag {
		req.ModifyTime = &builder.modifyTime

	}
	if builder.issuanceCountryRegionIdFlag {
		req.IssuanceCountryRegionId = &builder.issuanceCountryRegionId

	}
	if builder.issuancePayGroupIdFlag {
		req.IssuancePayGroupId = &builder.issuancePayGroupId

	}
	return req
}

type LumpSumPaymentDetailForCreate struct {
	IssuanceAmount *string `json:"issuance_amount,omitempty"` // 一次性支付明细发放金额，可转数字的字符串

	IssuanceStatus *string `json:"issuance_status,omitempty"` // 发放状态

	IssuanceWay *string `json:"issuance_way,omitempty"` // 发放方式

	IssuanceTime *string `json:"issuance_time,omitempty"` // 发放日期

	BelongTime *string `json:"belong_time,omitempty"` // 申请发放日期

	IssuanceCountryRegionId *string `json:"issuance_country_region_id,omitempty"` // 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）

	IssuancePayGroupId *string `json:"issuance_pay_group_id,omitempty"` // 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
}

type LumpSumPaymentDetailForCreateBuilder struct {
	issuanceAmount     string // 一次性支付明细发放金额，可转数字的字符串
	issuanceAmountFlag bool

	issuanceStatus     string // 发放状态
	issuanceStatusFlag bool

	issuanceWay     string // 发放方式
	issuanceWayFlag bool

	issuanceTime     string // 发放日期
	issuanceTimeFlag bool

	belongTime     string // 申请发放日期
	belongTimeFlag bool

	issuanceCountryRegionId     string // 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
	issuanceCountryRegionIdFlag bool

	issuancePayGroupId     string // 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
	issuancePayGroupIdFlag bool
}

func NewLumpSumPaymentDetailForCreateBuilder() *LumpSumPaymentDetailForCreateBuilder {
	builder := &LumpSumPaymentDetailForCreateBuilder{}
	return builder
}

// 一次性支付明细发放金额，可转数字的字符串
//
// 示例值：2000.00
func (builder *LumpSumPaymentDetailForCreateBuilder) IssuanceAmount(issuanceAmount string) *LumpSumPaymentDetailForCreateBuilder {
	builder.issuanceAmount = issuanceAmount
	builder.issuanceAmountFlag = true
	return builder
}

// 发放状态
//
// 示例值：to_be_issued
func (builder *LumpSumPaymentDetailForCreateBuilder) IssuanceStatus(issuanceStatus string) *LumpSumPaymentDetailForCreateBuilder {
	builder.issuanceStatus = issuanceStatus
	builder.issuanceStatusFlag = true
	return builder
}

// 发放方式
//
// 示例值：with_salary
func (builder *LumpSumPaymentDetailForCreateBuilder) IssuanceWay(issuanceWay string) *LumpSumPaymentDetailForCreateBuilder {
	builder.issuanceWay = issuanceWay
	builder.issuanceWayFlag = true
	return builder
}

// 发放日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentDetailForCreateBuilder) IssuanceTime(issuanceTime string) *LumpSumPaymentDetailForCreateBuilder {
	builder.issuanceTime = issuanceTime
	builder.issuanceTimeFlag = true
	return builder
}

// 申请发放日期
//
// 示例值：2025-01-20
func (builder *LumpSumPaymentDetailForCreateBuilder) BelongTime(belongTime string) *LumpSumPaymentDetailForCreateBuilder {
	builder.belongTime = belongTime
	builder.belongTimeFlag = true
	return builder
}

// 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
//
// 示例值：6862995757234914824
func (builder *LumpSumPaymentDetailForCreateBuilder) IssuanceCountryRegionId(issuanceCountryRegionId string) *LumpSumPaymentDetailForCreateBuilder {
	builder.issuanceCountryRegionId = issuanceCountryRegionId
	builder.issuanceCountryRegionIdFlag = true
	return builder
}

// 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
//
// 示例值：6862995757234914824
func (builder *LumpSumPaymentDetailForCreateBuilder) IssuancePayGroupId(issuancePayGroupId string) *LumpSumPaymentDetailForCreateBuilder {
	builder.issuancePayGroupId = issuancePayGroupId
	builder.issuancePayGroupIdFlag = true
	return builder
}

func (builder *LumpSumPaymentDetailForCreateBuilder) Build() *LumpSumPaymentDetailForCreate {
	req := &LumpSumPaymentDetailForCreate{}
	if builder.issuanceAmountFlag {
		req.IssuanceAmount = &builder.issuanceAmount

	}
	if builder.issuanceStatusFlag {
		req.IssuanceStatus = &builder.issuanceStatus

	}
	if builder.issuanceWayFlag {
		req.IssuanceWay = &builder.issuanceWay

	}
	if builder.issuanceTimeFlag {
		req.IssuanceTime = &builder.issuanceTime

	}
	if builder.belongTimeFlag {
		req.BelongTime = &builder.belongTime

	}
	if builder.issuanceCountryRegionIdFlag {
		req.IssuanceCountryRegionId = &builder.issuanceCountryRegionId

	}
	if builder.issuancePayGroupIdFlag {
		req.IssuancePayGroupId = &builder.issuancePayGroupId

	}
	return req
}

type LumpSumPaymentDetailForUpdate struct {
	Id *string `json:"id,omitempty"` // 一次性支付记录明细id。传入已有的id代表直接在原明细上进行更新，不传则代表创建新的明细

	IssuanceAmount *string `json:"issuance_amount,omitempty"` // 一次性支付明细发放金额，可转数字的字符串

	IssuanceStatus *string `json:"issuance_status,omitempty"` // 发放状态

	IssuanceWay *string `json:"issuance_way,omitempty"` // 发放方式

	IssuanceTime *string `json:"issuance_time,omitempty"` // 发放日期

	BelongTime *string `json:"belong_time,omitempty"` // 申请发放日期

	IssuanceCountryRegionId *string `json:"issuance_country_region_id,omitempty"` // 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）

	IssuancePayGroupId *string `json:"issuance_pay_group_id,omitempty"` // 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
}

type LumpSumPaymentDetailForUpdateBuilder struct {
	id     string // 一次性支付记录明细id。传入已有的id代表直接在原明细上进行更新，不传则代表创建新的明细
	idFlag bool

	issuanceAmount     string // 一次性支付明细发放金额，可转数字的字符串
	issuanceAmountFlag bool

	issuanceStatus     string // 发放状态
	issuanceStatusFlag bool

	issuanceWay     string // 发放方式
	issuanceWayFlag bool

	issuanceTime     string // 发放日期
	issuanceTimeFlag bool

	belongTime     string // 申请发放日期
	belongTimeFlag bool

	issuanceCountryRegionId     string // 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
	issuanceCountryRegionIdFlag bool

	issuancePayGroupId     string // 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
	issuancePayGroupIdFlag bool
}

func NewLumpSumPaymentDetailForUpdateBuilder() *LumpSumPaymentDetailForUpdateBuilder {
	builder := &LumpSumPaymentDetailForUpdateBuilder{}
	return builder
}

// 一次性支付记录明细id。传入已有的id代表直接在原明细上进行更新，不传则代表创建新的明细
//
// 示例值：7395133551102200876
func (builder *LumpSumPaymentDetailForUpdateBuilder) Id(id string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 一次性支付明细发放金额，可转数字的字符串
//
// 示例值：2000.00
func (builder *LumpSumPaymentDetailForUpdateBuilder) IssuanceAmount(issuanceAmount string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.issuanceAmount = issuanceAmount
	builder.issuanceAmountFlag = true
	return builder
}

// 发放状态
//
// 示例值：to_be_issued
func (builder *LumpSumPaymentDetailForUpdateBuilder) IssuanceStatus(issuanceStatus string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.issuanceStatus = issuanceStatus
	builder.issuanceStatusFlag = true
	return builder
}

// 发放方式
//
// 示例值：with_salary
func (builder *LumpSumPaymentDetailForUpdateBuilder) IssuanceWay(issuanceWay string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.issuanceWay = issuanceWay
	builder.issuanceWayFlag = true
	return builder
}

// 发放日期
//
// 示例值：2024-08-20
func (builder *LumpSumPaymentDetailForUpdateBuilder) IssuanceTime(issuanceTime string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.issuanceTime = issuanceTime
	builder.issuanceTimeFlag = true
	return builder
}

// 申请发放日期
//
// 示例值：2025-01-20
func (builder *LumpSumPaymentDetailForUpdateBuilder) BelongTime(belongTime string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.belongTime = belongTime
	builder.belongTimeFlag = true
	return builder
}

// 发放国家ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
//
// 示例值：6862995757234914824
func (builder *LumpSumPaymentDetailForUpdateBuilder) IssuanceCountryRegionId(issuanceCountryRegionId string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.issuanceCountryRegionId = issuanceCountryRegionId
	builder.issuanceCountryRegionIdFlag = true
	return builder
}

// 发放薪资组ID（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/payroll-v1/paygroup/list进行查询）
//
// 示例值：6862995757234914824
func (builder *LumpSumPaymentDetailForUpdateBuilder) IssuancePayGroupId(issuancePayGroupId string) *LumpSumPaymentDetailForUpdateBuilder {
	builder.issuancePayGroupId = issuancePayGroupId
	builder.issuancePayGroupIdFlag = true
	return builder
}

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

	}
	if builder.issuanceAmountFlag {
		req.IssuanceAmount = &builder.issuanceAmount

	}
	if builder.issuanceStatusFlag {
		req.IssuanceStatus = &builder.issuanceStatus

	}
	if builder.issuanceWayFlag {
		req.IssuanceWay = &builder.issuanceWay

	}
	if builder.issuanceTimeFlag {
		req.IssuanceTime = &builder.issuanceTime

	}
	if builder.belongTimeFlag {
		req.BelongTime = &builder.belongTime

	}
	if builder.issuanceCountryRegionIdFlag {
		req.IssuanceCountryRegionId = &builder.issuanceCountryRegionId

	}
	if builder.issuancePayGroupIdFlag {
		req.IssuancePayGroupId = &builder.issuancePayGroupId

	}
	return req
}

type LumpSumPaymentForCreate struct {
	UniqueId *string `json:"unique_id,omitempty"` // 外部幂等id，由上游业务决定

	UserId *string `json:"user_id,omitempty"` // 员工id，具体类型由入参中的 user_id_type 指定

	TotalAmount *string `json:"total_amount,omitempty"` // 总金额，字符串表达的数字

	BindingPeriod *int `json:"binding_period,omitempty"` // 绑定期，单位为月

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

	IssuanceFrequency *int `json:"issuance_frequency,omitempty"` // 发放次数，必须与 details 的长度一致

	ItemId *string `json:"item_id,omitempty"` // 薪酬项id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list?appId=cli_a3077e2bb03c100d 进行查询）

	ReferencePeriodStartDate *string `json:"reference_period_start_date,omitempty"` // 所属期开始日期

	ReferencePeriodEndDate *string `json:"reference_period_end_date,omitempty"` // 所属期结束日期

	Details []*LumpSumPaymentDetailForCreate `json:"details,omitempty"` // 发放明细列表

	Remark *string `json:"remark,omitempty"` // 备注

	BindingPeriodDecimal *string `json:"binding_period_decimal,omitempty"` // 绑定期带小数
}

type LumpSumPaymentForCreateBuilder struct {
	uniqueId     string // 外部幂等id，由上游业务决定
	uniqueIdFlag bool

	userId     string // 员工id，具体类型由入参中的 user_id_type 指定
	userIdFlag bool

	totalAmount     string // 总金额，字符串表达的数字
	totalAmountFlag bool

	bindingPeriod     int // 绑定期，单位为月
	bindingPeriodFlag bool

	currencyId     string // 币种id
	currencyIdFlag bool

	issuanceFrequency     int // 发放次数，必须与 details 的长度一致
	issuanceFrequencyFlag bool

	itemId     string // 薪酬项id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list?appId=cli_a3077e2bb03c100d 进行查询）
	itemIdFlag bool

	referencePeriodStartDate     string // 所属期开始日期
	referencePeriodStartDateFlag bool

	referencePeriodEndDate     string // 所属期结束日期
	referencePeriodEndDateFlag bool

	details     []*LumpSumPaymentDetailForCreate // 发放明细列表
	detailsFlag bool

	remark     string // 备注
	remarkFlag bool

	bindingPeriodDecimal     string // 绑定期带小数
	bindingPeriodDecimalFlag bool
}

func NewLumpSumPaymentForCreateBuilder() *LumpSumPaymentForCreateBuilder {
	builder := &LumpSumPaymentForCreateBuilder{}
	return builder
}

// 外部幂等id，由上游业务决定
//
// 示例值：7402510801304718380_7309316347007764012_7402523725868058156_1726070400000_10000
func (builder *LumpSumPaymentForCreateBuilder) UniqueId(uniqueId string) *LumpSumPaymentForCreateBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 员工id，具体类型由入参中的 user_id_type 指定
//
// 示例值：7337149697626801708
func (builder *LumpSumPaymentForCreateBuilder) UserId(userId string) *LumpSumPaymentForCreateBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 总金额，字符串表达的数字
//
// 示例值：2000.00
func (builder *LumpSumPaymentForCreateBuilder) TotalAmount(totalAmount string) *LumpSumPaymentForCreateBuilder {
	builder.totalAmount = totalAmount
	builder.totalAmountFlag = true
	return builder
}

// 绑定期，单位为月
//
// 示例值：2
func (builder *LumpSumPaymentForCreateBuilder) BindingPeriod(bindingPeriod int) *LumpSumPaymentForCreateBuilder {
	builder.bindingPeriod = bindingPeriod
	builder.bindingPeriodFlag = true
	return builder
}

// 币种id
//
// 示例值：6863329932261459464
func (builder *LumpSumPaymentForCreateBuilder) CurrencyId(currencyId string) *LumpSumPaymentForCreateBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 发放次数，必须与 details 的长度一致
//
// 示例值：3
func (builder *LumpSumPaymentForCreateBuilder) IssuanceFrequency(issuanceFrequency int) *LumpSumPaymentForCreateBuilder {
	builder.issuanceFrequency = issuanceFrequency
	builder.issuanceFrequencyFlag = true
	return builder
}

// 薪酬项id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list?appId=cli_a3077e2bb03c100d 进行查询）
//
// 示例值：7411039006180312620
func (builder *LumpSumPaymentForCreateBuilder) ItemId(itemId string) *LumpSumPaymentForCreateBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 所属期开始日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentForCreateBuilder) ReferencePeriodStartDate(referencePeriodStartDate string) *LumpSumPaymentForCreateBuilder {
	builder.referencePeriodStartDate = referencePeriodStartDate
	builder.referencePeriodStartDateFlag = true
	return builder
}

// 所属期结束日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentForCreateBuilder) ReferencePeriodEndDate(referencePeriodEndDate string) *LumpSumPaymentForCreateBuilder {
	builder.referencePeriodEndDate = referencePeriodEndDate
	builder.referencePeriodEndDateFlag = true
	return builder
}

// 发放明细列表
//
// 示例值：
func (builder *LumpSumPaymentForCreateBuilder) Details(details []*LumpSumPaymentDetailForCreate) *LumpSumPaymentForCreateBuilder {
	builder.details = details
	builder.detailsFlag = true
	return builder
}

// 备注
//
// 示例值：备注
func (builder *LumpSumPaymentForCreateBuilder) Remark(remark string) *LumpSumPaymentForCreateBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// 绑定期带小数
//
// 示例值：12.56
func (builder *LumpSumPaymentForCreateBuilder) BindingPeriodDecimal(bindingPeriodDecimal string) *LumpSumPaymentForCreateBuilder {
	builder.bindingPeriodDecimal = bindingPeriodDecimal
	builder.bindingPeriodDecimalFlag = true
	return builder
}

func (builder *LumpSumPaymentForCreateBuilder) Build() *LumpSumPaymentForCreate {
	req := &LumpSumPaymentForCreate{}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.totalAmountFlag {
		req.TotalAmount = &builder.totalAmount

	}
	if builder.bindingPeriodFlag {
		req.BindingPeriod = &builder.bindingPeriod

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

	}
	if builder.issuanceFrequencyFlag {
		req.IssuanceFrequency = &builder.issuanceFrequency

	}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.referencePeriodStartDateFlag {
		req.ReferencePeriodStartDate = &builder.referencePeriodStartDate

	}
	if builder.referencePeriodEndDateFlag {
		req.ReferencePeriodEndDate = &builder.referencePeriodEndDate

	}
	if builder.detailsFlag {
		req.Details = builder.details
	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.bindingPeriodDecimalFlag {
		req.BindingPeriodDecimal = &builder.bindingPeriodDecimal

	}
	return req
}

type LumpSumPaymentForUpdate struct {
	Id *string `json:"id,omitempty"` // 一次性支付记录id

	TotalAmount *string `json:"total_amount,omitempty"` // 总金额，字符串表达的数字

	BindingPeriod *int `json:"binding_period,omitempty"` // 绑定期，单位为月

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

	IssuanceFrequency *int `json:"issuance_frequency,omitempty"` // 发放次数，必须与details的长度一致

	Remark *string `json:"remark,omitempty"` // 备注

	ReferencePeriodStartDate *string `json:"reference_period_start_date,omitempty"` // 所属期开始日期

	ReferencePeriodEndDate *string `json:"reference_period_end_date,omitempty"` // 所属期结束日期

	Details []*LumpSumPaymentDetailForUpdate `json:"details,omitempty"` // 发放明细列表

	BindingPeriodDecimal *string `json:"binding_period_decimal,omitempty"` // 绑定期带小数

	OperationSource *string `json:"operation_source,omitempty"` // 操作来源
}

type LumpSumPaymentForUpdateBuilder struct {
	id     string // 一次性支付记录id
	idFlag bool

	totalAmount     string // 总金额，字符串表达的数字
	totalAmountFlag bool

	bindingPeriod     int // 绑定期，单位为月
	bindingPeriodFlag bool

	currencyId     string // 币种id
	currencyIdFlag bool

	issuanceFrequency     int // 发放次数，必须与details的长度一致
	issuanceFrequencyFlag bool

	remark     string // 备注
	remarkFlag bool

	referencePeriodStartDate     string // 所属期开始日期
	referencePeriodStartDateFlag bool

	referencePeriodEndDate     string // 所属期结束日期
	referencePeriodEndDateFlag bool

	details     []*LumpSumPaymentDetailForUpdate // 发放明细列表
	detailsFlag bool

	bindingPeriodDecimal     string // 绑定期带小数
	bindingPeriodDecimalFlag bool

	operationSource     string // 操作来源
	operationSourceFlag bool
}

func NewLumpSumPaymentForUpdateBuilder() *LumpSumPaymentForUpdateBuilder {
	builder := &LumpSumPaymentForUpdateBuilder{}
	return builder
}

// 一次性支付记录id
//
// 示例值：7397033607132351532
func (builder *LumpSumPaymentForUpdateBuilder) Id(id string) *LumpSumPaymentForUpdateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 总金额，字符串表达的数字
//
// 示例值：2000.00
func (builder *LumpSumPaymentForUpdateBuilder) TotalAmount(totalAmount string) *LumpSumPaymentForUpdateBuilder {
	builder.totalAmount = totalAmount
	builder.totalAmountFlag = true
	return builder
}

// 绑定期，单位为月
//
// 示例值：2
func (builder *LumpSumPaymentForUpdateBuilder) BindingPeriod(bindingPeriod int) *LumpSumPaymentForUpdateBuilder {
	builder.bindingPeriod = bindingPeriod
	builder.bindingPeriodFlag = true
	return builder
}

// 币种id
//
// 示例值：6863329932261459464
func (builder *LumpSumPaymentForUpdateBuilder) CurrencyId(currencyId string) *LumpSumPaymentForUpdateBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 发放次数，必须与details的长度一致
//
// 示例值：3
func (builder *LumpSumPaymentForUpdateBuilder) IssuanceFrequency(issuanceFrequency int) *LumpSumPaymentForUpdateBuilder {
	builder.issuanceFrequency = issuanceFrequency
	builder.issuanceFrequencyFlag = true
	return builder
}

// 备注
//
// 示例值：备注
func (builder *LumpSumPaymentForUpdateBuilder) Remark(remark string) *LumpSumPaymentForUpdateBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// 所属期开始日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentForUpdateBuilder) ReferencePeriodStartDate(referencePeriodStartDate string) *LumpSumPaymentForUpdateBuilder {
	builder.referencePeriodStartDate = referencePeriodStartDate
	builder.referencePeriodStartDateFlag = true
	return builder
}

// 所属期结束日期
//
// 示例值：2024-08-01
func (builder *LumpSumPaymentForUpdateBuilder) ReferencePeriodEndDate(referencePeriodEndDate string) *LumpSumPaymentForUpdateBuilder {
	builder.referencePeriodEndDate = referencePeriodEndDate
	builder.referencePeriodEndDateFlag = true
	return builder
}

// 发放明细列表
//
// 示例值：
func (builder *LumpSumPaymentForUpdateBuilder) Details(details []*LumpSumPaymentDetailForUpdate) *LumpSumPaymentForUpdateBuilder {
	builder.details = details
	builder.detailsFlag = true
	return builder
}

// 绑定期带小数
//
// 示例值：12
func (builder *LumpSumPaymentForUpdateBuilder) BindingPeriodDecimal(bindingPeriodDecimal string) *LumpSumPaymentForUpdateBuilder {
	builder.bindingPeriodDecimal = bindingPeriodDecimal
	builder.bindingPeriodDecimalFlag = true
	return builder
}

// 操作来源
//
// 示例值：apaas_spot
func (builder *LumpSumPaymentForUpdateBuilder) OperationSource(operationSource string) *LumpSumPaymentForUpdateBuilder {
	builder.operationSource = operationSource
	builder.operationSourceFlag = true
	return builder
}

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

	}
	if builder.totalAmountFlag {
		req.TotalAmount = &builder.totalAmount

	}
	if builder.bindingPeriodFlag {
		req.BindingPeriod = &builder.bindingPeriod

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

	}
	if builder.issuanceFrequencyFlag {
		req.IssuanceFrequency = &builder.issuanceFrequency

	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.referencePeriodStartDateFlag {
		req.ReferencePeriodStartDate = &builder.referencePeriodStartDate

	}
	if builder.referencePeriodEndDateFlag {
		req.ReferencePeriodEndDate = &builder.referencePeriodEndDate

	}
	if builder.detailsFlag {
		req.Details = builder.details
	}
	if builder.bindingPeriodDecimalFlag {
		req.BindingPeriodDecimal = &builder.bindingPeriodDecimal

	}
	if builder.operationSourceFlag {
		req.OperationSource = &builder.operationSource

	}
	return req
}

type LumpSumPaymentOperateResult struct {
	Id *string `json:"id,omitempty"` // 操作的记录的 id

	UniqueId *string `json:"unique_id,omitempty"` // 操作的记录的 unique_id

	Code *int `json:"code,omitempty"` // 操作结果状态码

	Message *string `json:"message,omitempty"` // 操作结果描述
}

type LumpSumPaymentOperateResultBuilder struct {
	id     string // 操作的记录的 id
	idFlag bool

	uniqueId     string // 操作的记录的 unique_id
	uniqueIdFlag bool

	code     int // 操作结果状态码
	codeFlag bool

	message     string // 操作结果描述
	messageFlag bool
}

func NewLumpSumPaymentOperateResultBuilder() *LumpSumPaymentOperateResultBuilder {
	builder := &LumpSumPaymentOperateResultBuilder{}
	return builder
}

// 操作的记录的 id
//
// 示例值：7390583861280556588
func (builder *LumpSumPaymentOperateResultBuilder) Id(id string) *LumpSumPaymentOperateResultBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 操作的记录的 unique_id
//
// 示例值：7390583861280556588
func (builder *LumpSumPaymentOperateResultBuilder) UniqueId(uniqueId string) *LumpSumPaymentOperateResultBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 操作结果状态码
//
// 示例值：21270202
func (builder *LumpSumPaymentOperateResultBuilder) Code(code int) *LumpSumPaymentOperateResultBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 操作结果描述
//
// 示例值：uqniue id conflict
func (builder *LumpSumPaymentOperateResultBuilder) Message(message string) *LumpSumPaymentOperateResultBuilder {
	builder.message = message
	builder.messageFlag = true
	return builder
}

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

	}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId

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

	}
	if builder.messageFlag {
		req.Message = &builder.message

	}
	return req
}

type Plan struct {
	PlanId *string `json:"plan_id,omitempty"` // 方案ID

	PlanTid *string `json:"plan_tid,omitempty"` // 方案时间轴版本ID

	Name *I18n `json:"name,omitempty"` // 方案名称

	PeopleId *int `json:"people_id,omitempty"` // People系统方案ID
}

type PlanBuilder struct {
	planId     string // 方案ID
	planIdFlag bool

	planTid     string // 方案时间轴版本ID
	planTidFlag bool

	name     *I18n // 方案名称
	nameFlag bool

	peopleId     int // People系统方案ID
	peopleIdFlag bool
}

func NewPlanBuilder() *PlanBuilder {
	builder := &PlanBuilder{}
	return builder
}

// 方案ID
//
// 示例值：7234781378700985913
func (builder *PlanBuilder) PlanId(planId string) *PlanBuilder {
	builder.planId = planId
	builder.planIdFlag = true
	return builder
}

// 方案时间轴版本ID
//
// 示例值：7137286102364227108
func (builder *PlanBuilder) PlanTid(planTid string) *PlanBuilder {
	builder.planTid = planTid
	builder.planTidFlag = true
	return builder
}

// 方案名称
//
// 示例值：
func (builder *PlanBuilder) Name(name *I18n) *PlanBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// People系统方案ID
//
// 示例值：20
func (builder *PlanBuilder) PeopleId(peopleId int) *PlanBuilder {
	builder.peopleId = peopleId
	builder.peopleIdFlag = true
	return builder
}

func (builder *PlanBuilder) Build() *Plan {
	req := &Plan{}
	if builder.planIdFlag {
		req.PlanId = &builder.planId

	}
	if builder.planTidFlag {
		req.PlanTid = &builder.planTid

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.peopleIdFlag {
		req.PeopleId = &builder.peopleId

	}
	return req
}

type PlanCondition struct {
	LeftType *int `json:"left_type,omitempty"` // 适用范围左值

	Operator *int `json:"operator,omitempty"` // 适用范围操作

	RightValue []string `json:"right_value,omitempty"` // 适用范围右值
}

type PlanConditionBuilder struct {
	leftType     int // 适用范围左值
	leftTypeFlag bool

	operator     int // 适用范围操作
	operatorFlag bool

	rightValue     []string // 适用范围右值
	rightValueFlag bool
}

func NewPlanConditionBuilder() *PlanConditionBuilder {
	builder := &PlanConditionBuilder{}
	return builder
}

// 适用范围左值
//
// 示例值：7
func (builder *PlanConditionBuilder) LeftType(leftType int) *PlanConditionBuilder {
	builder.leftType = leftType
	builder.leftTypeFlag = true
	return builder
}

// 适用范围操作
//
// 示例值：1
func (builder *PlanConditionBuilder) Operator(operator int) *PlanConditionBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 适用范围右值
//
// 示例值：21341234
func (builder *PlanConditionBuilder) RightValue(rightValue []string) *PlanConditionBuilder {
	builder.rightValue = rightValue
	builder.rightValueFlag = true
	return builder
}

func (builder *PlanConditionBuilder) Build() *PlanCondition {
	req := &PlanCondition{}
	if builder.leftTypeFlag {
		req.LeftType = &builder.leftType

	}
	if builder.operatorFlag {
		req.Operator = &builder.operator

	}
	if builder.rightValueFlag {
		req.RightValue = builder.rightValue
	}
	return req
}

type PlanDetail struct {
	Id *string `json:"id,omitempty"` // 薪资方案ID

	Tid *string `json:"tid,omitempty"` // 薪资方案TID

	Name *string `json:"name,omitempty"` // 薪资方案名称

	Description *string `json:"description,omitempty"` // 薪资方案描述

	EffectiveDate *string `json:"effective_date,omitempty"` // 薪资方案生效时间

	PlanScope *PlanScope `json:"plan_scope,omitempty"` // 薪资方案适用范围

	CurrencyId *string `json:"currency_id,omitempty"` // 币种ID

	ProbationSalaryStatus *bool `json:"probation_salary_status,omitempty"` // 开启试用期薪酬状态

	PlanItems []*PlanItem `json:"plan_items,omitempty"` // 方案关联的薪资项

	PlanIndicators []*PlanIndicator `json:"plan_indicators,omitempty"` // 方案关联的薪资统计指标

	I18nNames []*I18nContent `json:"i18n_names,omitempty"` // 多语言名称

	I18nDescriptions []*I18nContent `json:"i18n_descriptions,omitempty"` // 多语言描述
}

type PlanDetailBuilder struct {
	id     string // 薪资方案ID
	idFlag bool

	tid     string // 薪资方案TID
	tidFlag bool

	name     string // 薪资方案名称
	nameFlag bool

	description     string // 薪资方案描述
	descriptionFlag bool

	effectiveDate     string // 薪资方案生效时间
	effectiveDateFlag bool

	planScope     *PlanScope // 薪资方案适用范围
	planScopeFlag bool

	currencyId     string // 币种ID
	currencyIdFlag bool

	probationSalaryStatus     bool // 开启试用期薪酬状态
	probationSalaryStatusFlag bool

	planItems     []*PlanItem // 方案关联的薪资项
	planItemsFlag bool

	planIndicators     []*PlanIndicator // 方案关联的薪资统计指标
	planIndicatorsFlag bool

	i18nNames     []*I18nContent // 多语言名称
	i18nNamesFlag bool

	i18nDescriptions     []*I18nContent // 多语言描述
	i18nDescriptionsFlag bool
}

func NewPlanDetailBuilder() *PlanDetailBuilder {
	builder := &PlanDetailBuilder{}
	return builder
}

// 薪资方案ID
//
// 示例值：2134193289
func (builder *PlanDetailBuilder) Id(id string) *PlanDetailBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪资方案TID
//
// 示例值：129738122
func (builder *PlanDetailBuilder) Tid(tid string) *PlanDetailBuilder {
	builder.tid = tid
	builder.tidFlag = true
	return builder
}

// 薪资方案名称
//
// 示例值：基本月薪方案
func (builder *PlanDetailBuilder) Name(name string) *PlanDetailBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 薪资方案描述
//
// 示例值：基本月薪方案描述
func (builder *PlanDetailBuilder) Description(description string) *PlanDetailBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 薪资方案生效时间
//
// 示例值：2022-10-20
func (builder *PlanDetailBuilder) EffectiveDate(effectiveDate string) *PlanDetailBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 薪资方案适用范围
//
// 示例值：
func (builder *PlanDetailBuilder) PlanScope(planScope *PlanScope) *PlanDetailBuilder {
	builder.planScope = planScope
	builder.planScopeFlag = true
	return builder
}

// 币种ID
//
// 示例值：341324121
func (builder *PlanDetailBuilder) CurrencyId(currencyId string) *PlanDetailBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 开启试用期薪酬状态
//
// 示例值：true
func (builder *PlanDetailBuilder) ProbationSalaryStatus(probationSalaryStatus bool) *PlanDetailBuilder {
	builder.probationSalaryStatus = probationSalaryStatus
	builder.probationSalaryStatusFlag = true
	return builder
}

// 方案关联的薪资项
//
// 示例值：
func (builder *PlanDetailBuilder) PlanItems(planItems []*PlanItem) *PlanDetailBuilder {
	builder.planItems = planItems
	builder.planItemsFlag = true
	return builder
}

// 方案关联的薪资统计指标
//
// 示例值：
func (builder *PlanDetailBuilder) PlanIndicators(planIndicators []*PlanIndicator) *PlanDetailBuilder {
	builder.planIndicators = planIndicators
	builder.planIndicatorsFlag = true
	return builder
}

// 多语言名称
//
// 示例值：
func (builder *PlanDetailBuilder) I18nNames(i18nNames []*I18nContent) *PlanDetailBuilder {
	builder.i18nNames = i18nNames
	builder.i18nNamesFlag = true
	return builder
}

// 多语言描述
//
// 示例值：
func (builder *PlanDetailBuilder) I18nDescriptions(i18nDescriptions []*I18nContent) *PlanDetailBuilder {
	builder.i18nDescriptions = i18nDescriptions
	builder.i18nDescriptionsFlag = true
	return builder
}

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

	}
	if builder.tidFlag {
		req.Tid = &builder.tid

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

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

	}
	if builder.planScopeFlag {
		req.PlanScope = builder.planScope
	}
	if builder.currencyIdFlag {
		req.CurrencyId = &builder.currencyId

	}
	if builder.probationSalaryStatusFlag {
		req.ProbationSalaryStatus = &builder.probationSalaryStatus

	}
	if builder.planItemsFlag {
		req.PlanItems = builder.planItems
	}
	if builder.planIndicatorsFlag {
		req.PlanIndicators = builder.planIndicators
	}
	if builder.i18nNamesFlag {
		req.I18nNames = builder.i18nNames
	}
	if builder.i18nDescriptionsFlag {
		req.I18nDescriptions = builder.i18nDescriptions
	}
	return req
}

type PlanIndicator struct {
	IndicatorId *string `json:"indicator_id,omitempty"` // 薪资统计指标ID，详细信息可以通过[批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)接口查询获得

	PlanIndicatorLogic *AdjustmentLogic `json:"plan_indicator_logic,omitempty"` // 方案关联薪资统计指标逻辑配置
}

type PlanIndicatorBuilder struct {
	indicatorId     string // 薪资统计指标ID，详细信息可以通过[批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)接口查询获得
	indicatorIdFlag bool

	planIndicatorLogic     *AdjustmentLogic // 方案关联薪资统计指标逻辑配置
	planIndicatorLogicFlag bool
}

func NewPlanIndicatorBuilder() *PlanIndicatorBuilder {
	builder := &PlanIndicatorBuilder{}
	return builder
}

// 薪资统计指标ID，详细信息可以通过[批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)接口查询获得
//
// 示例值：13243432
func (builder *PlanIndicatorBuilder) IndicatorId(indicatorId string) *PlanIndicatorBuilder {
	builder.indicatorId = indicatorId
	builder.indicatorIdFlag = true
	return builder
}

// 方案关联薪资统计指标逻辑配置
//
// 示例值：
func (builder *PlanIndicatorBuilder) PlanIndicatorLogic(planIndicatorLogic *AdjustmentLogic) *PlanIndicatorBuilder {
	builder.planIndicatorLogic = planIndicatorLogic
	builder.planIndicatorLogicFlag = true
	return builder
}

func (builder *PlanIndicatorBuilder) Build() *PlanIndicator {
	req := &PlanIndicator{}
	if builder.indicatorIdFlag {
		req.IndicatorId = &builder.indicatorId

	}
	if builder.planIndicatorLogicFlag {
		req.PlanIndicatorLogic = builder.planIndicatorLogic
	}
	return req
}

type PlanItem struct {
	AdjustmentType *string `json:"adjustment_type,omitempty"` // 定薪方式

	ItemId *string `json:"item_id,omitempty"` // 薪酬项ID，详细信息可以通过[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)接口查询获得

	PlanItemLogic *AdjustmentLogic `json:"plan_item_logic,omitempty"` // 方案关联薪资项逻辑配置

	ProbationDiscountType *string `json:"probation_discount_type,omitempty"` // 试用期薪酬类型

	ProbationDiscountPercentum *string `json:"probation_discount_percentum,omitempty"` // 试用期薪酬百分比
}

type PlanItemBuilder struct {
	adjustmentType     string // 定薪方式
	adjustmentTypeFlag bool

	itemId     string // 薪酬项ID，详细信息可以通过[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)接口查询获得
	itemIdFlag bool

	planItemLogic     *AdjustmentLogic // 方案关联薪资项逻辑配置
	planItemLogicFlag bool

	probationDiscountType     string // 试用期薪酬类型
	probationDiscountTypeFlag bool

	probationDiscountPercentum     string // 试用期薪酬百分比
	probationDiscountPercentumFlag bool
}

func NewPlanItemBuilder() *PlanItemBuilder {
	builder := &PlanItemBuilder{}
	return builder
}

// 定薪方式
//
// 示例值：manual
func (builder *PlanItemBuilder) AdjustmentType(adjustmentType string) *PlanItemBuilder {
	builder.adjustmentType = adjustmentType
	builder.adjustmentTypeFlag = true
	return builder
}

// 薪酬项ID，详细信息可以通过[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)接口查询获得
//
// 示例值：21341234
func (builder *PlanItemBuilder) ItemId(itemId string) *PlanItemBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 方案关联薪资项逻辑配置
//
// 示例值：
func (builder *PlanItemBuilder) PlanItemLogic(planItemLogic *AdjustmentLogic) *PlanItemBuilder {
	builder.planItemLogic = planItemLogic
	builder.planItemLogicFlag = true
	return builder
}

// 试用期薪酬类型
//
// 示例值：percentum
func (builder *PlanItemBuilder) ProbationDiscountType(probationDiscountType string) *PlanItemBuilder {
	builder.probationDiscountType = probationDiscountType
	builder.probationDiscountTypeFlag = true
	return builder
}

// 试用期薪酬百分比
//
// 示例值：80.00
func (builder *PlanItemBuilder) ProbationDiscountPercentum(probationDiscountPercentum string) *PlanItemBuilder {
	builder.probationDiscountPercentum = probationDiscountPercentum
	builder.probationDiscountPercentumFlag = true
	return builder
}

func (builder *PlanItemBuilder) Build() *PlanItem {
	req := &PlanItem{}
	if builder.adjustmentTypeFlag {
		req.AdjustmentType = &builder.adjustmentType

	}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.planItemLogicFlag {
		req.PlanItemLogic = builder.planItemLogic
	}
	if builder.probationDiscountTypeFlag {
		req.ProbationDiscountType = &builder.probationDiscountType

	}
	if builder.probationDiscountPercentumFlag {
		req.ProbationDiscountPercentum = &builder.probationDiscountPercentum

	}
	return req
}

type PlanScope struct {
	IsAll *bool `json:"is_all,omitempty"` // 是否全部范围

	PlanConditions []*PlanCondition `json:"plan_conditions,omitempty"` // 方案适用范围条件组
}

type PlanScopeBuilder struct {
	isAll     bool // 是否全部范围
	isAllFlag bool

	planConditions     []*PlanCondition // 方案适用范围条件组
	planConditionsFlag bool
}

func NewPlanScopeBuilder() *PlanScopeBuilder {
	builder := &PlanScopeBuilder{}
	return builder
}

// 是否全部范围
//
// 示例值：false
func (builder *PlanScopeBuilder) IsAll(isAll bool) *PlanScopeBuilder {
	builder.isAll = isAll
	builder.isAllFlag = true
	return builder
}

// 方案适用范围条件组
//
// 示例值：
func (builder *PlanScopeBuilder) PlanConditions(planConditions []*PlanCondition) *PlanScopeBuilder {
	builder.planConditions = planConditions
	builder.planConditionsFlag = true
	return builder
}

func (builder *PlanScopeBuilder) Build() *PlanScope {
	req := &PlanScope{}
	if builder.isAllFlag {
		req.IsAll = &builder.isAll

	}
	if builder.planConditionsFlag {
		req.PlanConditions = builder.planConditions
	}
	return req
}

type RecurringPayment struct {
	Id *string `json:"id,omitempty"` // 经常性支付记录id

	UniqueId *string `json:"unique_id,omitempty"` // 外部幂等id，由上游业务决定

	UserId *string `json:"user_id,omitempty"` // 员工id，具体类型由入参中的 user_id_type 指定

	ItemId *string `json:"item_id,omitempty"` // 薪酬项id

	IssuanceType *string `json:"issuance_type,omitempty"` // 发放方式

	EachAmount *string `json:"each_amount,omitempty"` // 单次发放金额

	StartDate *string `json:"start_date,omitempty"` // 发放开始日期

	EndDate *string `json:"end_date,omitempty"` // 发放结束日期

	IssuancePeriod *string `json:"issuance_period,omitempty"` // 发放频率

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

	Remark *string `json:"remark,omitempty"` // 备注

	IssuanceCountryRegionId *string `json:"issuance_country_region_id,omitempty"` // 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
}

type RecurringPaymentBuilder struct {
	id     string // 经常性支付记录id
	idFlag bool

	uniqueId     string // 外部幂等id，由上游业务决定
	uniqueIdFlag bool

	userId     string // 员工id，具体类型由入参中的 user_id_type 指定
	userIdFlag bool

	itemId     string // 薪酬项id
	itemIdFlag bool

	issuanceType     string // 发放方式
	issuanceTypeFlag bool

	eachAmount     string // 单次发放金额
	eachAmountFlag bool

	startDate     string // 发放开始日期
	startDateFlag bool

	endDate     string // 发放结束日期
	endDateFlag bool

	issuancePeriod     string // 发放频率
	issuancePeriodFlag bool

	currencyId     string // 币种id
	currencyIdFlag bool

	remark     string // 备注
	remarkFlag bool

	issuanceCountryRegionId     string // 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
	issuanceCountryRegionIdFlag bool
}

func NewRecurringPaymentBuilder() *RecurringPaymentBuilder {
	builder := &RecurringPaymentBuilder{}
	return builder
}

// 经常性支付记录id
//
// 示例值：7397033607132351532
func (builder *RecurringPaymentBuilder) Id(id string) *RecurringPaymentBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 外部幂等id，由上游业务决定
//
// 示例值：7402510801304718380_7309316347007764012_7402523725868058156_1726070400000_10000
func (builder *RecurringPaymentBuilder) UniqueId(uniqueId string) *RecurringPaymentBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 员工id，具体类型由入参中的 user_id_type 指定
//
// 示例值：7337149697626801708
func (builder *RecurringPaymentBuilder) UserId(userId string) *RecurringPaymentBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 薪酬项id
//
// 示例值：7411039006180312620
func (builder *RecurringPaymentBuilder) ItemId(itemId string) *RecurringPaymentBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 发放方式
//
// 示例值：with_salary
func (builder *RecurringPaymentBuilder) IssuanceType(issuanceType string) *RecurringPaymentBuilder {
	builder.issuanceType = issuanceType
	builder.issuanceTypeFlag = true
	return builder
}

// 单次发放金额
//
// 示例值：24.00
func (builder *RecurringPaymentBuilder) EachAmount(eachAmount string) *RecurringPaymentBuilder {
	builder.eachAmount = eachAmount
	builder.eachAmountFlag = true
	return builder
}

// 发放开始日期
//
// 示例值：2024-01-10
func (builder *RecurringPaymentBuilder) StartDate(startDate string) *RecurringPaymentBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 发放结束日期
//
// 示例值：2025-01-20
func (builder *RecurringPaymentBuilder) EndDate(endDate string) *RecurringPaymentBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 发放频率
//
// 示例值：year
func (builder *RecurringPaymentBuilder) IssuancePeriod(issuancePeriod string) *RecurringPaymentBuilder {
	builder.issuancePeriod = issuancePeriod
	builder.issuancePeriodFlag = true
	return builder
}

// 币种id
//
// 示例值：6863329932261459464
func (builder *RecurringPaymentBuilder) CurrencyId(currencyId string) *RecurringPaymentBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 备注
//
// 示例值：这是个备注
func (builder *RecurringPaymentBuilder) Remark(remark string) *RecurringPaymentBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
//
// 示例值：6862995745046267400
func (builder *RecurringPaymentBuilder) IssuanceCountryRegionId(issuanceCountryRegionId string) *RecurringPaymentBuilder {
	builder.issuanceCountryRegionId = issuanceCountryRegionId
	builder.issuanceCountryRegionIdFlag = true
	return builder
}

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

	}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.issuanceTypeFlag {
		req.IssuanceType = &builder.issuanceType

	}
	if builder.eachAmountFlag {
		req.EachAmount = &builder.eachAmount

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

	}
	if builder.issuancePeriodFlag {
		req.IssuancePeriod = &builder.issuancePeriod

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

	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.issuanceCountryRegionIdFlag {
		req.IssuanceCountryRegionId = &builder.issuanceCountryRegionId

	}
	return req
}

type RecurringPaymentForCreate struct {
	UniqueId *string `json:"unique_id,omitempty"` // 外部幂等id，由上游业务决定

	UserId *string `json:"user_id,omitempty"` // 员工id，具体类型由入参中的 user_id_type 指定

	ItemId *string `json:"item_id,omitempty"` // 薪酬项id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list?appId=cli_a3077e2bb03c100d 进行查询）

	EachAmount *string `json:"each_amount,omitempty"` // 每次发放金额

	StartDate *string `json:"start_date,omitempty"` // 发放开始时间

	EndDate *string `json:"end_date,omitempty"` // 发放结束时间

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

	IssuanceType *string `json:"issuance_type,omitempty"` // 发放方式

	IssuancePeriod *string `json:"issuance_period,omitempty"` // 发放频率

	Remark *string `json:"remark,omitempty"` // 备注

	IssuanceCountryRegionId *string `json:"issuance_country_region_id,omitempty"` // 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
}

type RecurringPaymentForCreateBuilder struct {
	uniqueId     string // 外部幂等id，由上游业务决定
	uniqueIdFlag bool

	userId     string // 员工id，具体类型由入参中的 user_id_type 指定
	userIdFlag bool

	itemId     string // 薪酬项id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list?appId=cli_a3077e2bb03c100d 进行查询）
	itemIdFlag bool

	eachAmount     string // 每次发放金额
	eachAmountFlag bool

	startDate     string // 发放开始时间
	startDateFlag bool

	endDate     string // 发放结束时间
	endDateFlag bool

	currencyId     string // 币种id
	currencyIdFlag bool

	issuanceType     string // 发放方式
	issuanceTypeFlag bool

	issuancePeriod     string // 发放频率
	issuancePeriodFlag bool

	remark     string // 备注
	remarkFlag bool

	issuanceCountryRegionId     string // 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
	issuanceCountryRegionIdFlag bool
}

func NewRecurringPaymentForCreateBuilder() *RecurringPaymentForCreateBuilder {
	builder := &RecurringPaymentForCreateBuilder{}
	return builder
}

// 外部幂等id，由上游业务决定
//
// 示例值：7402510801304718380_7309316347007764012_7402523725868058156_1726070400000_10000
func (builder *RecurringPaymentForCreateBuilder) UniqueId(uniqueId string) *RecurringPaymentForCreateBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 员工id，具体类型由入参中的 user_id_type 指定
//
// 示例值：7337149697626801708
func (builder *RecurringPaymentForCreateBuilder) UserId(userId string) *RecurringPaymentForCreateBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 薪酬项id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list?appId=cli_a3077e2bb03c100d 进行查询）
//
// 示例值：7411039006180312620
func (builder *RecurringPaymentForCreateBuilder) ItemId(itemId string) *RecurringPaymentForCreateBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 每次发放金额
//
// 示例值：20.00
func (builder *RecurringPaymentForCreateBuilder) EachAmount(eachAmount string) *RecurringPaymentForCreateBuilder {
	builder.eachAmount = eachAmount
	builder.eachAmountFlag = true
	return builder
}

// 发放开始时间
//
// 示例值：2024-08-01
func (builder *RecurringPaymentForCreateBuilder) StartDate(startDate string) *RecurringPaymentForCreateBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 发放结束时间
//
// 示例值：2025-08-01
func (builder *RecurringPaymentForCreateBuilder) EndDate(endDate string) *RecurringPaymentForCreateBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 币种id
//
// 示例值：6863329932261459464
func (builder *RecurringPaymentForCreateBuilder) CurrencyId(currencyId string) *RecurringPaymentForCreateBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 发放方式
//
// 示例值：with_salary
func (builder *RecurringPaymentForCreateBuilder) IssuanceType(issuanceType string) *RecurringPaymentForCreateBuilder {
	builder.issuanceType = issuanceType
	builder.issuanceTypeFlag = true
	return builder
}

// 发放频率
//
// 示例值：year
func (builder *RecurringPaymentForCreateBuilder) IssuancePeriod(issuancePeriod string) *RecurringPaymentForCreateBuilder {
	builder.issuancePeriod = issuancePeriod
	builder.issuancePeriodFlag = true
	return builder
}

// 备注
//
// 示例值：这是个备注
func (builder *RecurringPaymentForCreateBuilder) Remark(remark string) *RecurringPaymentForCreateBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
//
// 示例值：6862995745046267400
func (builder *RecurringPaymentForCreateBuilder) IssuanceCountryRegionId(issuanceCountryRegionId string) *RecurringPaymentForCreateBuilder {
	builder.issuanceCountryRegionId = issuanceCountryRegionId
	builder.issuanceCountryRegionIdFlag = true
	return builder
}

func (builder *RecurringPaymentForCreateBuilder) Build() *RecurringPaymentForCreate {
	req := &RecurringPaymentForCreate{}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.eachAmountFlag {
		req.EachAmount = &builder.eachAmount

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

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

	}
	if builder.issuanceTypeFlag {
		req.IssuanceType = &builder.issuanceType

	}
	if builder.issuancePeriodFlag {
		req.IssuancePeriod = &builder.issuancePeriod

	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.issuanceCountryRegionIdFlag {
		req.IssuanceCountryRegionId = &builder.issuanceCountryRegionId

	}
	return req
}

type RecurringPaymentForUpdate struct {
	Id *string `json:"id,omitempty"` // 经常性支付记录id

	EachAmount *string `json:"each_amount,omitempty"` // 每次发放金额

	StartDate *string `json:"start_date,omitempty"` // 发放开始时间

	EndDate *string `json:"end_date,omitempty"` // 发放结束时间

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

	IssuanceType *string `json:"issuance_type,omitempty"` // 发放方式

	Remark *string `json:"remark,omitempty"` // 原因

	IssuanceCountryRegionId *string `json:"issuance_country_region_id,omitempty"` // 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
}

type RecurringPaymentForUpdateBuilder struct {
	id     string // 经常性支付记录id
	idFlag bool

	eachAmount     string // 每次发放金额
	eachAmountFlag bool

	startDate     string // 发放开始时间
	startDateFlag bool

	endDate     string // 发放结束时间
	endDateFlag bool

	currencyId     string // 币种id
	currencyIdFlag bool

	issuanceType     string // 发放方式
	issuanceTypeFlag bool

	remark     string // 原因
	remarkFlag bool

	issuanceCountryRegionId     string // 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
	issuanceCountryRegionIdFlag bool
}

func NewRecurringPaymentForUpdateBuilder() *RecurringPaymentForUpdateBuilder {
	builder := &RecurringPaymentForUpdateBuilder{}
	return builder
}

// 经常性支付记录id
//
// 示例值：7397033607132351532
func (builder *RecurringPaymentForUpdateBuilder) Id(id string) *RecurringPaymentForUpdateBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 每次发放金额
//
// 示例值：10.00
func (builder *RecurringPaymentForUpdateBuilder) EachAmount(eachAmount string) *RecurringPaymentForUpdateBuilder {
	builder.eachAmount = eachAmount
	builder.eachAmountFlag = true
	return builder
}

// 发放开始时间
//
// 示例值：2024-10-20
func (builder *RecurringPaymentForUpdateBuilder) StartDate(startDate string) *RecurringPaymentForUpdateBuilder {
	builder.startDate = startDate
	builder.startDateFlag = true
	return builder
}

// 发放结束时间
//
// 示例值：2025-03-20
func (builder *RecurringPaymentForUpdateBuilder) EndDate(endDate string) *RecurringPaymentForUpdateBuilder {
	builder.endDate = endDate
	builder.endDateFlag = true
	return builder
}

// 币种id
//
// 示例值：6863329932261459464
func (builder *RecurringPaymentForUpdateBuilder) CurrencyId(currencyId string) *RecurringPaymentForUpdateBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 发放方式
//
// 示例值：with_salary
func (builder *RecurringPaymentForUpdateBuilder) IssuanceType(issuanceType string) *RecurringPaymentForUpdateBuilder {
	builder.issuanceType = issuanceType
	builder.issuanceTypeFlag = true
	return builder
}

// 原因
//
// 示例值：这是个备注
func (builder *RecurringPaymentForUpdateBuilder) Remark(remark string) *RecurringPaymentForUpdateBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

// 发放国家id（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-country_region/search进行查询）
//
// 示例值：6862995745046267400
func (builder *RecurringPaymentForUpdateBuilder) IssuanceCountryRegionId(issuanceCountryRegionId string) *RecurringPaymentForUpdateBuilder {
	builder.issuanceCountryRegionId = issuanceCountryRegionId
	builder.issuanceCountryRegionIdFlag = true
	return builder
}

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

	}
	if builder.eachAmountFlag {
		req.EachAmount = &builder.eachAmount

	}
	if builder.startDateFlag {
		req.StartDate = &builder.startDate

	}
	if builder.endDateFlag {
		req.EndDate = &builder.endDate

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

	}
	if builder.issuanceTypeFlag {
		req.IssuanceType = &builder.issuanceType

	}
	if builder.remarkFlag {
		req.Remark = &builder.remark

	}
	if builder.issuanceCountryRegionIdFlag {
		req.IssuanceCountryRegionId = &builder.issuanceCountryRegionId

	}
	return req
}

type RecurringPaymentOperateResult struct {
	Id *string `json:"id,omitempty"` // 操作记录的id

	UniqueId *string `json:"unique_id,omitempty"` // 操作的记录的 unique_id

	Code *int `json:"code,omitempty"` // 操作结果状态码

	Message *string `json:"message,omitempty"` // 操作结果描述
}

type RecurringPaymentOperateResultBuilder struct {
	id     string // 操作记录的id
	idFlag bool

	uniqueId     string // 操作的记录的 unique_id
	uniqueIdFlag bool

	code     int // 操作结果状态码
	codeFlag bool

	message     string // 操作结果描述
	messageFlag bool
}

func NewRecurringPaymentOperateResultBuilder() *RecurringPaymentOperateResultBuilder {
	builder := &RecurringPaymentOperateResultBuilder{}
	return builder
}

// 操作记录的id
//
// 示例值：7390583861280556588
func (builder *RecurringPaymentOperateResultBuilder) Id(id string) *RecurringPaymentOperateResultBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 操作的记录的 unique_id
//
// 示例值：7390583861280556588
func (builder *RecurringPaymentOperateResultBuilder) UniqueId(uniqueId string) *RecurringPaymentOperateResultBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 操作结果状态码
//
// 示例值：21270202
func (builder *RecurringPaymentOperateResultBuilder) Code(code int) *RecurringPaymentOperateResultBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

// 操作结果描述
//
// 示例值：uqniue id conflict
func (builder *RecurringPaymentOperateResultBuilder) Message(message string) *RecurringPaymentOperateResultBuilder {
	builder.message = message
	builder.messageFlag = true
	return builder
}

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

	}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId

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

	}
	if builder.messageFlag {
		req.Message = &builder.message

	}
	return req
}

type SalaryGrade struct {
	Id *string `json:"id,omitempty"` // 薪等ID

	Name *I18n `json:"name,omitempty"` // 薪等名称

	Status *bool `json:"status,omitempty"` // 是否启用
}

type SalaryGradeBuilder struct {
	id     string // 薪等ID
	idFlag bool

	name     *I18n // 薪等名称
	nameFlag bool

	status     bool // 是否启用
	statusFlag bool
}

func NewSalaryGradeBuilder() *SalaryGradeBuilder {
	builder := &SalaryGradeBuilder{}
	return builder
}

// 薪等ID
//
// 示例值：7491135696314353196
func (builder *SalaryGradeBuilder) Id(id string) *SalaryGradeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪等名称
//
// 示例值：
func (builder *SalaryGradeBuilder) Name(name *I18n) *SalaryGradeBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *SalaryGradeBuilder) Status(status bool) *SalaryGradeBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type SalaryLevel struct {
	Id *string `json:"id,omitempty"` // 薪级ID

	Name *I18n `json:"name,omitempty"` // 薪级名称

	Status *bool `json:"status,omitempty"` // 是否启用

	SalaryGrades []*SalaryGrade `json:"salary_grades,omitempty"` // 薪等子节点
}

type SalaryLevelBuilder struct {
	id     string // 薪级ID
	idFlag bool

	name     *I18n // 薪级名称
	nameFlag bool

	status     bool // 是否启用
	statusFlag bool

	salaryGrades     []*SalaryGrade // 薪等子节点
	salaryGradesFlag bool
}

func NewSalaryLevelBuilder() *SalaryLevelBuilder {
	builder := &SalaryLevelBuilder{}
	return builder
}

// 薪级ID
//
// 示例值：7491135696314353196
func (builder *SalaryLevelBuilder) Id(id string) *SalaryLevelBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪级名称
//
// 示例值：
func (builder *SalaryLevelBuilder) Name(name *I18n) *SalaryLevelBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用
//
// 示例值：
func (builder *SalaryLevelBuilder) Status(status bool) *SalaryLevelBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 薪等子节点
//
// 示例值：
func (builder *SalaryLevelBuilder) SalaryGrades(salaryGrades []*SalaryGrade) *SalaryLevelBuilder {
	builder.salaryGrades = salaryGrades
	builder.salaryGradesFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.salaryGradesFlag {
		req.SalaryGrades = builder.salaryGrades
	}
	return req
}

type SalaryLevelType struct {
	Id *string `json:"id,omitempty"` // 薪级类型ID

	Name *I18n `json:"name,omitempty"` // 薪级类型名称

	Status *bool `json:"status,omitempty"` // 是否启用

	SalaryLevels []*SalaryLevel `json:"salary_levels,omitempty"` // 薪级子节点
}

type SalaryLevelTypeBuilder struct {
	id     string // 薪级类型ID
	idFlag bool

	name     *I18n // 薪级类型名称
	nameFlag bool

	status     bool // 是否启用
	statusFlag bool

	salaryLevels     []*SalaryLevel // 薪级子节点
	salaryLevelsFlag bool
}

func NewSalaryLevelTypeBuilder() *SalaryLevelTypeBuilder {
	builder := &SalaryLevelTypeBuilder{}
	return builder
}

// 薪级类型ID
//
// 示例值：7491135696314353196
func (builder *SalaryLevelTypeBuilder) Id(id string) *SalaryLevelTypeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪级类型名称
//
// 示例值：
func (builder *SalaryLevelTypeBuilder) Name(name *I18n) *SalaryLevelTypeBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 是否启用
//
// 示例值：true
func (builder *SalaryLevelTypeBuilder) Status(status bool) *SalaryLevelTypeBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 薪级子节点
//
// 示例值：
func (builder *SalaryLevelTypeBuilder) SalaryLevels(salaryLevels []*SalaryLevel) *SalaryLevelTypeBuilder {
	builder.salaryLevels = salaryLevels
	builder.salaryLevelsFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.salaryLevelsFlag {
		req.SalaryLevels = builder.salaryLevels
	}
	return req
}

type SocialArchive struct {
	UserId *string `json:"user_id,omitempty"` // 员工ID

	Details []*SocialArchiveDetail `json:"details,omitempty"` // 员工参保档案，包含社保、公积金档案
}

type SocialArchiveBuilder struct {
	userId     string // 员工ID
	userIdFlag bool

	details     []*SocialArchiveDetail // 员工参保档案，包含社保、公积金档案
	detailsFlag bool
}

func NewSocialArchiveBuilder() *SocialArchiveBuilder {
	builder := &SocialArchiveBuilder{}
	return builder
}

// 员工ID
//
// 示例值：
func (builder *SocialArchiveBuilder) UserId(userId string) *SocialArchiveBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 员工参保档案，包含社保、公积金档案
//
// 示例值：
func (builder *SocialArchiveBuilder) Details(details []*SocialArchiveDetail) *SocialArchiveBuilder {
	builder.details = details
	builder.detailsFlag = true
	return builder
}

func (builder *SocialArchiveBuilder) Build() *SocialArchive {
	req := &SocialArchive{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.detailsFlag {
		req.Details = builder.details
	}
	return req
}

type SocialArchiveAdjustRecord struct {
	UserId *string `json:"user_id,omitempty"` // 员工ID

	RecordType *string `json:"record_type,omitempty"` // 类型，increase: 增员; attrition: 减员

	Details []*SocialArchiveDetail `json:"details,omitempty"` // 员工增减员记录，包括社保、公积金记录

	RecordId *string `json:"record_id,omitempty"` // 增减员记录ID
}

type SocialArchiveAdjustRecordBuilder struct {
	userId     string // 员工ID
	userIdFlag bool

	recordType     string // 类型，increase: 增员; attrition: 减员
	recordTypeFlag bool

	details     []*SocialArchiveDetail // 员工增减员记录，包括社保、公积金记录
	detailsFlag bool

	recordId     string // 增减员记录ID
	recordIdFlag bool
}

func NewSocialArchiveAdjustRecordBuilder() *SocialArchiveAdjustRecordBuilder {
	builder := &SocialArchiveAdjustRecordBuilder{}
	return builder
}

// 员工ID
//
// 示例值：
func (builder *SocialArchiveAdjustRecordBuilder) UserId(userId string) *SocialArchiveAdjustRecordBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 类型，increase: 增员; attrition: 减员
//
// 示例值：increase
func (builder *SocialArchiveAdjustRecordBuilder) RecordType(recordType string) *SocialArchiveAdjustRecordBuilder {
	builder.recordType = recordType
	builder.recordTypeFlag = true
	return builder
}

// 员工增减员记录，包括社保、公积金记录
//
// 示例值：
func (builder *SocialArchiveAdjustRecordBuilder) Details(details []*SocialArchiveDetail) *SocialArchiveAdjustRecordBuilder {
	builder.details = details
	builder.detailsFlag = true
	return builder
}

// 增减员记录ID
//
// 示例值：7480742425276139052
func (builder *SocialArchiveAdjustRecordBuilder) RecordId(recordId string) *SocialArchiveAdjustRecordBuilder {
	builder.recordId = recordId
	builder.recordIdFlag = true
	return builder
}

func (builder *SocialArchiveAdjustRecordBuilder) Build() *SocialArchiveAdjustRecord {
	req := &SocialArchiveAdjustRecord{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.recordTypeFlag {
		req.RecordType = &builder.recordType

	}
	if builder.detailsFlag {
		req.Details = builder.details
	}
	if builder.recordIdFlag {
		req.RecordId = &builder.recordId

	}
	return req
}

type SocialArchiveAdjustRecordEvent struct {
	Id *string `json:"id,omitempty"` // 记录id

	InsuranceType *string `json:"insurance_type,omitempty"` // 参保类型。social_insurance社保、provident_fund公积金

	OperateType *string `json:"operate_type,omitempty"` // 待增/减员变更类型，increase新增、adjust编辑、confirm确认、submit_confirm提交并确认、delete取消

	SourceType *string `json:"source_type,omitempty"` // 变更事件来源。new_join增员、intern_to_official实习生转正、employee_type_change雇员类型变更、dismission离职、job_change变更、to_attrition_import待减员导入新增

	RecordType *string `json:"record_type,omitempty"` // 增减员类型, increase: 增员; attrtion: 减员

	AfterAdjustRecordDetail *SocialArchiveDetail `json:"after_adjust_record_detail,omitempty"` // 参保档案

	BeforeAdjustRecordDetail *SocialArchiveDetail `json:"before_adjust_record_detail,omitempty"` // 参保档案
}

type SocialArchiveAdjustRecordEventBuilder struct {
	id     string // 记录id
	idFlag bool

	insuranceType     string // 参保类型。social_insurance社保、provident_fund公积金
	insuranceTypeFlag bool

	operateType     string // 待增/减员变更类型，increase新增、adjust编辑、confirm确认、submit_confirm提交并确认、delete取消
	operateTypeFlag bool

	sourceType     string // 变更事件来源。new_join增员、intern_to_official实习生转正、employee_type_change雇员类型变更、dismission离职、job_change变更、to_attrition_import待减员导入新增
	sourceTypeFlag bool

	recordType     string // 增减员类型, increase: 增员; attrtion: 减员
	recordTypeFlag bool

	afterAdjustRecordDetail     *SocialArchiveDetail // 参保档案
	afterAdjustRecordDetailFlag bool

	beforeAdjustRecordDetail     *SocialArchiveDetail // 参保档案
	beforeAdjustRecordDetailFlag bool
}

func NewSocialArchiveAdjustRecordEventBuilder() *SocialArchiveAdjustRecordEventBuilder {
	builder := &SocialArchiveAdjustRecordEventBuilder{}
	return builder
}

// 记录id
//
// 示例值：7563604424982054444
func (builder *SocialArchiveAdjustRecordEventBuilder) Id(id string) *SocialArchiveAdjustRecordEventBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 参保类型。social_insurance社保、provident_fund公积金
//
// 示例值：
func (builder *SocialArchiveAdjustRecordEventBuilder) InsuranceType(insuranceType string) *SocialArchiveAdjustRecordEventBuilder {
	builder.insuranceType = insuranceType
	builder.insuranceTypeFlag = true
	return builder
}

// 待增/减员变更类型，increase新增、adjust编辑、confirm确认、submit_confirm提交并确认、delete取消
//
// 示例值：add
func (builder *SocialArchiveAdjustRecordEventBuilder) OperateType(operateType string) *SocialArchiveAdjustRecordEventBuilder {
	builder.operateType = operateType
	builder.operateTypeFlag = true
	return builder
}

// 变更事件来源。new_join增员、intern_to_official实习生转正、employee_type_change雇员类型变更、dismission离职、job_change变更、to_attrition_import待减员导入新增
//
// 示例值：new_join
func (builder *SocialArchiveAdjustRecordEventBuilder) SourceType(sourceType string) *SocialArchiveAdjustRecordEventBuilder {
	builder.sourceType = sourceType
	builder.sourceTypeFlag = true
	return builder
}

// 增减员类型, increase: 增员; attrtion: 减员
//
// 示例值：increase
func (builder *SocialArchiveAdjustRecordEventBuilder) RecordType(recordType string) *SocialArchiveAdjustRecordEventBuilder {
	builder.recordType = recordType
	builder.recordTypeFlag = true
	return builder
}

// 参保档案
//
// 示例值：
func (builder *SocialArchiveAdjustRecordEventBuilder) AfterAdjustRecordDetail(afterAdjustRecordDetail *SocialArchiveDetail) *SocialArchiveAdjustRecordEventBuilder {
	builder.afterAdjustRecordDetail = afterAdjustRecordDetail
	builder.afterAdjustRecordDetailFlag = true
	return builder
}

// 参保档案
//
// 示例值：
func (builder *SocialArchiveAdjustRecordEventBuilder) BeforeAdjustRecordDetail(beforeAdjustRecordDetail *SocialArchiveDetail) *SocialArchiveAdjustRecordEventBuilder {
	builder.beforeAdjustRecordDetail = beforeAdjustRecordDetail
	builder.beforeAdjustRecordDetailFlag = true
	return builder
}

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

	}
	if builder.insuranceTypeFlag {
		req.InsuranceType = &builder.insuranceType

	}
	if builder.operateTypeFlag {
		req.OperateType = &builder.operateType

	}
	if builder.sourceTypeFlag {
		req.SourceType = &builder.sourceType

	}
	if builder.recordTypeFlag {
		req.RecordType = &builder.recordType

	}
	if builder.afterAdjustRecordDetailFlag {
		req.AfterAdjustRecordDetail = builder.afterAdjustRecordDetail
	}
	if builder.beforeAdjustRecordDetailFlag {
		req.BeforeAdjustRecordDetail = builder.beforeAdjustRecordDetail
	}
	return req
}

type SocialArchiveDetail struct {
	Description *I18n `json:"description,omitempty"` // 调整说明

	InsuranceType *string `json:"insurance_type,omitempty"` // 类型。social_insurance: 社保; provident_fund: 公积金

	InsuranceStatus *string `json:"insurance_status,omitempty"` // 参保状态，非「参保」状态下，基数、险种数据等为空

	Id *string `json:"id,omitempty"` // 档案时间轴对象ID，仅参保档案对象会包含

	Tid *string `json:"tid,omitempty"` // 档案时间轴对象版本ID，仅参保档案对象会包含

	PlanId *string `json:"plan_id,omitempty"` // 参保方案ID，详细信息可通过「查询参保方案」接口获取

	PlanTid *string `json:"plan_tid,omitempty"` // 参保方案版本ID

	LocationId *string `json:"location_id,omitempty"` // 参保城市ID，可通过获取地点信息接口查询详细信息

	CompanyId *string `json:"company_id,omitempty"` // 社保缴纳主体ID，可通过获取公司主体接口查询详细信息

	AccountType *string `json:"account_type,omitempty"` // 社保账户类型

	InsuranceAccount *string `json:"insurance_account,omitempty"` // 社保账号

	BaseSalary *string `json:"base_salary,omitempty"` // 申报缴纳基数

	InsuranceDetails []*SocialArchiveItem `json:"insurance_details,omitempty"` // 险种数据详情

	EffectiveDate *string `json:"effective_date,omitempty"` // 档案生效时间，HHHH-MM-DD
}

type SocialArchiveDetailBuilder struct {
	description     *I18n // 调整说明
	descriptionFlag bool

	insuranceType     string // 类型。social_insurance: 社保; provident_fund: 公积金
	insuranceTypeFlag bool

	insuranceStatus     string // 参保状态，非「参保」状态下，基数、险种数据等为空
	insuranceStatusFlag bool

	id     string // 档案时间轴对象ID，仅参保档案对象会包含
	idFlag bool

	tid     string // 档案时间轴对象版本ID，仅参保档案对象会包含
	tidFlag bool

	planId     string // 参保方案ID，详细信息可通过「查询参保方案」接口获取
	planIdFlag bool

	planTid     string // 参保方案版本ID
	planTidFlag bool

	locationId     string // 参保城市ID，可通过获取地点信息接口查询详细信息
	locationIdFlag bool

	companyId     string // 社保缴纳主体ID，可通过获取公司主体接口查询详细信息
	companyIdFlag bool

	accountType     string // 社保账户类型
	accountTypeFlag bool

	insuranceAccount     string // 社保账号
	insuranceAccountFlag bool

	baseSalary     string // 申报缴纳基数
	baseSalaryFlag bool

	insuranceDetails     []*SocialArchiveItem // 险种数据详情
	insuranceDetailsFlag bool

	effectiveDate     string // 档案生效时间，HHHH-MM-DD
	effectiveDateFlag bool
}

func NewSocialArchiveDetailBuilder() *SocialArchiveDetailBuilder {
	builder := &SocialArchiveDetailBuilder{}
	return builder
}

// 调整说明
//
// 示例值：
func (builder *SocialArchiveDetailBuilder) Description(description *I18n) *SocialArchiveDetailBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 类型。social_insurance: 社保; provident_fund: 公积金
//
// 示例值：
func (builder *SocialArchiveDetailBuilder) InsuranceType(insuranceType string) *SocialArchiveDetailBuilder {
	builder.insuranceType = insuranceType
	builder.insuranceTypeFlag = true
	return builder
}

// 参保状态，非「参保」状态下，基数、险种数据等为空
//
// 示例值：contribution
func (builder *SocialArchiveDetailBuilder) InsuranceStatus(insuranceStatus string) *SocialArchiveDetailBuilder {
	builder.insuranceStatus = insuranceStatus
	builder.insuranceStatusFlag = true
	return builder
}

// 档案时间轴对象ID，仅参保档案对象会包含
//
// 示例值：123456
func (builder *SocialArchiveDetailBuilder) Id(id string) *SocialArchiveDetailBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 档案时间轴对象版本ID，仅参保档案对象会包含
//
// 示例值：123456
func (builder *SocialArchiveDetailBuilder) Tid(tid string) *SocialArchiveDetailBuilder {
	builder.tid = tid
	builder.tidFlag = true
	return builder
}

// 参保方案ID，详细信息可通过「查询参保方案」接口获取
//
// 示例值：123456
func (builder *SocialArchiveDetailBuilder) PlanId(planId string) *SocialArchiveDetailBuilder {
	builder.planId = planId
	builder.planIdFlag = true
	return builder
}

// 参保方案版本ID
//
// 示例值：123456
func (builder *SocialArchiveDetailBuilder) PlanTid(planTid string) *SocialArchiveDetailBuilder {
	builder.planTid = planTid
	builder.planTidFlag = true
	return builder
}

// 参保城市ID，可通过获取地点信息接口查询详细信息
//
// 示例值：123456
func (builder *SocialArchiveDetailBuilder) LocationId(locationId string) *SocialArchiveDetailBuilder {
	builder.locationId = locationId
	builder.locationIdFlag = true
	return builder
}

// 社保缴纳主体ID，可通过获取公司主体接口查询详细信息
//
// 示例值：223456
func (builder *SocialArchiveDetailBuilder) CompanyId(companyId string) *SocialArchiveDetailBuilder {
	builder.companyId = companyId
	builder.companyIdFlag = true
	return builder
}

// 社保账户类型
//
// 示例值：supplier
func (builder *SocialArchiveDetailBuilder) AccountType(accountType string) *SocialArchiveDetailBuilder {
	builder.accountType = accountType
	builder.accountTypeFlag = true
	return builder
}

// 社保账号
//
// 示例值：ac123456
func (builder *SocialArchiveDetailBuilder) InsuranceAccount(insuranceAccount string) *SocialArchiveDetailBuilder {
	builder.insuranceAccount = insuranceAccount
	builder.insuranceAccountFlag = true
	return builder
}

// 申报缴纳基数
//
// 示例值：1000.10
func (builder *SocialArchiveDetailBuilder) BaseSalary(baseSalary string) *SocialArchiveDetailBuilder {
	builder.baseSalary = baseSalary
	builder.baseSalaryFlag = true
	return builder
}

// 险种数据详情
//
// 示例值：
func (builder *SocialArchiveDetailBuilder) InsuranceDetails(insuranceDetails []*SocialArchiveItem) *SocialArchiveDetailBuilder {
	builder.insuranceDetails = insuranceDetails
	builder.insuranceDetailsFlag = true
	return builder
}

// 档案生效时间，HHHH-MM-DD
//
// 示例值：2024-01-01
func (builder *SocialArchiveDetailBuilder) EffectiveDate(effectiveDate string) *SocialArchiveDetailBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *SocialArchiveDetailBuilder) Build() *SocialArchiveDetail {
	req := &SocialArchiveDetail{}
	if builder.descriptionFlag {
		req.Description = builder.description
	}
	if builder.insuranceTypeFlag {
		req.InsuranceType = &builder.insuranceType

	}
	if builder.insuranceStatusFlag {
		req.InsuranceStatus = &builder.insuranceStatus

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.tidFlag {
		req.Tid = &builder.tid

	}
	if builder.planIdFlag {
		req.PlanId = &builder.planId

	}
	if builder.planTidFlag {
		req.PlanTid = &builder.planTid

	}
	if builder.locationIdFlag {
		req.LocationId = &builder.locationId

	}
	if builder.companyIdFlag {
		req.CompanyId = &builder.companyId

	}
	if builder.accountTypeFlag {
		req.AccountType = &builder.accountType

	}
	if builder.insuranceAccountFlag {
		req.InsuranceAccount = &builder.insuranceAccount

	}
	if builder.baseSalaryFlag {
		req.BaseSalary = &builder.baseSalary

	}
	if builder.insuranceDetailsFlag {
		req.InsuranceDetails = builder.insuranceDetails
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	return req
}

type SocialArchiveEventDetail struct {
	InsuranceType *string `json:"insurance_type,omitempty"` // 社保档案类型。social_insurance社保、provident_fund公积金

	OperateType *string `json:"operate_type,omitempty"` // 档案变更类型。increase新增、adjust调整、delete删除

	SourceType *string `json:"source_type,omitempty"` // 变更事件来源。new_join增员、intern_to_official实习生转正、employee_type_change雇员类型变更、dismission离职、job_change变更、import_increase增员导入、import_adjust调整导入、manual_edit手动编辑、manual_adjust手动调整、manual_delete手动删除、to_attrition_import待减员导入新增、plan_sync_arc方案同步档案

	AfterSocialArchiveDetail *SocialArchiveDetail `json:"after_social_archive_detail,omitempty"` // 参保档案

	BeforeSocialArchiveDetail *SocialArchiveDetail `json:"before_social_archive_detail,omitempty"` // 参保档案
}

type SocialArchiveEventDetailBuilder struct {
	insuranceType     string // 社保档案类型。social_insurance社保、provident_fund公积金
	insuranceTypeFlag bool

	operateType     string // 档案变更类型。increase新增、adjust调整、delete删除
	operateTypeFlag bool

	sourceType     string // 变更事件来源。new_join增员、intern_to_official实习生转正、employee_type_change雇员类型变更、dismission离职、job_change变更、import_increase增员导入、import_adjust调整导入、manual_edit手动编辑、manual_adjust手动调整、manual_delete手动删除、to_attrition_import待减员导入新增、plan_sync_arc方案同步档案
	sourceTypeFlag bool

	afterSocialArchiveDetail     *SocialArchiveDetail // 参保档案
	afterSocialArchiveDetailFlag bool

	beforeSocialArchiveDetail     *SocialArchiveDetail // 参保档案
	beforeSocialArchiveDetailFlag bool
}

func NewSocialArchiveEventDetailBuilder() *SocialArchiveEventDetailBuilder {
	builder := &SocialArchiveEventDetailBuilder{}
	return builder
}

// 社保档案类型。social_insurance社保、provident_fund公积金
//
// 示例值：social_insurance
func (builder *SocialArchiveEventDetailBuilder) InsuranceType(insuranceType string) *SocialArchiveEventDetailBuilder {
	builder.insuranceType = insuranceType
	builder.insuranceTypeFlag = true
	return builder
}

// 档案变更类型。increase新增、adjust调整、delete删除
//
// 示例值：add
func (builder *SocialArchiveEventDetailBuilder) OperateType(operateType string) *SocialArchiveEventDetailBuilder {
	builder.operateType = operateType
	builder.operateTypeFlag = true
	return builder
}

// 变更事件来源。new_join增员、intern_to_official实习生转正、employee_type_change雇员类型变更、dismission离职、job_change变更、import_increase增员导入、import_adjust调整导入、manual_edit手动编辑、manual_adjust手动调整、manual_delete手动删除、to_attrition_import待减员导入新增、plan_sync_arc方案同步档案
//
// 示例值：new_join
func (builder *SocialArchiveEventDetailBuilder) SourceType(sourceType string) *SocialArchiveEventDetailBuilder {
	builder.sourceType = sourceType
	builder.sourceTypeFlag = true
	return builder
}

// 参保档案
//
// 示例值：
func (builder *SocialArchiveEventDetailBuilder) AfterSocialArchiveDetail(afterSocialArchiveDetail *SocialArchiveDetail) *SocialArchiveEventDetailBuilder {
	builder.afterSocialArchiveDetail = afterSocialArchiveDetail
	builder.afterSocialArchiveDetailFlag = true
	return builder
}

// 参保档案
//
// 示例值：
func (builder *SocialArchiveEventDetailBuilder) BeforeSocialArchiveDetail(beforeSocialArchiveDetail *SocialArchiveDetail) *SocialArchiveEventDetailBuilder {
	builder.beforeSocialArchiveDetail = beforeSocialArchiveDetail
	builder.beforeSocialArchiveDetailFlag = true
	return builder
}

func (builder *SocialArchiveEventDetailBuilder) Build() *SocialArchiveEventDetail {
	req := &SocialArchiveEventDetail{}
	if builder.insuranceTypeFlag {
		req.InsuranceType = &builder.insuranceType

	}
	if builder.operateTypeFlag {
		req.OperateType = &builder.operateType

	}
	if builder.sourceTypeFlag {
		req.SourceType = &builder.sourceType

	}
	if builder.afterSocialArchiveDetailFlag {
		req.AfterSocialArchiveDetail = builder.afterSocialArchiveDetail
	}
	if builder.beforeSocialArchiveDetailFlag {
		req.BeforeSocialArchiveDetail = builder.beforeSocialArchiveDetail
	}
	return req
}

type SocialArchiveItem struct {
	InsuranceId *string `json:"insurance_id,omitempty"` // 险种ID，详细信息可通过社保险种接口查询

	InsuranceName *I18n `json:"insurance_name,omitempty"` // 险种名称

	CompanyDeduction *string `json:"company_deduction,omitempty"` // 企业缴纳金额

	CompanySetting *SocialPlanItemSetting `json:"company_setting,omitempty"` // 险种缴纳配置

	PersonalDeduction *string `json:"personal_deduction,omitempty"` // 企业缴纳金额

	PersonalSetting *SocialPlanItemSetting `json:"personal_setting,omitempty"` // 险种缴纳配置

	PaymentFrequency *string `json:"payment_frequency,omitempty"` // 缴纳频率

	PaymentMonths []int `json:"payment_months,omitempty"` // 缴纳月份
}

type SocialArchiveItemBuilder struct {
	insuranceId     string // 险种ID，详细信息可通过社保险种接口查询
	insuranceIdFlag bool

	insuranceName     *I18n // 险种名称
	insuranceNameFlag bool

	companyDeduction     string // 企业缴纳金额
	companyDeductionFlag bool

	companySetting     *SocialPlanItemSetting // 险种缴纳配置
	companySettingFlag bool

	personalDeduction     string // 企业缴纳金额
	personalDeductionFlag bool

	personalSetting     *SocialPlanItemSetting // 险种缴纳配置
	personalSettingFlag bool

	paymentFrequency     string // 缴纳频率
	paymentFrequencyFlag bool

	paymentMonths     []int // 缴纳月份
	paymentMonthsFlag bool
}

func NewSocialArchiveItemBuilder() *SocialArchiveItemBuilder {
	builder := &SocialArchiveItemBuilder{}
	return builder
}

// 险种ID，详细信息可通过社保险种接口查询
//
// 示例值：111223
func (builder *SocialArchiveItemBuilder) InsuranceId(insuranceId string) *SocialArchiveItemBuilder {
	builder.insuranceId = insuranceId
	builder.insuranceIdFlag = true
	return builder
}

// 险种名称
//
// 示例值：
func (builder *SocialArchiveItemBuilder) InsuranceName(insuranceName *I18n) *SocialArchiveItemBuilder {
	builder.insuranceName = insuranceName
	builder.insuranceNameFlag = true
	return builder
}

// 企业缴纳金额
//
// 示例值：2000.20
func (builder *SocialArchiveItemBuilder) CompanyDeduction(companyDeduction string) *SocialArchiveItemBuilder {
	builder.companyDeduction = companyDeduction
	builder.companyDeductionFlag = true
	return builder
}

// 险种缴纳配置
//
// 示例值：
func (builder *SocialArchiveItemBuilder) CompanySetting(companySetting *SocialPlanItemSetting) *SocialArchiveItemBuilder {
	builder.companySetting = companySetting
	builder.companySettingFlag = true
	return builder
}

// 企业缴纳金额
//
// 示例值：1000.20
func (builder *SocialArchiveItemBuilder) PersonalDeduction(personalDeduction string) *SocialArchiveItemBuilder {
	builder.personalDeduction = personalDeduction
	builder.personalDeductionFlag = true
	return builder
}

// 险种缴纳配置
//
// 示例值：
func (builder *SocialArchiveItemBuilder) PersonalSetting(personalSetting *SocialPlanItemSetting) *SocialArchiveItemBuilder {
	builder.personalSetting = personalSetting
	builder.personalSettingFlag = true
	return builder
}

// 缴纳频率
//
// 示例值：8.00
func (builder *SocialArchiveItemBuilder) PaymentFrequency(paymentFrequency string) *SocialArchiveItemBuilder {
	builder.paymentFrequency = paymentFrequency
	builder.paymentFrequencyFlag = true
	return builder
}

// 缴纳月份
//
// 示例值：
func (builder *SocialArchiveItemBuilder) PaymentMonths(paymentMonths []int) *SocialArchiveItemBuilder {
	builder.paymentMonths = paymentMonths
	builder.paymentMonthsFlag = true
	return builder
}

func (builder *SocialArchiveItemBuilder) Build() *SocialArchiveItem {
	req := &SocialArchiveItem{}
	if builder.insuranceIdFlag {
		req.InsuranceId = &builder.insuranceId

	}
	if builder.insuranceNameFlag {
		req.InsuranceName = builder.insuranceName
	}
	if builder.companyDeductionFlag {
		req.CompanyDeduction = &builder.companyDeduction

	}
	if builder.companySettingFlag {
		req.CompanySetting = builder.companySetting
	}
	if builder.personalDeductionFlag {
		req.PersonalDeduction = &builder.personalDeduction

	}
	if builder.personalSettingFlag {
		req.PersonalSetting = builder.personalSetting
	}
	if builder.paymentFrequencyFlag {
		req.PaymentFrequency = &builder.paymentFrequency

	}
	if builder.paymentMonthsFlag {
		req.PaymentMonths = builder.paymentMonths
	}
	return req
}

type SocialInsurance struct {
	Id *string `json:"id,omitempty"` // 险种唯一ID

	Name *I18n `json:"name,omitempty"` // 险种名称

	InsuranceType *string `json:"insurance_type,omitempty"` // 险种类型. social_insurance: 社保; provident_fund: 公积金

	Active *bool `json:"active,omitempty"` // 启用状态

	IsSystem *bool `json:"is_system,omitempty"` // 是否为系统预置险种。养老保险、医疗保险、失业保险、工伤保险、生育保险、住房公积金为系统预置险种。
}

type SocialInsuranceBuilder struct {
	id     string // 险种唯一ID
	idFlag bool

	name     *I18n // 险种名称
	nameFlag bool

	insuranceType     string // 险种类型. social_insurance: 社保; provident_fund: 公积金
	insuranceTypeFlag bool

	active     bool // 启用状态
	activeFlag bool

	isSystem     bool // 是否为系统预置险种。养老保险、医疗保险、失业保险、工伤保险、生育保险、住房公积金为系统预置险种。
	isSystemFlag bool
}

func NewSocialInsuranceBuilder() *SocialInsuranceBuilder {
	builder := &SocialInsuranceBuilder{}
	return builder
}

// 险种唯一ID
//
// 示例值：i12345
func (builder *SocialInsuranceBuilder) Id(id string) *SocialInsuranceBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 险种名称
//
// 示例值：
func (builder *SocialInsuranceBuilder) Name(name *I18n) *SocialInsuranceBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 险种类型. social_insurance: 社保; provident_fund: 公积金
//
// 示例值：true
func (builder *SocialInsuranceBuilder) InsuranceType(insuranceType string) *SocialInsuranceBuilder {
	builder.insuranceType = insuranceType
	builder.insuranceTypeFlag = true
	return builder
}

// 启用状态
//
// 示例值：
func (builder *SocialInsuranceBuilder) Active(active bool) *SocialInsuranceBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 是否为系统预置险种。养老保险、医疗保险、失业保险、工伤保险、生育保险、住房公积金为系统预置险种。
//
// 示例值：
func (builder *SocialInsuranceBuilder) IsSystem(isSystem bool) *SocialInsuranceBuilder {
	builder.isSystem = isSystem
	builder.isSystemFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.insuranceTypeFlag {
		req.InsuranceType = &builder.insuranceType

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.isSystemFlag {
		req.IsSystem = &builder.isSystem

	}
	return req
}

type SocialPlan struct {
	PlanId *string `json:"plan_id,omitempty"` // 参保方案ID

	PlanTid *string `json:"plan_tid,omitempty"` // 参保方案版本ID

	Name *I18n `json:"name,omitempty"` // 参保方案名称

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间，HHHH-MM-DD

	Active *bool `json:"active,omitempty"` // 是否启用

	InsuranceType *string `json:"insurance_type,omitempty"` // 险种类型. social_insurance: 社保; provident_fund: 公积金

	Scope *SocialPlanScope `json:"scope,omitempty"` // 参保方案适用范围

	ItemDetail []*SocialPlanItemDetail `json:"item_detail,omitempty"` // 参保信息

	Remark *I18n `json:"remark,omitempty"` // 备注
}

type SocialPlanBuilder struct {
	planId     string // 参保方案ID
	planIdFlag bool

	planTid     string // 参保方案版本ID
	planTidFlag bool

	name     *I18n // 参保方案名称
	nameFlag bool

	effectiveDate     string // 生效时间，HHHH-MM-DD
	effectiveDateFlag bool

	active     bool // 是否启用
	activeFlag bool

	insuranceType     string // 险种类型. social_insurance: 社保; provident_fund: 公积金
	insuranceTypeFlag bool

	scope     *SocialPlanScope // 参保方案适用范围
	scopeFlag bool

	itemDetail     []*SocialPlanItemDetail // 参保信息
	itemDetailFlag bool

	remark     *I18n // 备注
	remarkFlag bool
}

func NewSocialPlanBuilder() *SocialPlanBuilder {
	builder := &SocialPlanBuilder{}
	return builder
}

// 参保方案ID
//
// 示例值：11111
func (builder *SocialPlanBuilder) PlanId(planId string) *SocialPlanBuilder {
	builder.planId = planId
	builder.planIdFlag = true
	return builder
}

// 参保方案版本ID
//
// 示例值：22222
func (builder *SocialPlanBuilder) PlanTid(planTid string) *SocialPlanBuilder {
	builder.planTid = planTid
	builder.planTidFlag = true
	return builder
}

// 参保方案名称
//
// 示例值：
func (builder *SocialPlanBuilder) Name(name *I18n) *SocialPlanBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 生效时间，HHHH-MM-DD
//
// 示例值：2024-01-01
func (builder *SocialPlanBuilder) EffectiveDate(effectiveDate string) *SocialPlanBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

// 是否启用
//
// 示例值：
func (builder *SocialPlanBuilder) Active(active bool) *SocialPlanBuilder {
	builder.active = active
	builder.activeFlag = true
	return builder
}

// 险种类型. social_insurance: 社保; provident_fund: 公积金
//
// 示例值：
func (builder *SocialPlanBuilder) InsuranceType(insuranceType string) *SocialPlanBuilder {
	builder.insuranceType = insuranceType
	builder.insuranceTypeFlag = true
	return builder
}

// 参保方案适用范围
//
// 示例值：
func (builder *SocialPlanBuilder) Scope(scope *SocialPlanScope) *SocialPlanBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 参保信息
//
// 示例值：
func (builder *SocialPlanBuilder) ItemDetail(itemDetail []*SocialPlanItemDetail) *SocialPlanBuilder {
	builder.itemDetail = itemDetail
	builder.itemDetailFlag = true
	return builder
}

// 备注
//
// 示例值：
func (builder *SocialPlanBuilder) Remark(remark *I18n) *SocialPlanBuilder {
	builder.remark = remark
	builder.remarkFlag = true
	return builder
}

func (builder *SocialPlanBuilder) Build() *SocialPlan {
	req := &SocialPlan{}
	if builder.planIdFlag {
		req.PlanId = &builder.planId

	}
	if builder.planTidFlag {
		req.PlanTid = &builder.planTid

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate

	}
	if builder.activeFlag {
		req.Active = &builder.active

	}
	if builder.insuranceTypeFlag {
		req.InsuranceType = &builder.insuranceType

	}
	if builder.scopeFlag {
		req.Scope = builder.scope
	}
	if builder.itemDetailFlag {
		req.ItemDetail = builder.itemDetail
	}
	if builder.remarkFlag {
		req.Remark = builder.remark
	}
	return req
}

type SocialPlanCondition struct {
	LeftType *int `json:"left_type,omitempty"` // 适用范围左值

	Operator *int `json:"operator,omitempty"` // 适用范围操作

	RightValues []string `json:"right_values,omitempty"` // 适用范围右值
}

type SocialPlanConditionBuilder struct {
	leftType     int // 适用范围左值
	leftTypeFlag bool

	operator     int // 适用范围操作
	operatorFlag bool

	rightValues     []string // 适用范围右值
	rightValuesFlag bool
}

func NewSocialPlanConditionBuilder() *SocialPlanConditionBuilder {
	builder := &SocialPlanConditionBuilder{}
	return builder
}

// 适用范围左值
//
// 示例值：1
func (builder *SocialPlanConditionBuilder) LeftType(leftType int) *SocialPlanConditionBuilder {
	builder.leftType = leftType
	builder.leftTypeFlag = true
	return builder
}

// 适用范围操作
//
// 示例值：1
func (builder *SocialPlanConditionBuilder) Operator(operator int) *SocialPlanConditionBuilder {
	builder.operator = operator
	builder.operatorFlag = true
	return builder
}

// 适用范围右值
//
// 示例值：
func (builder *SocialPlanConditionBuilder) RightValues(rightValues []string) *SocialPlanConditionBuilder {
	builder.rightValues = rightValues
	builder.rightValuesFlag = true
	return builder
}

func (builder *SocialPlanConditionBuilder) Build() *SocialPlanCondition {
	req := &SocialPlanCondition{}
	if builder.leftTypeFlag {
		req.LeftType = &builder.leftType

	}
	if builder.operatorFlag {
		req.Operator = &builder.operator

	}
	if builder.rightValuesFlag {
		req.RightValues = builder.rightValues
	}
	return req
}

type SocialPlanItemDetail struct {
	ItemId *string `json:"item_id,omitempty"` // 险种ID，详细信息可通过社保险种接口查询

	ItemName *I18n `json:"item_name,omitempty"` // 险种名

	ItemSettingOfPerson *SocialPlanItemSetting `json:"item_setting_of_person,omitempty"` // 险种缴纳配置

	ItemSettingOfCompany *SocialPlanItemSetting `json:"item_setting_of_company,omitempty"` // 险种缴纳配置

	PaymentFrequency *string `json:"payment_frequency,omitempty"` // 缴纳频率

	PaymentMonths []int `json:"payment_months,omitempty"` // 缴纳月份
}

type SocialPlanItemDetailBuilder struct {
	itemId     string // 险种ID，详细信息可通过社保险种接口查询
	itemIdFlag bool

	itemName     *I18n // 险种名
	itemNameFlag bool

	itemSettingOfPerson     *SocialPlanItemSetting // 险种缴纳配置
	itemSettingOfPersonFlag bool

	itemSettingOfCompany     *SocialPlanItemSetting // 险种缴纳配置
	itemSettingOfCompanyFlag bool

	paymentFrequency     string // 缴纳频率
	paymentFrequencyFlag bool

	paymentMonths     []int // 缴纳月份
	paymentMonthsFlag bool
}

func NewSocialPlanItemDetailBuilder() *SocialPlanItemDetailBuilder {
	builder := &SocialPlanItemDetailBuilder{}
	return builder
}

// 险种ID，详细信息可通过社保险种接口查询
//
// 示例值：123456
func (builder *SocialPlanItemDetailBuilder) ItemId(itemId string) *SocialPlanItemDetailBuilder {
	builder.itemId = itemId
	builder.itemIdFlag = true
	return builder
}

// 险种名
//
// 示例值：
func (builder *SocialPlanItemDetailBuilder) ItemName(itemName *I18n) *SocialPlanItemDetailBuilder {
	builder.itemName = itemName
	builder.itemNameFlag = true
	return builder
}

// 险种缴纳配置
//
// 示例值：
func (builder *SocialPlanItemDetailBuilder) ItemSettingOfPerson(itemSettingOfPerson *SocialPlanItemSetting) *SocialPlanItemDetailBuilder {
	builder.itemSettingOfPerson = itemSettingOfPerson
	builder.itemSettingOfPersonFlag = true
	return builder
}

// 险种缴纳配置
//
// 示例值：
func (builder *SocialPlanItemDetailBuilder) ItemSettingOfCompany(itemSettingOfCompany *SocialPlanItemSetting) *SocialPlanItemDetailBuilder {
	builder.itemSettingOfCompany = itemSettingOfCompany
	builder.itemSettingOfCompanyFlag = true
	return builder
}

// 缴纳频率
//
// 示例值：8.00
func (builder *SocialPlanItemDetailBuilder) PaymentFrequency(paymentFrequency string) *SocialPlanItemDetailBuilder {
	builder.paymentFrequency = paymentFrequency
	builder.paymentFrequencyFlag = true
	return builder
}

// 缴纳月份
//
// 示例值：
func (builder *SocialPlanItemDetailBuilder) PaymentMonths(paymentMonths []int) *SocialPlanItemDetailBuilder {
	builder.paymentMonths = paymentMonths
	builder.paymentMonthsFlag = true
	return builder
}

func (builder *SocialPlanItemDetailBuilder) Build() *SocialPlanItemDetail {
	req := &SocialPlanItemDetail{}
	if builder.itemIdFlag {
		req.ItemId = &builder.itemId

	}
	if builder.itemNameFlag {
		req.ItemName = builder.itemName
	}
	if builder.itemSettingOfPersonFlag {
		req.ItemSettingOfPerson = builder.itemSettingOfPerson
	}
	if builder.itemSettingOfCompanyFlag {
		req.ItemSettingOfCompany = builder.itemSettingOfCompany
	}
	if builder.paymentFrequencyFlag {
		req.PaymentFrequency = &builder.paymentFrequency

	}
	if builder.paymentMonthsFlag {
		req.PaymentMonths = builder.paymentMonths
	}
	return req
}

type SocialPlanItemSetting struct {
	LowerLimit *string `json:"lower_limit,omitempty"` // 基数下限，浮点数，保留二位小数

	UpperLimit *string `json:"upper_limit,omitempty"` // 基数上限，浮点数，保留二位小数

	PaymentRatio *string `json:"payment_ratio,omitempty"` // 缴纳比例，浮点数，默认填充到二位小数，支持输入到四位，单位为 %

	PaymentRoundingRule *string `json:"payment_rounding_rule,omitempty"` // 缴纳金舍入规则。rounding: 四舍五入; round_up: 向上舍入; round_down: 向下舍入

	PaymentDecimals *int `json:"payment_decimals,omitempty"` // 缴纳金小数位数，0-6之间选择

	FixedPayment *string `json:"fixed_payment,omitempty"` // 附加固定金额，浮点数，保留二位小数
}

type SocialPlanItemSettingBuilder struct {
	lowerLimit     string // 基数下限，浮点数，保留二位小数
	lowerLimitFlag bool

	upperLimit     string // 基数上限，浮点数，保留二位小数
	upperLimitFlag bool

	paymentRatio     string // 缴纳比例，浮点数，默认填充到二位小数，支持输入到四位，单位为 %
	paymentRatioFlag bool

	paymentRoundingRule     string // 缴纳金舍入规则。rounding: 四舍五入; round_up: 向上舍入; round_down: 向下舍入
	paymentRoundingRuleFlag bool

	paymentDecimals     int // 缴纳金小数位数，0-6之间选择
	paymentDecimalsFlag bool

	fixedPayment     string // 附加固定金额，浮点数，保留二位小数
	fixedPaymentFlag bool
}

func NewSocialPlanItemSettingBuilder() *SocialPlanItemSettingBuilder {
	builder := &SocialPlanItemSettingBuilder{}
	return builder
}

// 基数下限，浮点数，保留二位小数
//
// 示例值：1000.00
func (builder *SocialPlanItemSettingBuilder) LowerLimit(lowerLimit string) *SocialPlanItemSettingBuilder {
	builder.lowerLimit = lowerLimit
	builder.lowerLimitFlag = true
	return builder
}

// 基数上限，浮点数，保留二位小数
//
// 示例值：2000.00
func (builder *SocialPlanItemSettingBuilder) UpperLimit(upperLimit string) *SocialPlanItemSettingBuilder {
	builder.upperLimit = upperLimit
	builder.upperLimitFlag = true
	return builder
}

// 缴纳比例，浮点数，默认填充到二位小数，支持输入到四位，单位为 %
//
// 示例值：8.00
func (builder *SocialPlanItemSettingBuilder) PaymentRatio(paymentRatio string) *SocialPlanItemSettingBuilder {
	builder.paymentRatio = paymentRatio
	builder.paymentRatioFlag = true
	return builder
}

// 缴纳金舍入规则。rounding: 四舍五入; round_up: 向上舍入; round_down: 向下舍入
//
// 示例值：8.00
func (builder *SocialPlanItemSettingBuilder) PaymentRoundingRule(paymentRoundingRule string) *SocialPlanItemSettingBuilder {
	builder.paymentRoundingRule = paymentRoundingRule
	builder.paymentRoundingRuleFlag = true
	return builder
}

// 缴纳金小数位数，0-6之间选择
//
// 示例值：2
func (builder *SocialPlanItemSettingBuilder) PaymentDecimals(paymentDecimals int) *SocialPlanItemSettingBuilder {
	builder.paymentDecimals = paymentDecimals
	builder.paymentDecimalsFlag = true
	return builder
}

// 附加固定金额，浮点数，保留二位小数
//
// 示例值：200.00
func (builder *SocialPlanItemSettingBuilder) FixedPayment(fixedPayment string) *SocialPlanItemSettingBuilder {
	builder.fixedPayment = fixedPayment
	builder.fixedPaymentFlag = true
	return builder
}

func (builder *SocialPlanItemSettingBuilder) Build() *SocialPlanItemSetting {
	req := &SocialPlanItemSetting{}
	if builder.lowerLimitFlag {
		req.LowerLimit = &builder.lowerLimit

	}
	if builder.upperLimitFlag {
		req.UpperLimit = &builder.upperLimit

	}
	if builder.paymentRatioFlag {
		req.PaymentRatio = &builder.paymentRatio

	}
	if builder.paymentRoundingRuleFlag {
		req.PaymentRoundingRule = &builder.paymentRoundingRule

	}
	if builder.paymentDecimalsFlag {
		req.PaymentDecimals = &builder.paymentDecimals

	}
	if builder.fixedPaymentFlag {
		req.FixedPayment = &builder.fixedPayment

	}
	return req
}

type SocialPlanScope struct {
	IsAll *bool `json:"is_all,omitempty"` // 是否适用于全部

	Rules [][]*SocialPlanCondition `json:"rules,omitempty"` // 适用范围，二维。外层or连接，内层and连接
}

type SocialPlanScopeBuilder struct {
	isAll     bool // 是否适用于全部
	isAllFlag bool

	rules     [][]*SocialPlanCondition // 适用范围，二维。外层or连接，内层and连接
	rulesFlag bool
}

func NewSocialPlanScopeBuilder() *SocialPlanScopeBuilder {
	builder := &SocialPlanScopeBuilder{}
	return builder
}

// 是否适用于全部
//
// 示例值：true
func (builder *SocialPlanScopeBuilder) IsAll(isAll bool) *SocialPlanScopeBuilder {
	builder.isAll = isAll
	builder.isAllFlag = true
	return builder
}

// 适用范围，二维。外层or连接，内层and连接
//
// 示例值：
func (builder *SocialPlanScopeBuilder) Rules(rules [][]*SocialPlanCondition) *SocialPlanScopeBuilder {
	builder.rules = rules
	builder.rulesFlag = true
	return builder
}

func (builder *SocialPlanScopeBuilder) Build() *SocialPlanScope {
	req := &SocialPlanScope{}
	if builder.isAllFlag {
		req.IsAll = &builder.isAll

	}
	if builder.rulesFlag {
		req.Rules = builder.rules
	}
	return req
}

type Standard struct {
	Id *string `json:"id,omitempty"` // 薪资标准表ID

	Name *I18n `json:"name,omitempty"` // 薪资标准表名称

	UpdatedBy *string `json:"updated_by,omitempty"` // 更新人，ID类型由入参user_id_type指定，详细信息可通过[获取单个用户信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)接口查询

	UpdatedAt *string `json:"updated_at,omitempty"` // 更新时间，毫秒时间戳格式

	CreatedBy *string `json:"created_by,omitempty"` // 创建人，ID类型由入参user_id_type指定，详细信息可通过[获取单个用户信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)接口查询

	CreatedAt *string `json:"created_at,omitempty"` // 创建时间，毫秒时间戳格式

	AutomaticBackfillStandardValue *bool `json:"automatic_backfill_standard_value,omitempty"` // 是否自动回填标准值

	Scope *StandardScope `json:"scope,omitempty"` // 适用范围

	Dimensions []*StandardDimension `json:"dimensions,omitempty"` // 划分维度

	ReferenceObjects []*StandardReferenceObject `json:"reference_objects,omitempty"` // 适用项目
}

type StandardBuilder struct {
	id     string // 薪资标准表ID
	idFlag bool

	name     *I18n // 薪资标准表名称
	nameFlag bool

	updatedBy     string // 更新人，ID类型由入参user_id_type指定，详细信息可通过[获取单个用户信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)接口查询
	updatedByFlag bool

	updatedAt     string // 更新时间，毫秒时间戳格式
	updatedAtFlag bool

	createdBy     string // 创建人，ID类型由入参user_id_type指定，详细信息可通过[获取单个用户信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)接口查询
	createdByFlag bool

	createdAt     string // 创建时间，毫秒时间戳格式
	createdAtFlag bool

	automaticBackfillStandardValue     bool // 是否自动回填标准值
	automaticBackfillStandardValueFlag bool

	scope     *StandardScope // 适用范围
	scopeFlag bool

	dimensions     []*StandardDimension // 划分维度
	dimensionsFlag bool

	referenceObjects     []*StandardReferenceObject // 适用项目
	referenceObjectsFlag bool
}

func NewStandardBuilder() *StandardBuilder {
	builder := &StandardBuilder{}
	return builder
}

// 薪资标准表ID
//
// 示例值：7491187653210293804
func (builder *StandardBuilder) Id(id string) *StandardBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 薪资标准表名称
//
// 示例值：
func (builder *StandardBuilder) Name(name *I18n) *StandardBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 更新人，ID类型由入参user_id_type指定，详细信息可通过[获取单个用户信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)接口查询
//
// 示例值：7433328946189796908
func (builder *StandardBuilder) UpdatedBy(updatedBy string) *StandardBuilder {
	builder.updatedBy = updatedBy
	builder.updatedByFlag = true
	return builder
}

// 更新时间，毫秒时间戳格式
//
// 示例值：1744178149000
func (builder *StandardBuilder) UpdatedAt(updatedAt string) *StandardBuilder {
	builder.updatedAt = updatedAt
	builder.updatedAtFlag = true
	return builder
}

// 创建人，ID类型由入参user_id_type指定，详细信息可通过[获取单个用户信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)接口查询
//
// 示例值：7433328946189796908
func (builder *StandardBuilder) CreatedBy(createdBy string) *StandardBuilder {
	builder.createdBy = createdBy
	builder.createdByFlag = true
	return builder
}

// 创建时间，毫秒时间戳格式
//
// 示例值：1744178149000
func (builder *StandardBuilder) CreatedAt(createdAt string) *StandardBuilder {
	builder.createdAt = createdAt
	builder.createdAtFlag = true
	return builder
}

// 是否自动回填标准值
//
// 示例值：true
func (builder *StandardBuilder) AutomaticBackfillStandardValue(automaticBackfillStandardValue bool) *StandardBuilder {
	builder.automaticBackfillStandardValue = automaticBackfillStandardValue
	builder.automaticBackfillStandardValueFlag = true
	return builder
}

// 适用范围
//
// 示例值：
func (builder *StandardBuilder) Scope(scope *StandardScope) *StandardBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 划分维度
//
// 示例值：
func (builder *StandardBuilder) Dimensions(dimensions []*StandardDimension) *StandardBuilder {
	builder.dimensions = dimensions
	builder.dimensionsFlag = true
	return builder
}

// 适用项目
//
// 示例值：
func (builder *StandardBuilder) ReferenceObjects(referenceObjects []*StandardReferenceObject) *StandardBuilder {
	builder.referenceObjects = referenceObjects
	builder.referenceObjectsFlag = true
	return builder
}

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

	}
	if builder.nameFlag {
		req.Name = builder.name
	}
	if builder.updatedByFlag {
		req.UpdatedBy = &builder.updatedBy

	}
	if builder.updatedAtFlag {
		req.UpdatedAt = &builder.updatedAt

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

	}
	if builder.createdAtFlag {
		req.CreatedAt = &builder.createdAt

	}
	if builder.automaticBackfillStandardValueFlag {
		req.AutomaticBackfillStandardValue = &builder.automaticBackfillStandardValue

	}
	if builder.scopeFlag {
		req.Scope = builder.scope
	}
	if builder.dimensionsFlag {
		req.Dimensions = builder.dimensions
	}
	if builder.referenceObjectsFlag {
		req.ReferenceObjects = builder.referenceObjects
	}
	return req
}

type StandardDimension struct {
	ApiName *string `json:"api_name,omitempty"` // 资源名

	Label *I18n `json:"label,omitempty"` // 名称
}

type StandardDimensionBuilder struct {
	apiName     string // 资源名
	apiNameFlag bool

	label     *I18n // 名称
	labelFlag bool
}

func NewStandardDimensionBuilder() *StandardDimensionBuilder {
	builder := &StandardDimensionBuilder{}
	return builder
}

// 资源名
//
// 示例值：cpst_plan
func (builder *StandardDimensionBuilder) ApiName(apiName string) *StandardDimensionBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 名称
//
// 示例值：
func (builder *StandardDimensionBuilder) Label(label *I18n) *StandardDimensionBuilder {
	builder.label = label
	builder.labelFlag = true
	return builder
}

func (builder *StandardDimensionBuilder) Build() *StandardDimension {
	req := &StandardDimension{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.labelFlag {
		req.Label = builder.label
	}
	return req
}

type StandardReferenceObject struct {
	Id *string `json:"id,omitempty"` // 薪资项目ID/薪资统计指标ID，详细信息可以通过接口查询[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)， [批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)

	ApiName *string `json:"api_name,omitempty"` // 资源名，薪资项目："cpst_item"，薪资指标: "cpst_indicator"
}

type StandardReferenceObjectBuilder struct {
	id     string // 薪资项目ID/薪资统计指标ID，详细信息可以通过接口查询[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)， [批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)
	idFlag bool

	apiName     string // 资源名，薪资项目："cpst_item"，薪资指标: "cpst_indicator"
	apiNameFlag bool
}

func NewStandardReferenceObjectBuilder() *StandardReferenceObjectBuilder {
	builder := &StandardReferenceObjectBuilder{}
	return builder
}

// 薪资项目ID/薪资统计指标ID，详细信息可以通过接口查询[批量查询薪资项](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/item/list)， [批量查询薪资统计指标](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/indicator/list)
//
// 示例值：7475986561660372524
func (builder *StandardReferenceObjectBuilder) Id(id string) *StandardReferenceObjectBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 资源名，薪资项目："cpst_item"，薪资指标: "cpst_indicator"
//
// 示例值：cpst_indicator
func (builder *StandardReferenceObjectBuilder) ApiName(apiName string) *StandardReferenceObjectBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

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

	}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	return req
}

type StandardScope struct {
	All *bool `json:"all,omitempty"` // 是否全部

	DefineExpression *string `json:"define_expression,omitempty"` // 条件表达式

	Expressions []*StandardScopeExpression `json:"expressions,omitempty"` // 适用范围明细列表
}

type StandardScopeBuilder struct {
	all     bool // 是否全部
	allFlag bool

	defineExpression     string // 条件表达式
	defineExpressionFlag bool

	expressions     []*StandardScopeExpression // 适用范围明细列表
	expressionsFlag bool
}

func NewStandardScopeBuilder() *StandardScopeBuilder {
	builder := &StandardScopeBuilder{}
	return builder
}

// 是否全部
//
// 示例值：false
func (builder *StandardScopeBuilder) All(all bool) *StandardScopeBuilder {
	builder.all = all
	builder.allFlag = true
	return builder
}

// 条件表达式
//
// 示例值：1 and 2 and 3
func (builder *StandardScopeBuilder) DefineExpression(defineExpression string) *StandardScopeBuilder {
	builder.defineExpression = defineExpression
	builder.defineExpressionFlag = true
	return builder
}

// 适用范围明细列表
//
// 示例值：
func (builder *StandardScopeBuilder) Expressions(expressions []*StandardScopeExpression) *StandardScopeBuilder {
	builder.expressions = expressions
	builder.expressionsFlag = true
	return builder
}

func (builder *StandardScopeBuilder) Build() *StandardScope {
	req := &StandardScope{}
	if builder.allFlag {
		req.All = &builder.all

	}
	if builder.defineExpressionFlag {
		req.DefineExpression = &builder.defineExpression

	}
	if builder.expressionsFlag {
		req.Expressions = builder.expressions
	}
	return req
}

type StandardScopeExpression struct {
	ApiName *string `json:"api_name,omitempty"` // 范围API

	OperatorType *int `json:"operator_type,omitempty"` // 操作类型

	ContainSub *bool `json:"contain_sub,omitempty"` // 是否包含下级

	Values []string `json:"values,omitempty"` // 适用范围明细值列表

	ScopeName *I18n `json:"scope_name,omitempty"` // 范围名称
}

type StandardScopeExpressionBuilder struct {
	apiName     string // 范围API
	apiNameFlag bool

	operatorType     int // 操作类型
	operatorTypeFlag bool

	containSub     bool // 是否包含下级
	containSubFlag bool

	values     []string // 适用范围明细值列表
	valuesFlag bool

	scopeName     *I18n // 范围名称
	scopeNameFlag bool
}

func NewStandardScopeExpressionBuilder() *StandardScopeExpressionBuilder {
	builder := &StandardScopeExpressionBuilder{}
	return builder
}

// 范围API
//
// 示例值："cpst_plan"
func (builder *StandardScopeExpressionBuilder) ApiName(apiName string) *StandardScopeExpressionBuilder {
	builder.apiName = apiName
	builder.apiNameFlag = true
	return builder
}

// 操作类型
//
// 示例值：1
func (builder *StandardScopeExpressionBuilder) OperatorType(operatorType int) *StandardScopeExpressionBuilder {
	builder.operatorType = operatorType
	builder.operatorTypeFlag = true
	return builder
}

// 是否包含下级
//
// 示例值：true
func (builder *StandardScopeExpressionBuilder) ContainSub(containSub bool) *StandardScopeExpressionBuilder {
	builder.containSub = containSub
	builder.containSubFlag = true
	return builder
}

// 适用范围明细值列表
//
// 示例值：
func (builder *StandardScopeExpressionBuilder) Values(values []string) *StandardScopeExpressionBuilder {
	builder.values = values
	builder.valuesFlag = true
	return builder
}

// 范围名称
//
// 示例值：
func (builder *StandardScopeExpressionBuilder) ScopeName(scopeName *I18n) *StandardScopeExpressionBuilder {
	builder.scopeName = scopeName
	builder.scopeNameFlag = true
	return builder
}

func (builder *StandardScopeExpressionBuilder) Build() *StandardScopeExpression {
	req := &StandardScopeExpression{}
	if builder.apiNameFlag {
		req.ApiName = &builder.apiName

	}
	if builder.operatorTypeFlag {
		req.OperatorType = &builder.operatorType

	}
	if builder.containSubFlag {
		req.ContainSub = &builder.containSub

	}
	if builder.valuesFlag {
		req.Values = builder.values
	}
	if builder.scopeNameFlag {
		req.ScopeName = builder.scopeName
	}
	return req
}

type CreateArchiveReqBodyBuilder struct {
	uniqueId     string // 外部幂等id，表示操作的唯一标识，避免重复发起，格式为标准的UUIDV4,
	uniqueIdFlag bool

	operatorId     string // 操作人ID，具体类型由入参中的 user_id_type 指定，选择应用身份鉴权时，该参数不能为空
	operatorIdFlag bool

	userId     string // 员工id，具体类型由入参中的 user_id_type 指定
	userIdFlag bool

	effectiveTime     string // 生效时间，日期格式
	effectiveTimeFlag bool

	currencyId     string // 币种ID，获取来源https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-currency/search?appId=cli_a63f5fc01866100c
	currencyIdFlag bool

	planId     string // 薪资方案ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list
	planIdFlag bool

	planTid     string // 薪资方案TID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list
	planTidFlag bool

	changeReasonId     string // 调薪原因ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list
	changeReasonIdFlag bool

	itemValueLists     []*ArchiveItemValue // 薪资项值集合
	itemValueListsFlag bool

	description     string // 调薪说明
	descriptionFlag bool

	editRemark     string // 更正说明，当员工在当天存在调薪记录时，该字段即为更正调薪的说明
	editRemarkFlag bool
}

func NewCreateArchiveReqBodyBuilder() *CreateArchiveReqBodyBuilder {
	builder := &CreateArchiveReqBodyBuilder{}
	return builder
}

// 外部幂等id，表示操作的唯一标识，避免重复发起，格式为标准的UUIDV4,
//
//示例值：123e4567-e89b-42d3-a456-426614174000
func (builder *CreateArchiveReqBodyBuilder) UniqueId(uniqueId string) *CreateArchiveReqBodyBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 操作人ID，具体类型由入参中的 user_id_type 指定，选择应用身份鉴权时，该参数不能为空
//
//示例值：7337149697626801708
func (builder *CreateArchiveReqBodyBuilder) OperatorId(operatorId string) *CreateArchiveReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 员工id，具体类型由入参中的 user_id_type 指定
//
//示例值：7337149697626801708
func (builder *CreateArchiveReqBodyBuilder) UserId(userId string) *CreateArchiveReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 生效时间，日期格式
//
//示例值：2024-11-12
func (builder *CreateArchiveReqBodyBuilder) EffectiveTime(effectiveTime string) *CreateArchiveReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 币种ID，获取来源https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-currency/search?appId=cli_a63f5fc01866100c
//
//示例值：6863329932261459464
func (builder *CreateArchiveReqBodyBuilder) CurrencyId(currencyId string) *CreateArchiveReqBodyBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 薪资方案ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list
//
//示例值：7431430313074247212
func (builder *CreateArchiveReqBodyBuilder) PlanId(planId string) *CreateArchiveReqBodyBuilder {
	builder.planId = planId
	builder.planIdFlag = true
	return builder
}

// 薪资方案TID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list
//
//示例值：7431430313074279980
func (builder *CreateArchiveReqBodyBuilder) PlanTid(planTid string) *CreateArchiveReqBodyBuilder {
	builder.planTid = planTid
	builder.planTidFlag = true
	return builder
}

// 调薪原因ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list
//
//示例值：7125907336899888684
func (builder *CreateArchiveReqBodyBuilder) ChangeReasonId(changeReasonId string) *CreateArchiveReqBodyBuilder {
	builder.changeReasonId = changeReasonId
	builder.changeReasonIdFlag = true
	return builder
}

// 薪资项值集合
//
//示例值：
func (builder *CreateArchiveReqBodyBuilder) ItemValueLists(itemValueLists []*ArchiveItemValue) *CreateArchiveReqBodyBuilder {
	builder.itemValueLists = itemValueLists
	builder.itemValueListsFlag = true
	return builder
}

// 调薪说明
//
//示例值：调薪说明
func (builder *CreateArchiveReqBodyBuilder) Description(description string) *CreateArchiveReqBodyBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 更正说明，当员工在当天存在调薪记录时，该字段即为更正调薪的说明
//
//示例值：更正调薪说明
func (builder *CreateArchiveReqBodyBuilder) EditRemark(editRemark string) *CreateArchiveReqBodyBuilder {
	builder.editRemark = editRemark
	builder.editRemarkFlag = true
	return builder
}

func (builder *CreateArchiveReqBodyBuilder) Build() *CreateArchiveReqBody {
	req := &CreateArchiveReqBody{}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.currencyIdFlag {
		req.CurrencyId = &builder.currencyId
	}
	if builder.planIdFlag {
		req.PlanId = &builder.planId
	}
	if builder.planTidFlag {
		req.PlanTid = &builder.planTid
	}
	if builder.changeReasonIdFlag {
		req.ChangeReasonId = &builder.changeReasonId
	}
	if builder.itemValueListsFlag {
		req.ItemValueLists = builder.itemValueLists
	}
	if builder.descriptionFlag {
		req.Description = &builder.description
	}
	if builder.editRemarkFlag {
		req.EditRemark = &builder.editRemark
	}
	return req
}

type CreateArchivePathReqBodyBuilder struct {
	uniqueId           string
	uniqueIdFlag       bool
	operatorId         string
	operatorIdFlag     bool
	userId             string
	userIdFlag         bool
	effectiveTime      string
	effectiveTimeFlag  bool
	currencyId         string
	currencyIdFlag     bool
	planId             string
	planIdFlag         bool
	planTid            string
	planTidFlag        bool
	changeReasonId     string
	changeReasonIdFlag bool
	itemValueLists     []*ArchiveItemValue
	itemValueListsFlag bool
	description        string
	descriptionFlag    bool
	editRemark         string
	editRemarkFlag     bool
}

func NewCreateArchivePathReqBodyBuilder() *CreateArchivePathReqBodyBuilder {
	builder := &CreateArchivePathReqBodyBuilder{}
	return builder
}

// 外部幂等id，表示操作的唯一标识，避免重复发起，格式为标准的UUIDV4,
//
// 示例值：123e4567-e89b-42d3-a456-426614174000
func (builder *CreateArchivePathReqBodyBuilder) UniqueId(uniqueId string) *CreateArchivePathReqBodyBuilder {
	builder.uniqueId = uniqueId
	builder.uniqueIdFlag = true
	return builder
}

// 操作人ID，具体类型由入参中的 user_id_type 指定，选择应用身份鉴权时，该参数不能为空
//
// 示例值：7337149697626801708
func (builder *CreateArchivePathReqBodyBuilder) OperatorId(operatorId string) *CreateArchivePathReqBodyBuilder {
	builder.operatorId = operatorId
	builder.operatorIdFlag = true
	return builder
}

// 员工id，具体类型由入参中的 user_id_type 指定
//
// 示例值：7337149697626801708
func (builder *CreateArchivePathReqBodyBuilder) UserId(userId string) *CreateArchivePathReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 生效时间，日期格式
//
// 示例值：2024-11-12
func (builder *CreateArchivePathReqBodyBuilder) EffectiveTime(effectiveTime string) *CreateArchivePathReqBodyBuilder {
	builder.effectiveTime = effectiveTime
	builder.effectiveTimeFlag = true
	return builder
}

// 币种ID，获取来源https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-currency/search?appId=cli_a63f5fc01866100c
//
// 示例值：6863329932261459464
func (builder *CreateArchivePathReqBodyBuilder) CurrencyId(currencyId string) *CreateArchivePathReqBodyBuilder {
	builder.currencyId = currencyId
	builder.currencyIdFlag = true
	return builder
}

// 薪资方案ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list
//
// 示例值：7431430313074247212
func (builder *CreateArchivePathReqBodyBuilder) PlanId(planId string) *CreateArchivePathReqBodyBuilder {
	builder.planId = planId
	builder.planIdFlag = true
	return builder
}

// 薪资方案TID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list
//
// 示例值：7431430313074279980
func (builder *CreateArchivePathReqBodyBuilder) PlanTid(planTid string) *CreateArchivePathReqBodyBuilder {
	builder.planTid = planTid
	builder.planTidFlag = true
	return builder
}

// 调薪原因ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list
//
// 示例值：7125907336899888684
func (builder *CreateArchivePathReqBodyBuilder) ChangeReasonId(changeReasonId string) *CreateArchivePathReqBodyBuilder {
	builder.changeReasonId = changeReasonId
	builder.changeReasonIdFlag = true
	return builder
}

// 薪资项值集合
//
// 示例值：
func (builder *CreateArchivePathReqBodyBuilder) ItemValueLists(itemValueLists []*ArchiveItemValue) *CreateArchivePathReqBodyBuilder {
	builder.itemValueLists = itemValueLists
	builder.itemValueListsFlag = true
	return builder
}

// 调薪说明
//
// 示例值：调薪说明
func (builder *CreateArchivePathReqBodyBuilder) Description(description string) *CreateArchivePathReqBodyBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 更正说明，当员工在当天存在调薪记录时，该字段即为更正调薪的说明
//
// 示例值：更正调薪说明
func (builder *CreateArchivePathReqBodyBuilder) EditRemark(editRemark string) *CreateArchivePathReqBodyBuilder {
	builder.editRemark = editRemark
	builder.editRemarkFlag = true
	return builder
}

func (builder *CreateArchivePathReqBodyBuilder) Build() (*CreateArchiveReqBody, error) {
	req := &CreateArchiveReqBody{}
	if builder.uniqueIdFlag {
		req.UniqueId = &builder.uniqueId
	}
	if builder.operatorIdFlag {
		req.OperatorId = &builder.operatorId
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.effectiveTimeFlag {
		req.EffectiveTime = &builder.effectiveTime
	}
	if builder.currencyIdFlag {
		req.CurrencyId = &builder.currencyId
	}
	if builder.planIdFlag {
		req.PlanId = &builder.planId
	}
	if builder.planTidFlag {
		req.PlanTid = &builder.planTid
	}
	if builder.changeReasonIdFlag {
		req.ChangeReasonId = &builder.changeReasonId
	}
	if builder.itemValueListsFlag {
		req.ItemValueLists = builder.itemValueLists
	}
	if builder.descriptionFlag {
		req.Description = &builder.description
	}
	if builder.editRemarkFlag {
		req.EditRemark = &builder.editRemark
	}
	return req, nil
}

type CreateArchiveReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateArchiveReqBody
}

func NewCreateArchiveReqBuilder() *CreateArchiveReqBuilder {
	builder := &CreateArchiveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
//
// 示例值：open_id
func (builder *CreateArchiveReqBuilder) UserIdType(userIdType string) *CreateArchiveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *CreateArchiveReqBuilder) Body(body *CreateArchiveReqBody) *CreateArchiveReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateArchiveReqBuilder) Build() *CreateArchiveReq {
	req := &CreateArchiveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type CreateArchiveReqBody struct {
	UniqueId *string `json:"unique_id,omitempty"` // 外部幂等id，表示操作的唯一标识，避免重复发起，格式为标准的UUIDV4,

	OperatorId *string `json:"operator_id,omitempty"` // 操作人ID，具体类型由入参中的 user_id_type 指定，选择应用身份鉴权时，该参数不能为空

	UserId *string `json:"user_id,omitempty"` // 员工id，具体类型由入参中的 user_id_type 指定

	EffectiveTime *string `json:"effective_time,omitempty"` // 生效时间，日期格式

	CurrencyId *string `json:"currency_id,omitempty"` // 币种ID，获取来源https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/basic_info-currency/search?appId=cli_a63f5fc01866100c

	PlanId *string `json:"plan_id,omitempty"` // 薪资方案ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list

	PlanTid *string `json:"plan_tid,omitempty"` // 薪资方案TID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/plan/list

	ChangeReasonId *string `json:"change_reason_id,omitempty"` // 调薪原因ID，获取来源：https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/compensation-v1/change_reason/list

	ItemValueLists []*ArchiveItemValue `json:"item_value_lists,omitempty"` // 薪资项值集合

	Description *string `json:"description,omitempty"` // 调薪说明

	EditRemark *string `json:"edit_remark,omitempty"` // 更正说明，当员工在当天存在调薪记录时，该字段即为更正调薪的说明
}

type CreateArchiveReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateArchiveReqBody `body:""`
}

type CreateArchiveRespData struct {
	UniqueId *string `json:"unique_id,omitempty"` // 定调薪任务创建的唯一ID

	ArchiveTid *string `json:"archive_tid,omitempty"` // 薪档案的TID
}

type CreateArchiveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateArchiveRespData `json:"data"` // 业务数据
}

func (resp *CreateArchiveResp) Success() bool {
	return resp.Code == 0
}

type QueryArchiveReqBodyBuilder struct {
	userIdList     []string // 用户ID列表
	userIdListFlag bool

	tidList     []string // 档案Tid列表
	tidListFlag bool

	effectiveStartDate     string // 生效开始时间
	effectiveStartDateFlag bool

	effectiveEndDate     string // 生效结束时间
	effectiveEndDateFlag bool
}

func NewQueryArchiveReqBodyBuilder() *QueryArchiveReqBodyBuilder {
	builder := &QueryArchiveReqBodyBuilder{}
	return builder
}

// 用户ID列表
//
//示例值：
func (builder *QueryArchiveReqBodyBuilder) UserIdList(userIdList []string) *QueryArchiveReqBodyBuilder {
	builder.userIdList = userIdList
	builder.userIdListFlag = true
	return builder
}

// 档案Tid列表
//
//示例值：
func (builder *QueryArchiveReqBodyBuilder) TidList(tidList []string) *QueryArchiveReqBodyBuilder {
	builder.tidList = tidList
	builder.tidListFlag = true
	return builder
}

// 生效开始时间
//
//示例值：2022-05-10
func (builder *QueryArchiveReqBodyBuilder) EffectiveStartDate(effectiveStartDate string) *QueryArchiveReqBodyBuilder {
	builder.effectiveStartDate = effectiveStartDate
	builder.effectiveStartDateFlag = true
	return builder
}

// 生效结束时间
//
//示例值：2023-05-15
func (builder *QueryArchiveReqBodyBuilder) EffectiveEndDate(effectiveEndDate string) *QueryArchiveReqBodyBuilder {
	builder.effectiveEndDate = effectiveEndDate
	builder.effectiveEndDateFlag = true
	return builder
}

func (builder *QueryArchiveReqBodyBuilder) Build() *QueryArchiveReqBody {
	req := &QueryArchiveReqBody{}
	if builder.userIdListFlag {
		req.UserIdList = builder.userIdList
	}
	if builder.tidListFlag {
		req.TidList = builder.tidList
	}
	if builder.effectiveStartDateFlag {
		req.EffectiveStartDate = &builder.effectiveStartDate
	}
	if builder.effectiveEndDateFlag {
		req.EffectiveEndDate = &builder.effectiveEndDate
	}
	return req
}

type QueryArchivePathReqBodyBuilder struct {
	userIdList             []string
	userIdListFlag         bool
	tidList                []string
	tidListFlag            bool
	effectiveStartDate     string
	effectiveStartDateFlag bool
	effectiveEndDate       string
	effectiveEndDateFlag   bool
}

func NewQueryArchivePathReqBodyBuilder() *QueryArchivePathReqBodyBuilder {
	builder := &QueryArchivePathReqBodyBuilder{}
	return builder
}

// 用户ID列表
//
// 示例值：
func (builder *QueryArchivePathReqBodyBuilder) UserIdList(userIdList []string) *QueryArchivePathReqBodyBuilder {
	builder.userIdList = userIdList
	builder.userIdListFlag = true
	return builder
}

// 档案Tid列表
//
// 示例值：
func (builder *QueryArchivePathReqBodyBuilder) TidList(tidList []string) *QueryArchivePathReqBodyBuilder {
	builder.tidList = tidList
	builder.tidListFlag = true
	return builder
}

// 生效开始时间
//
// 示例值：2022-05-10
func (builder *QueryArchivePathReqBodyBuilder) EffectiveStartDate(effectiveStartDate string) *QueryArchivePathReqBodyBuilder {
	builder.effectiveStartDate = effectiveStartDate
	builder.effectiveStartDateFlag = true
	return builder
}

// 生效结束时间
//
// 示例值：2023-05-15
func (builder *QueryArchivePathReqBodyBuilder) EffectiveEndDate(effectiveEndDate string) *QueryArchivePathReqBodyBuilder {
	builder.effectiveEndDate = effectiveEndDate
	builder.effectiveEndDateFlag = true
	return builder
}

func (builder *QueryArchivePathReqBodyBuilder) Build() (*QueryArchiveReqBody, error) {
	req := &QueryArchiveReqBody{}
	if builder.userIdListFlag {
		req.UserIdList = builder.userIdList
	}
	if builder.tidListFlag {
		req.TidList = builder.tidList
	}
	if builder.effectiveStartDateFlag {
		req.EffectiveStartDate = &builder.effectiveStartDate
	}
	if builder.effectiveEndDateFlag {
		req.EffectiveEndDate = &builder.effectiveEndDate
	}
	return req, nil
}

type QueryArchiveReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryArchiveReqBody
}

func NewQueryArchiveReqBuilder() *QueryArchiveReqBuilder {
	builder := &QueryArchiveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *QueryArchiveReqBuilder) PageSize(pageSize int) *QueryArchiveReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：231432433
func (builder *QueryArchiveReqBuilder) PageToken(pageToken string) *QueryArchiveReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户ID类型
//
// 示例值：open_id
func (builder *QueryArchiveReqBuilder) UserIdType(userIdType string) *QueryArchiveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *QueryArchiveReqBuilder) Body(body *QueryArchiveReqBody) *QueryArchiveReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryArchiveReqBuilder) Build() *QueryArchiveReq {
	req := &QueryArchiveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryArchiveReqBody struct {
	UserIdList []string `json:"user_id_list,omitempty"` // 用户ID列表

	TidList []string `json:"tid_list,omitempty"` // 档案Tid列表

	EffectiveStartDate *string `json:"effective_start_date,omitempty"` // 生效开始时间

	EffectiveEndDate *string `json:"effective_end_date,omitempty"` // 生效结束时间
}

type QueryArchiveReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryArchiveReqBody `body:""`
}

type QueryArchiveRespData struct {
	Items []*ArchiveDetail `json:"items,omitempty"` // 档案信息列表

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type QueryArchiveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryArchiveRespData `json:"data"` // 业务数据
}

func (resp *QueryArchiveResp) Success() bool {
	return resp.Code == 0
}

type ListChangeReasonReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListChangeReasonReqBuilder() *ListChangeReasonReqBuilder {
	builder := &ListChangeReasonReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListChangeReasonReqBuilder) Limit(limit int) *ListChangeReasonReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *ListChangeReasonReqBuilder) PageSize(pageSize int) *ListChangeReasonReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：12314342
func (builder *ListChangeReasonReqBuilder) PageToken(pageToken string) *ListChangeReasonReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

func (builder *ListChangeReasonReqBuilder) Build() *ListChangeReasonReq {
	req := &ListChangeReasonReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListChangeReasonReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListChangeReasonRespData struct {
	Items []*ChangeReason `json:"items,omitempty"` // 调薪原因信息列表

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type ListChangeReasonResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListChangeReasonRespData `json:"data"` // 业务数据
}

func (resp *ListChangeReasonResp) Success() bool {
	return resp.Code == 0
}

type ListIndicatorReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListIndicatorReqBuilder() *ListIndicatorReqBuilder {
	builder := &ListIndicatorReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListIndicatorReqBuilder) Limit(limit int) *ListIndicatorReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *ListIndicatorReqBuilder) PageSize(pageSize int) *ListIndicatorReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：123423321
func (builder *ListIndicatorReqBuilder) PageToken(pageToken string) *ListIndicatorReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

func (builder *ListIndicatorReqBuilder) Build() *ListIndicatorReq {
	req := &ListIndicatorReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListIndicatorReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListIndicatorRespData struct {
	Items []*Indicator `json:"items,omitempty"` // 薪资统计指标信息列表

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type ListIndicatorResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListIndicatorRespData `json:"data"` // 业务数据
}

func (resp *ListIndicatorResp) Success() bool {
	return resp.Code == 0
}

type ListItemReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListItemReqBuilder() *ListItemReqBuilder {
	builder := &ListItemReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListItemReqBuilder) Limit(limit int) *ListItemReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *ListItemReqBuilder) PageSize(pageSize int) *ListItemReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：5234233214
func (builder *ListItemReqBuilder) PageToken(pageToken string) *ListItemReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 薪酬项类型（不传则认为查询所有类型薪酬项）
//
// 示例值：bonus
func (builder *ListItemReqBuilder) ItemType(itemType string) *ListItemReqBuilder {
	builder.apiReq.QueryParams.Set("item_type", fmt.Sprint(itemType))
	return builder
}

func (builder *ListItemReqBuilder) Build() *ListItemReq {
	req := &ListItemReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListItemReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListItemRespData struct {
	Items []*Item `json:"items,omitempty"` // 薪酬项信息列表

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type ListItemResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListItemRespData `json:"data"` // 业务数据
}

func (resp *ListItemResp) Success() bool {
	return resp.Code == 0
}

type ListItemCategoryReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListItemCategoryReqBuilder() *ListItemCategoryReqBuilder {
	builder := &ListItemCategoryReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListItemCategoryReqBuilder) Limit(limit int) *ListItemCategoryReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *ListItemCategoryReqBuilder) PageSize(pageSize int) *ListItemCategoryReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：231412341234
func (builder *ListItemCategoryReqBuilder) PageToken(pageToken string) *ListItemCategoryReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

func (builder *ListItemCategoryReqBuilder) Build() *ListItemCategoryReq {
	req := &ListItemCategoryReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListItemCategoryReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListItemCategoryRespData struct {
	Items []*ItemCategory `json:"items,omitempty"` // 薪酬项分类信息列表

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type ListItemCategoryResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListItemCategoryRespData `json:"data"` // 业务数据
}

func (resp *ListItemCategoryResp) Success() bool {
	return resp.Code == 0
}

type BatchCreateLumpSumPaymentReqBodyBuilder struct {
	records     []*LumpSumPaymentForCreate // 要创建的一次性支付信息
	recordsFlag bool
}

func NewBatchCreateLumpSumPaymentReqBodyBuilder() *BatchCreateLumpSumPaymentReqBodyBuilder {
	builder := &BatchCreateLumpSumPaymentReqBodyBuilder{}
	return builder
}

// 要创建的一次性支付信息
//
//示例值：
func (builder *BatchCreateLumpSumPaymentReqBodyBuilder) Records(records []*LumpSumPaymentForCreate) *BatchCreateLumpSumPaymentReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchCreateLumpSumPaymentReqBodyBuilder) Build() *BatchCreateLumpSumPaymentReqBody {
	req := &BatchCreateLumpSumPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req
}

type BatchCreateLumpSumPaymentPathReqBodyBuilder struct {
	records     []*LumpSumPaymentForCreate
	recordsFlag bool
}

func NewBatchCreateLumpSumPaymentPathReqBodyBuilder() *BatchCreateLumpSumPaymentPathReqBodyBuilder {
	builder := &BatchCreateLumpSumPaymentPathReqBodyBuilder{}
	return builder
}

// 要创建的一次性支付信息
//
// 示例值：
func (builder *BatchCreateLumpSumPaymentPathReqBodyBuilder) Records(records []*LumpSumPaymentForCreate) *BatchCreateLumpSumPaymentPathReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchCreateLumpSumPaymentPathReqBodyBuilder) Build() (*BatchCreateLumpSumPaymentReqBody, error) {
	req := &BatchCreateLumpSumPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req, nil
}

type BatchCreateLumpSumPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchCreateLumpSumPaymentReqBody
}

func NewBatchCreateLumpSumPaymentReqBuilder() *BatchCreateLumpSumPaymentReqBuilder {
	builder := &BatchCreateLumpSumPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户ID类型
//
// 示例值：open_id
func (builder *BatchCreateLumpSumPaymentReqBuilder) UserIdType(userIdType string) *BatchCreateLumpSumPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *BatchCreateLumpSumPaymentReqBuilder) Body(body *BatchCreateLumpSumPaymentReqBody) *BatchCreateLumpSumPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchCreateLumpSumPaymentReqBuilder) Build() *BatchCreateLumpSumPaymentReq {
	req := &BatchCreateLumpSumPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchCreateLumpSumPaymentReqBody struct {
	Records []*LumpSumPaymentForCreate `json:"records,omitempty"` // 要创建的一次性支付信息
}

type BatchCreateLumpSumPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchCreateLumpSumPaymentReqBody `body:""`
}

type BatchCreateLumpSumPaymentRespData struct {
	OperateResults []*LumpSumPaymentOperateResult `json:"operate_results,omitempty"` // 每条记录的操作结果。对于创建成功的记录，会返回创建后的一次性支付记录id
}

type BatchCreateLumpSumPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchCreateLumpSumPaymentRespData `json:"data"` // 业务数据
}

func (resp *BatchCreateLumpSumPaymentResp) Success() bool {
	return resp.Code == 0
}

type BatchRemoveLumpSumPaymentReqBodyBuilder struct {
	recordIds     []string // 要删除的一次性支付记录id
	recordIdsFlag bool

	reason     string // 删除原因
	reasonFlag bool
}

func NewBatchRemoveLumpSumPaymentReqBodyBuilder() *BatchRemoveLumpSumPaymentReqBodyBuilder {
	builder := &BatchRemoveLumpSumPaymentReqBodyBuilder{}
	return builder
}

// 要删除的一次性支付记录id
//
//示例值：
func (builder *BatchRemoveLumpSumPaymentReqBodyBuilder) RecordIds(recordIds []string) *BatchRemoveLumpSumPaymentReqBodyBuilder {
	builder.recordIds = recordIds
	builder.recordIdsFlag = true
	return builder
}

// 删除原因
//
//示例值：这是个原因
func (builder *BatchRemoveLumpSumPaymentReqBodyBuilder) Reason(reason string) *BatchRemoveLumpSumPaymentReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *BatchRemoveLumpSumPaymentReqBodyBuilder) Build() *BatchRemoveLumpSumPaymentReqBody {
	req := &BatchRemoveLumpSumPaymentReqBody{}
	if builder.recordIdsFlag {
		req.RecordIds = builder.recordIds
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason
	}
	return req
}

type BatchRemoveLumpSumPaymentPathReqBodyBuilder struct {
	recordIds     []string
	recordIdsFlag bool
	reason        string
	reasonFlag    bool
}

func NewBatchRemoveLumpSumPaymentPathReqBodyBuilder() *BatchRemoveLumpSumPaymentPathReqBodyBuilder {
	builder := &BatchRemoveLumpSumPaymentPathReqBodyBuilder{}
	return builder
}

// 要删除的一次性支付记录id
//
// 示例值：
func (builder *BatchRemoveLumpSumPaymentPathReqBodyBuilder) RecordIds(recordIds []string) *BatchRemoveLumpSumPaymentPathReqBodyBuilder {
	builder.recordIds = recordIds
	builder.recordIdsFlag = true
	return builder
}

// 删除原因
//
// 示例值：这是个原因
func (builder *BatchRemoveLumpSumPaymentPathReqBodyBuilder) Reason(reason string) *BatchRemoveLumpSumPaymentPathReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *BatchRemoveLumpSumPaymentPathReqBodyBuilder) Build() (*BatchRemoveLumpSumPaymentReqBody, error) {
	req := &BatchRemoveLumpSumPaymentReqBody{}
	if builder.recordIdsFlag {
		req.RecordIds = builder.recordIds
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason
	}
	return req, nil
}

type BatchRemoveLumpSumPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchRemoveLumpSumPaymentReqBody
}

func NewBatchRemoveLumpSumPaymentReqBuilder() *BatchRemoveLumpSumPaymentReqBuilder {
	builder := &BatchRemoveLumpSumPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *BatchRemoveLumpSumPaymentReqBuilder) Body(body *BatchRemoveLumpSumPaymentReqBody) *BatchRemoveLumpSumPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchRemoveLumpSumPaymentReqBuilder) Build() *BatchRemoveLumpSumPaymentReq {
	req := &BatchRemoveLumpSumPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchRemoveLumpSumPaymentReqBody struct {
	RecordIds []string `json:"record_ids,omitempty"` // 要删除的一次性支付记录id

	Reason *string `json:"reason,omitempty"` // 删除原因
}

type BatchRemoveLumpSumPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchRemoveLumpSumPaymentReqBody `body:""`
}

type BatchRemoveLumpSumPaymentRespData struct {
	OperateResults []*LumpSumPaymentOperateResult `json:"operate_results,omitempty"` // 每条记录的操作结果
}

type BatchRemoveLumpSumPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchRemoveLumpSumPaymentRespData `json:"data"` // 业务数据
}

func (resp *BatchRemoveLumpSumPaymentResp) Success() bool {
	return resp.Code == 0
}

type BatchUpdateLumpSumPaymentReqBodyBuilder struct {
	records     []*LumpSumPaymentForUpdate // 要更正的一次性支付记录列表
	recordsFlag bool
}

func NewBatchUpdateLumpSumPaymentReqBodyBuilder() *BatchUpdateLumpSumPaymentReqBodyBuilder {
	builder := &BatchUpdateLumpSumPaymentReqBodyBuilder{}
	return builder
}

// 要更正的一次性支付记录列表
//
//示例值：
func (builder *BatchUpdateLumpSumPaymentReqBodyBuilder) Records(records []*LumpSumPaymentForUpdate) *BatchUpdateLumpSumPaymentReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchUpdateLumpSumPaymentReqBodyBuilder) Build() *BatchUpdateLumpSumPaymentReqBody {
	req := &BatchUpdateLumpSumPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req
}

type BatchUpdateLumpSumPaymentPathReqBodyBuilder struct {
	records     []*LumpSumPaymentForUpdate
	recordsFlag bool
}

func NewBatchUpdateLumpSumPaymentPathReqBodyBuilder() *BatchUpdateLumpSumPaymentPathReqBodyBuilder {
	builder := &BatchUpdateLumpSumPaymentPathReqBodyBuilder{}
	return builder
}

// 要更正的一次性支付记录列表
//
// 示例值：
func (builder *BatchUpdateLumpSumPaymentPathReqBodyBuilder) Records(records []*LumpSumPaymentForUpdate) *BatchUpdateLumpSumPaymentPathReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchUpdateLumpSumPaymentPathReqBodyBuilder) Build() (*BatchUpdateLumpSumPaymentReqBody, error) {
	req := &BatchUpdateLumpSumPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req, nil
}

type BatchUpdateLumpSumPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchUpdateLumpSumPaymentReqBody
}

func NewBatchUpdateLumpSumPaymentReqBuilder() *BatchUpdateLumpSumPaymentReqBuilder {
	builder := &BatchUpdateLumpSumPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *BatchUpdateLumpSumPaymentReqBuilder) Body(body *BatchUpdateLumpSumPaymentReqBody) *BatchUpdateLumpSumPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchUpdateLumpSumPaymentReqBuilder) Build() *BatchUpdateLumpSumPaymentReq {
	req := &BatchUpdateLumpSumPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchUpdateLumpSumPaymentReqBody struct {
	Records []*LumpSumPaymentForUpdate `json:"records,omitempty"` // 要更正的一次性支付记录列表
}

type BatchUpdateLumpSumPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchUpdateLumpSumPaymentReqBody `body:""`
}

type BatchUpdateLumpSumPaymentRespData struct {
	OperateResults []*LumpSumPaymentOperateResult `json:"operate_results,omitempty"` // 每条记录的操作结果
}

type BatchUpdateLumpSumPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchUpdateLumpSumPaymentRespData `json:"data"` // 业务数据
}

func (resp *BatchUpdateLumpSumPaymentResp) Success() bool {
	return resp.Code == 0
}

type QueryLumpSumPaymentReqBodyBuilder struct {
	ids     []string // id属于
	idsFlag bool

	uniqueIds     []string // unique_id属于
	uniqueIdsFlag bool

	userIds     []string // 员工id属于
	userIdsFlag bool

	itemIds     []string // 薪酬项id属于
	itemIdsFlag bool

	createTimeGte     string // 创建时间大于等于（东八区）
	createTimeGteFlag bool

	createTimeLte     string // 创建时间小于等于（东八区）
	createTimeLteFlag bool

	modifyTimeGte     string // 更新时间大于等于（东八区）
	modifyTimeGteFlag bool

	modifyTimeLte     string // 更新时间小于等于（东八区）
	modifyTimeLteFlag bool

	companyIds     []string // 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
	companyIdsFlag bool

	serviceCompanyIds     []string // 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
	serviceCompanyIdsFlag bool

	departmentIds     []string // 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
	departmentIdsFlag bool

	jobFamilyIds     []string // 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
	jobFamilyIdsFlag bool

	jobLevelIds     []string // 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
	jobLevelIdsFlag bool

	workLocationIds     []string // 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
	workLocationIdsFlag bool

	employeeTypeIds     []string // 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
	employeeTypeIdsFlag bool

	onboardDateGte     string // 入职日期大于等于
	onboardDateGteFlag bool

	onboardDateLte     string // 入职日期小于等于
	onboardDateLteFlag bool

	offboardDateGte     string // 离职日期大于等于
	offboardDateGteFlag bool

	offboardDateLte     string // 离职日期小于等于
	offboardDateLteFlag bool
}

func NewQueryLumpSumPaymentReqBodyBuilder() *QueryLumpSumPaymentReqBodyBuilder {
	builder := &QueryLumpSumPaymentReqBodyBuilder{}
	return builder
}

// id属于
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) Ids(ids []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// unique_id属于
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) UniqueIds(uniqueIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.uniqueIds = uniqueIds
	builder.uniqueIdsFlag = true
	return builder
}

// 员工id属于
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) UserIds(userIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 薪酬项id属于
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) ItemIds(itemIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.itemIds = itemIds
	builder.itemIdsFlag = true
	return builder
}

// 创建时间大于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentReqBodyBuilder) CreateTimeGte(createTimeGte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.createTimeGte = createTimeGte
	builder.createTimeGteFlag = true
	return builder
}

// 创建时间小于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentReqBodyBuilder) CreateTimeLte(createTimeLte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.createTimeLte = createTimeLte
	builder.createTimeLteFlag = true
	return builder
}

// 更新时间大于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentReqBodyBuilder) ModifyTimeGte(modifyTimeGte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.modifyTimeGte = modifyTimeGte
	builder.modifyTimeGteFlag = true
	return builder
}

// 更新时间小于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentReqBodyBuilder) ModifyTimeLte(modifyTimeLte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.modifyTimeLte = modifyTimeLte
	builder.modifyTimeLteFlag = true
	return builder
}

// 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) CompanyIds(companyIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

// 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) ServiceCompanyIds(serviceCompanyIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.serviceCompanyIds = serviceCompanyIds
	builder.serviceCompanyIdsFlag = true
	return builder
}

// 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) JobLevelIds(jobLevelIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) WorkLocationIds(workLocationIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
//
//示例值：
func (builder *QueryLumpSumPaymentReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 入职日期大于等于
//
//示例值：2023-04-01
func (builder *QueryLumpSumPaymentReqBodyBuilder) OnboardDateGte(onboardDateGte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.onboardDateGte = onboardDateGte
	builder.onboardDateGteFlag = true
	return builder
}

// 入职日期小于等于
//
//示例值：2023-04-01
func (builder *QueryLumpSumPaymentReqBodyBuilder) OnboardDateLte(onboardDateLte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.onboardDateLte = onboardDateLte
	builder.onboardDateLteFlag = true
	return builder
}

// 离职日期大于等于
//
//示例值：2023-04-01
func (builder *QueryLumpSumPaymentReqBodyBuilder) OffboardDateGte(offboardDateGte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.offboardDateGte = offboardDateGte
	builder.offboardDateGteFlag = true
	return builder
}

// 离职日期小于等于
//
//示例值：2023-04-01
func (builder *QueryLumpSumPaymentReqBodyBuilder) OffboardDateLte(offboardDateLte string) *QueryLumpSumPaymentReqBodyBuilder {
	builder.offboardDateLte = offboardDateLte
	builder.offboardDateLteFlag = true
	return builder
}

func (builder *QueryLumpSumPaymentReqBodyBuilder) Build() *QueryLumpSumPaymentReqBody {
	req := &QueryLumpSumPaymentReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.uniqueIdsFlag {
		req.UniqueIds = builder.uniqueIds
	}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.itemIdsFlag {
		req.ItemIds = builder.itemIds
	}
	if builder.createTimeGteFlag {
		req.CreateTimeGte = &builder.createTimeGte
	}
	if builder.createTimeLteFlag {
		req.CreateTimeLte = &builder.createTimeLte
	}
	if builder.modifyTimeGteFlag {
		req.ModifyTimeGte = &builder.modifyTimeGte
	}
	if builder.modifyTimeLteFlag {
		req.ModifyTimeLte = &builder.modifyTimeLte
	}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	if builder.serviceCompanyIdsFlag {
		req.ServiceCompanyIds = builder.serviceCompanyIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.onboardDateGteFlag {
		req.OnboardDateGte = &builder.onboardDateGte
	}
	if builder.onboardDateLteFlag {
		req.OnboardDateLte = &builder.onboardDateLte
	}
	if builder.offboardDateGteFlag {
		req.OffboardDateGte = &builder.offboardDateGte
	}
	if builder.offboardDateLteFlag {
		req.OffboardDateLte = &builder.offboardDateLte
	}
	return req
}

type QueryLumpSumPaymentPathReqBodyBuilder struct {
	ids                   []string
	idsFlag               bool
	uniqueIds             []string
	uniqueIdsFlag         bool
	userIds               []string
	userIdsFlag           bool
	itemIds               []string
	itemIdsFlag           bool
	createTimeGte         string
	createTimeGteFlag     bool
	createTimeLte         string
	createTimeLteFlag     bool
	modifyTimeGte         string
	modifyTimeGteFlag     bool
	modifyTimeLte         string
	modifyTimeLteFlag     bool
	companyIds            []string
	companyIdsFlag        bool
	serviceCompanyIds     []string
	serviceCompanyIdsFlag bool
	departmentIds         []string
	departmentIdsFlag     bool
	jobFamilyIds          []string
	jobFamilyIdsFlag      bool
	jobLevelIds           []string
	jobLevelIdsFlag       bool
	workLocationIds       []string
	workLocationIdsFlag   bool
	employeeTypeIds       []string
	employeeTypeIdsFlag   bool
	onboardDateGte        string
	onboardDateGteFlag    bool
	onboardDateLte        string
	onboardDateLteFlag    bool
	offboardDateGte       string
	offboardDateGteFlag   bool
	offboardDateLte       string
	offboardDateLteFlag   bool
}

func NewQueryLumpSumPaymentPathReqBodyBuilder() *QueryLumpSumPaymentPathReqBodyBuilder {
	builder := &QueryLumpSumPaymentPathReqBodyBuilder{}
	return builder
}

// id属于
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) Ids(ids []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// unique_id属于
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) UniqueIds(uniqueIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.uniqueIds = uniqueIds
	builder.uniqueIdsFlag = true
	return builder
}

// 员工id属于
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) UserIds(userIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 薪酬项id属于
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) ItemIds(itemIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.itemIds = itemIds
	builder.itemIdsFlag = true
	return builder
}

// 创建时间大于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) CreateTimeGte(createTimeGte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.createTimeGte = createTimeGte
	builder.createTimeGteFlag = true
	return builder
}

// 创建时间小于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) CreateTimeLte(createTimeLte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.createTimeLte = createTimeLte
	builder.createTimeLteFlag = true
	return builder
}

// 更新时间大于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) ModifyTimeGte(modifyTimeGte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.modifyTimeGte = modifyTimeGte
	builder.modifyTimeGteFlag = true
	return builder
}

// 更新时间小于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) ModifyTimeLte(modifyTimeLte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.modifyTimeLte = modifyTimeLte
	builder.modifyTimeLteFlag = true
	return builder
}

// 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) CompanyIds(companyIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

// 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) ServiceCompanyIds(serviceCompanyIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.serviceCompanyIds = serviceCompanyIds
	builder.serviceCompanyIdsFlag = true
	return builder
}

// 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) JobLevelIds(jobLevelIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) WorkLocationIds(workLocationIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
//
// 示例值：
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 入职日期大于等于
//
// 示例值：2023-04-01
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) OnboardDateGte(onboardDateGte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.onboardDateGte = onboardDateGte
	builder.onboardDateGteFlag = true
	return builder
}

// 入职日期小于等于
//
// 示例值：2023-04-01
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) OnboardDateLte(onboardDateLte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.onboardDateLte = onboardDateLte
	builder.onboardDateLteFlag = true
	return builder
}

// 离职日期大于等于
//
// 示例值：2023-04-01
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) OffboardDateGte(offboardDateGte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.offboardDateGte = offboardDateGte
	builder.offboardDateGteFlag = true
	return builder
}

// 离职日期小于等于
//
// 示例值：2023-04-01
func (builder *QueryLumpSumPaymentPathReqBodyBuilder) OffboardDateLte(offboardDateLte string) *QueryLumpSumPaymentPathReqBodyBuilder {
	builder.offboardDateLte = offboardDateLte
	builder.offboardDateLteFlag = true
	return builder
}

func (builder *QueryLumpSumPaymentPathReqBodyBuilder) Build() (*QueryLumpSumPaymentReqBody, error) {
	req := &QueryLumpSumPaymentReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.uniqueIdsFlag {
		req.UniqueIds = builder.uniqueIds
	}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.itemIdsFlag {
		req.ItemIds = builder.itemIds
	}
	if builder.createTimeGteFlag {
		req.CreateTimeGte = &builder.createTimeGte
	}
	if builder.createTimeLteFlag {
		req.CreateTimeLte = &builder.createTimeLte
	}
	if builder.modifyTimeGteFlag {
		req.ModifyTimeGte = &builder.modifyTimeGte
	}
	if builder.modifyTimeLteFlag {
		req.ModifyTimeLte = &builder.modifyTimeLte
	}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	if builder.serviceCompanyIdsFlag {
		req.ServiceCompanyIds = builder.serviceCompanyIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.onboardDateGteFlag {
		req.OnboardDateGte = &builder.onboardDateGte
	}
	if builder.onboardDateLteFlag {
		req.OnboardDateLte = &builder.onboardDateLte
	}
	if builder.offboardDateGteFlag {
		req.OffboardDateGte = &builder.offboardDateGte
	}
	if builder.offboardDateLteFlag {
		req.OffboardDateLte = &builder.offboardDateLte
	}
	return req, nil
}

type QueryLumpSumPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryLumpSumPaymentReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewQueryLumpSumPaymentReqBuilder() *QueryLumpSumPaymentReqBuilder {
	builder := &QueryLumpSumPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *QueryLumpSumPaymentReqBuilder) Limit(limit int) *QueryLumpSumPaymentReqBuilder {
	builder.limit = limit
	return builder
}

//
//
// 示例值：
func (builder *QueryLumpSumPaymentReqBuilder) PageSize(pageSize int) *QueryLumpSumPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

//
//
// 示例值：
func (builder *QueryLumpSumPaymentReqBuilder) PageToken(pageToken string) *QueryLumpSumPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户ID类型
//
// 示例值：open_id
func (builder *QueryLumpSumPaymentReqBuilder) UserIdType(userIdType string) *QueryLumpSumPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *QueryLumpSumPaymentReqBuilder) Body(body *QueryLumpSumPaymentReqBody) *QueryLumpSumPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryLumpSumPaymentReqBuilder) Build() *QueryLumpSumPaymentReq {
	req := &QueryLumpSumPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryLumpSumPaymentReqBody struct {
	Ids []string `json:"ids,omitempty"` // id属于

	UniqueIds []string `json:"unique_ids,omitempty"` // unique_id属于

	UserIds []string `json:"user_ids,omitempty"` // 员工id属于

	ItemIds []string `json:"item_ids,omitempty"` // 薪酬项id属于

	CreateTimeGte *string `json:"create_time_gte,omitempty"` // 创建时间大于等于（东八区）

	CreateTimeLte *string `json:"create_time_lte,omitempty"` // 创建时间小于等于（东八区）

	ModifyTimeGte *string `json:"modify_time_gte,omitempty"` // 更新时间大于等于（东八区）

	ModifyTimeLte *string `json:"modify_time_lte,omitempty"` // 更新时间小于等于（东八区）

	CompanyIds []string `json:"company_ids,omitempty"` // 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）

	ServiceCompanyIds []string `json:"service_company_ids,omitempty"` // 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）

	DepartmentIds []string `json:"department_ids,omitempty"` // 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）

	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）

	WorkLocationIds []string `json:"work_location_ids,omitempty"` // 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）

	EmployeeTypeIds []string `json:"employee_type_ids,omitempty"` // 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）

	OnboardDateGte *string `json:"onboard_date_gte,omitempty"` // 入职日期大于等于

	OnboardDateLte *string `json:"onboard_date_lte,omitempty"` // 入职日期小于等于

	OffboardDateGte *string `json:"offboard_date_gte,omitempty"` // 离职日期大于等于

	OffboardDateLte *string `json:"offboard_date_lte,omitempty"` // 离职日期小于等于
}

type QueryLumpSumPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryLumpSumPaymentReqBody `body:""`
	Limit  int                         // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type QueryLumpSumPaymentRespData struct {
	PageToken *string `json:"page_token,omitempty"` // 搜索下一批时提供的page token

	HasMore *bool `json:"has_more,omitempty"` // 是否有更多的数据

	Records []*LumpSumPayment `json:"records,omitempty"` // 一次性支付记录列表
}

type QueryLumpSumPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryLumpSumPaymentRespData `json:"data"` // 业务数据
}

func (resp *QueryLumpSumPaymentResp) Success() bool {
	return resp.Code == 0
}

type QueryDetailLumpSumPaymentReqBodyBuilder struct {
	ids     []string // id属于
	idsFlag bool

	recordIds     []string // 一次性支付记录id
	recordIdsFlag bool

	recordUniqueIds     []string // 一次性支付记录unique id
	recordUniqueIdsFlag bool

	issuanceWays     []string // 发放方式
	issuanceWaysFlag bool

	issuanceStatuses     []string // 发放状态
	issuanceStatusesFlag bool

	userIds     []string // 员工id属于
	userIdsFlag bool

	itemIds     []string // 薪酬项id属于
	itemIdsFlag bool

	issuanceDateGte     string // 发放时间大于等于
	issuanceDateGteFlag bool

	issuanceDateLte     string // 发放时间小于等于
	issuanceDateLteFlag bool

	createTimeGte     string // 创建时间大于等于（东八区）
	createTimeGteFlag bool

	createTimeLte     string // 创建时间小于等于（东八区）
	createTimeLteFlag bool

	modifyTimeGte     string // 更新时间大于等于（东八区）
	modifyTimeGteFlag bool

	modifyTimeLte     string // 更新时间小于等于（东八区）
	modifyTimeLteFlag bool

	companyIds     []string // 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
	companyIdsFlag bool

	serviceCompanyIds     []string // 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
	serviceCompanyIdsFlag bool

	departmentIds     []string // 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
	departmentIdsFlag bool

	jobFamilyIds     []string // 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
	jobFamilyIdsFlag bool

	jobLevelIds     []string // 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
	jobLevelIdsFlag bool

	workLocationIds     []string // 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
	workLocationIdsFlag bool

	employeeTypeIds     []string // 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
	employeeTypeIdsFlag bool

	onboardDateGte     string // 入职日期大于等于
	onboardDateGteFlag bool

	onboardDateLte     string // 入职日期小于等于
	onboardDateLteFlag bool

	offboardDateGte     string // 离职日期大于等于
	offboardDateGteFlag bool

	offboardDateLte     string // 离职日期小于等于
	offboardDateLteFlag bool
}

func NewQueryDetailLumpSumPaymentReqBodyBuilder() *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder := &QueryDetailLumpSumPaymentReqBodyBuilder{}
	return builder
}

// id属于
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) Ids(ids []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// 一次性支付记录id
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) RecordIds(recordIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.recordIds = recordIds
	builder.recordIdsFlag = true
	return builder
}

// 一次性支付记录unique id
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) RecordUniqueIds(recordUniqueIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.recordUniqueIds = recordUniqueIds
	builder.recordUniqueIdsFlag = true
	return builder
}

// 发放方式
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) IssuanceWays(issuanceWays []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.issuanceWays = issuanceWays
	builder.issuanceWaysFlag = true
	return builder
}

// 发放状态
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) IssuanceStatuses(issuanceStatuses []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.issuanceStatuses = issuanceStatuses
	builder.issuanceStatusesFlag = true
	return builder
}

// 员工id属于
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) UserIds(userIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 薪酬项id属于
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) ItemIds(itemIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.itemIds = itemIds
	builder.itemIdsFlag = true
	return builder
}

// 发放时间大于等于
//
//示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) IssuanceDateGte(issuanceDateGte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.issuanceDateGte = issuanceDateGte
	builder.issuanceDateGteFlag = true
	return builder
}

// 发放时间小于等于
//
//示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) IssuanceDateLte(issuanceDateLte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.issuanceDateLte = issuanceDateLte
	builder.issuanceDateLteFlag = true
	return builder
}

// 创建时间大于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) CreateTimeGte(createTimeGte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.createTimeGte = createTimeGte
	builder.createTimeGteFlag = true
	return builder
}

// 创建时间小于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) CreateTimeLte(createTimeLte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.createTimeLte = createTimeLte
	builder.createTimeLteFlag = true
	return builder
}

// 更新时间大于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) ModifyTimeGte(modifyTimeGte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.modifyTimeGte = modifyTimeGte
	builder.modifyTimeGteFlag = true
	return builder
}

// 更新时间小于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) ModifyTimeLte(modifyTimeLte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.modifyTimeLte = modifyTimeLte
	builder.modifyTimeLteFlag = true
	return builder
}

// 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) CompanyIds(companyIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

// 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) ServiceCompanyIds(serviceCompanyIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.serviceCompanyIds = serviceCompanyIds
	builder.serviceCompanyIdsFlag = true
	return builder
}

// 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) JobLevelIds(jobLevelIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) WorkLocationIds(workLocationIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
//
//示例值：
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 入职日期大于等于
//
//示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) OnboardDateGte(onboardDateGte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.onboardDateGte = onboardDateGte
	builder.onboardDateGteFlag = true
	return builder
}

// 入职日期小于等于
//
//示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) OnboardDateLte(onboardDateLte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.onboardDateLte = onboardDateLte
	builder.onboardDateLteFlag = true
	return builder
}

// 离职日期大于等于
//
//示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) OffboardDateGte(offboardDateGte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.offboardDateGte = offboardDateGte
	builder.offboardDateGteFlag = true
	return builder
}

// 离职日期小于等于
//
//示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) OffboardDateLte(offboardDateLte string) *QueryDetailLumpSumPaymentReqBodyBuilder {
	builder.offboardDateLte = offboardDateLte
	builder.offboardDateLteFlag = true
	return builder
}

func (builder *QueryDetailLumpSumPaymentReqBodyBuilder) Build() *QueryDetailLumpSumPaymentReqBody {
	req := &QueryDetailLumpSumPaymentReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.recordIdsFlag {
		req.RecordIds = builder.recordIds
	}
	if builder.recordUniqueIdsFlag {
		req.RecordUniqueIds = builder.recordUniqueIds
	}
	if builder.issuanceWaysFlag {
		req.IssuanceWays = builder.issuanceWays
	}
	if builder.issuanceStatusesFlag {
		req.IssuanceStatuses = builder.issuanceStatuses
	}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.itemIdsFlag {
		req.ItemIds = builder.itemIds
	}
	if builder.issuanceDateGteFlag {
		req.IssuanceDateGte = &builder.issuanceDateGte
	}
	if builder.issuanceDateLteFlag {
		req.IssuanceDateLte = &builder.issuanceDateLte
	}
	if builder.createTimeGteFlag {
		req.CreateTimeGte = &builder.createTimeGte
	}
	if builder.createTimeLteFlag {
		req.CreateTimeLte = &builder.createTimeLte
	}
	if builder.modifyTimeGteFlag {
		req.ModifyTimeGte = &builder.modifyTimeGte
	}
	if builder.modifyTimeLteFlag {
		req.ModifyTimeLte = &builder.modifyTimeLte
	}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	if builder.serviceCompanyIdsFlag {
		req.ServiceCompanyIds = builder.serviceCompanyIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.onboardDateGteFlag {
		req.OnboardDateGte = &builder.onboardDateGte
	}
	if builder.onboardDateLteFlag {
		req.OnboardDateLte = &builder.onboardDateLte
	}
	if builder.offboardDateGteFlag {
		req.OffboardDateGte = &builder.offboardDateGte
	}
	if builder.offboardDateLteFlag {
		req.OffboardDateLte = &builder.offboardDateLte
	}
	return req
}

type QueryDetailLumpSumPaymentPathReqBodyBuilder struct {
	ids                   []string
	idsFlag               bool
	recordIds             []string
	recordIdsFlag         bool
	recordUniqueIds       []string
	recordUniqueIdsFlag   bool
	issuanceWays          []string
	issuanceWaysFlag      bool
	issuanceStatuses      []string
	issuanceStatusesFlag  bool
	userIds               []string
	userIdsFlag           bool
	itemIds               []string
	itemIdsFlag           bool
	issuanceDateGte       string
	issuanceDateGteFlag   bool
	issuanceDateLte       string
	issuanceDateLteFlag   bool
	createTimeGte         string
	createTimeGteFlag     bool
	createTimeLte         string
	createTimeLteFlag     bool
	modifyTimeGte         string
	modifyTimeGteFlag     bool
	modifyTimeLte         string
	modifyTimeLteFlag     bool
	companyIds            []string
	companyIdsFlag        bool
	serviceCompanyIds     []string
	serviceCompanyIdsFlag bool
	departmentIds         []string
	departmentIdsFlag     bool
	jobFamilyIds          []string
	jobFamilyIdsFlag      bool
	jobLevelIds           []string
	jobLevelIdsFlag       bool
	workLocationIds       []string
	workLocationIdsFlag   bool
	employeeTypeIds       []string
	employeeTypeIdsFlag   bool
	onboardDateGte        string
	onboardDateGteFlag    bool
	onboardDateLte        string
	onboardDateLteFlag    bool
	offboardDateGte       string
	offboardDateGteFlag   bool
	offboardDateLte       string
	offboardDateLteFlag   bool
}

func NewQueryDetailLumpSumPaymentPathReqBodyBuilder() *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder := &QueryDetailLumpSumPaymentPathReqBodyBuilder{}
	return builder
}

// id属于
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) Ids(ids []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// 一次性支付记录id
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) RecordIds(recordIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.recordIds = recordIds
	builder.recordIdsFlag = true
	return builder
}

// 一次性支付记录unique id
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) RecordUniqueIds(recordUniqueIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.recordUniqueIds = recordUniqueIds
	builder.recordUniqueIdsFlag = true
	return builder
}

// 发放方式
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) IssuanceWays(issuanceWays []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.issuanceWays = issuanceWays
	builder.issuanceWaysFlag = true
	return builder
}

// 发放状态
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) IssuanceStatuses(issuanceStatuses []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.issuanceStatuses = issuanceStatuses
	builder.issuanceStatusesFlag = true
	return builder
}

// 员工id属于
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) UserIds(userIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 薪酬项id属于
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) ItemIds(itemIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.itemIds = itemIds
	builder.itemIdsFlag = true
	return builder
}

// 发放时间大于等于
//
// 示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) IssuanceDateGte(issuanceDateGte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.issuanceDateGte = issuanceDateGte
	builder.issuanceDateGteFlag = true
	return builder
}

// 发放时间小于等于
//
// 示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) IssuanceDateLte(issuanceDateLte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.issuanceDateLte = issuanceDateLte
	builder.issuanceDateLteFlag = true
	return builder
}

// 创建时间大于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) CreateTimeGte(createTimeGte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.createTimeGte = createTimeGte
	builder.createTimeGteFlag = true
	return builder
}

// 创建时间小于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) CreateTimeLte(createTimeLte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.createTimeLte = createTimeLte
	builder.createTimeLteFlag = true
	return builder
}

// 更新时间大于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) ModifyTimeGte(modifyTimeGte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.modifyTimeGte = modifyTimeGte
	builder.modifyTimeGteFlag = true
	return builder
}

// 更新时间小于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) ModifyTimeLte(modifyTimeLte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.modifyTimeLte = modifyTimeLte
	builder.modifyTimeLteFlag = true
	return builder
}

// 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) CompanyIds(companyIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

// 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) ServiceCompanyIds(serviceCompanyIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.serviceCompanyIds = serviceCompanyIds
	builder.serviceCompanyIdsFlag = true
	return builder
}

// 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) JobLevelIds(jobLevelIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) WorkLocationIds(workLocationIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 入职日期大于等于
//
// 示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) OnboardDateGte(onboardDateGte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.onboardDateGte = onboardDateGte
	builder.onboardDateGteFlag = true
	return builder
}

// 入职日期小于等于
//
// 示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) OnboardDateLte(onboardDateLte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.onboardDateLte = onboardDateLte
	builder.onboardDateLteFlag = true
	return builder
}

// 离职日期大于等于
//
// 示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) OffboardDateGte(offboardDateGte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.offboardDateGte = offboardDateGte
	builder.offboardDateGteFlag = true
	return builder
}

// 离职日期小于等于
//
// 示例值：2023-04-01
func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) OffboardDateLte(offboardDateLte string) *QueryDetailLumpSumPaymentPathReqBodyBuilder {
	builder.offboardDateLte = offboardDateLte
	builder.offboardDateLteFlag = true
	return builder
}

func (builder *QueryDetailLumpSumPaymentPathReqBodyBuilder) Build() (*QueryDetailLumpSumPaymentReqBody, error) {
	req := &QueryDetailLumpSumPaymentReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.recordIdsFlag {
		req.RecordIds = builder.recordIds
	}
	if builder.recordUniqueIdsFlag {
		req.RecordUniqueIds = builder.recordUniqueIds
	}
	if builder.issuanceWaysFlag {
		req.IssuanceWays = builder.issuanceWays
	}
	if builder.issuanceStatusesFlag {
		req.IssuanceStatuses = builder.issuanceStatuses
	}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.itemIdsFlag {
		req.ItemIds = builder.itemIds
	}
	if builder.issuanceDateGteFlag {
		req.IssuanceDateGte = &builder.issuanceDateGte
	}
	if builder.issuanceDateLteFlag {
		req.IssuanceDateLte = &builder.issuanceDateLte
	}
	if builder.createTimeGteFlag {
		req.CreateTimeGte = &builder.createTimeGte
	}
	if builder.createTimeLteFlag {
		req.CreateTimeLte = &builder.createTimeLte
	}
	if builder.modifyTimeGteFlag {
		req.ModifyTimeGte = &builder.modifyTimeGte
	}
	if builder.modifyTimeLteFlag {
		req.ModifyTimeLte = &builder.modifyTimeLte
	}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	if builder.serviceCompanyIdsFlag {
		req.ServiceCompanyIds = builder.serviceCompanyIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.onboardDateGteFlag {
		req.OnboardDateGte = &builder.onboardDateGte
	}
	if builder.onboardDateLteFlag {
		req.OnboardDateLte = &builder.onboardDateLte
	}
	if builder.offboardDateGteFlag {
		req.OffboardDateGte = &builder.offboardDateGte
	}
	if builder.offboardDateLteFlag {
		req.OffboardDateLte = &builder.offboardDateLte
	}
	return req, nil
}

type QueryDetailLumpSumPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryDetailLumpSumPaymentReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewQueryDetailLumpSumPaymentReqBuilder() *QueryDetailLumpSumPaymentReqBuilder {
	builder := &QueryDetailLumpSumPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *QueryDetailLumpSumPaymentReqBuilder) Limit(limit int) *QueryDetailLumpSumPaymentReqBuilder {
	builder.limit = limit
	return builder
}

//
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentReqBuilder) PageSize(pageSize int) *QueryDetailLumpSumPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

//
//
// 示例值：
func (builder *QueryDetailLumpSumPaymentReqBuilder) PageToken(pageToken string) *QueryDetailLumpSumPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户ID类型
//
// 示例值：open_id
func (builder *QueryDetailLumpSumPaymentReqBuilder) UserIdType(userIdType string) *QueryDetailLumpSumPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *QueryDetailLumpSumPaymentReqBuilder) Body(body *QueryDetailLumpSumPaymentReqBody) *QueryDetailLumpSumPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryDetailLumpSumPaymentReqBuilder) Build() *QueryDetailLumpSumPaymentReq {
	req := &QueryDetailLumpSumPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryDetailLumpSumPaymentReqBody struct {
	Ids []string `json:"ids,omitempty"` // id属于

	RecordIds []string `json:"record_ids,omitempty"` // 一次性支付记录id

	RecordUniqueIds []string `json:"record_unique_ids,omitempty"` // 一次性支付记录unique id

	IssuanceWays []string `json:"issuance_ways,omitempty"` // 发放方式

	IssuanceStatuses []string `json:"issuance_statuses,omitempty"` // 发放状态

	UserIds []string `json:"user_ids,omitempty"` // 员工id属于

	ItemIds []string `json:"item_ids,omitempty"` // 薪酬项id属于

	IssuanceDateGte *string `json:"issuance_date_gte,omitempty"` // 发放时间大于等于

	IssuanceDateLte *string `json:"issuance_date_lte,omitempty"` // 发放时间小于等于

	CreateTimeGte *string `json:"create_time_gte,omitempty"` // 创建时间大于等于（东八区）

	CreateTimeLte *string `json:"create_time_lte,omitempty"` // 创建时间小于等于（东八区）

	ModifyTimeGte *string `json:"modify_time_gte,omitempty"` // 更新时间大于等于（东八区）

	ModifyTimeLte *string `json:"modify_time_lte,omitempty"` // 更新时间小于等于（东八区）

	CompanyIds []string `json:"company_ids,omitempty"` // 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）

	ServiceCompanyIds []string `json:"service_company_ids,omitempty"` // 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）

	DepartmentIds []string `json:"department_ids,omitempty"` // 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）

	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）

	WorkLocationIds []string `json:"work_location_ids,omitempty"` // 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）

	EmployeeTypeIds []string `json:"employee_type_ids,omitempty"` // 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）

	OnboardDateGte *string `json:"onboard_date_gte,omitempty"` // 入职日期大于等于

	OnboardDateLte *string `json:"onboard_date_lte,omitempty"` // 入职日期小于等于

	OffboardDateGte *string `json:"offboard_date_gte,omitempty"` // 离职日期大于等于

	OffboardDateLte *string `json:"offboard_date_lte,omitempty"` // 离职日期小于等于
}

type QueryDetailLumpSumPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryDetailLumpSumPaymentReqBody `body:""`
	Limit  int                               // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type QueryDetailLumpSumPaymentRespData struct {
	PageToken *string `json:"page_token,omitempty"` // 搜索下一批时提供的page token

	HasMore *bool `json:"has_more,omitempty"` // 是否有更多的数据

	Records []*LumpSumPaymentDetail `json:"records,omitempty"` // 一次性支付授予明细列表
}

type QueryDetailLumpSumPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryDetailLumpSumPaymentRespData `json:"data"` // 业务数据
}

func (resp *QueryDetailLumpSumPaymentResp) Success() bool {
	return resp.Code == 0
}

type ListPlanReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListPlanReqBuilder() *ListPlanReqBuilder {
	builder := &ListPlanReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListPlanReqBuilder) Limit(limit int) *ListPlanReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：100
func (builder *ListPlanReqBuilder) PageSize(pageSize int) *ListPlanReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：213432123
func (builder *ListPlanReqBuilder) PageToken(pageToken string) *ListPlanReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

func (builder *ListPlanReqBuilder) Build() *ListPlanReq {
	req := &ListPlanReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListPlanReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListPlanRespData struct {
	Items []*PlanDetail `json:"items,omitempty"` // 薪资方案信息列表

	PageToken *string `json:"page_token,omitempty"` // 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

	HasMore *bool `json:"has_more,omitempty"` // 是否还有更多项
}

type ListPlanResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListPlanRespData `json:"data"` // 业务数据
}

func (resp *ListPlanResp) Success() bool {
	return resp.Code == 0
}

type BatchCreateRecurringPaymentReqBodyBuilder struct {
	records     []*RecurringPaymentForCreate // 要创建的经常性支付记录
	recordsFlag bool
}

func NewBatchCreateRecurringPaymentReqBodyBuilder() *BatchCreateRecurringPaymentReqBodyBuilder {
	builder := &BatchCreateRecurringPaymentReqBodyBuilder{}
	return builder
}

// 要创建的经常性支付记录
//
//示例值：
func (builder *BatchCreateRecurringPaymentReqBodyBuilder) Records(records []*RecurringPaymentForCreate) *BatchCreateRecurringPaymentReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchCreateRecurringPaymentReqBodyBuilder) Build() *BatchCreateRecurringPaymentReqBody {
	req := &BatchCreateRecurringPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req
}

type BatchCreateRecurringPaymentPathReqBodyBuilder struct {
	records     []*RecurringPaymentForCreate
	recordsFlag bool
}

func NewBatchCreateRecurringPaymentPathReqBodyBuilder() *BatchCreateRecurringPaymentPathReqBodyBuilder {
	builder := &BatchCreateRecurringPaymentPathReqBodyBuilder{}
	return builder
}

// 要创建的经常性支付记录
//
// 示例值：
func (builder *BatchCreateRecurringPaymentPathReqBodyBuilder) Records(records []*RecurringPaymentForCreate) *BatchCreateRecurringPaymentPathReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchCreateRecurringPaymentPathReqBodyBuilder) Build() (*BatchCreateRecurringPaymentReqBody, error) {
	req := &BatchCreateRecurringPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req, nil
}

type BatchCreateRecurringPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchCreateRecurringPaymentReqBody
}

func NewBatchCreateRecurringPaymentReqBuilder() *BatchCreateRecurringPaymentReqBuilder {
	builder := &BatchCreateRecurringPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户ID类型
//
// 示例值：
func (builder *BatchCreateRecurringPaymentReqBuilder) UserIdType(userIdType string) *BatchCreateRecurringPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 创建经常性支付记录
func (builder *BatchCreateRecurringPaymentReqBuilder) Body(body *BatchCreateRecurringPaymentReqBody) *BatchCreateRecurringPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchCreateRecurringPaymentReqBuilder) Build() *BatchCreateRecurringPaymentReq {
	req := &BatchCreateRecurringPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchCreateRecurringPaymentReqBody struct {
	Records []*RecurringPaymentForCreate `json:"records,omitempty"` // 要创建的经常性支付记录
}

type BatchCreateRecurringPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchCreateRecurringPaymentReqBody `body:""`
}

type BatchCreateRecurringPaymentRespData struct {
	OperateResults []*RecurringPaymentOperateResult `json:"operate_results,omitempty"` // 每条记录的操作结果。对于创建成功的记录，会返回创建后的经常性支付记录id
}

type BatchCreateRecurringPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchCreateRecurringPaymentRespData `json:"data"` // 业务数据
}

func (resp *BatchCreateRecurringPaymentResp) Success() bool {
	return resp.Code == 0
}

type BatchRemoveRecurringPaymentReqBodyBuilder struct {
	recordIds     []string // 需要删除的记录ID
	recordIdsFlag bool

	reason     string // 原因
	reasonFlag bool
}

func NewBatchRemoveRecurringPaymentReqBodyBuilder() *BatchRemoveRecurringPaymentReqBodyBuilder {
	builder := &BatchRemoveRecurringPaymentReqBodyBuilder{}
	return builder
}

// 需要删除的记录ID
//
//示例值：
func (builder *BatchRemoveRecurringPaymentReqBodyBuilder) RecordIds(recordIds []string) *BatchRemoveRecurringPaymentReqBodyBuilder {
	builder.recordIds = recordIds
	builder.recordIdsFlag = true
	return builder
}

// 原因
//
//示例值：这是个删除原因
func (builder *BatchRemoveRecurringPaymentReqBodyBuilder) Reason(reason string) *BatchRemoveRecurringPaymentReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *BatchRemoveRecurringPaymentReqBodyBuilder) Build() *BatchRemoveRecurringPaymentReqBody {
	req := &BatchRemoveRecurringPaymentReqBody{}
	if builder.recordIdsFlag {
		req.RecordIds = builder.recordIds
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason
	}
	return req
}

type BatchRemoveRecurringPaymentPathReqBodyBuilder struct {
	recordIds     []string
	recordIdsFlag bool
	reason        string
	reasonFlag    bool
}

func NewBatchRemoveRecurringPaymentPathReqBodyBuilder() *BatchRemoveRecurringPaymentPathReqBodyBuilder {
	builder := &BatchRemoveRecurringPaymentPathReqBodyBuilder{}
	return builder
}

// 需要删除的记录ID
//
// 示例值：
func (builder *BatchRemoveRecurringPaymentPathReqBodyBuilder) RecordIds(recordIds []string) *BatchRemoveRecurringPaymentPathReqBodyBuilder {
	builder.recordIds = recordIds
	builder.recordIdsFlag = true
	return builder
}

// 原因
//
// 示例值：这是个删除原因
func (builder *BatchRemoveRecurringPaymentPathReqBodyBuilder) Reason(reason string) *BatchRemoveRecurringPaymentPathReqBodyBuilder {
	builder.reason = reason
	builder.reasonFlag = true
	return builder
}

func (builder *BatchRemoveRecurringPaymentPathReqBodyBuilder) Build() (*BatchRemoveRecurringPaymentReqBody, error) {
	req := &BatchRemoveRecurringPaymentReqBody{}
	if builder.recordIdsFlag {
		req.RecordIds = builder.recordIds
	}
	if builder.reasonFlag {
		req.Reason = &builder.reason
	}
	return req, nil
}

type BatchRemoveRecurringPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchRemoveRecurringPaymentReqBody
}

func NewBatchRemoveRecurringPaymentReqBuilder() *BatchRemoveRecurringPaymentReqBuilder {
	builder := &BatchRemoveRecurringPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 删除经常性支付记录
func (builder *BatchRemoveRecurringPaymentReqBuilder) Body(body *BatchRemoveRecurringPaymentReqBody) *BatchRemoveRecurringPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchRemoveRecurringPaymentReqBuilder) Build() *BatchRemoveRecurringPaymentReq {
	req := &BatchRemoveRecurringPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type BatchRemoveRecurringPaymentReqBody struct {
	RecordIds []string `json:"record_ids,omitempty"` // 需要删除的记录ID

	Reason *string `json:"reason,omitempty"` // 原因
}

type BatchRemoveRecurringPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchRemoveRecurringPaymentReqBody `body:""`
}

type BatchRemoveRecurringPaymentRespData struct {
	OperateResults []*RecurringPaymentOperateResult `json:"operate_results,omitempty"` // 每条记录的操作结果
}

type BatchRemoveRecurringPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchRemoveRecurringPaymentRespData `json:"data"` // 业务数据
}

func (resp *BatchRemoveRecurringPaymentResp) Success() bool {
	return resp.Code == 0
}

type BatchUpdateRecurringPaymentReqBodyBuilder struct {
	records     []*RecurringPaymentForUpdate // 需更正的经常性支付记录
	recordsFlag bool
}

func NewBatchUpdateRecurringPaymentReqBodyBuilder() *BatchUpdateRecurringPaymentReqBodyBuilder {
	builder := &BatchUpdateRecurringPaymentReqBodyBuilder{}
	return builder
}

// 需更正的经常性支付记录
//
//示例值：
func (builder *BatchUpdateRecurringPaymentReqBodyBuilder) Records(records []*RecurringPaymentForUpdate) *BatchUpdateRecurringPaymentReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchUpdateRecurringPaymentReqBodyBuilder) Build() *BatchUpdateRecurringPaymentReqBody {
	req := &BatchUpdateRecurringPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req
}

type BatchUpdateRecurringPaymentPathReqBodyBuilder struct {
	records     []*RecurringPaymentForUpdate
	recordsFlag bool
}

func NewBatchUpdateRecurringPaymentPathReqBodyBuilder() *BatchUpdateRecurringPaymentPathReqBodyBuilder {
	builder := &BatchUpdateRecurringPaymentPathReqBodyBuilder{}
	return builder
}

// 需更正的经常性支付记录
//
// 示例值：
func (builder *BatchUpdateRecurringPaymentPathReqBodyBuilder) Records(records []*RecurringPaymentForUpdate) *BatchUpdateRecurringPaymentPathReqBodyBuilder {
	builder.records = records
	builder.recordsFlag = true
	return builder
}

func (builder *BatchUpdateRecurringPaymentPathReqBodyBuilder) Build() (*BatchUpdateRecurringPaymentReqBody, error) {
	req := &BatchUpdateRecurringPaymentReqBody{}
	if builder.recordsFlag {
		req.Records = builder.records
	}
	return req, nil
}

type BatchUpdateRecurringPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *BatchUpdateRecurringPaymentReqBody
}

func NewBatchUpdateRecurringPaymentReqBuilder() *BatchUpdateRecurringPaymentReqBuilder {
	builder := &BatchUpdateRecurringPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户ID类型
//
// 示例值：
func (builder *BatchUpdateRecurringPaymentReqBuilder) UserIdType(userIdType string) *BatchUpdateRecurringPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 更新经常性支付记录
func (builder *BatchUpdateRecurringPaymentReqBuilder) Body(body *BatchUpdateRecurringPaymentReqBody) *BatchUpdateRecurringPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *BatchUpdateRecurringPaymentReqBuilder) Build() *BatchUpdateRecurringPaymentReq {
	req := &BatchUpdateRecurringPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type BatchUpdateRecurringPaymentReqBody struct {
	Records []*RecurringPaymentForUpdate `json:"records,omitempty"` // 需更正的经常性支付记录
}

type BatchUpdateRecurringPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *BatchUpdateRecurringPaymentReqBody `body:""`
}

type BatchUpdateRecurringPaymentRespData struct {
	OperateResults []*RecurringPaymentOperateResult `json:"operate_results,omitempty"` // 每条记录的操作结果
}

type BatchUpdateRecurringPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *BatchUpdateRecurringPaymentRespData `json:"data"` // 业务数据
}

func (resp *BatchUpdateRecurringPaymentResp) Success() bool {
	return resp.Code == 0
}

type QueryRecurringPaymentReqBodyBuilder struct {
	ids     []string // id属于
	idsFlag bool

	uniqueIds     []string // unique_id属于
	uniqueIdsFlag bool

	userIds     []string // 员工id属于
	userIdsFlag bool

	itemIds     []string // 薪酬项id属于
	itemIdsFlag bool

	startDateGte     string // 发放开始日期大于等于
	startDateGteFlag bool

	startDateLte     string // 发放开始日期小于等于
	startDateLteFlag bool

	endDateGte     string // 发放结束日期大于等于
	endDateGteFlag bool

	endDateLte     string // 发放结束日期小于等于
	endDateLteFlag bool

	createTimeGte     string // 创建时间大于等于（东八区）
	createTimeGteFlag bool

	createTimeLte     string // 创建时间小于等于（东八区）
	createTimeLteFlag bool

	modifyTimeGte     string // 更新时间大于等于（东八区）
	modifyTimeGteFlag bool

	modifyTimeLte     string // 更新时间小于等于（东八区）
	modifyTimeLteFlag bool

	companyIds     []string // 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
	companyIdsFlag bool

	serviceCompanyIds     []string // 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
	serviceCompanyIdsFlag bool

	departmentIds     []string // 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
	departmentIdsFlag bool

	jobFamilyIds     []string // 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
	jobFamilyIdsFlag bool

	jobLevelIds     []string // 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
	jobLevelIdsFlag bool

	workLocationIds     []string // 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
	workLocationIdsFlag bool

	employeeTypeIds     []string // 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
	employeeTypeIdsFlag bool

	onboardDateGte     string // 入职日期大于等于
	onboardDateGteFlag bool

	onboardDateLte     string // 入职日期小于等于
	onboardDateLteFlag bool

	offboardDateGte     string // 离职日期大于等于
	offboardDateGteFlag bool

	offboardDateLte     string // 离职日期小于等于
	offboardDateLteFlag bool
}

func NewQueryRecurringPaymentReqBodyBuilder() *QueryRecurringPaymentReqBodyBuilder {
	builder := &QueryRecurringPaymentReqBodyBuilder{}
	return builder
}

// id属于
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) Ids(ids []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// unique_id属于
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) UniqueIds(uniqueIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.uniqueIds = uniqueIds
	builder.uniqueIdsFlag = true
	return builder
}

// 员工id属于
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) UserIds(userIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 薪酬项id属于
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) ItemIds(itemIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.itemIds = itemIds
	builder.itemIdsFlag = true
	return builder
}

// 发放开始日期大于等于
//
//示例值：2023-04-01
func (builder *QueryRecurringPaymentReqBodyBuilder) StartDateGte(startDateGte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.startDateGte = startDateGte
	builder.startDateGteFlag = true
	return builder
}

// 发放开始日期小于等于
//
//示例值：2023-04-01
func (builder *QueryRecurringPaymentReqBodyBuilder) StartDateLte(startDateLte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.startDateLte = startDateLte
	builder.startDateLteFlag = true
	return builder
}

// 发放结束日期大于等于
//
//示例值：2025-04-01
func (builder *QueryRecurringPaymentReqBodyBuilder) EndDateGte(endDateGte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.endDateGte = endDateGte
	builder.endDateGteFlag = true
	return builder
}

// 发放结束日期小于等于
//
//示例值：2025-08-01
func (builder *QueryRecurringPaymentReqBodyBuilder) EndDateLte(endDateLte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.endDateLte = endDateLte
	builder.endDateLteFlag = true
	return builder
}

// 创建时间大于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentReqBodyBuilder) CreateTimeGte(createTimeGte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.createTimeGte = createTimeGte
	builder.createTimeGteFlag = true
	return builder
}

// 创建时间小于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentReqBodyBuilder) CreateTimeLte(createTimeLte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.createTimeLte = createTimeLte
	builder.createTimeLteFlag = true
	return builder
}

// 更新时间大于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentReqBodyBuilder) ModifyTimeGte(modifyTimeGte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.modifyTimeGte = modifyTimeGte
	builder.modifyTimeGteFlag = true
	return builder
}

// 更新时间小于等于（东八区）
//
//示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentReqBodyBuilder) ModifyTimeLte(modifyTimeLte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.modifyTimeLte = modifyTimeLte
	builder.modifyTimeLteFlag = true
	return builder
}

// 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) CompanyIds(companyIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

// 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) ServiceCompanyIds(serviceCompanyIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.serviceCompanyIds = serviceCompanyIds
	builder.serviceCompanyIdsFlag = true
	return builder
}

// 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) JobLevelIds(jobLevelIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) WorkLocationIds(workLocationIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
//
//示例值：
func (builder *QueryRecurringPaymentReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *QueryRecurringPaymentReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 入职日期大于等于
//
//示例值：2023-04-01
func (builder *QueryRecurringPaymentReqBodyBuilder) OnboardDateGte(onboardDateGte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.onboardDateGte = onboardDateGte
	builder.onboardDateGteFlag = true
	return builder
}

// 入职日期小于等于
//
//示例值：2023-04-01
func (builder *QueryRecurringPaymentReqBodyBuilder) OnboardDateLte(onboardDateLte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.onboardDateLte = onboardDateLte
	builder.onboardDateLteFlag = true
	return builder
}

// 离职日期大于等于
//
//示例值：2023-04-01
func (builder *QueryRecurringPaymentReqBodyBuilder) OffboardDateGte(offboardDateGte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.offboardDateGte = offboardDateGte
	builder.offboardDateGteFlag = true
	return builder
}

// 离职日期小于等于
//
//示例值：2023-04-01
func (builder *QueryRecurringPaymentReqBodyBuilder) OffboardDateLte(offboardDateLte string) *QueryRecurringPaymentReqBodyBuilder {
	builder.offboardDateLte = offboardDateLte
	builder.offboardDateLteFlag = true
	return builder
}

func (builder *QueryRecurringPaymentReqBodyBuilder) Build() *QueryRecurringPaymentReqBody {
	req := &QueryRecurringPaymentReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.uniqueIdsFlag {
		req.UniqueIds = builder.uniqueIds
	}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.itemIdsFlag {
		req.ItemIds = builder.itemIds
	}
	if builder.startDateGteFlag {
		req.StartDateGte = &builder.startDateGte
	}
	if builder.startDateLteFlag {
		req.StartDateLte = &builder.startDateLte
	}
	if builder.endDateGteFlag {
		req.EndDateGte = &builder.endDateGte
	}
	if builder.endDateLteFlag {
		req.EndDateLte = &builder.endDateLte
	}
	if builder.createTimeGteFlag {
		req.CreateTimeGte = &builder.createTimeGte
	}
	if builder.createTimeLteFlag {
		req.CreateTimeLte = &builder.createTimeLte
	}
	if builder.modifyTimeGteFlag {
		req.ModifyTimeGte = &builder.modifyTimeGte
	}
	if builder.modifyTimeLteFlag {
		req.ModifyTimeLte = &builder.modifyTimeLte
	}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	if builder.serviceCompanyIdsFlag {
		req.ServiceCompanyIds = builder.serviceCompanyIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.onboardDateGteFlag {
		req.OnboardDateGte = &builder.onboardDateGte
	}
	if builder.onboardDateLteFlag {
		req.OnboardDateLte = &builder.onboardDateLte
	}
	if builder.offboardDateGteFlag {
		req.OffboardDateGte = &builder.offboardDateGte
	}
	if builder.offboardDateLteFlag {
		req.OffboardDateLte = &builder.offboardDateLte
	}
	return req
}

type QueryRecurringPaymentPathReqBodyBuilder struct {
	ids                   []string
	idsFlag               bool
	uniqueIds             []string
	uniqueIdsFlag         bool
	userIds               []string
	userIdsFlag           bool
	itemIds               []string
	itemIdsFlag           bool
	startDateGte          string
	startDateGteFlag      bool
	startDateLte          string
	startDateLteFlag      bool
	endDateGte            string
	endDateGteFlag        bool
	endDateLte            string
	endDateLteFlag        bool
	createTimeGte         string
	createTimeGteFlag     bool
	createTimeLte         string
	createTimeLteFlag     bool
	modifyTimeGte         string
	modifyTimeGteFlag     bool
	modifyTimeLte         string
	modifyTimeLteFlag     bool
	companyIds            []string
	companyIdsFlag        bool
	serviceCompanyIds     []string
	serviceCompanyIdsFlag bool
	departmentIds         []string
	departmentIdsFlag     bool
	jobFamilyIds          []string
	jobFamilyIdsFlag      bool
	jobLevelIds           []string
	jobLevelIdsFlag       bool
	workLocationIds       []string
	workLocationIdsFlag   bool
	employeeTypeIds       []string
	employeeTypeIdsFlag   bool
	onboardDateGte        string
	onboardDateGteFlag    bool
	onboardDateLte        string
	onboardDateLteFlag    bool
	offboardDateGte       string
	offboardDateGteFlag   bool
	offboardDateLte       string
	offboardDateLteFlag   bool
}

func NewQueryRecurringPaymentPathReqBodyBuilder() *QueryRecurringPaymentPathReqBodyBuilder {
	builder := &QueryRecurringPaymentPathReqBodyBuilder{}
	return builder
}

// id属于
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) Ids(ids []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.ids = ids
	builder.idsFlag = true
	return builder
}

// unique_id属于
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) UniqueIds(uniqueIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.uniqueIds = uniqueIds
	builder.uniqueIdsFlag = true
	return builder
}

// 员工id属于
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) UserIds(userIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 薪酬项id属于
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) ItemIds(itemIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.itemIds = itemIds
	builder.itemIdsFlag = true
	return builder
}

// 发放开始日期大于等于
//
// 示例值：2023-04-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) StartDateGte(startDateGte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.startDateGte = startDateGte
	builder.startDateGteFlag = true
	return builder
}

// 发放开始日期小于等于
//
// 示例值：2023-04-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) StartDateLte(startDateLte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.startDateLte = startDateLte
	builder.startDateLteFlag = true
	return builder
}

// 发放结束日期大于等于
//
// 示例值：2025-04-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) EndDateGte(endDateGte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.endDateGte = endDateGte
	builder.endDateGteFlag = true
	return builder
}

// 发放结束日期小于等于
//
// 示例值：2025-08-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) EndDateLte(endDateLte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.endDateLte = endDateLte
	builder.endDateLteFlag = true
	return builder
}

// 创建时间大于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentPathReqBodyBuilder) CreateTimeGte(createTimeGte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.createTimeGte = createTimeGte
	builder.createTimeGteFlag = true
	return builder
}

// 创建时间小于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentPathReqBodyBuilder) CreateTimeLte(createTimeLte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.createTimeLte = createTimeLte
	builder.createTimeLteFlag = true
	return builder
}

// 更新时间大于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentPathReqBodyBuilder) ModifyTimeGte(modifyTimeGte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.modifyTimeGte = modifyTimeGte
	builder.modifyTimeGteFlag = true
	return builder
}

// 更新时间小于等于（东八区）
//
// 示例值：2023-04-01 12:34:56
func (builder *QueryRecurringPaymentPathReqBodyBuilder) ModifyTimeLte(modifyTimeLte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.modifyTimeLte = modifyTimeLte
	builder.modifyTimeLteFlag = true
	return builder
}

// 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) CompanyIds(companyIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.companyIds = companyIds
	builder.companyIdsFlag = true
	return builder
}

// 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) ServiceCompanyIds(serviceCompanyIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.serviceCompanyIds = serviceCompanyIds
	builder.serviceCompanyIdsFlag = true
	return builder
}

// 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) DepartmentIds(departmentIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.departmentIds = departmentIds
	builder.departmentIdsFlag = true
	return builder
}

// 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) JobFamilyIds(jobFamilyIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.jobFamilyIds = jobFamilyIds
	builder.jobFamilyIdsFlag = true
	return builder
}

// 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) JobLevelIds(jobLevelIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.jobLevelIds = jobLevelIds
	builder.jobLevelIdsFlag = true
	return builder
}

// 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) WorkLocationIds(workLocationIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.workLocationIds = workLocationIds
	builder.workLocationIdsFlag = true
	return builder
}

// 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）
//
// 示例值：
func (builder *QueryRecurringPaymentPathReqBodyBuilder) EmployeeTypeIds(employeeTypeIds []string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.employeeTypeIds = employeeTypeIds
	builder.employeeTypeIdsFlag = true
	return builder
}

// 入职日期大于等于
//
// 示例值：2023-04-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) OnboardDateGte(onboardDateGte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.onboardDateGte = onboardDateGte
	builder.onboardDateGteFlag = true
	return builder
}

// 入职日期小于等于
//
// 示例值：2023-04-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) OnboardDateLte(onboardDateLte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.onboardDateLte = onboardDateLte
	builder.onboardDateLteFlag = true
	return builder
}

// 离职日期大于等于
//
// 示例值：2023-04-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) OffboardDateGte(offboardDateGte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.offboardDateGte = offboardDateGte
	builder.offboardDateGteFlag = true
	return builder
}

// 离职日期小于等于
//
// 示例值：2023-04-01
func (builder *QueryRecurringPaymentPathReqBodyBuilder) OffboardDateLte(offboardDateLte string) *QueryRecurringPaymentPathReqBodyBuilder {
	builder.offboardDateLte = offboardDateLte
	builder.offboardDateLteFlag = true
	return builder
}

func (builder *QueryRecurringPaymentPathReqBodyBuilder) Build() (*QueryRecurringPaymentReqBody, error) {
	req := &QueryRecurringPaymentReqBody{}
	if builder.idsFlag {
		req.Ids = builder.ids
	}
	if builder.uniqueIdsFlag {
		req.UniqueIds = builder.uniqueIds
	}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.itemIdsFlag {
		req.ItemIds = builder.itemIds
	}
	if builder.startDateGteFlag {
		req.StartDateGte = &builder.startDateGte
	}
	if builder.startDateLteFlag {
		req.StartDateLte = &builder.startDateLte
	}
	if builder.endDateGteFlag {
		req.EndDateGte = &builder.endDateGte
	}
	if builder.endDateLteFlag {
		req.EndDateLte = &builder.endDateLte
	}
	if builder.createTimeGteFlag {
		req.CreateTimeGte = &builder.createTimeGte
	}
	if builder.createTimeLteFlag {
		req.CreateTimeLte = &builder.createTimeLte
	}
	if builder.modifyTimeGteFlag {
		req.ModifyTimeGte = &builder.modifyTimeGte
	}
	if builder.modifyTimeLteFlag {
		req.ModifyTimeLte = &builder.modifyTimeLte
	}
	if builder.companyIdsFlag {
		req.CompanyIds = builder.companyIds
	}
	if builder.serviceCompanyIdsFlag {
		req.ServiceCompanyIds = builder.serviceCompanyIds
	}
	if builder.departmentIdsFlag {
		req.DepartmentIds = builder.departmentIds
	}
	if builder.jobFamilyIdsFlag {
		req.JobFamilyIds = builder.jobFamilyIds
	}
	if builder.jobLevelIdsFlag {
		req.JobLevelIds = builder.jobLevelIds
	}
	if builder.workLocationIdsFlag {
		req.WorkLocationIds = builder.workLocationIds
	}
	if builder.employeeTypeIdsFlag {
		req.EmployeeTypeIds = builder.employeeTypeIds
	}
	if builder.onboardDateGteFlag {
		req.OnboardDateGte = &builder.onboardDateGte
	}
	if builder.onboardDateLteFlag {
		req.OnboardDateLte = &builder.onboardDateLte
	}
	if builder.offboardDateGteFlag {
		req.OffboardDateGte = &builder.offboardDateGte
	}
	if builder.offboardDateLteFlag {
		req.OffboardDateLte = &builder.offboardDateLte
	}
	return req, nil
}

type QueryRecurringPaymentReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QueryRecurringPaymentReqBody
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewQueryRecurringPaymentReqBuilder() *QueryRecurringPaymentReqBuilder {
	builder := &QueryRecurringPaymentReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *QueryRecurringPaymentReqBuilder) Limit(limit int) *QueryRecurringPaymentReqBuilder {
	builder.limit = limit
	return builder
}

//
//
// 示例值：
func (builder *QueryRecurringPaymentReqBuilder) PageSize(pageSize int) *QueryRecurringPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

//
//
// 示例值：
func (builder *QueryRecurringPaymentReqBuilder) PageToken(pageToken string) *QueryRecurringPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 用户ID类型
//
// 示例值：open_id
func (builder *QueryRecurringPaymentReqBuilder) UserIdType(userIdType string) *QueryRecurringPaymentReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 查询经常性支付记录
func (builder *QueryRecurringPaymentReqBuilder) Body(body *QueryRecurringPaymentReqBody) *QueryRecurringPaymentReqBuilder {
	builder.body = body
	return builder
}

func (builder *QueryRecurringPaymentReqBuilder) Build() *QueryRecurringPaymentReq {
	req := &QueryRecurringPaymentReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QueryRecurringPaymentReqBody struct {
	Ids []string `json:"ids,omitempty"` // id属于

	UniqueIds []string `json:"unique_ids,omitempty"` // unique_id属于

	UserIds []string `json:"user_ids,omitempty"` // 员工id属于

	ItemIds []string `json:"item_ids,omitempty"` // 薪酬项id属于

	StartDateGte *string `json:"start_date_gte,omitempty"` // 发放开始日期大于等于

	StartDateLte *string `json:"start_date_lte,omitempty"` // 发放开始日期小于等于

	EndDateGte *string `json:"end_date_gte,omitempty"` // 发放结束日期大于等于

	EndDateLte *string `json:"end_date_lte,omitempty"` // 发放结束日期小于等于

	CreateTimeGte *string `json:"create_time_gte,omitempty"` // 创建时间大于等于（东八区）

	CreateTimeLte *string `json:"create_time_lte,omitempty"` // 创建时间小于等于（东八区）

	ModifyTimeGte *string `json:"modify_time_gte,omitempty"` // 更新时间大于等于（东八区）

	ModifyTimeLte *string `json:"modify_time_lte,omitempty"` // 更新时间小于等于（东八区）

	CompanyIds []string `json:"company_ids,omitempty"` // 合同主体id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）

	ServiceCompanyIds []string `json:"service_company_ids,omitempty"` // 任职公司id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/company/list 接口进行查询）

	DepartmentIds []string `json:"department_ids,omitempty"` // 部门id属于（可通过 https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/corehr-v2/department/batch_get 接口进行查询）

	JobFamilyIds []string `json:"job_family_ids,omitempty"` // 序列id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_family/list 接口进行查询）

	JobLevelIds []string `json:"job_level_ids,omitempty"` // 职级id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/job-management/job_level/list 接口进行查询）

	WorkLocationIds []string `json:"work_location_ids,omitempty"` // 工作地点id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/organization-management/location/list 接口进行查询）

	EmployeeTypeIds []string `json:"employee_type_ids,omitempty"` // 员工类型id属于（可通过 https://open.larkoffice.com/document/server-docs/corehr-v1/basic-infomation/employee_type/list 接口进行查询）

	OnboardDateGte *string `json:"onboard_date_gte,omitempty"` // 入职日期大于等于

	OnboardDateLte *string `json:"onboard_date_lte,omitempty"` // 入职日期小于等于

	OffboardDateGte *string `json:"offboard_date_gte,omitempty"` // 离职日期大于等于

	OffboardDateLte *string `json:"offboard_date_lte,omitempty"` // 离职日期小于等于
}

type QueryRecurringPaymentReq struct {
	apiReq *larkcore.ApiReq
	Body   *QueryRecurringPaymentReqBody `body:""`
	Limit  int                           // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type QueryRecurringPaymentRespData struct {
	PageToken *string `json:"page_token,omitempty"` // 搜索下一批时提供的page token

	HasMore *bool `json:"has_more,omitempty"` // 是否有更多的数据

	Records []*RecurringPayment `json:"records,omitempty"` // 经常性支付授予记录
}

type QueryRecurringPaymentResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRecurringPaymentRespData `json:"data"` // 业务数据
}

func (resp *QueryRecurringPaymentResp) Success() bool {
	return resp.Code == 0
}

type QuerySocialArchiveReqBodyBuilder struct {
	userIdList     []string // lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。
	userIdListFlag bool

	effectiveDate     string // 生效日志，查询在该日期生效的社保档案
	effectiveDateFlag bool
}

func NewQuerySocialArchiveReqBodyBuilder() *QuerySocialArchiveReqBodyBuilder {
	builder := &QuerySocialArchiveReqBodyBuilder{}
	return builder
}

// lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。
//
//示例值：
func (builder *QuerySocialArchiveReqBodyBuilder) UserIdList(userIdList []string) *QuerySocialArchiveReqBodyBuilder {
	builder.userIdList = userIdList
	builder.userIdListFlag = true
	return builder
}

// 生效日志，查询在该日期生效的社保档案
//
//示例值：2024-01-01
func (builder *QuerySocialArchiveReqBodyBuilder) EffectiveDate(effectiveDate string) *QuerySocialArchiveReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *QuerySocialArchiveReqBodyBuilder) Build() *QuerySocialArchiveReqBody {
	req := &QuerySocialArchiveReqBody{}
	if builder.userIdListFlag {
		req.UserIdList = builder.userIdList
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	return req
}

type QuerySocialArchivePathReqBodyBuilder struct {
	userIdList        []string
	userIdListFlag    bool
	effectiveDate     string
	effectiveDateFlag bool
}

func NewQuerySocialArchivePathReqBodyBuilder() *QuerySocialArchivePathReqBodyBuilder {
	builder := &QuerySocialArchivePathReqBodyBuilder{}
	return builder
}

// lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。
//
// 示例值：
func (builder *QuerySocialArchivePathReqBodyBuilder) UserIdList(userIdList []string) *QuerySocialArchivePathReqBodyBuilder {
	builder.userIdList = userIdList
	builder.userIdListFlag = true
	return builder
}

// 生效日志，查询在该日期生效的社保档案
//
// 示例值：2024-01-01
func (builder *QuerySocialArchivePathReqBodyBuilder) EffectiveDate(effectiveDate string) *QuerySocialArchivePathReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *QuerySocialArchivePathReqBodyBuilder) Build() (*QuerySocialArchiveReqBody, error) {
	req := &QuerySocialArchiveReqBody{}
	if builder.userIdListFlag {
		req.UserIdList = builder.userIdList
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	return req, nil
}

type QuerySocialArchiveReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QuerySocialArchiveReqBody
}

func NewQuerySocialArchiveReqBuilder() *QuerySocialArchiveReqBuilder {
	builder := &QuerySocialArchiveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户ID类型
//
// 示例值：open_id
func (builder *QuerySocialArchiveReqBuilder) UserIdType(userIdType string) *QuerySocialArchiveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 通过员工ID和生效时间查询参保档案
func (builder *QuerySocialArchiveReqBuilder) Body(body *QuerySocialArchiveReqBody) *QuerySocialArchiveReqBuilder {
	builder.body = body
	return builder
}

func (builder *QuerySocialArchiveReqBuilder) Build() *QuerySocialArchiveReq {
	req := &QuerySocialArchiveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QuerySocialArchiveReqBody struct {
	UserIdList []string `json:"user_id_list,omitempty"` // lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日志，查询在该日期生效的社保档案
}

type QuerySocialArchiveReq struct {
	apiReq *larkcore.ApiReq
	Body   *QuerySocialArchiveReqBody `body:""`
}

type QuerySocialArchiveRespData struct {
	Archives []*SocialArchive `json:"archives,omitempty"` // 参保档案列表
}

type QuerySocialArchiveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QuerySocialArchiveRespData `json:"data"` // 业务数据
}

func (resp *QuerySocialArchiveResp) Success() bool {
	return resp.Code == 0
}

type QuerySocialArchiveAdjustRecordReqBodyBuilder struct {
	userIdList     []string // lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。
	userIdListFlag bool

	recordType     string // 增减员类型, increase: 增员; attrtion: 减员
	recordTypeFlag bool
}

func NewQuerySocialArchiveAdjustRecordReqBodyBuilder() *QuerySocialArchiveAdjustRecordReqBodyBuilder {
	builder := &QuerySocialArchiveAdjustRecordReqBodyBuilder{}
	return builder
}

// lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。
//
//示例值：
func (builder *QuerySocialArchiveAdjustRecordReqBodyBuilder) UserIdList(userIdList []string) *QuerySocialArchiveAdjustRecordReqBodyBuilder {
	builder.userIdList = userIdList
	builder.userIdListFlag = true
	return builder
}

// 增减员类型, increase: 增员; attrtion: 减员
//
//示例值：increase
func (builder *QuerySocialArchiveAdjustRecordReqBodyBuilder) RecordType(recordType string) *QuerySocialArchiveAdjustRecordReqBodyBuilder {
	builder.recordType = recordType
	builder.recordTypeFlag = true
	return builder
}

func (builder *QuerySocialArchiveAdjustRecordReqBodyBuilder) Build() *QuerySocialArchiveAdjustRecordReqBody {
	req := &QuerySocialArchiveAdjustRecordReqBody{}
	if builder.userIdListFlag {
		req.UserIdList = builder.userIdList
	}
	if builder.recordTypeFlag {
		req.RecordType = &builder.recordType
	}
	return req
}

type QuerySocialArchiveAdjustRecordPathReqBodyBuilder struct {
	userIdList     []string
	userIdListFlag bool
	recordType     string
	recordTypeFlag bool
}

func NewQuerySocialArchiveAdjustRecordPathReqBodyBuilder() *QuerySocialArchiveAdjustRecordPathReqBodyBuilder {
	builder := &QuerySocialArchiveAdjustRecordPathReqBodyBuilder{}
	return builder
}

// lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。
//
// 示例值：
func (builder *QuerySocialArchiveAdjustRecordPathReqBodyBuilder) UserIdList(userIdList []string) *QuerySocialArchiveAdjustRecordPathReqBodyBuilder {
	builder.userIdList = userIdList
	builder.userIdListFlag = true
	return builder
}

// 增减员类型, increase: 增员; attrtion: 减员
//
// 示例值：increase
func (builder *QuerySocialArchiveAdjustRecordPathReqBodyBuilder) RecordType(recordType string) *QuerySocialArchiveAdjustRecordPathReqBodyBuilder {
	builder.recordType = recordType
	builder.recordTypeFlag = true
	return builder
}

func (builder *QuerySocialArchiveAdjustRecordPathReqBodyBuilder) Build() (*QuerySocialArchiveAdjustRecordReqBody, error) {
	req := &QuerySocialArchiveAdjustRecordReqBody{}
	if builder.userIdListFlag {
		req.UserIdList = builder.userIdList
	}
	if builder.recordTypeFlag {
		req.RecordType = &builder.recordType
	}
	return req, nil
}

type QuerySocialArchiveAdjustRecordReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QuerySocialArchiveAdjustRecordReqBody
}

func NewQuerySocialArchiveAdjustRecordReqBuilder() *QuerySocialArchiveAdjustRecordReqBuilder {
	builder := &QuerySocialArchiveAdjustRecordReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用户ID类型
//
// 示例值：open_id
func (builder *QuerySocialArchiveAdjustRecordReqBuilder) UserIdType(userIdType string) *QuerySocialArchiveAdjustRecordReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 根据员工ID查询待增员、待减员记录
func (builder *QuerySocialArchiveAdjustRecordReqBuilder) Body(body *QuerySocialArchiveAdjustRecordReqBody) *QuerySocialArchiveAdjustRecordReqBuilder {
	builder.body = body
	return builder
}

func (builder *QuerySocialArchiveAdjustRecordReqBuilder) Build() *QuerySocialArchiveAdjustRecordReq {
	req := &QuerySocialArchiveAdjustRecordReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type QuerySocialArchiveAdjustRecordReqBody struct {
	UserIdList []string `json:"user_id_list,omitempty"` // lark_user_id列表，用户ID列表，获取方式可参考查询参数中的「user_id_type」字段。最大200个。

	RecordType *string `json:"record_type,omitempty"` // 增减员类型, increase: 增员; attrtion: 减员
}

type QuerySocialArchiveAdjustRecordReq struct {
	apiReq *larkcore.ApiReq
	Body   *QuerySocialArchiveAdjustRecordReqBody `body:""`
}

type QuerySocialArchiveAdjustRecordRespData struct {
	Records []*SocialArchiveAdjustRecord `json:"records,omitempty"` // 待增/减员记录
}

type QuerySocialArchiveAdjustRecordResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QuerySocialArchiveAdjustRecordRespData `json:"data"` // 业务数据
}

func (resp *QuerySocialArchiveAdjustRecordResp) Success() bool {
	return resp.Code == 0
}

type ListSocialInsuranceRespData struct {
	Items []*SocialInsurance `json:"items,omitempty"` // 险种列表
}

type ListSocialInsuranceResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListSocialInsuranceRespData `json:"data"` // 业务数据
}

func (resp *ListSocialInsuranceResp) Success() bool {
	return resp.Code == 0
}

type ListSocialPlanReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListSocialPlanReqBuilder() *ListSocialPlanReqBuilder {
	builder := &ListSocialPlanReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListSocialPlanReqBuilder) Limit(limit int) *ListSocialPlanReqBuilder {
	builder.limit = limit
	return builder
}

// 生效日期，查询在该日期生效的参保方案数据
//
// 示例值：2024-01-01
func (builder *ListSocialPlanReqBuilder) EffectiveDate(effectiveDate string) *ListSocialPlanReqBuilder {
	builder.apiReq.QueryParams.Set("effective_date", fmt.Sprint(effectiveDate))
	return builder
}

// 分页大小，默认100，最大200
//
// 示例值：
func (builder *ListSocialPlanReqBuilder) PageSize(pageSize int) *ListSocialPlanReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 为空从头开始遍历，将上一次请求返回的token作为新请求的token，进行翻页
//
// 示例值：
func (builder *ListSocialPlanReqBuilder) PageToken(pageToken string) *ListSocialPlanReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 社保方案/公积金方案
//
// 示例值：social_insuracne
func (builder *ListSocialPlanReqBuilder) InsuranceType(insuranceType string) *ListSocialPlanReqBuilder {
	builder.apiReq.QueryParams.Set("insurance_type", fmt.Sprint(insuranceType))
	return builder
}

func (builder *ListSocialPlanReqBuilder) Build() *ListSocialPlanReq {
	req := &ListSocialPlanReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListSocialPlanReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListSocialPlanRespData struct {
	Plans []*SocialPlan `json:"plans,omitempty"` // 方案列表

	HasMore *bool `json:"has_more,omitempty"` // 是否还有后续分页数据

	PageToken *string `json:"page_token,omitempty"` // has_more为true时返回，作为一下次查询的token使用
}

type ListSocialPlanResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListSocialPlanRespData `json:"data"` // 业务数据
}

func (resp *ListSocialPlanResp) Success() bool {
	return resp.Code == 0
}

type QuerySocialPlanReqBodyBuilder struct {
	planIds     []string // 参保方案ID列表，最大200
	planIdsFlag bool

	effectiveDate     string // 生效日期，查询在该日期生效的参保方案数据
	effectiveDateFlag bool
}

func NewQuerySocialPlanReqBodyBuilder() *QuerySocialPlanReqBodyBuilder {
	builder := &QuerySocialPlanReqBodyBuilder{}
	return builder
}

// 参保方案ID列表，最大200
//
//示例值：
func (builder *QuerySocialPlanReqBodyBuilder) PlanIds(planIds []string) *QuerySocialPlanReqBodyBuilder {
	builder.planIds = planIds
	builder.planIdsFlag = true
	return builder
}

// 生效日期，查询在该日期生效的参保方案数据
//
//示例值：2024-01-01
func (builder *QuerySocialPlanReqBodyBuilder) EffectiveDate(effectiveDate string) *QuerySocialPlanReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *QuerySocialPlanReqBodyBuilder) Build() *QuerySocialPlanReqBody {
	req := &QuerySocialPlanReqBody{}
	if builder.planIdsFlag {
		req.PlanIds = builder.planIds
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	return req
}

type QuerySocialPlanPathReqBodyBuilder struct {
	planIds           []string
	planIdsFlag       bool
	effectiveDate     string
	effectiveDateFlag bool
}

func NewQuerySocialPlanPathReqBodyBuilder() *QuerySocialPlanPathReqBodyBuilder {
	builder := &QuerySocialPlanPathReqBodyBuilder{}
	return builder
}

// 参保方案ID列表，最大200
//
// 示例值：
func (builder *QuerySocialPlanPathReqBodyBuilder) PlanIds(planIds []string) *QuerySocialPlanPathReqBodyBuilder {
	builder.planIds = planIds
	builder.planIdsFlag = true
	return builder
}

// 生效日期，查询在该日期生效的参保方案数据
//
// 示例值：2024-01-01
func (builder *QuerySocialPlanPathReqBodyBuilder) EffectiveDate(effectiveDate string) *QuerySocialPlanPathReqBodyBuilder {
	builder.effectiveDate = effectiveDate
	builder.effectiveDateFlag = true
	return builder
}

func (builder *QuerySocialPlanPathReqBodyBuilder) Build() (*QuerySocialPlanReqBody, error) {
	req := &QuerySocialPlanReqBody{}
	if builder.planIdsFlag {
		req.PlanIds = builder.planIds
	}
	if builder.effectiveDateFlag {
		req.EffectiveDate = &builder.effectiveDate
	}
	return req, nil
}

type QuerySocialPlanReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *QuerySocialPlanReqBody
}

func NewQuerySocialPlanReqBuilder() *QuerySocialPlanReqBuilder {
	builder := &QuerySocialPlanReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 批量查询参保方案
func (builder *QuerySocialPlanReqBuilder) Body(body *QuerySocialPlanReqBody) *QuerySocialPlanReqBuilder {
	builder.body = body
	return builder
}

func (builder *QuerySocialPlanReqBuilder) Build() *QuerySocialPlanReq {
	req := &QuerySocialPlanReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type QuerySocialPlanReqBody struct {
	PlanIds []string `json:"plan_ids,omitempty"` // 参保方案ID列表，最大200

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效日期，查询在该日期生效的参保方案数据
}

type QuerySocialPlanReq struct {
	apiReq *larkcore.ApiReq
	Body   *QuerySocialPlanReqBody `body:""`
}

type QuerySocialPlanRespData struct {
	Plans []*SocialPlan `json:"plans,omitempty"` // 方案列表
}

type QuerySocialPlanResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QuerySocialPlanRespData `json:"data"` // 业务数据
}

func (resp *QuerySocialPlanResp) Success() bool {
	return resp.Code == 0
}

type P2ArchiveChangedV1Data struct {
	OperateType *string `json:"operate_type,omitempty"` // 档案变更类型。add新增、modify更正、delete删除

	EmploymentId *string `json:"employment_id,omitempty"` // 员工 ID。查询员工薪资档案时指定user_id_type为people_corehr_id来识别用户

	EffectiveDate *string `json:"effective_date,omitempty"` // 生效时间

	BeforeTid *string `json:"before_tid,omitempty"` // 调前档案时间轴版本TID。更正、删除场景下有值

	AfterTid *string `json:"after_tid,omitempty"` // 调后档案时间轴版本TID。新增、更正场景下有值
}

type P2ArchiveChangedV1 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2ArchiveChangedV1Data `json:"event"` // 事件内容
}

func (m *P2ArchiveChangedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type ListChangeReasonIterator struct {
	nextPageToken *string
	items         []*ChangeReason
	index         int
	limit         int
	ctx           context.Context
	req           *ListChangeReasonReq
	listFunc      func(ctx context.Context, req *ListChangeReasonReq, options ...larkcore.RequestOptionFunc) (*ListChangeReasonResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListChangeReasonIterator) Next() (bool, *ChangeReason, 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 *ListChangeReasonIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListIndicatorIterator struct {
	nextPageToken *string
	items         []*Indicator
	index         int
	limit         int
	ctx           context.Context
	req           *ListIndicatorReq
	listFunc      func(ctx context.Context, req *ListIndicatorReq, options ...larkcore.RequestOptionFunc) (*ListIndicatorResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListIndicatorIterator) Next() (bool, *Indicator, 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 *ListIndicatorIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListItemIterator struct {
	nextPageToken *string
	items         []*Item
	index         int
	limit         int
	ctx           context.Context
	req           *ListItemReq
	listFunc      func(ctx context.Context, req *ListItemReq, options ...larkcore.RequestOptionFunc) (*ListItemResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListItemIterator) Next() (bool, *Item, 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 *ListItemIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListItemCategoryIterator struct {
	nextPageToken *string
	items         []*ItemCategory
	index         int
	limit         int
	ctx           context.Context
	req           *ListItemCategoryReq
	listFunc      func(ctx context.Context, req *ListItemCategoryReq, options ...larkcore.RequestOptionFunc) (*ListItemCategoryResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListItemCategoryIterator) Next() (bool, *ItemCategory, 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 *ListItemCategoryIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type QueryLumpSumPaymentIterator struct {
	nextPageToken *string
	items         []*LumpSumPayment
	index         int
	limit         int
	ctx           context.Context
	req           *QueryLumpSumPaymentReq
	listFunc      func(ctx context.Context, req *QueryLumpSumPaymentReq, options ...larkcore.RequestOptionFunc) (*QueryLumpSumPaymentResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *QueryLumpSumPaymentIterator) Next() (bool, *LumpSumPayment, 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.Records) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Records
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *QueryLumpSumPaymentIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type QueryDetailLumpSumPaymentIterator struct {
	nextPageToken *string
	items         []*LumpSumPaymentDetail
	index         int
	limit         int
	ctx           context.Context
	req           *QueryDetailLumpSumPaymentReq
	listFunc      func(ctx context.Context, req *QueryDetailLumpSumPaymentReq, options ...larkcore.RequestOptionFunc) (*QueryDetailLumpSumPaymentResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *QueryDetailLumpSumPaymentIterator) Next() (bool, *LumpSumPaymentDetail, 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.Records) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Records
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *QueryDetailLumpSumPaymentIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListPlanIterator struct {
	nextPageToken *string
	items         []*PlanDetail
	index         int
	limit         int
	ctx           context.Context
	req           *ListPlanReq
	listFunc      func(ctx context.Context, req *ListPlanReq, options ...larkcore.RequestOptionFunc) (*ListPlanResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListPlanIterator) Next() (bool, *PlanDetail, 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 *ListPlanIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type QueryRecurringPaymentIterator struct {
	nextPageToken *string
	items         []*RecurringPayment
	index         int
	limit         int
	ctx           context.Context
	req           *QueryRecurringPaymentReq
	listFunc      func(ctx context.Context, req *QueryRecurringPaymentReq, options ...larkcore.RequestOptionFunc) (*QueryRecurringPaymentResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *QueryRecurringPaymentIterator) Next() (bool, *RecurringPayment, 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.Records) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Records
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *QueryRecurringPaymentIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListSocialPlanIterator struct {
	nextPageToken *string
	items         []*SocialPlan
	index         int
	limit         int
	ctx           context.Context
	req           *ListSocialPlanReq
	listFunc      func(ctx context.Context, req *ListSocialPlanReq, options ...larkcore.RequestOptionFunc) (*ListSocialPlanResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListSocialPlanIterator) Next() (bool, *SocialPlan, 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.Plans) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Plans
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListSocialPlanIterator) NextPageToken() *string {
	return iterator.nextPageToken
}
