ContractVO.java 4.61 KB
package vion.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import lombok.Getter;
import lombok.Setter;
import vion.model.ContractLog;
import vion.model.ContractPayment;
import vion.model.RContractProduct;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Getter
@Setter
@ExcelModel(sheetName = "合同列表", includeAllField = false)
public class ContractVO {
    private Long id;

    /**
     * 合同名称
     */
    @ExcelColumn(order = 1, title = "合同名称")
    private String name;

    /**
     * 合同编号
     */
    @ExcelColumn(order = 0, title = "合同编号")
    private String contractNo;

    /**
     * 合同类型:1-维保合同 2-框架合同 3-集成合同 4-供货合同 5-供货施工合同 0-其他
     */
    @ExcelColumn(order = 3, title = "合同类型", mapping = "1:维保合同,2:框架合同,3:集成合同,4:供货合同,5:供货施工合同,0:其他")
    private Integer type;

    /**
     * 合同签订日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ExcelColumn(order = 4, title = "签订日期", format = "yyyy-MM-dd")
    private LocalDate signDate;

    /**
     * 合同维保开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ExcelColumn(order = 5, title = "维保开始日期", format = "yyyy-MM-dd")
    private LocalDate maintainSdate;

    /**
     * 合同维保结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ExcelColumn(order = 6, title = "维保结束日期", format = "yyyy-MM-dd")
    private LocalDate maintainEdate;

    /**
     * 合同进度:1-签订 2-到货 3-系统验收(初验) 4-项目验收(终验) 5-质保 6-第一笔维保款 7-第二笔维保款 8-第三笔维保款 9-维保进度款 10-维保验收款
     */
    @ExcelColumn(order = 7, title = "合同进度", mapping = "1:合同签订,2:到货,3:系统验收,4:项目验收,5:质保,6:第一笔维保款,7:第二笔维保款,8:第三笔维保款,9:维保进度款,10:维保验收款")
    private Integer status;

    /**
     * 合同总金额
     */
    @ExcelColumn(order = 9, title = "总金额")
    private BigDecimal totalAmount;

    /**
     * 合同已收金额
     */
    @ExcelColumn(order = 10, title = "已收款")
    private BigDecimal paidAmount;

    /**
     * 合同应收金额:
     * 根据【合同进度】,由系统判断出应该收到的金额
     */
    @ExcelColumn(order = 11, title = "应收款")
    private BigDecimal receivableAmount;

    /**
     * 合同未收金额:total-(paid+receivable)
     */
    @ExcelColumn(order = 12, title = "合同余额")
    private BigDecimal outstandingAmount;

    /**
     * 结算差异
     */
    @ExcelColumn(order = 13, title = "结算差异")
    private BigDecimal diffAmount;

    /**
     * 合同签订主体
     */
    private String subject;

    /**
     * 合同甲方名称
     */
    @ExcelColumn(order = 15, title = "甲方名称")
    private String customerName;

    /**
     * 销售人员名称
     */
    @ExcelColumn(order = 8, title = "销售人")
    private String saleName;

    /**
     * 备注
     */
    private String remark;

    /**
     * 记录创建者
     */
    private Long createUser;

    /**
     * 记录最后一次修改者
     */
    private Long modifyUser;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime modifyTime;

    /**
     * 合同质保周期(月)
     */
    private Integer warrantyPeriod;

    /**
     * 终验日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate finalDate;

    /**
     * 财务状态
     */
    private Integer financialStatus;

    /**
     * 合同背景情况说明
     */
    private String backInfo;

    /**
     * 开票金额
     */
    @ExcelColumn(order = 14, title = "已开票")
    private BigDecimal invoiceAmount;

    /**
     * 录入时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime entryTime;

    /**
     * 合同关联的项目名
     */
    private List<StoreVO> storeVOS;

    private List<ContractLog> contractLogs;

    private List<RContractProduct> contractProducts;

    private List<ContractPayment> contractPayments;
}