//package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
//
//import cn.estsh.i3plus.ext.mes.api.base.IOqcProjectService;
//import cn.estsh.i3plus.ext.mes.pojo.bean.MesOqcProject;
//import cn.estsh.i3plus.ext.mes.pojo.bean.MesOqcRuleNoteDetail;
//import cn.estsh.i3plus.ext.mes.pojo.model.OqcProjectModel;
//import cn.estsh.i3plus.ext.mes.pojo.repository.*;
//import cn.estsh.i3plus.ext.mes.pojo.sqlpack.MesExtHqlPack;
//import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
//import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
//import cn.estsh.i3plus.platform.common.convert.ConvertBean;
//import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
//import cn.estsh.i3plus.platform.common.tool.TimeTool;
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
//import cn.estsh.i3plus.pojo.base.bean.ListPager;
//import cn.estsh.i3plus.pojo.base.common.Pager;
//import cn.estsh.i3plus.pojo.base.common.PagerHelper;
//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
//import cn.estsh.i3plus.pojo.mes.repository.MesPartCategoryRepository;
//import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.util.CollectionUtils;
//import org.springframework.util.StringUtils;
//
//import java.util.List;
//
///**
// * @author yumingxing
// * @version 1.0
// * @date 2021/2/5 15:42
// **/
//@Service
//public class OqcProjectService implements IOqcProjectService {
//
//    @Autowired
//    private MesOqcProjectRepository oqcProjectRepository;
//
//    @Override
//    public ListPager<MesOqcProject> queryOqcProjectPager(MesOqcProject oqcProject, Pager pager) {
//        DdlPackBean hqlPack = MesExtHqlPack.getOqcProject(oqcProject);
//        pager = PagerHelper.getPager(pager, oqcProjectRepository.findByHqlWhereCount(hqlPack));
//        hqlPack.setOrderByStr(" order by partNo asc, seq asc ");
//        List<MesOqcProject> oqcProjectList = oqcProjectRepository.findByHqlWherePage(hqlPack, pager);
//        if (!CollectionUtils.isEmpty(oqcProjectList)) {
//            for (MesOqcProject item : oqcProjectList) {
//                if (null == item) {
//                    continue;
//                }
//                item.setOqcTypeName(MesExtEnumUtil.OQC_CHECK_TYPE.valueOfDescription(item.getOqcType()));
//            }
//        }
//        return new ListPager(oqcProjectList, pager);
//    }
//
//    @Override
//    public void insertOqcProject(OqcProjectModel model) {
//        if ((MesExtEnumUtil.OQC_CHECK_TYPE.DAILY_INSPECTION.getValue() == model.getOqcType() &&
//                (CollectionUtils.isEmpty(model.getPartNoList()) || !StringUtils.isEmpty(model.getCategoryCode3())))
//                || (MesExtEnumUtil.OQC_CHECK_TYPE.DAILY_INSPECTION.getValue() != model.getOqcType() &&
//                (!CollectionUtils.isEmpty(model.getPartNoList()) || StringUtils.isEmpty(model.getCategoryCode3())))) {
//            throw ImppExceptionBuilder.newInstance()
//                    .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
//                    .setErrorCode(ImppExceptionEnum.PARAMETER_EXCEPTION.getCode())
//                    .setErrorDetail("参数异常")
//                    .build();
//        }
//
//        commCheckOqcProjectSeq(model.getSeq());
//
//        MesOqcProject oqcProjectDb = null;
//        if (MesExtEnumUtil.OQC_CHECK_TYPE.DAILY_INSPECTION.getValue() == model.getOqcType()) {
//            for (String partNo : model.getPartNoList()) {
//                if (StringUtils.isEmpty(partNo)) {
//                    continue;
//                }
//                oqcProjectDb = oqcProjectRepository.getByProperty(
//                        new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.OQC_TYPE, MesExtConstWords.PART_NO, MesExtConstWords.OQC_PROJECT, MesExtConstWords.SEQ},
//                        new Object[]{model.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), model.getOqcType(), partNo, model.getOqcProject(), model.getSeq()});
//                if (null != oqcProjectDb) {
//                    break;
//                }
//            }
//        } else {
//            oqcProjectDb = oqcProjectRepository.getByProperty(
//                    new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.OQC_TYPE, MesExtConstWords.CATEGORY_CODE3, MesExtConstWords.OQC_PROJECT, MesExtConstWords.SEQ},
//                    new Object[]{model.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), model.getOqcType(), model.getCategoryCode3(), model.getOqcProject(), model.getSeq()});
//        }
//
//        if (null != oqcProjectDb) {
//            throw ImppExceptionBuilder.newInstance()
//                    .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
//                    .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
//                    .setErrorDetail("根据[检验单类型,物料或者产品类型,检验项目,序号]查询已经存在此条数据,请勿重复新增")
//                    .build();
//        }
//
//        if (MesExtEnumUtil.OQC_CHECK_TYPE.DAILY_INSPECTION.getValue() == model.getOqcType()) {
//            for (String partNo : model.getPartNoList()) {
//                if (StringUtils.isEmpty(partNo)) {
//                    continue;
//                }
//                MesOqcProject oqcProject = new MesOqcProject();
//                oqcProject.setPartNo(partNo);
//                insetOqcProjectComm(oqcProject, model);
//            }
//        } else {
//            MesOqcProject oqcProject = new MesOqcProject();
//            oqcProject.setCategoryCode3(model.getCategoryCode3());
//            insetOqcProjectComm(oqcProject, model);
//        }
//
//    }
//
//    private void commCheckOqcProjectSeq(Double seq) {
//        String[] seqArr = seq.toString().split(MesExtConstWords.DECIMAL_POINT);
//        if (null != seqArr && seqArr.length == 2 && seqArr[1].length() > 1) {
//            throw ImppExceptionBuilder.newInstance()
//                    .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
//                    .setErrorCode(ImppExceptionEnum.PARAMETER_EXCEPTION.getCode())
//                    .setErrorDetail("序号最多1位小数")
//                    .build();
//        }
//    }
//
//    private void insetOqcProjectComm(MesOqcProject oqcProject, OqcProjectModel model) {
//        oqcProject.setOqcType(model.getOqcType());
//        oqcProject.setOqcProject(model.getOqcProject());
//        oqcProject.setStandard(model.getStandard());
//        oqcProject.setUpLimit(model.getUpLimit());
//        oqcProject.setDownLimit(model.getDownLimit());
//        oqcProject.setSeq(model.getSeq());
//        oqcProject.setOrganizeCode(model.getOrganizeCode());
//        ConvertBean.serviceModelInitialize(oqcProject, model.getUserInfo());
//        oqcProjectRepository.insert(oqcProject);
//    }
//
//    @Override
//    public void updateOqcProject(OqcProjectModel model) {
//        MesOqcProject oqcProjectDb = oqcProjectRepository.getById(model.getId());
//        if (null == oqcProjectDb || CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == oqcProjectDb.getIsDeleted()) {
//            throw ImppExceptionBuilder.newInstance()
//                    .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
//                    .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
//                    .setErrorDetail("ID[%s]数据不存在", model.getId())
//                    .build();
//        }
//
//        commCheckOqcProjectSeq(model.getSeq());
//
//        MesOqcProject oqcProject;
//        if (MesExtEnumUtil.OQC_CHECK_TYPE.DAILY_INSPECTION.getValue() == oqcProjectDb.getOqcType()) {
//            oqcProject = oqcProjectRepository.getByProperty(
//                    new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.OQC_TYPE, MesExtConstWords.PART_NO, MesExtConstWords.OQC_PROJECT, MesExtConstWords.SEQ},
//                    new Object[]{model.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), oqcProjectDb.getOqcType(), oqcProjectDb.getPartNo(), model.getOqcProject(), model.getSeq()});
//        } else {
//            oqcProject = oqcProjectRepository.getByProperty(
//                    new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.OQC_TYPE, MesExtConstWords.CATEGORY_CODE3, MesExtConstWords.OQC_PROJECT, MesExtConstWords.SEQ},
//                    new Object[]{model.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), oqcProjectDb.getOqcType(), oqcProjectDb.getCategoryCode3(), model.getOqcProject(), model.getSeq()});
//        }
//
//        if (null != oqcProject && oqcProject.getId().compareTo(model.getId()) != 0) {
//            throw ImppExceptionBuilder.newInstance()
//                    .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
//                    .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
//                    .setErrorDetail("根据[检验单类型,物料或者产品类型,检验项目,序号]查询已经存在此条数据,修改失败")
//                    .build();
//        }
//
//        oqcProjectDb.setOqcProject(model.getOqcProject());
//        oqcProjectDb.setStandard(model.getStandard());
//        oqcProjectDb.setUpLimit(model.getUpLimit());
//        oqcProjectDb.setDownLimit(model.getDownLimit());
//        oqcProjectDb.setSeq(model.getSeq());
//        oqcProjectDb.setOrganizeCode(model.getOrganizeCode());
//        ConvertBean.serviceModelUpdate(oqcProjectDb, model.getUserInfo());
//        oqcProjectRepository.save(oqcProjectDb);
//    }
//
//    @Override
//    public void updateOqcProjectValidById(OqcProjectModel model, String userName) {
//        if (model.getStatus() != CommonEnumUtil.IS_VAILD.INVAILD.getValue() && model.getStatus() != CommonEnumUtil.IS_VAILD.VAILD.getValue()) {
//            throw ImppExceptionBuilder.newInstance()
//                    .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
//                    .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
//                    .setErrorDetail("启用，禁用枚举状态值[%s]未被定义", model.getStatus())
//                    .build();
//        }
//        for (Long id : model.getIdList()) {
//            if (StringUtils.isEmpty(id)) {
//                continue;
//            }
//            MesOqcProject oqcProjectDb = oqcProjectRepository.getById(id);
//            if (oqcProjectDb == null || CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == oqcProjectDb.getIsDeleted()) {
//                throw ImppExceptionBuilder.newInstance()
//                        .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
//                        .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
//                        .setErrorDetail("ID[%s]记录不存在", id)
//                        .build();
//            }
//            oqcProjectRepository.updateByProperties(new String[]{MesExtConstWords.ID}, new Object[]{id},
//                    new String[]{MesExtConstWords.IS_VALID, MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME},
//                    new Object[]{model.getStatus(), userName, TimeTool.getNowTime(true)});
//        }
//    }
//}
