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;
|
}
|
|
}
|