package com.ruoyi.pay.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.pay.domain.PayBaohuoEmployee;
import com.ruoyi.pay.domain.PayBaohuoProduct;
import com.ruoyi.pay.domain.PayBaohuoWorktime;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.ArrayList;
import java.util.Date;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 包活派工单业务对象 pay_work_order_baohuo
 *
 * @author ruoyi
 * @date 2025-05-12
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class PayWorkOrderBaohuoBo extends BaseEntity {

    /**
     * 主键ID
     */
    //@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 租户id
     */
    @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long tenantId;

    /**
     * 归档ID
     */
    //@NotBlank(message = "归档ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String archiveId;

    /**
     * 产品ID
     */
  //  @NotNull(message = "产品ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long productId;

    /**
     * 部门ID
     */
    @NotNull(message = "部门ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long deptId;

    /**
     * 车间
     */
  //  @NotBlank(message = "车间不能为空", groups = { AddGroup.class, EditGroup.class })
    private String workshop;

    /**
     * 包活工单名称
     */
    @NotBlank(message = "包活工单名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;

    /**
     * 工作内容
     */
   // @NotBlank(message = "工作内容不能为空", groups = { AddGroup.class, EditGroup.class })
    private String content;

    /**
     * 加工数量
     */
   // @NotNull(message = "加工数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal productNum;

    /**
     * 产品单价
     */
   // @NotNull(message = "产品单价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal price;

    /**
     * 单位
     */
   // @NotBlank(message = "单位不能为空", groups = { AddGroup.class, EditGroup.class })
    private String unit;

    /**
     * 加工总金额
     */
  //@NotNull(message = "加工总金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal amount;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   // @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date beginTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  //  @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date endTime;

    /**
     * 质检人员
     */
   // @NotBlank(message = "质检人员不能为空", groups = { AddGroup.class, EditGroup.class })
    private String qualityName;

    /**
     * 检验说明
     */
   // @NotBlank(message = "检验说明不能为空", groups = { AddGroup.class, EditGroup.class })
    private String qualityRemark;

    /**
     * 入库时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @NotNull(message = "入库时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date instorageTime;

    /**
     * 入库人员
     */
   // @NotBlank(message = "入库人员不能为空", groups = { AddGroup.class, EditGroup.class })
    private String instorageName;

    /**
     * 实际入库数量
     */
   // @NotNull(message = "实际入库数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long instorageNum;

    /**
     * 项目经理
     */
    //@NotBlank(message = "项目经理不能为空", groups = { AddGroup.class, EditGroup.class })
    private String managerName;

    /**
     * 删除标志（0-可用 1-删除）
     */
    //@NotNull(message = "删除标志（0-可用 1-删除）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer deleted;

    /**
     * 备注
     */
   // @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;

    // 产品列表
    private List<PayBaohuoProduct> prodList;


    // 员工列表
    private List<PayBaohuoEmployee> empList;


    // 工时列表
    private List<PayBaohuoWorktime> worktimeList;
    // 选择员工ID
    private Long empId;
    // 工作日期
    private String workDate;

    // 导出日期
    @JsonFormat(pattern = "yyyy-MM")
    private Date exportDate;

    private ArrayList<Long> woids; // 待查询的工单ID集合


}
