liusheng
2023-12-28 ac79f032745c975eb77d6fb148ed390f2373559e
smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
@@ -1,96 +1,265 @@
package com.smartor.service.impl;
import java.util.List;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
import com.smartor.service.IIvrLibaTemplateService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.smartor.mapper.IvrLibaTemplateMapper;
import com.smartor.domain.IvrLibaTemplate;
import com.smartor.service.IIvrLibaTemplateService;
import java.util.List;
/**
 * 话术模板库Service业务层处理
 * 模板库Service业务层处理
 * 
 * @author smartor
 * @date 2023-03-22
 * @author ruoyi
 * @date 2023-12-23
 */
@Slf4j
@Service
public class IvrLibaTemplateServiceImpl implements IIvrLibaTemplateService
{
public class IvrLibaTemplateServiceImpl implements IIvrLibaTemplateService {
    @Autowired
    private IvrLibaTemplateMapper ivrLibaTemplateMapper;
    @Autowired
    private IvrLibaTemplateTagMapper ivrLibaTemplateTagMapper;
    @Autowired
    private IvrLibaTemplateTargetMapper ivrLibaTemplateTargetMapper;
    @Autowired
    private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
    @Autowired
    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
    /**
     * 查询话术模板库
     * 查询模板库
     * 
     * @param templateID 话术模板库主键
     * @return 话术模板库
     * @param ID 模板库主键
     * @return 模板库
     */
    @Override
    public IvrLibaTemplate selectIvrLibaTemplateByTemplateID(String templateID)
    {
        return ivrLibaTemplateMapper.selectIvrLibaTemplateByTemplateID(templateID);
    public IvrLibaTemplate selectIvrLibaTemplateByID(Long ID) {
        return ivrLibaTemplateMapper.selectIvrLibaTemplateByID(ID);
    }
    /**
     * 查询话术模板库列表
     * 查询模板库列表
     * 
     * @param ivrLibaTemplate 话术模板库
     * @return 话术模板库
     * @param ivrLibaTemplate 模板库
     * @return 模板库
     */
    @Override
    public List<IvrLibaTemplate> selectIvrLibaTemplateList(IvrLibaTemplate ivrLibaTemplate)
    {
    public List<IvrLibaTemplate> selectIvrLibaTemplateList(IvrLibaTemplate ivrLibaTemplate) {
        return ivrLibaTemplateMapper.selectIvrLibaTemplateList(ivrLibaTemplate);
    }
    /**
     * 新增话术模板库
     * 新增模板库
     * 
     * @param ivrLibaTemplate 话术模板库
     * @param ivrLibaTemplate 模板库
     * @return 结果
     */
    @Override
    public int insertIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate)
    {
    public int insertIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate) {
        ivrLibaTemplate.setCreateTime(DateUtils.getNowDate());
        return ivrLibaTemplateMapper.insertIvrLibaTemplate(ivrLibaTemplate);
    }
    /**
     * 修改话术模板库
     * 修改模板库
     * 
     * @param ivrLibaTemplate 话术模板库
     * @param ivrLibaTemplate 模板库
     * @return 结果
     */
    @Override
    public int updateIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate)
    {
    public int updateIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate) {
        ivrLibaTemplate.setUpdateTime(DateUtils.getNowDate());
        return ivrLibaTemplateMapper.updateIvrLibaTemplate(ivrLibaTemplate);
    }
    /**
     * 批量删除话术模板库
     * 批量删除模板库
     * 
     * @param templateIDs 需要删除的话术模板库主键
     * @param IDs 需要删除的模板库主键
     * @return 结果
     */
    @Override
    public int deleteIvrLibaTemplateByTemplateIDs(String[] templateIDs)
    {
        return ivrLibaTemplateMapper.deleteIvrLibaTemplateByTemplateIDs(templateIDs);
    public int deleteIvrLibaTemplateByIDs(Long[] IDs) {
        Integer i = null;
        for (Long id : IDs) {
            i = ivrLibaTemplateMapper.deleteIvrLibaTemplateByID(id);
        }
        return i;
    }
    /**
     * 删除话术模板库信息
     * 删除模板库信息
     * 
     * @param templateID 话术模板库主键
     * @param ID 模板库主键
     * @return 结果
     */
    @Override
    public int deleteIvrLibaTemplateByTemplateID(String templateID)
    {
        return ivrLibaTemplateMapper.deleteIvrLibaTemplateByTemplateID(templateID);
    public int deleteIvrLibaTemplateByID(Long ID) {
        return ivrLibaTemplateMapper.deleteIvrLibaTemplateByID(ID);
    }
    /**
     * 新增或修改问题详情
     *
     * @param ivrLibaTemplateVO
     * @return
     */
    @Override
    public Integer saveOrUpdateTemplate(IvrLibaTemplateVO ivrLibaTemplateVO) {
        Integer i = null;
        IvrLibaTemplate ivrLibaTemplate = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO, IvrLibaTemplate.class);
        if (ivrLibaTemplateVO.getIsoperation() != null && ivrLibaTemplateVO.getIsoperation() == 1) {
            //新增
            i = ivrLibaTemplateMapper.insertIvrLibaTemplate(ivrLibaTemplate);
        } else if (ivrLibaTemplateVO.getIsoperation() != null && ivrLibaTemplateVO.getIsoperation() == 2) {
            //修改
            i = ivrLibaTemplateMapper.updateIvrLibaTemplate(ivrLibaTemplate);
        }
        log.info("新增或修改模板详情的id为:{}", ivrLibaTemplate.getID());
        //对模板标签进行处理
        if (CollectionUtils.isNotEmpty(ivrLibaTemplateVO.getIvrLibaTemplateTagList())) {
            for (IvrLibaTemplateTag ivrLibaTemplateTag : ivrLibaTemplateVO.getIvrLibaTemplateTagList()) {
                if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 1) {
                    //新增
                    ivrLibaTemplateTag.setTemplateid(ivrLibaTemplate.getID());
                    ivrLibaTemplateTagMapper.insertIvrLibaTemplateTag(ivrLibaTemplateTag);
                } else if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 2) {
                    //修改
                    ivrLibaTemplateTag.setTemplateid(ivrLibaTemplate.getID());
                    ivrLibaTemplateTagMapper.updateIvrLibaTemplateTag(ivrLibaTemplateTag);
                } else if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 3) {
                    //删除
                    if (ivrLibaTemplateTag.getId() == null) {
                        log.info("删除失败,模板指标id为空");
                    } else {
                        ivrLibaTemplateTagMapper.deleteIvrLibaTemplateTagById(ivrLibaTemplateTag.getId());
                    }
                }
            }
        }
        //对模板话术和选项进行处理(话术表与指标表进行合并了,)
        if (CollectionUtils.isNotEmpty(ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList())) {
            for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList()) {
                if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 1) {
                    //新增
                    IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
                    ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
                    ivrLibaTemplateScriptMapper.insertIvrLibaTemplateScript(ivrLibaTemplateScript);
                    //对选项目进行处理
                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaTemplateTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID());
                } else if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 2) {
                    //修改
                    IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
                    ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
                    ivrLibaTemplateScriptMapper.updateIvrLibaTemplateScript(ivrLibaTemplateScript);
                    //对选项目进行处理
                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaTemplateTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID());
                } else if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 3) {
                    //删除
                    if (ivrLibaTemplateScriptVO.getID() == null) {
                        log.info("删除失败,模板话术id为空");
                    } else {
                        ivrLibaTemplateTagMapper.deleteIvrLibaTemplateTagById(ivrLibaTemplateScriptVO.getID());
                    }
                }
            }
        }
        return i;
    }
    /**
     * 选项处理
     *
     * @param ivrLibaTemplateTargetoptionList
     * @param ivrLibaTemplateScript
     * @param tmpID
     */
    private void dealOption(List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptionList, IvrLibaTemplateScript ivrLibaTemplateScript, Long tmpID) {
        //对模板指标选项进行处理
        if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoptionList)) {
            for (IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption : ivrLibaTemplateTargetoptionList) {
                if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 1) {
                    //新增
                    ivrLibaTemplateTargetoption.setTemplateID(tmpID);
                    ivrLibaTemplateTargetoption.setTargetid(ivrLibaTemplateScript.getTargetid());
                    ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getScriptid());
                    ivrLibaTemplateTargetOptionMapper.insertIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
                } else if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 2) {
                    //修改
                    ivrLibaTemplateTargetoption.setTemplateID(tmpID);
                    ivrLibaTemplateTargetoption.setTargetid(ivrLibaTemplateScript.getTargetid());
                    ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getScriptid());
                    ivrLibaTemplateTargetOptionMapper.updateIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
                } else if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 3) {
                    //删除
                    if (ivrLibaTemplateTargetoption.getId() == null) {
                        log.info("删除失败,模板指标选项id为空");
                    } else {
                        ivrLibaTemplateTargetOptionMapper.deleteIvrLibaTemplateTargetoptionById(ivrLibaTemplateTargetoption.getId());
                    }
                }
            }
        }
    }
    /**
     * 查询模板详情根据条件
     */
    @Override
    public IvrLibaTemplateVO selectInfoByCondition(IvrLibaTemplateVO ivrLibaTemplateVO) {
        log.info("查询模板详情根据条件的入参为 : {}", ivrLibaTemplateVO);
        //先根据条件查询问题表信息
        IvrLibaTemplate ivrLibaTemplate = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO, IvrLibaTemplate.class);
        List<IvrLibaTemplate> ivrLibaTemplates = selectIvrLibaTemplateList(ivrLibaTemplate);
        if (CollectionUtils.isEmpty(ivrLibaTemplates)) {
            log.info("提供的条件,查询模板详情数据为空:{}", ivrLibaTemplates);
            throw new BaseException("提供的条件,查询模板详情数据为空");
        }
        log.info("ivrLibaTemplates的查询结果为:{},数量为 : {}", ivrLibaTemplates.get(0), ivrLibaTemplates.size());
        //定义IvrLibaTemplateVO 用于返参
        IvrLibaTemplateVO templateVO = DtoConversionUtils.sourceToTarget(ivrLibaTemplates.get(0), IvrLibaTemplateVO.class);
        //获取tag信息
        IvrLibaTemplateTag ivrLibaTemplateTag = new IvrLibaTemplateTag();
        ivrLibaTemplateTag.setTemplateid(ivrLibaTemplates.get(0).getID());
        List<IvrLibaTemplateTag> ivrLibaTemplateTags = ivrLibaTemplateTagMapper.selectIvrLibaTemplateTagList(ivrLibaTemplateTag);
        //查询话术
        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();
        ivrLibaTemplateScript.setTemplateID(ivrLibaTemplates.get(0).getID());
        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScripts, IvrLibaTemplateScriptVO.class);
        //通过话术ID获取选项
        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {
            log.info("ivrLibaTemplateScriptVO的主键id为:{}", ivrLibaTemplateScriptVO.getID());
            IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();
            ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getID());
            List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
            ivrLibaTemplateScriptVO.setIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoptions);
        }
        //数据组装
        templateVO.setIvrLibaTemplateTagList(ivrLibaTemplateTags);
        templateVO.setIvrLibaTemplateScriptVOList(ivrLibaTemplateScriptVOS);
        return templateVO;
    }
}