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