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.SvyTaskTemplateMapper;
|
import com.smartor.mapper.SvyTaskTemplateScriptMapper;
|
import com.smartor.mapper.SvyTaskTemplateTargetoptionMapper;
|
import com.smartor.service.ISvyTaskTemplateService;
|
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-06-12
|
*/
|
@Slf4j
|
@Service
|
public class SvyTaskTemplateServiceImpl implements ISvyTaskTemplateService {
|
@Autowired
|
private SvyTaskTemplateMapper svyTaskTemplateMapper;
|
|
@Autowired
|
private SvyTaskTemplateScriptMapper svyTaskTemplateScriptMapper;
|
|
@Autowired
|
private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;
|
|
/**
|
* 查询任务问卷模板
|
*
|
* @param svyid 任务问卷模板主键
|
* @return 任务问卷模板
|
*/
|
@Override
|
public SvyTaskTemplate selectSvyTaskTemplateBySvyid(Long svyid) {
|
return svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(svyid);
|
}
|
|
/**
|
* 查询任务问卷模板列表
|
*
|
* @param svyTaskTemplate 任务问卷模板
|
* @return 任务问卷模板
|
*/
|
@Override
|
public List<SvyTaskTemplate> selectSvyTaskTemplateList(SvyTaskTemplate svyTaskTemplate) {
|
return svyTaskTemplateMapper.selectSvyTaskTemplateList(svyTaskTemplate);
|
}
|
|
/**
|
* 新增任务问卷模板
|
*
|
* @param svyTaskTemplate 任务问卷模板
|
* @return 结果
|
*/
|
@Override
|
public int insertSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) {
|
svyTaskTemplate.setCreateTime(DateUtils.getNowDate());
|
return svyTaskTemplateMapper.insertSvyTaskTemplate(svyTaskTemplate);
|
}
|
|
/**
|
* 修改任务问卷模板
|
*
|
* @param svyTaskTemplate 任务问卷模板
|
* @return 结果
|
*/
|
@Override
|
public int updateSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) {
|
svyTaskTemplate.setUpdateTime(DateUtils.getNowDate());
|
return svyTaskTemplateMapper.updateSvyTaskTemplate(svyTaskTemplate);
|
}
|
|
/**
|
* 批量删除任务问卷模板
|
*
|
* @param svyids 需要删除的任务问卷模板主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyTaskTemplateBySvyids(Long[] svyids) {
|
return svyTaskTemplateMapper.deleteSvyTaskTemplateBySvyids(svyids);
|
}
|
|
/**
|
* 删除任务问卷模板信息
|
*
|
* @param svyid 任务问卷模板主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyTaskTemplateBySvyid(Long svyid) {
|
return svyTaskTemplateMapper.deleteSvyTaskTemplateBySvyid(svyid);
|
}
|
|
/**
|
* 新增或修改问题详情
|
*
|
* @param svyTaskTemplateVO
|
* @return
|
*/
|
@Override
|
public Integer saveOrUpdateTemplate(SvyTaskTemplateVO svyTaskTemplateVO) {
|
Integer i = null;
|
SvyTaskTemplate svyTaskTemplate = DtoConversionUtils.sourceToTarget(svyTaskTemplateVO, SvyTaskTemplate.class);
|
if (svyTaskTemplateVO.getIsoperation() != null && svyTaskTemplateVO.getIsoperation() == 1) {
|
//新增
|
svyTaskTemplate.setCreateTime(new Date());
|
svyTaskTemplateMapper.insertSvyTaskTemplate(svyTaskTemplate);
|
i = svyTaskTemplate.getId().intValue();
|
} else if (svyTaskTemplateVO.getIsoperation() != null && svyTaskTemplateVO.getIsoperation() == 2) {
|
//修改
|
svyTaskTemplate.setUpdateTime(new Date());
|
svyTaskTemplateMapper.updateSvyTaskTemplate(svyTaskTemplate);
|
i = svyTaskTemplate.getId().intValue();
|
}
|
log.info("新增或修改问卷任务模板详情的id为:{}", svyTaskTemplate.getId());
|
|
//对模板话术和选项进行处理(话术表与指标表进行合并了,)
|
if (CollectionUtils.isNotEmpty(svyTaskTemplateVO.getSvyTaskTemplateScriptVOS())) {
|
log.error("ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList()是否有数据哈:{}", svyTaskTemplateVO.getSvyTaskTemplateScriptVOS());
|
for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateVO.getSvyTaskTemplateScriptVOS()) {
|
svyTaskTemplateScriptVO.setGuid(svyTaskTemplateVO.getGuid());
|
svyTaskTemplateScriptVO.setOrgid(svyTaskTemplateVO.getOrgid());
|
if (svyTaskTemplateScriptVO.getIsoperation() != null) {
|
SvyTaskTemplateScript svyTaskTemplateScript = scriptHandle(svyTaskTemplate, svyTaskTemplateScriptVO, svyTaskTemplateScriptVO.getIsoperation());
|
dealOption(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions(), svyTaskTemplateScript, svyTaskTemplate.getId(), svyTaskTemplateScriptVO.getIsoperation());
|
} else {
|
SvyTaskTemplateScript svyTaskTemplateScript = scriptHandle(svyTaskTemplate, svyTaskTemplateScriptVO, svyTaskTemplateVO.getIsoperation());
|
dealOption(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions(), svyTaskTemplateScript, svyTaskTemplate.getId(), svyTaskTemplateVO.getIsoperation());
|
}
|
}
|
}
|
return i;
|
}
|
|
|
/**
|
* 查询模板详情根据条件
|
*/
|
@Override
|
public SvyTaskTemplateVO selectInfoByCondition(SvyTaskTemplateVO svyTaskTemplateVO) {
|
log.info("selectInfoByCondition查询模板详情根据条件的入参为 : {}", svyTaskTemplateVO);
|
//先根据条件查询问题表信息
|
SvyTaskTemplate svyTaskTemplate = DtoConversionUtils.sourceToTarget(svyTaskTemplateVO, SvyTaskTemplate.class);
|
List<SvyTaskTemplate> svyTaskTemplates = selectSvyTaskTemplateList(svyTaskTemplate);
|
if (CollectionUtils.isEmpty(svyTaskTemplates)) {
|
log.info("模板信息提供的条件,查询模板详情数据为空:{}", svyTaskTemplates);
|
throw new BaseException("模板信息提供的条件,查询模板详情数据为空");
|
}
|
|
log.info("svyLibaTemplates的查询结果为:{},数量为 : {}", svyTaskTemplates.get(0), svyTaskTemplates.size());
|
//定义IvrLibaTemplateVO 用于返参
|
SvyTaskTemplateVO templateVO = DtoConversionUtils.sourceToTarget(svyTaskTemplates.get(0), SvyTaskTemplateVO.class);
|
|
//查询话术
|
SvyTaskTemplateScript svyTaskTemplateScript = new SvyTaskTemplateScript();
|
svyTaskTemplateScript.setTemplateID(svyTaskTemplates.get(0).getId());
|
List<SvyTaskTemplateScript> svyTaskTemplateScripts = svyTaskTemplateScriptMapper.selectSvyTaskTemplateScriptList(svyTaskTemplateScript);
|
List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyTaskTemplateScripts, SvyTaskTemplateScriptVO.class);
|
|
//通过话术ID获取选项
|
for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateScriptVOS) {
|
log.info("svyLibaTemplateScriptVO的主键id为:{}", svyTaskTemplateScriptVO.getId());
|
SvyTaskTemplateTargetoption svyTaskTemplateTargetoption = new SvyTaskTemplateTargetoption();
|
svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScriptVO.getId());
|
List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateTargetoptionMapper.selectSvyTaskTemplateTargetoptionList(svyTaskTemplateTargetoption);
|
for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption1 : svyTaskTemplateTargetoptions) {
|
ObjectMapper mapper = new ObjectMapper();
|
if (!StringUtils.isEmpty(svyTaskTemplateTargetoption1.getDynamiccruxs())) {
|
try {
|
svyTaskTemplateTargetoption1.setDynamiccruxs(mapper.readValue(svyTaskTemplateTargetoption1.getDynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
if (!StringUtils.isEmpty(svyTaskTemplateTargetoption1.getNodynamiccruxs())) {
|
try {
|
svyTaskTemplateTargetoption1.setNodynamiccruxs(mapper.readValue(svyTaskTemplateTargetoption1.getNodynamiccruxsJson(), List.class));
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|
svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
|
}
|
Collections.sort(svyTaskTemplateScriptVOS, Comparator.comparing(SvyTaskTemplateScriptVO::getTargetid));
|
//数据组装
|
templateVO.setSvyTaskTemplateScriptVOS(svyTaskTemplateScriptVOS);
|
return templateVO;
|
}
|
|
|
private SvyTaskTemplateScript scriptHandle(SvyTaskTemplate svyTaskTemplate, SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Integer isoperation) {
|
SvyTaskTemplateScript svyTaskTemplateScript = DtoConversionUtils.sourceToTarget(svyTaskTemplateScriptVO, SvyTaskTemplateScript.class);
|
if (isoperation == 1) {
|
//新增
|
svyTaskTemplateScript.setTemplateID(svyTaskTemplate.getId());
|
svyTaskTemplateScript.setCreateTime(new Date());
|
svyTaskTemplateScriptMapper.insertSvyTaskTemplateScript(svyTaskTemplateScript);
|
svyTaskTemplateScript.setIsoperation(1);
|
} else if (isoperation == 2) {
|
//修改
|
svyTaskTemplateScript.setTemplateID(svyTaskTemplate.getId());
|
svyTaskTemplateScript.setUpdateTime(new Date());
|
svyTaskTemplateScriptMapper.updateSvyTaskTemplateScript(svyTaskTemplateScript);
|
svyTaskTemplateScript.setIsoperation(2);
|
} else if (isoperation == 3) {
|
if (svyTaskTemplateScriptVO.getId() == null) {
|
log.info("删除失败,模板话术id为空");
|
} else {
|
svyTaskTemplateScriptVO.setUpdateTime(new Date());
|
svyTaskTemplateScriptMapper.deleteSvyTaskTemplateScriptByID(svyTaskTemplateScriptVO.getId());
|
}
|
}
|
return svyTaskTemplateScript;
|
}
|
|
private void dealOption(List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions, SvyTaskTemplateScript svyTaskTemplateScript, Long tmpID, Integer isoperation) {
|
log.info("svyTaskTemplateScript的值为:{}", svyTaskTemplateScript);
|
Integer lsIsoperation = isoperation;
|
//对模板指标选项进行处理
|
if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoptions)) {
|
for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateTargetoptions) {
|
// 如果选项本身的operation不为空,就用自己的;不然,就用传过来的
|
if (svyTaskTemplateTargetoption.getIsoperation() != null) {
|
isoperation = svyTaskTemplateTargetoption.getIsoperation();
|
} else {
|
isoperation = lsIsoperation;
|
}
|
if (isoperation == 1) {
|
//新增
|
svyTaskTemplateTargetoption.setTemplateID(tmpID);
|
svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScript.getId());
|
if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoption.getDynamiccruxs()))
|
svyTaskTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(svyTaskTemplateTargetoption.getDynamiccruxs()));
|
if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoption.getNodynamiccruxs()))
|
svyTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(svyTaskTemplateTargetoption.getNodynamiccruxs()));
|
svyTaskTemplateTargetoptionMapper.insertSvyTaskTemplateTargetoption(svyTaskTemplateTargetoption);
|
} else if (isoperation == 2) {
|
//修改
|
svyTaskTemplateTargetoption.setTemplateID(tmpID);
|
svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScript.getId());
|
if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoption.getDynamiccruxs()))
|
svyTaskTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(svyTaskTemplateTargetoption.getDynamiccruxs()));
|
if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoption.getNodynamiccruxs()))
|
svyTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(svyTaskTemplateTargetoption.getNodynamiccruxs()));
|
svyTaskTemplateTargetoptionMapper.updateSvyTaskTemplateTargetoption(svyTaskTemplateTargetoption);
|
} else if (isoperation == 3) {
|
//删除
|
if (svyTaskTemplateTargetoption.getId() == null) {
|
log.info("删除失败,模板指标选项id为空");
|
} else {
|
svyTaskTemplateTargetoptionMapper.deleteSvyTaskTemplateTargetoptionById(svyTaskTemplateTargetoption.getId());
|
}
|
}
|
}
|
}
|
}
|
}
|