package com.hw.qms.service.impl;

import java.util.List;

import com.hw.common.core.constant.QmsConstants;
import com.hw.common.core.utils.DateUtils;
import com.hw.qms.domain.MesBaseBarcodeInfo;
import com.hw.qms.domain.QmsCheckRuleProject;
import com.hw.qms.domain.vo.QmsMaterialCheckVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.hw.common.core.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.hw.qms.domain.QmsCheckResultDetail;
import com.hw.qms.mapper.QmsCheckResultMapper;
import com.hw.qms.domain.QmsCheckResult;
import com.hw.qms.service.IQmsCheckResultService;

/**
 * 质检结果Service业务层处理
 *
 * @author xins
 * @date 2024-01-23
 */
@Service
public class QmsCheckResultServiceImpl implements IQmsCheckResultService
{
    @Autowired
    private QmsCheckResultMapper qmsCheckResultMapper;

    /**
     * 查询质检结果
     *
     * @param checkResultId 质检结果主键
     * @return 质检结果
     */
    @Override
    public QmsCheckResult selectQmsCheckResultByCheckResultId(Long checkResultId)
    {
        return qmsCheckResultMapper.selectQmsCheckResultByCheckResultId(checkResultId);
    }

    /**
     * 查询质检结果列表
     *
     * @param qmsCheckResult 质检结果
     * @return 质检结果
     */
    @Override
    public List<QmsCheckResult> selectQmsCheckResultList(QmsCheckResult qmsCheckResult)
    {
        return qmsCheckResultMapper.selectQmsCheckResultList(qmsCheckResult);
    }

    /**
     * 新增质检结果
     *
     * @param qmsCheckResult 质检结果
     * @return 结果
     */
    @Transactional
    @Override
    public int insertQmsCheckResult(QmsCheckResult qmsCheckResult)
    {
        qmsCheckResult.setCreateTime(DateUtils.getNowDate());
        int rows = qmsCheckResultMapper.insertQmsCheckResult(qmsCheckResult);
        insertQmsCheckResultDetail(qmsCheckResult);
        return rows;
    }

    /**
     * 修改质检结果
     *
     * @param qmsCheckResult 质检结果
     * @return 结果
     */
    @Transactional
    @Override
    public int updateQmsCheckResult(QmsCheckResult qmsCheckResult)
    {
        qmsCheckResult.setUpdateTime(DateUtils.getNowDate());
        qmsCheckResultMapper.deleteQmsCheckResultDetailByCheckResultId(qmsCheckResult.getCheckResultId());
        insertQmsCheckResultDetail(qmsCheckResult);
        return qmsCheckResultMapper.updateQmsCheckResult(qmsCheckResult);
    }

    /**
     * 批量删除质检结果
     *
     * @param checkResultIds 需要删除的质检结果主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteQmsCheckResultByCheckResultIds(Long[] checkResultIds)
    {
        qmsCheckResultMapper.deleteQmsCheckResultDetailByCheckResultIds(checkResultIds);
        return qmsCheckResultMapper.deleteQmsCheckResultByCheckResultIds(checkResultIds);
    }

    /**
     * 删除质检结果信息
     *
     * @param checkResultId 质检结果主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteQmsCheckResultByCheckResultId(Long checkResultId)
    {
        qmsCheckResultMapper.deleteQmsCheckResultDetailByCheckResultId(checkResultId);
        return qmsCheckResultMapper.deleteQmsCheckResultByCheckResultId(checkResultId);
    }

    /**
     * 新增质检结果详情信息
     *
     * @param qmsCheckResult 质检结果对象
     */
    public void insertQmsCheckResultDetail(QmsCheckResult qmsCheckResult)
    {
        List<QmsCheckResultDetail> qmsCheckResultDetailList = qmsCheckResult.getQmsCheckResultDetailList();
        Long checkResultId = qmsCheckResult.getCheckResultId();
        if (StringUtils.isNotNull(qmsCheckResultDetailList))
        {
            List<QmsCheckResultDetail> list = new ArrayList<QmsCheckResultDetail>();
            for (QmsCheckResultDetail qmsCheckResultDetail : qmsCheckResultDetailList)
            {
                qmsCheckResultDetail.setCheckResultId(checkResultId);
                list.add(qmsCheckResultDetail);
            }
            if (list.size() > 0)
            {
                qmsCheckResultMapper.batchQmsCheckResultDetail(list);
            }
        }
    }





}
