package com.smartor.service.impl; 
 | 
  
 | 
import com.fasterxml.jackson.core.JsonProcessingException; 
 | 
import com.fasterxml.jackson.databind.ObjectMapper; 
 | 
import com.google.gson.Gson; 
 | 
import com.ruoyi.common.exception.base.BaseException; 
 | 
import com.ruoyi.common.utils.DateUtils; 
 | 
import com.ruoyi.common.utils.DtoConversionUtils; 
 | 
import com.ruoyi.common.utils.StringUtils; 
 | 
import com.smartor.domain.*; 
 | 
import com.smartor.mapper.IvrLibaScriptMapper; 
 | 
import com.smartor.mapper.IvrLibaScriptTagMapper; 
 | 
import com.smartor.mapper.IvrLibaScriptTargetMapper; 
 | 
import com.smartor.mapper.IvrLibaScriptTargetoptionMapper; 
 | 
import com.smartor.service.IIvrLibaScriptService; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.collections4.CollectionUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * 问题话术库Service业务层处理 
 | 
 * 
 | 
 * @author ruoyi 
 | 
 * @date 2023-12-21 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
public class IvrLibaScriptServiceImpl implements IIvrLibaScriptService { 
 | 
    @Autowired 
 | 
    private IvrLibaScriptMapper ivrLibaScriptMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IvrLibaScriptTagMapper ivrLibaScriptTagMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IvrLibaScriptTargetoptionMapper ivrLibaScriptTargetoptionMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IvrLibaScriptTargetMapper ivrLibaScriptTargetMapper; 
 | 
  
 | 
    /** 
 | 
     * 查询问题话术库 
 | 
     * 
 | 
     * @param questionid 问题话术库主键 
 | 
     * @return 问题话术库 
 | 
     */ 
 | 
    @Override 
 | 
    public IvrLibaScript selectIvrLibaScriptByQuestionid(String questionid) { 
 | 
        return ivrLibaScriptMapper.selectIvrLibaScriptByQuestionid(questionid); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询问题话术库列表 
 | 
     * 
 | 
     * @param ivrLibaScript 问题话术库 
 | 
     * @return 问题话术库 
 | 
     */ 
 | 
    @Override 
 | 
    public List<IvrLibaScript> selectIvrLibaScriptList(IvrLibaScript ivrLibaScript) { 
 | 
        return ivrLibaScriptMapper.selectIvrLibaScriptList(ivrLibaScript); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询问题话术详情根据条件 
 | 
     */ 
 | 
    @Override 
 | 
    public IvrLibaScriptVO selectInfoByCondition(IvrLibaScriptVO ivrLibaScriptVO) { 
 | 
        log.info("查询问题话术详情根据条件的入参为 : {}", ivrLibaScriptVO); 
 | 
        //先根据条件查询问题表信息 
 | 
        IvrLibaScript ivrLibaScript = DtoConversionUtils.sourceToTarget(ivrLibaScriptVO, IvrLibaScript.class); 
 | 
        List<IvrLibaScript> ivrLibaScripts = selectIvrLibaScriptList(ivrLibaScript); 
 | 
        if (CollectionUtils.isEmpty(ivrLibaScripts)) { 
 | 
            log.info("提供的条件,查询数据为空:{}", ivrLibaScript); 
 | 
            return null; 
 | 
        } 
 | 
        log.info("ivrLibaScript的查询结果为:{},数量为 : {}", ivrLibaScripts.get(0), ivrLibaScripts.size()); 
 | 
        //定义IvrLibaScriptVO 用于返参 
 | 
        IvrLibaScriptVO scriptVO = DtoConversionUtils.sourceToTarget(ivrLibaScripts.get(0), IvrLibaScriptVO.class); 
 | 
  
 | 
        //获取tag信息 
 | 
        IvrLibaScriptTag ivrLibaScriptTag = new IvrLibaScriptTag(); 
 | 
        ivrLibaScriptTag.setScriptid(ivrLibaScripts.get(0).getId()); 
 | 
        List<IvrLibaScriptTag> ivrLibaScriptTags = ivrLibaScriptTagMapper.selectIvrLibaScriptTagList(ivrLibaScriptTag); 
 | 
        scriptVO.setIvrLibaScriptTagList(ivrLibaScriptTags); 
 | 
  
 | 
        //获取option信息 
 | 
        IvrLibaScriptTargetoption ivrLibaScriptTargetoption = new IvrLibaScriptTargetoption(); 
 | 
        ivrLibaScriptTargetoption.setScriptid(ivrLibaScripts.get(0).getId()); 
 | 
        List<IvrLibaScriptTargetoption> ivrLibaScriptTargetoptions = ivrLibaScriptTargetoptionMapper.selectIvrLibaScriptTargetoptionList(ivrLibaScriptTargetoption); 
 | 
        for (IvrLibaScriptTargetoption ivrLibaScriptTargetoption1 : ivrLibaScriptTargetoptions) { 
 | 
            ObjectMapper objectMapper = new ObjectMapper(); 
 | 
            try { 
 | 
                if (StringUtils.isNotEmpty(ivrLibaScriptTargetoption1.getDynamiccruxsJson())) 
 | 
                    ivrLibaScriptTargetoption1.setDynamiccruxs(objectMapper.readValue(ivrLibaScriptTargetoption1.getDynamiccruxsJson(), List.class)); 
 | 
                if (StringUtils.isNotEmpty(ivrLibaScriptTargetoption1.getNodynamiccruxsJson())) 
 | 
                    ivrLibaScriptTargetoption1.setNodynamiccruxs(objectMapper.readValue(ivrLibaScriptTargetoption1.getNodynamiccruxsJson(), List.class)); 
 | 
            } catch (JsonProcessingException e) { 
 | 
                e.printStackTrace(); 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        scriptVO.setIvrLibaScriptTargetoptionList(ivrLibaScriptTargetoptions); 
 | 
  
 | 
//        //查询问题指标接口 
 | 
//        IvrLibaScriptTarget ivrLibaScriptTarget = new IvrLibaScriptTarget(); 
 | 
//        ivrLibaScriptTarget.setScriptid(ivrLibaScripts.get(0).getId()); 
 | 
//        List<IvrLibaScriptTarget> ivrLibaScriptTargets = ivrLibaScriptTargetMapper.selectIvrLibaScriptTargetList(ivrLibaScriptTarget); 
 | 
//        scriptVO.setIvrLibaScriptTargetList(ivrLibaScriptTargets); 
 | 
  
 | 
        return scriptVO; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 新增或修改问题详情 
 | 
     * 
 | 
     * @param ivrLibaScriptVO 
 | 
     * @return 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    @Override 
 | 
    public Integer saveOrUpdateScript(IvrLibaScriptVO ivrLibaScriptVO) { 
 | 
        IvrLibaScript ivrLibaScript = DtoConversionUtils.sourceToTarget(ivrLibaScriptVO, IvrLibaScript.class); 
 | 
        //对问题表进行数据处理 
 | 
        Integer i = null; 
 | 
        if (ivrLibaScriptVO.getIsoperation() != null && ivrLibaScriptVO.getIsoperation() == 1) { 
 | 
            i = ivrLibaScriptMapper.insertIvrLibaScript(ivrLibaScript); 
 | 
        } else if (ivrLibaScriptVO.getIsoperation() != null && ivrLibaScriptVO.getIsoperation() == 2) { 
 | 
            i = ivrLibaScriptMapper.updateIvrLibaScript(ivrLibaScript); 
 | 
        } 
 | 
        log.info("问题表对应的id为:{}", ivrLibaScript.getId()); 
 | 
        if (ivrLibaScript.getId() == null) { 
 | 
            throw new BaseException("话术ID为空,请检查话术入参信息是否完整"); 
 | 
        } 
 | 
  
 | 
        //对问题指标选项进行处理 
 | 
        if (CollectionUtils.isNotEmpty(ivrLibaScriptVO.getIvrLibaScriptTargetoptionList())) { 
 | 
            for (IvrLibaScriptTargetoption ivrLibaScriptTargetoption : ivrLibaScriptVO.getIvrLibaScriptTargetoptionList()) { 
 | 
                if (CollectionUtils.isNotEmpty(ivrLibaScriptTargetoption.getNodynamiccruxs())) { 
 | 
                    ivrLibaScriptTargetoption.setNodynamiccruxsJson(new Gson().toJson(ivrLibaScriptTargetoption.getNodynamiccruxs())); 
 | 
                } 
 | 
                if (CollectionUtils.isNotEmpty(ivrLibaScriptTargetoption.getDynamiccruxs())) { 
 | 
                    ivrLibaScriptTargetoption.setDynamiccruxsJson(new Gson().toJson(ivrLibaScriptTargetoption.getDynamiccruxs())); 
 | 
                } 
 | 
  
 | 
                ivrLibaScriptTargetoption.setGuid(ivrLibaScriptVO.getGuid()); 
 | 
                ivrLibaScriptTargetoption.setOrgid(ivrLibaScriptVO.getOrgid()); 
 | 
                if (ivrLibaScriptTargetoption.getIsoperation() != null && ivrLibaScriptTargetoption.getIsoperation() == 1) { 
 | 
                    //新增 
 | 
                    ivrLibaScriptTargetoption.setScriptid(ivrLibaScript.getId()); 
 | 
                    ivrLibaScriptTargetoptionMapper.insertIvrLibaScriptTargetoption(ivrLibaScriptTargetoption); 
 | 
                } 
 | 
                if (ivrLibaScriptTargetoption.getIsoperation() != null && ivrLibaScriptTargetoption.getIsoperation() == 2) { 
 | 
                    //修改 
 | 
                    ivrLibaScriptTargetoption.setScriptid(ivrLibaScript.getId()); 
 | 
                    ivrLibaScriptTargetoptionMapper.updateIvrLibaScriptTargetoption(ivrLibaScriptTargetoption); 
 | 
                    //如果要给正则置空,则需要单独调修改方法 
 | 
                    if (CollectionUtils.isEmpty(ivrLibaScriptTargetoption.getNodynamiccruxs())) { 
 | 
                        ivrLibaScriptTargetoption.setNodynamiccruxsJson(null); 
 | 
                        ivrLibaScriptTargetoptionMapper.updateDynam(ivrLibaScriptTargetoption); 
 | 
                    } 
 | 
                    if (CollectionUtils.isEmpty(ivrLibaScriptTargetoption.getDynamiccruxs())) { 
 | 
                        ivrLibaScriptTargetoption.setDynamiccruxsJson(null); 
 | 
                        ivrLibaScriptTargetoptionMapper.updateDynam(ivrLibaScriptTargetoption); 
 | 
                    } 
 | 
  
 | 
                } 
 | 
                if (ivrLibaScriptTargetoption.getIsoperation() != null && ivrLibaScriptTargetoption.getIsoperation() == 3) { 
 | 
                    //删除 
 | 
                    if (ivrLibaScriptTargetoption.getId() == null) { 
 | 
                        log.info("删除失败,问题指标选项id为空"); 
 | 
                    } else { 
 | 
                        Boolean aBoolean = ivrLibaScriptTargetoptionMapper.deleteIvrLibaScriptTargetoptionByTargetoptionid(ivrLibaScriptTargetoption.getId()); 
 | 
                        log.info("aBoolean的值为:{}", aBoolean); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        //对问题标签进行处理 
 | 
        if (CollectionUtils.isNotEmpty(ivrLibaScriptVO.getIvrLibaScriptTagList())) { 
 | 
            for (IvrLibaScriptTag ivrLibaScriptTag : ivrLibaScriptVO.getIvrLibaScriptTagList()) { 
 | 
                ivrLibaScriptTag.setGuid(ivrLibaScriptVO.getGuid()); 
 | 
                ivrLibaScriptTag.setOrgid(ivrLibaScriptVO.getOrgid()); 
 | 
                if (ivrLibaScriptTag.getIsoperation() != null && ivrLibaScriptTag.getIsoperation() == 1) { 
 | 
                    //新增 
 | 
                    ivrLibaScriptTag.setScriptid(ivrLibaScript.getId()); 
 | 
                    ivrLibaScriptTagMapper.insertIvrLibaScriptTag(ivrLibaScriptTag); 
 | 
                } 
 | 
                if (ivrLibaScriptTag.getIsoperation() != null && ivrLibaScriptTag.getIsoperation() == 2) { 
 | 
                    //修改 
 | 
                    ivrLibaScriptTag.setScriptid(ivrLibaScript.getId()); 
 | 
                    ivrLibaScriptTagMapper.updateIvrLibaScriptTag(ivrLibaScriptTag); 
 | 
                } 
 | 
                if (ivrLibaScriptTag.getIsoperation() != null && ivrLibaScriptTag.getIsoperation() == 3) { 
 | 
                    //删除 
 | 
                    if (ivrLibaScriptTag.getId() == null) { 
 | 
                        log.info("删除失败,问题标签id为空"); 
 | 
                    } else { 
 | 
                        ivrLibaScriptTagMapper.deleteIvrLibaScriptTagById(ivrLibaScriptTag.getId()); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return i; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 新增问题话术库 
 | 
     * 
 | 
     * @param ivrLibaScript 问题话术库 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int insertIvrLibaScript(IvrLibaScript ivrLibaScript) { 
 | 
        ivrLibaScript.setCreateTime(DateUtils.getNowDate()); 
 | 
        return ivrLibaScriptMapper.insertIvrLibaScript(ivrLibaScript); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改问题话术库 
 | 
     * 
 | 
     * @param ivrLibaScript 问题话术库 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int updateIvrLibaScript(IvrLibaScript ivrLibaScript) { 
 | 
        ivrLibaScript.setUpdateTime(DateUtils.getNowDate()); 
 | 
        return ivrLibaScriptMapper.updateIvrLibaScript(ivrLibaScript); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 批量删除问题话术库 
 | 
     * 
 | 
     * @param questionids 需要删除的问题话术库主键 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int deleteIvrLibaScriptByQuestionids(String[] questionids) { 
 | 
        Integer i = null; 
 | 
        for (String id : questionids) { 
 | 
            i = ivrLibaScriptMapper.deleteIvrLibaScriptByQuestionid(Integer.valueOf(id)); 
 | 
        } 
 | 
        return i; 
 | 
    } 
 | 
  
 | 
} 
 |