| | |
| | | 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.smartor.domain.SvyTaskTemplate; |
| | | 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; |
| | | |
| | | /** |
| | |
| | | * @author ruoyi |
| | | * @date 2024-06-12 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class SvyTaskTemplateServiceImpl implements ISvyTaskTemplateService |
| | | { |
| | | public class SvyTaskTemplateServiceImpl implements ISvyTaskTemplateService { |
| | | @Autowired |
| | | private SvyTaskTemplateMapper svyTaskTemplateMapper; |
| | | |
| | | @Autowired |
| | | private SvyTaskTemplateScriptMapper svyTaskTemplateScriptMapper; |
| | | |
| | | @Autowired |
| | | private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper; |
| | | |
| | | /** |
| | | * 查询任务问卷模板 |
| | |
| | | * @return 任务问卷模板 |
| | | */ |
| | | @Override |
| | | public SvyTaskTemplate selectSvyTaskTemplateBySvyid(Long svyid) |
| | | { |
| | | public SvyTaskTemplate selectSvyTaskTemplateBySvyid(Long svyid) { |
| | | return svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(svyid); |
| | | } |
| | | |
| | |
| | | * @return 任务问卷模板 |
| | | */ |
| | | @Override |
| | | public List<SvyTaskTemplate> selectSvyTaskTemplateList(SvyTaskTemplate svyTaskTemplate) |
| | | { |
| | | public List<SvyTaskTemplate> selectSvyTaskTemplateList(SvyTaskTemplate svyTaskTemplate) { |
| | | return svyTaskTemplateMapper.selectSvyTaskTemplateList(svyTaskTemplate); |
| | | } |
| | | |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int insertSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) |
| | | { |
| | | public int insertSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) { |
| | | svyTaskTemplate.setCreateTime(DateUtils.getNowDate()); |
| | | return svyTaskTemplateMapper.insertSvyTaskTemplate(svyTaskTemplate); |
| | | } |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int updateSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) |
| | | { |
| | | public int updateSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) { |
| | | svyTaskTemplate.setUpdateTime(DateUtils.getNowDate()); |
| | | return svyTaskTemplateMapper.updateSvyTaskTemplate(svyTaskTemplate); |
| | | } |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int deleteSvyTaskTemplateBySvyids(Long[] svyids) |
| | | { |
| | | public int deleteSvyTaskTemplateBySvyids(Long[] svyids) { |
| | | return svyTaskTemplateMapper.deleteSvyTaskTemplateBySvyids(svyids); |
| | | } |
| | | |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int deleteSvyTaskTemplateBySvyid(Long svyid) |
| | | { |
| | | 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()) { |
| | | 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()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |