package com.smartor.service.impl;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
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.*;
|
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 java.util.*;
|
|
/**
|
* 模板库Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2023-12-23
|
*/
|
@Slf4j
|
@Service
|
public class IvrLibaTemplateServiceImpl implements IIvrLibaTemplateService {
|
@Autowired
|
private IvrLibaTemplateMapper ivrLibaTemplateMapper;
|
|
@Autowired
|
private IvrLibaTemplateTagMapper ivrLibaTemplateTagMapper;
|
|
@Autowired
|
private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
|
|
@Autowired
|
private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
|
|
@Autowired
|
private TemplateDeptMapper tempDetpRelevanceMapper;
|
|
/**
|
* 查询模板库
|
*
|
* @param ID 模板库主键
|
* @return 模板库
|
*/
|
@Override
|
public IvrLibaTemplate selectIvrLibaTemplateByID(Long ID) {
|
return ivrLibaTemplateMapper.selectIvrLibaTemplateByID(ID);
|
}
|
|
/**
|
* 查询模板库列表
|
*
|
* @param ivrLibaTemplate 模板库
|
* @return 模板库
|
*/
|
@Override
|
public List<IvrLibaTemplate> selectIvrLibaTemplateList(IvrLibaTemplate ivrLibaTemplate) {
|
return ivrLibaTemplateMapper.selectIvrLibaTemplateList(ivrLibaTemplate);
|
}
|
|
/**
|
* 新增模板库
|
*
|
* @param ivrLibaTemplate 模板库
|
* @return 结果
|
*/
|
@Override
|
public int insertIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate) {
|
ivrLibaTemplate.setCreateTime(DateUtils.getNowDate());
|
return ivrLibaTemplateMapper.insertIvrLibaTemplate(ivrLibaTemplate);
|
}
|
|
/**
|
* 修改模板库
|
*
|
* @param ivrLibaTemplate 模板库
|
* @return 结果
|
*/
|
@Override
|
public int updateIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate) {
|
ivrLibaTemplate.setUpdateTime(DateUtils.getNowDate());
|
return ivrLibaTemplateMapper.updateIvrLibaTemplate(ivrLibaTemplate);
|
}
|
|
/**
|
* 批量删除模板库
|
*
|
* @param IDs 需要删除的模板库主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteIvrLibaTemplateByIDs(Long[] IDs) {
|
Integer i = null;
|
for (Long id : IDs) {
|
i = ivrLibaTemplateMapper.deleteIvrLibaTemplateByID(id);
|
}
|
return i;
|
}
|
|
/**
|
* 删除模板库信息
|
*
|
* @param ID 模板库主键
|
* @return 结果
|
*/
|
@Override
|
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) {
|
//新增
|
ivrLibaTemplate.setCreateTime(new Date());
|
ivrLibaTemplateMapper.insertIvrLibaTemplate(ivrLibaTemplate);
|
i = ivrLibaTemplate.getId().intValue();
|
} else if (ivrLibaTemplateVO.getIsoperation() != null && ivrLibaTemplateVO.getIsoperation() == 2) {
|
//修改
|
ivrLibaTemplate.setUpdateTime(new Date());
|
ivrLibaTemplateMapper.updateIvrLibaTemplate(ivrLibaTemplate);
|
i = ivrLibaTemplate.getId().intValue();
|
}
|
log.info("新增或修改模板详情的id为:{}", ivrLibaTemplate.getId());
|
|
//对模板标签进行处理
|
if (CollectionUtils.isNotEmpty(ivrLibaTemplateVO.getIvrLibaTemplateTagList())) {
|
for (IvrLibaTemplateTag ivrLibaTemplateTag : ivrLibaTemplateVO.getIvrLibaTemplateTagList()) {
|
ivrLibaTemplateTag.setGuid(ivrLibaTemplateVO.getGuid());
|
ivrLibaTemplateTag.setOrgid(ivrLibaTemplateVO.getOrgid());
|
if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 1) {
|
//新增
|
ivrLibaTemplateTag.setTemplateid(ivrLibaTemplate.getId());
|
ivrLibaTemplateTag.setCreateTime(new Date());
|
ivrLibaTemplateTagMapper.insertIvrLibaTemplateTag(ivrLibaTemplateTag);
|
} else if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 2) {
|
//修改
|
ivrLibaTemplateTag.setTemplateid(ivrLibaTemplate.getId());
|
ivrLibaTemplateTag.setUploadTime(new Date());
|
ivrLibaTemplateTagMapper.updateIvrLibaTemplateTag(ivrLibaTemplateTag);
|
} else if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 3) {
|
//删除
|
if (ivrLibaTemplateTag.getId() == null) {
|
log.info("删除失败,模板指标id为空");
|
} else {
|
ivrLibaTemplateTag.setUploadTime(new Date());
|
ivrLibaTemplateTagMapper.deleteIvrLibaTemplateTagById(ivrLibaTemplateTag.getId());
|
}
|
}
|
}
|
}
|
|
//对模板话术和选项进行处理(话术表与指标表进行合并了,)
|
if (CollectionUtils.isNotEmpty(ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList())) {
|
for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList()) {
|
ivrLibaTemplateScriptVO.setGuid(ivrLibaTemplateVO.getGuid());
|
ivrLibaTemplateScriptVO.setOrgid(ivrLibaTemplateVO.getOrgid());
|
if (ivrLibaTemplateScriptVO.getIsoperation() != null) {
|
IvrLibaTemplateScript ivrLibaTemplateScript = scriptHandle(ivrLibaTemplate, ivrLibaTemplateScriptVO, ivrLibaTemplateScriptVO.getIsoperation());
|
// dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getId(), ivrLibaTemplateScriptVO.getIsoperation());
|
} else {
|
IvrLibaTemplateScript ivrLibaTemplateScript = scriptHandle(ivrLibaTemplate, ivrLibaTemplateScriptVO, ivrLibaTemplateVO.getIsoperation());
|
// dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getId(), ivrLibaTemplateVO.getIsoperation());
|
}
|
}
|
}
|
|
//对科室进行处理
|
for (TemplateDept tempDetpRelevance : ivrLibaTemplateVO.getTempDetpRelevances()) {
|
if (tempDetpRelevance.getId() == null) {
|
//新增
|
tempDetpRelevance.setTempid(ivrLibaTemplate.getId());
|
tempDetpRelevance.setType(2L);
|
tempDetpRelevance.setCreateTime(new Date());
|
tempDetpRelevanceMapper.insertTemplateDept(tempDetpRelevance);
|
} else {
|
tempDetpRelevance.setUpdateTime(new Date());
|
tempDetpRelevanceMapper.updateTemplateDept(tempDetpRelevance);
|
}
|
}
|
|
return i;
|
}
|
|
private IvrLibaTemplateScript scriptHandle(IvrLibaTemplate ivrLibaTemplate, IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO, Integer isoperation) {
|
IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
|
if (isoperation == 1) {
|
//新增
|
ivrLibaTemplateScript.setTemplateid(ivrLibaTemplate.getId());
|
ivrLibaTemplateScript.setCreateTime(new Date());
|
ivrLibaTemplateScriptMapper.insertIvrLibaTemplateScript(ivrLibaTemplateScript);
|
//对选项目进行处理
|
dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getId(), isoperation);
|
|
} else if (isoperation == 2) {
|
//修改
|
ivrLibaTemplateScript.setTemplateid(ivrLibaTemplate.getId());
|
ivrLibaTemplateScript.setUpdateTime(new Date());
|
ivrLibaTemplateScriptMapper.updateIvrLibaTemplateScript(ivrLibaTemplateScript);
|
//对选项目进行处理
|
dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getId(), isoperation);
|
|
} else if (isoperation == 3) {
|
//删除
|
if (ivrLibaTemplateScriptVO.getId() == null) {
|
log.info("删除失败,模板话术id为空");
|
} else {
|
ivrLibaTemplateScriptVO.setUpdateTime(new Date());
|
ivrLibaTemplateScriptMapper.deleteIvrLibaTemplateScriptByID(ivrLibaTemplateScriptVO.getId());
|
}
|
}
|
return ivrLibaTemplateScript;
|
}
|
|
/**
|
* 选项处理
|
*
|
* @param ivrLibaTemplateTargetoptionList
|
* @param ivrLibaTemplateScript
|
* @param tmpID
|
*/
|
private void dealOption(List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptionList, IvrLibaTemplateScript ivrLibaTemplateScript, Long tmpID, Integer isoperation) {
|
log.info("ivrLibaTemplateScript的值为:{}", ivrLibaTemplateScript);
|
//对模板指标选项进行处理
|
Integer lsIsoperation = isoperation;
|
if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoptionList)) {
|
for (IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption : ivrLibaTemplateTargetoptionList) {
|
if (ivrLibaTemplateTargetoption.getIsoperation() != null) {
|
isoperation = ivrLibaTemplateTargetoption.getIsoperation();
|
} else {
|
isoperation = lsIsoperation;
|
}
|
if (isoperation == 1) {
|
//新增
|
ivrLibaTemplateTargetoption.setTemplateID(tmpID);
|
ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getId());
|
if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoption.getDynamiccruxs()))
|
ivrLibaTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(ivrLibaTemplateTargetoption.getDynamiccruxs()));
|
if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoption.getNodynamiccruxs()))
|
ivrLibaTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrLibaTemplateTargetoption.getNodynamiccruxs()));
|
ivrLibaTemplateTargetOptionMapper.insertIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
|
} else if (isoperation == 2) {
|
//修改
|
ivrLibaTemplateTargetoption.setTemplateID(tmpID);
|
ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getId());
|
if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoption.getDynamiccruxs()))
|
ivrLibaTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(ivrLibaTemplateTargetoption.getDynamiccruxs()));
|
if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoption.getNodynamiccruxs()))
|
ivrLibaTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrLibaTemplateTargetoption.getNodynamiccruxs()));
|
ivrLibaTemplateTargetOptionMapper.updateIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
|
|
|
if (CollectionUtils.isEmpty(ivrLibaTemplateTargetoption.getDynamiccruxs())) {
|
ivrLibaTemplateTargetoption.setDynamiccruxsJson(null);
|
ivrLibaTemplateTargetOptionMapper.updateDynamiccruxs(ivrLibaTemplateTargetoption);
|
}
|
if (CollectionUtils.isEmpty(ivrLibaTemplateTargetoption.getNodynamiccruxs())) {
|
ivrLibaTemplateTargetoption.setNodynamiccruxsJson(null);
|
ivrLibaTemplateTargetOptionMapper.updateDynamiccruxs(ivrLibaTemplateTargetoption);
|
}
|
} else if (isoperation == 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("提供的条件,查询模板详情数据为空");
|
}
|
//定义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.error("ivrLibaTemplateScriptVO的主键id为:{}", ivrLibaTemplateScriptVO.getId());
|
IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();
|
ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getId());
|
List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
|
for (IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption1 : ivrLibaTemplateTargetoptions) {
|
ObjectMapper mapper = new ObjectMapper();
|
if (!StringUtils.isEmpty(ivrLibaTemplateTargetoption1.getDynamiccruxsJson())) {
|
try {
|
ivrLibaTemplateTargetoption1.setDynamiccruxs(mapper.readValue(ivrLibaTemplateTargetoption1.getDynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
if (!StringUtils.isEmpty(ivrLibaTemplateTargetoption1.getNodynamiccruxsJson())) {
|
try {
|
ivrLibaTemplateTargetoption1.setNodynamiccruxs(mapper.readValue(ivrLibaTemplateTargetoption1.getNodynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|
ivrLibaTemplateScriptVO.setIvrLibaScriptTargetoptionList(ivrLibaTemplateTargetoptions);
|
}
|
Collections.sort(ivrLibaTemplateScriptVOS, Comparator.comparing(IvrLibaTemplateScriptVO::getSort));
|
//数据组装
|
templateVO.setIvrLibaTemplateTagList(ivrLibaTemplateTags);
|
templateVO.setIvrLibaTemplateScriptVOList(ivrLibaTemplateScriptVOS);
|
return templateVO;
|
}
|
|
}
|