/**
 * 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>
 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
 * not liable for any claims arising from secondary or illegal development.
 * <p>
 * Author: Chill Zhuang (bladejava@qq.com)
 */
package org.springblade.modules.order.excel;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import lombok.Data;

import java.util.Date;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import java.io.Serializable;
import java.io.Serial;


/**
 * 工单基础信息表 Excel实体类
 *
 * @author lzp
 * @since 2024-06-18
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class OperationOrderExcel implements Serializable {

	@Serial
	private static final long serialVersionUID = 1L;
	/**
	 * 服务商名称
	 */
	@ColumnWidth(20)
	@ExcelProperty("服务商名称")
	private String siteName;
	/**
	 * 工单编号，生成规则:WX（维修）、 AN（安装）年月日时分+随机四位（工单编号不可重复）,例如WX2019041012247567
	 */
	@ColumnWidth(20)
	@ExcelProperty("工单编号")
	private String number;

	@ColumnWidth(20)
	@ExcelProperty("工单状态")
	private String status;

	/**
	 * 电站编码
	 */
	@ColumnWidth(20)
	@ExcelProperty("电站编码")
	private String powerStationCode;

	/**
	 * 用户姓名
	 */
	@ColumnWidth(20)
	@ExcelProperty("业主姓名")
	private String customerName;

	/**
	 * 用户联系方式一
	 */
	@ColumnWidth(20)
	@ExcelProperty("联系方式")
	private String customerMobile;
	@ColumnWidth(20)
	@ExcelProperty("省")
	private String province;
	@ColumnWidth(20)
	@ExcelProperty("市")
	private String city;
	@ColumnWidth(20)
	@ExcelProperty("区县")
	private String area;

	/**
	 * 用户详细地址
	 */
	@ColumnWidth(20)
	@ExcelProperty("地址")
	private String customerAddress;
	@ColumnWidth(20)
	@ExcelProperty("服务类型")
	private String serviceType;
	/**
	 * 服务措施
	 */
	@ColumnWidth(20)
	@ExcelProperty("服务措施")
	private String serviceMeasures;

	/**
	 * 设备品牌
	 */
	@ColumnWidth(20)
	@ExcelProperty("设备品牌")
	private String applianceBrand;

	/**
	 * 设备序列号
	 */
	@ColumnWidth(20)
	@ExcelProperty("设备sn")
	private String applianceBarcode;


	/**
	 * 设备类型
	 */
	@ColumnWidth(20)
	@ExcelProperty("设备类型")
	private String applianceCategory;


	/**
	 * 设备容量
	 */
	@ColumnWidth(20)
	@ExcelProperty("设备容量")
	private BigDecimal applianceCapacity;



	/**
	 * 备注(故障描述)
	 */
	@ColumnWidth(20)
	@ExcelProperty("故障描述")
	private String remarks;

	/**
	 * 工单来源类型：1.用户在线报修 2.平台录入 3.其他  默认2 ,4电商
	 */
	@ColumnWidth(20)
	@ExcelProperty("信息来源")
	private String orderType;
	/**
	 * 工程师姓名
	 */
	@ColumnWidth(20)
	@ExcelProperty("工程师姓名")
	private String employeName;


	/**
	 * 工单报修时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("创建时间")
	private Date repairTime;


	/**
	/**
	 * 预约时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("预约时间")
	private Date promiseTime;
	/**
	 * 平台派工时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("平台派工时间")
	private Date dispatchTime;
	/**
	 * 服务商接单时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("服务商接单时间")
	private Date processTime;


	/**
	 * 服务商派工时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("服务商派工时间")
	private Date siteDispatchTime;
	/**
	 * 工程师接单时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("工程师接单时间")
	private Date siteProcessTime;

	/**
	 * 服务商的服务完工时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("完工时间")
	private Date endTime;
	/**
	 * 投运日期
	 */
	@ColumnWidth(20)
	@ExcelProperty("投运日期")
	private Date applianceBuyTime;

	@ExcelProperty("完工时间差")
	private String disEndTime;

	/**
	 * 资方名称
	 */
	@ExcelProperty("资方名称")
	private String capitalName;

	@ExcelProperty("审核备注")
	private String memoNote;

	@ExcelProperty("投放通过时间")
	private String paymentTime;


	@ExcelProperty("质保到期时间")
	private String warrantyExpiresTime;


	@ExcelProperty( "是否超期")
	private String ifOverDue;


	@ExcelProperty("延期次数")
	@JsonSerialize(nullsUsing = NullSerializer.class)
	private Integer extensionCount;

	@ExcelProperty("预警时间")
	private String warningStartDay;



	@ExcelProperty("结算")
	private String ifSettle;

	@ExcelProperty("扣款金额")
	@JsonSerialize(nullsUsing = NullSerializer.class)
	private BigDecimal deductionAmount;


	@ExcelProperty("结算金额")
	@JsonSerialize(nullsUsing = NullSerializer.class)
	private BigDecimal settleAmount;


	@ExcelProperty("实际支付金额")
	@JsonSerialize(nullsUsing = NullSerializer.class)
	private BigDecimal actualAmount;


}
