package org.jeecg.modules.itdmGongDan.dto;


import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.itdmGongDan.entity.ItdmGongdanMaster;
import org.jeecg.modules.itdmGongDan.entity.ItdmTestPlan;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@Data
@Accessors(chain = true)
public class ItdmJHYAddOrUpdateDTO {

    /**委托id*/
    @Excel(name = "委托id", width = 15)
    @ApiModelProperty(value = "委托id")
    private String weituoId;
    /**样品id*/
    @Excel(name = "样品id", width = 15)
    @ApiModelProperty(value = "样品id")
    private String yangpinId;
    /**检测项目id*/
    @Excel(name = "检测项目id", width = 15)
    @ApiModelProperty(value = "检测项目id")
    private java.lang.String testItemsId;
    /**检测项目*/
    @Excel(name = "检测项目", width = 15)
    @ApiModelProperty(value = "检测项目")
    private String testItems;
    /**试验计划id*/
    @Excel(name = "试验计划id", width = 15)
    @ApiModelProperty(value = "试验计划id")
    private String testPlanId;
    /**设备id*/
    @Excel(name = "设备id", width = 15)
    @ApiModelProperty(value = "设备id")
    private java.lang.String shebeiId;
    /**设备id数组*/
    @Excel(name = "设备id数组", width = 15)
    @ApiModelProperty(value = "设备id数组")
    private java.lang.String[] shebeiIdArray;
    /**项目经理*/
    @Excel(name = "项目经理", width = 15)
    @ApiModelProperty(value = "项目经理")
    private java.lang.String pm;
    /**计划开始日期*/
    @Excel(name = "计划开始日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "计划开始日期")
    private java.util.Date jihuaStartDate;
    /**计划结束日期*/
    @Excel(name = "计划结束日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "计划结束日期")
    private java.util.Date jihuaEndDate;
    /**状态*/
    @Excel(name = "状态", width = 15, dicCode = "test_plan_status")
    @Dict(dicCode = "test_plan_status")
    @ApiModelProperty(value = "状态")
    private java.lang.Integer status;
    /**报告编号*/
    @Excel(name = "报告编号", width = 15)
    @ApiModelProperty(value = "报告编号")
    private java.lang.String reportNo;
    /**传感器id*/
    @Excel(name = "传感器id", width = 20)
    @ApiModelProperty(value = "传感器id")
    private java.lang.String chuanganqi;
    /**委托编号*/
    @Excel(name = "委托编号", width = 15)
    @ApiModelProperty(value = "委托编号")
    private String weituoNo;
    /**样品名称*/
    @Excel(name = "样品名称", width = 15)
    @ApiModelProperty(value = "样品名称")
    private java.lang.String sampleName;
    /**设备名称*/
    @Excel(name = "设备名称", width = 15)
    @ApiModelProperty(value = "设备名称")
    private java.lang.String deviceName;
    /**父id*/
    @Excel(name = "父id", width = 20)
    @ApiModelProperty(value = "父id")
    private java.lang.String parent;
    /**持续时间*/
    @Excel(name = "持续时间", width = 20)
    @ApiModelProperty(value = "持续时间")
    private java.lang.Integer lastTime;
    /**status转化*/
    @Excel(name = "status转化", width = 15)
    @ApiModelProperty(value = "status转化")
    private java.lang.String statusC;
    /**传感器数组*/
    @Excel(name = "传感器数组", width = 15)
    @ApiModelProperty(value = "传感器数组")
    private java.lang.String[] chuanganqiArray;
    /**前端用的到，用来放试验计划id*/
    @Excel(name = "试验计划id", width = 15)
    @ApiModelProperty(value = "试验计划id")
    private String id;

    /**实绩开始日期*/
    @Excel(name = "实绩开始日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "实绩开始日期")
    private java.util.Date shijiStartDate;
    /**实绩结束日期*/
    @Excel(name = "实绩结束日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "实绩结束日期")
    private java.util.Date shijiEndDate;

    /**是否为实绩，1为实绩，0非实绩*/
    @ApiModelProperty(value = "是否为实绩，1为实绩，0非实绩")
    private java.lang.String izShiji;


    /**转化成试验计划对象——计划员新增或修改试验计划*/
    public static ItdmTestPlan toItdmTestPlan(ItdmJHYAddOrUpdateDTO vo){
        ItdmTestPlan itdmTestPlan = new ItdmTestPlan();
        itdmTestPlan.setWeituoId(vo.getWeituoId());
        itdmTestPlan.setTestItemsId(vo.getTestItemsId());
        itdmTestPlan.setWeituoYangpinId(vo.getYangpinId());
        itdmTestPlan.setPm(vo.getPm());
        itdmTestPlan.setReportNo(vo.getReportNo());

        itdmTestPlan.setJihuaStartDate(vo.getJihuaStartDate());
        int lastTime = vo.getLastTime();//通过持续时间计算结束时间，注意开始时间2023-5-21,持续时间1，则结束时间为2023-5-21
        Date jihuaEndTime = new Date(vo.getJihuaStartDate().getTime() + (lastTime-1)*1000*3600*24);
        itdmTestPlan.setJihuaEndDate(jihuaEndTime);

        if(vo.getChuanganqiArray()!=null){
            String[] arr = vo.getChuanganqiArray();
            String chuanganqi = "";
            for (int i = 0; i < arr.length; i++) {
                if(i==0) chuanganqi = arr[i];
                else chuanganqi = chuanganqi + ","+ arr[i];
            }
            itdmTestPlan.setChuanganqi(chuanganqi);
        }

        if(vo.getShebeiIdArray()!=null){
            String[] arr = vo.getShebeiIdArray();
            String shebeiId = "";
            for (int i = 0; i < arr.length; i++) {
                if(i==0) shebeiId = arr[i];
                else shebeiId = shebeiId + ","+ arr[i];
            }
            itdmTestPlan.setShebeiId(shebeiId);
        }

        return  itdmTestPlan;
    }

    /**转化成工单master对象——计划员用于新增工单master*/
    public static ItdmGongdanMaster toItdmGongdanMaster(ItdmJHYAddOrUpdateDTO vo){
        ItdmGongdanMaster m = new ItdmGongdanMaster();
        m.setJihuaShiyanId(vo.getTestPlanId());
        m.setTestItemsId(vo.getTestItemsId());
        m.setWeituoYangpinId(vo.getYangpinId());

        m.setStartDate(vo.getJihuaStartDate());
        int lastTime = vo.getLastTime();//通过持续时间计算结束时间，注意开始时间2023-5-21,持续时间1，则结束时间为2023-5-21
        Date endDate = new Date(vo.getJihuaStartDate().getTime() + (lastTime-1)*1000*3600*24);
        m.setEndDate(endDate);

        if(vo.getChuanganqiArray() != null){
            String[] arr = vo.getChuanganqiArray();
            String chuanganqi = "";
            for (int i = 0; i < arr.length; i++) {
                if(i==0) chuanganqi = arr[i];
                else chuanganqi = chuanganqi + ","+ arr[i];
            }
            m.setChuanganqi(chuanganqi);
        }

        if(vo.getShebeiIdArray() != null){
            String[] arr = vo.getShebeiIdArray();
            m.setShebeiId(arr[0]);
        }

        return m;
    }

}
