package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.ep;

import cn.estsh.i3plus.ext.mes.pcn.api.busi.ep.IEpCustomsPartService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesPartExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesPartExtRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.ConvertBeanExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 文件描述
 *
 * @author xiangming.liao
 * @date 2022年01月18日 13:43
 */
@Slf4j
@Service
public class EpCustomsPartService implements IEpCustomsPartService {

    @Autowired
    private MesPartExtRepository mesPartExtRDao;


    @Override
    public boolean updateCustomsPartByPartNo(String organizeCode, String partNo, String userInfo) {
        //通过物料号查询物料主数据
        MesPartExt partExt = mesPartExtRDao.getByProperty(
                new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, MesPcnExtConstWords.PART_NO},
                new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), partNo});
        if (null == partExt) {
            throw ImppExceptionBuilder.newInstance()
                    .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
                    .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
                    .setErrorDetail("物料号【%s】不存在", partNo)
                    .build();
        }

        //todo 调用MES通过物料号查询海关系统中“海关物料信息‘接口，拿到海关物料号等信息

        //todo 拿到海关物料号等信息后赋值给对应物料主数据中的 海关物料 字段
        partExt.setCustomsPartNo("");

        //todo 调用MES通过物料号修改海关物料的“状态”更新为“已使用”，并记录“BOM生效操作人员”和“BOM生效操作日期时间”

        ConvertBean.serviceModelUpdate(partExt, userInfo);
        new ConvertBeanExt(partExt).convertBean(partExt);
        mesPartExtRDao.save(partExt);
        //todo 修改成功返回true
        return true;
    }
}
