liusheng
2024-09-24 562a960261b75d70abd65aa10528f09aeece94e8
smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateServiceImpl.java
@@ -1,12 +1,25 @@
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;
/**
@@ -15,11 +28,17 @@
 * @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;
    /**
     * 查询任务问卷模板
@@ -28,8 +47,7 @@
     * @return 任务问卷模板
     */
    @Override
    public SvyTaskTemplate selectSvyTaskTemplateBySvyid(Long svyid)
    {
    public SvyTaskTemplate selectSvyTaskTemplateBySvyid(Long svyid) {
        return svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(svyid);
    }
@@ -40,8 +58,7 @@
     * @return 任务问卷模板
     */
    @Override
    public List<SvyTaskTemplate> selectSvyTaskTemplateList(SvyTaskTemplate svyTaskTemplate)
    {
    public List<SvyTaskTemplate> selectSvyTaskTemplateList(SvyTaskTemplate svyTaskTemplate) {
        return svyTaskTemplateMapper.selectSvyTaskTemplateList(svyTaskTemplate);
    }
@@ -52,8 +69,7 @@
     * @return 结果
     */
    @Override
    public int insertSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate)
    {
    public int insertSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) {
        svyTaskTemplate.setCreateTime(DateUtils.getNowDate());
        return svyTaskTemplateMapper.insertSvyTaskTemplate(svyTaskTemplate);
    }
@@ -65,8 +81,7 @@
     * @return 结果
     */
    @Override
    public int updateSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate)
    {
    public int updateSvyTaskTemplate(SvyTaskTemplate svyTaskTemplate) {
        svyTaskTemplate.setUpdateTime(DateUtils.getNowDate());
        return svyTaskTemplateMapper.updateSvyTaskTemplate(svyTaskTemplate);
    }
@@ -78,8 +93,7 @@
     * @return 结果
     */
    @Override
    public int deleteSvyTaskTemplateBySvyids(Long[] svyids)
    {
    public int deleteSvyTaskTemplateBySvyids(Long[] svyids) {
        return svyTaskTemplateMapper.deleteSvyTaskTemplateBySvyids(svyids);
    }
@@ -90,8 +104,172 @@
     * @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());
                    }
                }
            }
        }
    }
}