package com.hxhq.business.service.impl;

import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hxhq.business.domain.Step;
import com.hxhq.common.core.exception.ServiceException;
import com.hxhq.common.core.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hxhq.business.mapper.TemplateMapper;
import com.hxhq.business.domain.Template;
import com.hxhq.business.service.ITemplateService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

/**
 * 模板Service业务层处理
 *
 * @author hxhq
 * @date 2025-12-23
 */
@Service
public class TemplateServiceImpl extends ServiceImpl<TemplateMapper, Template> implements ITemplateService
{
    /**
     * 查询模板列表
     *
     * @param template 模板
     * @return 模板
     */
    @Override
    public List<Template> queryList(Template template)
    {
        QueryWrapper<Template> queryWrapper = Wrappers.query();
        queryWrapper.eq("t.del_flag","0");
        if(StringUtils.isNoneBlank(template.getSn())){
            queryWrapper.like("t.sn",template.getSn());
        }
        if(StringUtils.isNoneBlank(template.getName())){
            queryWrapper.like("t.name",template.getName());
        }
        if(template.getDeptId()!=null && template.getDeptId().longValue()>0){
            queryWrapper.eq("t.dept_id",template.getDeptId());
        }
        if(template.getNeedPre()!=null && template.getNeedPre().intValue()>0){
            queryWrapper.eq("t.need_pre",template.getNeedPre());
        }
        if(template.getStatus()!=null && template.getStatus().intValue()>0){
            queryWrapper.eq("t.status",template.getStatus());
        }
        queryWrapper.orderByAsc("t.id");
        return baseMapper.queryList(queryWrapper);
    }

    @Override
    public List<Step> getStepListByTemplateId(Long templateId,String templateSn) {
        Template template = null;
        if(templateId!=null && templateId.longValue()>0){
            template = getById(templateId);
        }else{
            QueryWrapper<Template> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("sn",templateSn);
            template = getOne(queryWrapper,false);
        }
        if(template==null){
            throw new ServiceException("模板不存在");
        }
        if(StringUtils.isBlank(template.getStepGroupIds())){
            return new ArrayList<>();
        }
        return baseMapper.getStepListByTemplateStepGroupIds(template.getStepGroupIds());
    }
}
