/**
 * BladeX Commercial License Agreement
 * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
 * <p>
 * Use of this software is governed by the Commercial License Agreement
 * obtained after purchasing a license from BladeX.
 * <p>
 * 1. This software is for development use only under a valid license
 * from BladeX.
 * <p>
 * 2. Redistribution of this software's source code to any third party
 * without a commercial license is strictly prohibited.
 * <p>
 * 3. Licensees may copyright their own code but cannot use segments
 * from this software for such purposes. Copyright of this software
 * remains with BladeX.
 * <p>
 * Using this software signifies agreement to this License, and the software
 * must not be used for illegal purposes.
 * <p>
 * Author: Chill Zhuang (bladejava@qq.com)
 */
package org.springblade.transport.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;

import java.io.Serial;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 项目立项实体类
 *
 * @author Chill
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("blade_project_apply")
@Schema(description = "项目立项")
public class ProjectApply extends TenantEntity {

	@Serial
	private static final long serialVersionUID = 1L;

	@Schema(description = "立项申请单号")
	private String applyNo;

	@Schema(description = "项目编号")
	private String projectCode;

	@Schema(description = "项目名称")
	private String projectName;

	@Schema(description = "项目简称")
	private String projectShortName;

	@Schema(description = "项目类型")
	private String projectType;

	@Schema(description = "业务部门ID")
	private Long businessDeptId;

	@Schema(description = "业务部门")
	private String businessDeptName;

	@Schema(description = "承办部门ID")
	private Long undertakeDeptId;

	@Schema(description = "承办部门")
	private String undertakeDeptName;

	@Schema(description = "项目由来")
	private String projectSource;

	@Schema(description = "项目由来说明")
	private String sourceRemark;

	@Schema(description = "项目资金使用额度(万元)")
	private BigDecimal fundLimit;

	@Schema(description = "项目应收账款额度(万元)")
	private BigDecimal receivableLimit;

	@Schema(description = "应收账款回款期限(天)")
	private Integer receivableDays;

	@Schema(description = "回款账期(天)")
	private Integer paymentDays;

	@Schema(description = "货物类型")
	private String cargoType;

	@Schema(description = "预估货物数量")
	private String cargoQuantity;

	@Schema(description = "业务周期开始日期")
	private LocalDate businessStartDate;

	@Schema(description = "业务周期结束日期")
	private LocalDate businessEndDate;

	@Schema(description = "运输线路")
	private String transportRoute;

	@Schema(description = "运输类型")
	private String transportType;

	@Schema(description = "业务类型")
	private String businessType;

	@Schema(description = "项目规模(万元)")
	private BigDecimal projectScale;

	@Schema(description = "预计利润(万元)")
	private BigDecimal estimatedProfit;

	@Schema(description = "资金需求(万元)")
	private BigDecimal fundDemand;

	@Schema(description = "结算方式")
	private String settlementMode;

	@Schema(description = "项目经办人ID")
	private Long handlerUserId;

	@Schema(description = "项目经办人")
	private String handlerUserName;

	@Schema(description = "项目负责人ID")
	private Long principalUserId;

	@Schema(description = "项目负责人")
	private String principalUserName;

	@Schema(description = "客户名称")
	private String customerNames;

	@Schema(description = "下游承运商")
	private String carrierNames;

	@Schema(description = "客户信息JSON")
	private String customerJson;

	@Schema(description = "承运商信息JSON")
	private String carrierJson;

	@Schema(description = "项目情况说明")
	private String situationRemark;

	@Schema(description = "项目附件JSON")
	private String attachmentsJson;

	@Schema(description = "审批状态")
	private String approvalStatus;

	@Schema(description = "当前节点")
	private String currentNode;

	@Schema(description = "当前处理人")
	private String currentProcessor;

	@Schema(description = "生效类型")
	private String effectiveType;

	@Schema(description = "审核通过时间")
	private LocalDateTime approvedTime;

	@Schema(description = "变更内容")
	private String changeContent;

	@Schema(description = "变更原因")
	private String changeReason;

	@Schema(description = "作废原因")
	private String voidReason;

}
