package com.smartor.service.impl;
|
|
import com.alibaba.fastjson2.JSON;
|
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.IvrTaskTemplateMapper;
|
import com.smartor.mapper.IvrTaskTemplateScriptMapper;
|
import com.smartor.mapper.IvrTaskTemplateTargetoptionMapper;
|
import com.smartor.mapper.TemplateDeptMapper;
|
import com.smartor.service.IIvrTaskTemplateService;
|
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.Collections;
|
import java.util.Comparator;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 随访任务随访模板库Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2024-05-13
|
*/
|
@Slf4j
|
@Service
|
public class IvrTaskTemplateServiceImpl implements IIvrTaskTemplateService {
|
@Autowired
|
private IvrTaskTemplateMapper ivrTaskTemplateMapper;
|
|
@Autowired
|
private IvrTaskTemplateScriptMapper ivrTaskTemplateScriptMapper;
|
|
@Autowired
|
private IvrTaskTemplateTargetoptionMapper ivrTaskTemplateTargetoptionMapper;
|
|
@Autowired
|
private TemplateDeptMapper templateDeptMapper;
|
|
/**
|
* 查询随访任务随访模板库
|
*
|
* @param ID 随访任务随访模板库主键
|
* @return 随访任务随访模板库
|
*/
|
@Override
|
public IvrTaskTemplate selectIvrTaskTemplateByID(Long ID) {
|
return ivrTaskTemplateMapper.selectIvrTaskTemplateByID(ID);
|
}
|
|
@Override
|
public IvrTaskTemplateVO selectIvrTaskTemplateInfoByID(Long ID) {
|
IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateMapper.selectIvrTaskTemplateByID(ID);
|
IvrTaskTemplateVO ivrTaskTemplateVO = DtoConversionUtils.sourceToTarget(ivrTaskTemplate, IvrTaskTemplateVO.class);
|
IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
|
ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getId());
|
List<IvrTaskTemplateScript> ivrTaskTemplateScripts = ivrTaskTemplateScriptMapper.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
|
List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScripts, IvrTaskTemplateScriptVO.class);
|
for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOS) {
|
IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption = new IvrTaskTemplateTargetoption();
|
ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScriptVO.getId());
|
List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = ivrTaskTemplateTargetoptionMapper.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
|
ObjectMapper mapper = new ObjectMapper();
|
for (int i = 0; i < ivrTaskTemplateTargetoptions.size(); i++) {
|
if (!StringUtils.isEmpty(ivrTaskTemplateTargetoptions.get(i).getNodynamiccruxsJson())) {
|
try {
|
ivrTaskTemplateTargetoptions.get(i).setNodynamiccruxs(mapper.readValue(ivrTaskTemplateTargetoptions.get(i).getNodynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
if (!StringUtils.isEmpty(ivrTaskTemplateTargetoptions.get(i).getDynamiccruxsJson())) {
|
try {
|
ivrTaskTemplateTargetoptions.get(i).setDynamiccruxs(mapper.readValue(ivrTaskTemplateTargetoptions.get(i).getDynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
|
}
|
ivrTaskTemplateVO.setIvrTaskTemplateScriptVOList(ivrTaskTemplateScriptVOS);
|
|
|
return ivrTaskTemplateVO;
|
}
|
|
/**
|
* 查询随访任务随访模板库列表
|
*
|
* @param ivrTaskTemplate 随访任务随访模板库
|
* @return 随访任务随访模板库
|
*/
|
@Override
|
public List<IvrTaskTemplate> selectIvrTaskTemplateList(IvrTaskTemplate ivrTaskTemplate) {
|
return ivrTaskTemplateMapper.selectIvrTaskTemplateList(ivrTaskTemplate);
|
}
|
|
/**
|
* 新增随访任务随访模板库
|
*
|
* @param ivrTaskTemplate 随访任务随访模板库
|
* @return 结果
|
*/
|
@Override
|
public int insertIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate) {
|
ivrTaskTemplate.setCreateTime(DateUtils.getNowDate());
|
return ivrTaskTemplateMapper.insertIvrTaskTemplate(ivrTaskTemplate);
|
}
|
|
@Override
|
public int saveOrUpdateTempScript(IvrTaskTemplateVO ivrTaskTemplateVO) {
|
Integer i = null;
|
IvrTaskTemplate ivrTaskTemplate = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO, IvrTaskTemplate.class);
|
|
if (ivrTaskTemplateVO.getIsoperation() != null && ivrTaskTemplateVO.getIsoperation() == 1) {
|
//传过来的静默时间是秒,需要改成毫秒
|
if (ivrTaskTemplate.getSilencetime() != null)
|
ivrTaskTemplate.setSilencetime(ivrTaskTemplate.getSilencetime() * 1000);
|
|
//新增
|
ivrTaskTemplate.setCreateTime(new Date());
|
insertIvrTaskTemplate(ivrTaskTemplate);
|
i = ivrTaskTemplate.getId().intValue();
|
} else if (ivrTaskTemplateVO.getIsoperation() != null && ivrTaskTemplateVO.getIsoperation() == 2) {
|
//修改
|
ivrTaskTemplate.setUpdateTime(new Date());
|
updateIvrTaskTemplate(ivrTaskTemplate);
|
i = ivrTaskTemplate.getId().intValue();
|
}
|
log.info("新增随访任务随访模板的id为:{}", ivrTaskTemplate.getId());
|
|
//对模板话术和选项进行处理(话术表与指标表进行合并了,)
|
if (CollectionUtils.isNotEmpty(ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList())) {
|
log.error("ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList()是否有数据哈:{}", ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList());
|
for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList()) {
|
ivrTaskTemplateScriptVO.setGuid(ivrTaskTemplateVO.getGuid());
|
ivrTaskTemplateScriptVO.setOrgid(ivrTaskTemplateVO.getOrgid());
|
if (ivrTaskTemplateScriptVO.getIsoperation() != null) {
|
IvrTaskTemplateScript ivrTaskTemplateScript = scriptHandle(ivrTaskTemplate, ivrTaskTemplateScriptVO, ivrTaskTemplateScriptVO.getIsoperation());
|
dealOption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), ivrTaskTemplateScript, ivrTaskTemplate.getId(), ivrTaskTemplateScriptVO.getIsoperation());
|
} else {
|
IvrTaskTemplateScript ivrTaskTemplateScript = scriptHandle(ivrTaskTemplate, ivrTaskTemplateScriptVO, ivrTaskTemplateVO.getIsoperation());
|
dealOption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), ivrTaskTemplateScript, ivrTaskTemplate.getId(), ivrTaskTemplateVO.getIsoperation());
|
}
|
}
|
}
|
return ivrTaskTemplate.getId().intValue();
|
}
|
|
|
/**
|
* 修改随访任务随访模板库
|
*
|
* @param ivrTaskTemplate 随访任务随访模板库
|
* @return 结果
|
*/
|
@Override
|
public int updateIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate) {
|
ivrTaskTemplate.setUpdateTime(DateUtils.getNowDate());
|
return ivrTaskTemplateMapper.updateIvrTaskTemplate(ivrTaskTemplate);
|
}
|
|
/**
|
* 批量删除随访任务随访模板库
|
*
|
* @param IDs 需要删除的随访任务随访模板库主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteIvrTaskTemplateByIDs(Long[] IDs) {
|
if (IDs[0] != null) {
|
IvrTaskTemplate ivrTaskTemplate = selectIvrTaskTemplateByID(IDs[0]);
|
if (StringUtils.isNotEmpty(ivrTaskTemplate.getLongTemp()) && ivrTaskTemplate.getLongTemp().equals("1")) {
|
//如果这个模板是长期任务,则需要删除模板与部门的关联
|
TemplateDept templateDept = new TemplateDept();
|
templateDept.setType(21L);
|
templateDept.setTempid(IDs[0]);
|
templateDeptMapper.deleteTemplateDeptByTemplateId(templateDept);
|
}
|
}
|
return ivrTaskTemplateMapper.deleteIvrTaskTemplateByIDs(IDs);
|
}
|
|
/**
|
* 删除随访任务随访模板库信息
|
*
|
* @param ID 随访任务随访模板库主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteIvrTaskTemplateByID(Long ID) {
|
return ivrTaskTemplateMapper.deleteIvrTaskTemplateByID(ID);
|
}
|
|
|
/**
|
* 查询模板详情根据条件
|
*/
|
@Override
|
public IvrTaskTemplateVO selectInfoByCondition(IvrTaskTemplateVO ivrTaskTemplateVO) {
|
log.info("查询模板详情根据条件的入参为 : {}", ivrTaskTemplateVO);
|
//先根据条件查询问题表信息
|
IvrTaskTemplate ivrTaskTemplate = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO, IvrTaskTemplate.class);
|
List<IvrTaskTemplate> ivrTaskTemplates = selectIvrTaskTemplateList(ivrTaskTemplate);
|
if (CollectionUtils.isEmpty(ivrTaskTemplates)) {
|
log.info("提供的条件,查询模板详情数据为空:{}", ivrTaskTemplates);
|
throw new BaseException("提供的条件,查询模板详情数据为空");
|
}
|
|
log.info("ivrLibaTemplates的查询结果为:{},数量为 : {}", ivrTaskTemplates.get(0), ivrTaskTemplates.size());
|
//定义IvrLibaTemplateVO 用于返参
|
IvrTaskTemplateVO templateVO = DtoConversionUtils.sourceToTarget(ivrTaskTemplates.get(0), IvrTaskTemplateVO.class);
|
//
|
// //获取tag信息
|
// IvrLibaTemplateTag ivrLibaTemplateTag = new IvrLibaTemplateTag();
|
// ivrLibaTemplateTag.setTemplateid(ivrTaskTemplates.get(0).getID());
|
// List<IvrLibaTemplateTag> ivrLibaTemplateTags = ivrLibaTemplateTagMapper.selectIvrLibaTemplateTagList(ivrLibaTemplateTag);
|
|
//查询话术
|
IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
|
ivrTaskTemplateScript.setTemplateID(ivrTaskTemplates.get(0).getId());
|
List<IvrTaskTemplateScript> ivrTaskTemplateScripts = ivrTaskTemplateScriptMapper.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
|
List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScripts, IvrTaskTemplateScriptVO.class);
|
|
//通过话术ID获取选项
|
for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOS) {
|
log.info("ivrLibaTemplateScriptVO的主键id为:{}", ivrTaskTemplateScriptVO.getId());
|
IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption = new IvrTaskTemplateTargetoption();
|
ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScriptVO.getId());
|
List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = ivrTaskTemplateTargetoptionMapper.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
|
for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption1 : ivrTaskTemplateTargetoptions) {
|
ObjectMapper mapper = new ObjectMapper();
|
if (!StringUtils.isEmpty(ivrTaskTemplateTargetoption1.getDynamiccruxs())) {
|
try {
|
ivrTaskTemplateTargetoption1.setDynamiccruxs(mapper.readValue(ivrTaskTemplateTargetoption1.getDynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
if (!StringUtils.isEmpty(ivrTaskTemplateTargetoption1.getNodynamiccruxs())) {
|
try {
|
ivrTaskTemplateTargetoption1.setNodynamiccruxs(mapper.readValue(ivrTaskTemplateTargetoption1.getNodynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|
ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
|
}
|
Collections.sort(ivrTaskTemplateScriptVOS, Comparator.comparing(IvrTaskTemplateScriptVO::getTargetid));
|
//数据组装
|
// templateVO.setIvrTaskTemplateTagList(ivrLibaTemplateTags);
|
templateVO.setIvrTaskTemplateScriptVOList(ivrTaskTemplateScriptVOS);
|
return templateVO;
|
}
|
|
private IvrTaskTemplateScript scriptHandle(IvrTaskTemplate ivrTaskTemplate, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Integer isoperation) {
|
IvrTaskTemplateScript ivrTaskTemplateScript = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScriptVO, IvrTaskTemplateScript.class);
|
|
if (isoperation == 1) {
|
//新增
|
ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getId());
|
ivrTaskTemplateScript.setCreateTime(new Date());
|
ivrTaskTemplateScriptMapper.insertIvrTaskTemplateScript(ivrTaskTemplateScript);
|
ivrTaskTemplateScript.setIsoperation(1);
|
} else if (isoperation == 2) {
|
//修改
|
ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getId());
|
ivrTaskTemplateScript.setUpdateTime(new Date());
|
ivrTaskTemplateScriptMapper.updateIvrTaskTemplateScript(ivrTaskTemplateScript);
|
ivrTaskTemplateScript.setIsoperation(2);
|
|
} else if (isoperation == 3) {
|
//删除
|
if (ivrTaskTemplateScriptVO.getId() == null) {
|
log.info("删除失败,模板话术id为空");
|
} else {
|
ivrTaskTemplateScriptVO.setUpdateTime(new Date());
|
ivrTaskTemplateScriptMapper.deleteIvrTaskTemplateScriptByID(ivrTaskTemplateScriptVO.getId());
|
}
|
}
|
return ivrTaskTemplateScript;
|
}
|
|
private void dealOption(List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptionList, IvrTaskTemplateScript ivrTaskTemplateScript, Long tmpID, Integer isoperation) {
|
log.info("ivrLibaTemplateScript的值为:{}", ivrTaskTemplateScript);
|
Integer lsisoperation = isoperation;
|
//对模板指标选项进行处理
|
if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoptionList)) {
|
for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateTargetoptionList) {
|
if (ivrTaskTemplateTargetoption.getIsoperation() != null) {
|
isoperation = ivrTaskTemplateTargetoption.getIsoperation();
|
} else {
|
isoperation = lsisoperation;
|
}
|
ivrTaskTemplateTargetoption.setGuid(ivrTaskTemplateScript.getGuid());
|
ivrTaskTemplateTargetoption.setOrgid(ivrTaskTemplateScript.getOrgid());
|
if (isoperation == 1) {
|
//新增
|
ivrTaskTemplateTargetoption.setTemplateID(tmpID);
|
ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScript.getId());
|
if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getDynamiccruxs()))
|
ivrTaskTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getDynamiccruxs()));
|
if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getNodynamiccruxs()))
|
ivrTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getNodynamiccruxs()));
|
ivrTaskTemplateTargetoptionMapper.insertIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
|
} else if (isoperation == 2) {
|
//修改
|
ivrTaskTemplateTargetoption.setTemplateID(tmpID);
|
ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScript.getId());
|
if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getDynamiccruxs()))
|
ivrTaskTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getDynamiccruxs()));
|
if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getNodynamiccruxs()))
|
ivrTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getNodynamiccruxs()));
|
ivrTaskTemplateTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
|
} else if (isoperation == 3) {
|
//删除
|
if (ivrTaskTemplateTargetoption.getId() == null) {
|
log.info("删除失败,模板指标选项id为空");
|
} else {
|
ivrTaskTemplateTargetoptionMapper.deleteIvrTaskTemplateTargetoptionById(ivrTaskTemplateTargetoption.getId());
|
}
|
}
|
}
|
}
|
}
|
|
}
|