package com.yunzhupaas.cm.model.contract;

import lombok.Data;
import java.util.*;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.v3.oas.annotations.media.Schema;

/**
 * 合同管理
 * @版本： V5.2.7
 * @版权： Copyright @ 2025  深圳市乐程软件有限公司版权所有
 * @作者： 深圳市乐程软件有限公司
 * @日期： 2026-05-20
 */
@Data
@Schema(description = "表单参数")
public class ContractForm  {
    /** 主键 */
    @Schema(description = "主键")
    @JSONField(name = "contract_id")
    private String contractId;

    /** 流程id **/
    @Schema(description = "流程id")
    @JsonProperty("flowId")
    @JSONField(name = "f_flow_id")
    private String flowId;
    /** 流程权限列表 **/
    @JsonProperty("formOperates")
    private List<Map<String,Object>> formOperates = new ArrayList<>();

    /** 合同类型 **/
    @Schema(description = "合同类型")
    @JsonProperty("contract_type")
    @JSONField(name = "contract_type")
    private String contractType;
    /** 引用模版 **/
    @Schema(description = "引用模版")
    @JsonProperty("contract_temp_id")
    @JSONField(name = "contract_temp_id")
    private String contractTempId;
    /** 合同名称 **/
    @Schema(description = "合同名称")
    @JsonProperty("contract_name")
    @JSONField(name = "contract_name")
    private String contractName;
    /** 合同编码 **/
    @Schema(description = "合同编码")
    @JsonProperty("contract_code")
    @JSONField(name = "contract_code")
    private String contractCode;
    /** 归属组织 **/
    @Schema(description = "归属组织")
    @JsonProperty("org_id")
    @JSONField(name = "org_id")
    private Object orgId;
    /** 归属项目 **/
    @Schema(description = "归属项目")
    @JsonProperty("project_id")
    @JSONField(name = "project_id")
    private Object projectId;
    /** 合同分类 **/
    @Schema(description = "合同分类")
    @JsonProperty("contract_category")
    @JSONField(name = "contract_category")
    private Object contractCategory;
    /** 签约日期 **/
    @Schema(description = "签约日期")
    @JsonProperty("contract_date")
    @JSONField(name = "contract_date")
    private String contractDate;
    /** 开始日期 **/
    @Schema(description = "开始日期")
    @JsonProperty("effective_date")
    @JSONField(name = "effective_date")
    private String effectiveDate;
    /** 结束日期 **/
    @Schema(description = "结束日期")
    @JsonProperty("expiry_date")
    @JSONField(name = "expiry_date")
    private String expiryDate;
    /** 是否子合同 **/
    @Schema(description = "是否子合同")
    @JsonProperty("is_sub_contract")
    @JSONField(name = "is_sub_contract")
    private Integer isSubContract;
    /** 关联合同 **/
    @Schema(description = "关联合同")
    @JsonProperty("ref_contract_id")
    @JSONField(name = "ref_contract_id")
    private String refContractId;
    /** 经办人 **/
    @Schema(description = "经办人")
    @JsonProperty("major_person_id")
    @JSONField(name = "major_person_id")
    private Object majorPersonId;
    /** 打印合同模版 **/
    @Schema(description = "打印合同模版")
    @JsonProperty("print_temp_id")
    @JSONField(name = "print_temp_id")
    private Object printTempId;
    /** 备注 **/
    @Schema(description = "备注")
    @JsonProperty("remark")
    @JSONField(name = "remark")
    private String remark;
    /** 我方类型 **/
    @Schema(description = "我方类型")
    @JsonProperty("our_company_type")
    @JSONField(name = "our_company_type")
    private Object ourCompanyType;
    /** 我方单位 **/
    @Schema(description = "我方单位")
    @JsonProperty("our_company_id")
    @JSONField(name = "our_company_id")
    private String ourCompanyId;
    /** 我方名称 **/
    @Schema(description = "我方名称")
    @JsonProperty("our_company_name")
    @JSONField(name = "our_company_name")
    private String ourCompanyName;
    /** 合作方类型 **/
    @Schema(description = "合作方类型")
    @JsonProperty("second_party_type")
    @JSONField(name = "second_party_type")
    private Object secondPartyType;
    /** 合作单位 **/
    @Schema(description = "合作单位")
    @JsonProperty("second_party_id")
    @JSONField(name = "second_party_id")
    private String secondPartyId;
    /** 合作方名称 **/
    @Schema(description = "合作方名称")
    @JsonProperty("second_party_name")
    @JSONField(name = "second_party_name")
    private String secondPartyName;
    /** 第三方类型 **/
    @Schema(description = "第三方类型")
    @JsonProperty("third_party_type")
    @JSONField(name = "third_party_type")
    private Object thirdPartyType;
    /** 第三方单位 **/
    @Schema(description = "第三方单位")
    @JsonProperty("third_party_id")
    @JSONField(name = "third_party_id")
    private String thirdPartyId;
    /** 第三方名称 **/
    @Schema(description = "第三方名称")
    @JsonProperty("third_party_name")
    @JSONField(name = "third_party_name")
    private String thirdPartyName;
    /** 原合同金额 **/
    @Schema(description = "原合同金额")
    @JsonProperty("contract_money")
    @JSONField(name = "contract_money")
    private BigDecimal contractMoney;
    /** 最终签约金额 **/
    @Schema(description = "最终签约金额")
    @JsonProperty("final_contract_amount")
    @JSONField(name = "final_contract_amount")
    private BigDecimal finalContractAmount;
    /** 签约金额大写 **/
    @Schema(description = "签约金额大写")
    @JsonProperty("final_amount_upper")
    @JSONField(name = "final_amount_upper")
    private BigDecimal finalAmountUpper;
    /** 税额 **/
    @Schema(description = "税额")
    @JsonProperty("tax_amount")
    @JSONField(name = "tax_amount")
    private BigDecimal taxAmount;
    /** 不含税金额 **/
    @Schema(description = "不含税金额")
    @JsonProperty("excluding_tax_amount")
    @JSONField(name = "excluding_tax_amount")
    private BigDecimal excludingTaxAmount;
    /** 合同附件 **/
    @Schema(description = "合同附件")
    @JsonProperty("contract_files")
    @JSONField(name = "contract_files")
    private Object contractFiles;

    /** 子表数据 **/
    @Schema(description = "productSubject子表数据")
    @JsonProperty("productSubjectList")
    private List<ProductSubjectModel> productSubjectList;
    /** 子表数据 **/
    @Schema(description = "materialSubject子表数据")
    @JsonProperty("materialSubjectList")
    private List<MaterialSubjectModel> materialSubjectList;
    /** 子表数据 **/
    @Schema(description = "worktypeSubject子表数据")
    @JsonProperty("worktypeSubjectList")
    private List<WorktypeSubjectModel> worktypeSubjectList;
    /** 子表数据 **/
    @Schema(description = "assetSubject子表数据")
    @JsonProperty("assetSubjectList")
    private List<AssetSubjectModel> assetSubjectList;
    /** 子表数据 **/
    @Schema(description = "taskSubject子表数据")
    @JsonProperty("taskSubjectList")
    private List<TaskSubjectModel> taskSubjectList;
    /** 子表数据 **/
    @Schema(description = "paymentPlan子表数据")
    @JsonProperty("paymentPlanList")
    private List<PaymentPlanModel> paymentPlanList;
}
