package com.smartor.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson.JSONArray; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.smartor.domain.SvyLibScript; import com.smartor.domain.SvyLibScriptOption; import com.smartor.domain.SvyLibScriptTag; import com.smartor.mapper.SvyLibScriptMapper; import com.smartor.mapper.SvyLibScriptOptionMapper; import com.smartor.mapper.SvyLibScriptTagMapper; import com.smartor.service.ISvyLibScriptService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 问卷题目Service业务层处理 * * @author ruoyi * @date 2023-03-03 */ @Slf4j @Service public class SvyLibScriptServiceImpl implements ISvyLibScriptService { @Autowired private SvyLibScriptMapper svyLibTopicMapper; @Autowired private SvyLibScriptOptionMapper svyLibScriptOptionMapper; @Autowired private SvyLibScriptTagMapper svyLibScriptTagMapper; /** * 查询问卷题目 * * @param topicid 问卷题目主键 * @return 问卷题目 */ @Override public SvyLibScript selectSvyLibScriptByScriptid(Long topicid) { return svyLibTopicMapper.selectSvyLibScriptByScriptid(topicid); } /** * 查询问卷题目列表 * * @param svyLibTopic 问卷题目 * @return 问卷题目 */ @Override public List selectSvyLibScriptList(SvyLibScript svyLibTopic) { List svyLibScripts = svyLibTopicMapper.selectSvyLibScriptList(svyLibTopic); //获取题目选项 for (int j = 0; j < svyLibScripts.size(); j++) { log.info("问题id为:{}", svyLibScripts.get(j).getId()); if (StringUtils.isNotEmpty(svyLibScripts.get(j).getIcd10Name())) svyLibScripts.get(j).setIcd10NameList(JSONArray.parseArray(svyLibScripts.get(j).getIcd10Name(), String.class)); if (StringUtils.isNotEmpty(svyLibScripts.get(j).getScriptType()) && svyLibScripts.get(j).getScriptType().equals("3") || svyLibScripts.get(j).getId() == null) { //作答题,不需要选项 continue; } else { SvyLibScriptOption svyLibTopicoption = new SvyLibScriptOption(); svyLibTopicoption.setTopicid(svyLibScripts.get(j).getId()); List svyLibTopicoptions = svyLibScriptOptionMapper.selectSvyLibScriptOptionList(svyLibTopicoption); //将查询出的选项目放到题目中 svyLibScripts.get(j).setSvyLibScriptOptions(svyLibTopicoptions); } //获取tag SvyLibScriptTag svyLibScriptTag = new SvyLibScriptTag(); svyLibScriptTag.setScriptid(svyLibScripts.get(j).getId()); List svyLibScriptTags = svyLibScriptTagMapper.selectSvyLibScriptTagList(svyLibScriptTag); svyLibScripts.get(j).setSvyLibScriptTagList(svyLibScriptTags); } return svyLibScripts; } /** * 新增问卷题目 * * @param svyLibTopic 问卷题目 * @return 结果 */ @Override public int insertSvyLibScript(SvyLibScript svyLibTopic) { svyLibTopic.setCreateTime(DateUtils.getNowDate()); return svyLibTopicMapper.insertSvyLibScript(svyLibTopic); } @Transactional(rollbackFor = Exception.class) @Override public Integer saveOrUpdateScript(SvyLibScript svyLibTopic) { Integer i = null; if (CollectionUtils.isNotEmpty(svyLibTopic.getIcd10NameList()) && svyLibTopic.getIcd10NameList().size() > 0) { //将数组转成字符串 svyLibTopic.setIcd10Name(JSON.toJSONString(svyLibTopic.getIcd10NameList())); } //对题目进行处理 if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 1) { //新增 i = svyLibTopicMapper.insertSvyLibScript(svyLibTopic); } else if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 2) { //修改 i = svyLibTopicMapper.updateSvyLibScript(svyLibTopic); } //对题目选项进行处理 if (CollectionUtils.isNotEmpty(svyLibTopic.getSvyLibScriptOptions())) { for (SvyLibScriptOption svyLibTopicoption : svyLibTopic.getSvyLibScriptOptions()) { svyLibTopicoption.setGuid(svyLibTopic.getGuid()); svyLibTopicoption.setOrgid(svyLibTopic.getOrgid()); if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 1) { //新增 svyLibTopicoption.setTopicid(svyLibTopic.getId()); svyLibTopicoption.setCreateTime(new Date()); svyLibScriptOptionMapper.insertSvyLibScriptOption(svyLibTopicoption); } else if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 2) { //修改 svyLibTopicoption.setTopicid(svyLibTopic.getId()); svyLibTopicoption.setUpdateTime(new Date()); svyLibScriptOptionMapper.updateSvyLibScriptOption(svyLibTopicoption); } else if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 3) { //删除 svyLibScriptOptionMapper.deleteSvyLibScriptOptionByOptionid(svyLibTopicoption.getId()); } } } //标签处理 if (CollectionUtils.isNotEmpty(svyLibTopic.getSvyLibScriptTagList())) { for (SvyLibScriptTag svyLibScriptTag : svyLibTopic.getSvyLibScriptTagList()) { svyLibScriptTag.setGuid(svyLibTopic.getGuid()); svyLibScriptTag.setOrgid(svyLibTopic.getOrgid()); if (svyLibScriptTag.getId() == null) { //新增 svyLibScriptTag.setScriptid(svyLibTopic.getId()); svyLibScriptTag.setCreateTime(new Date()); svyLibScriptTagMapper.insertSvyLibScriptTag(svyLibScriptTag); } else if (svyLibScriptTag.getId() != null) { //修改 svyLibScriptTag.setScriptid(svyLibTopic.getId()); svyLibScriptTag.setUpdateTime(new Date()); svyLibScriptTagMapper.updateSvyLibScriptTag(svyLibScriptTag); } } } return i; } /** * 修改问卷题目 * * @param svyLibTopic 问卷题目 * @return 结果 */ @Override public int updateSvyLibScript(SvyLibScript svyLibTopic) { svyLibTopic.setUpdateTime(DateUtils.getNowDate()); return svyLibTopicMapper.updateSvyLibScript(svyLibTopic); } /** * 批量删除问卷题目 * * @param topicids 需要删除的问卷题目主键 * @return 结果 */ @Override public int deleteSvyLibScriptByScriptids(Long[] topicids) { Integer i = null; for (Long topicid : topicids) { i = svyLibTopicMapper.deleteSvyLibScriptByScriptid(topicid); } return i; } /** * 删除问卷题目信息 * * @param topicid 问卷题目主键 * @return 结果 */ @Override public int deleteSvyLibScriptByScriptid(Long topicid) { return svyLibTopicMapper.deleteSvyLibScriptByScriptid(topicid); } }