package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.numberrule;

import cn.estsh.i3plus.mes.pcn.api.iservice.busi.INumberRulePackAttributeStrategyService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @Description :
 * @Reference :
 * @Author : Castle
 * @CreateDate : 2024/7/6 13:51
 * @Modify:
 **/
@Component
public class B2mAndGqaaNumberRuleStrategyService implements INumberRulePackAttributeStrategyService {
    @Override
    public GenSerialNoModel execute(GenSerialNoModel genSerialNoModel) {

        MesPart mesPart = (MesPart) genSerialNoModel.getDataMap().get(MesPart.class.getSimpleName());
        Date date = new Date();
//        genSerialNoModel.setRuleCode(numberRule.getRuleCode());
        //${SPILTRULE}${partNo}${SPILTRULE}${SPILTRULE}${year}${month}${day}${serialNo}${SPILTRULE}
        //规格号,零件号,供应商，生产线代码,年,月,日,序列号,软件版本号
        // ----广汽 1B2M & 广新 GQAA_BARCODE 21位
        //规格号 ${SPILTRULE} +
        //零件简号 {partNo} - mesPart.getPartSnParam()
        genSerialNoModel.setPartNo(mesPart.getPartSnParam());
        //供应商号 supplierNo  ---固定VD501 ${SPILTRULE}拼接
        //生产线代码 workCenterCode 或者 fixWorkCenterCode (取配置值) ${SPILTRULE}
        //日期${dateShort}
        genSerialNoModel.setYear(getYearShort(date));
        genSerialNoModel.setMonth(getMonthShort(date));
        genSerialNoModel.setDay(getDayShort(date));
        //获取客户零件号
//        String custPartNo = custPart.getCustPartNo();
        //供应商生产流水号 ${serialNo} 采用34进制 获取条码是十进制,需要截取转换成34位
        //软件版本号${versionNo} ${SPILTRULE}
        return genSerialNoModel;

    }

    private String getYearShort(Date date) {
        return MesExtEnumUtil.YEAR_SHORT.valueOfDescription(Integer.parseInt(TimeTool.getYear(date)));
    }

    private String getMonthShort(Date date) {

        return MesExtEnumUtil.MONTH_SHORT.valueOfDescription(Integer.parseInt(TimeTool.getMonth(date)));
    }

    private String getDayShort(Date date) {
        return TimeTool.getDay(date);
    }
}
