package com.smartor.service.impl;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.google.gson.Gson;
|
import com.ruoyi.common.exception.base.BaseException;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DtoConversionUtils;
|
import com.smartor.domain.*;
|
import com.smartor.mapper.SvyTaskSingleMapper;
|
import com.smartor.service.ISvyTaskService;
|
import com.smartor.service.ISvyTaskSingleService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 单一任务(问卷)Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2024-06-12
|
*/
|
@Slf4j
|
@Service
|
public class SvyTaskSingleServiceImpl implements ISvyTaskSingleService {
|
@Autowired
|
private SvyTaskSingleMapper svyTaskSingleMapper;
|
|
@Autowired
|
private ISvyTaskService svyTaskService;
|
|
/**
|
* 查询单一任务(问卷)
|
*
|
* @param id 单一任务(问卷)主键
|
* @return 单一任务(问卷)
|
*/
|
@Override
|
public SvyTaskSingle selectSvyTaskSingleById(Long id) {
|
return svyTaskSingleMapper.selectSvyTaskSingleById(id);
|
}
|
|
/**
|
* 查询单一任务(问卷)列表
|
*
|
* @param svyTaskSingle 单一任务(问卷)
|
* @return 单一任务(问卷)
|
*/
|
@Override
|
public List<SvyTaskSingle> selectSvyTaskSingleList(SvyTaskSingle svyTaskSingle) {
|
return svyTaskSingleMapper.selectSvyTaskSingleList(svyTaskSingle);
|
}
|
|
/**
|
* 新增单一任务(问卷)
|
*
|
* @param svyTaskSingle 单一任务(问卷)
|
* @return 结果
|
*/
|
@Override
|
public int insertSvyTaskSingle(SvyTaskSingle svyTaskSingle) {
|
svyTaskSingle.setCreateTime(DateUtils.getNowDate());
|
return svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle);
|
}
|
|
/**
|
* 修改单一任务(问卷)
|
*
|
* @param svyTaskSingle 单一任务(问卷)
|
* @return 结果
|
*/
|
@Override
|
public int updateSvyTaskSingle(SvyTaskSingle svyTaskSingle) {
|
svyTaskSingle.setUpdateTime(DateUtils.getNowDate());
|
return svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle);
|
}
|
|
/**
|
* 批量删除单一任务(问卷)
|
*
|
* @param ids 需要删除的单一任务(问卷)主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyTaskSingleByIds(Long[] ids) {
|
return svyTaskSingleMapper.deleteSvyTaskSingleByIds(ids);
|
}
|
|
/**
|
* 删除单一任务(问卷)信息
|
*
|
* @param id 单一任务(问卷)主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyTaskSingleById(Long id) {
|
return svyTaskSingleMapper.deleteSvyTaskSingleById(id);
|
}
|
|
@Override
|
public int insertOrUpdateSvyTask(SvyTaskVO svyTaskVO) {
|
if (ObjectUtils.isEmpty(svyTaskVO)) {
|
log.info("问卷任务入参为空,请检查入参");
|
throw new BaseException("问卷任务入参为空,请检查入参");
|
}
|
Integer integer = 1;
|
SvyTask svyTask = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTask.class);
|
svyTask.setTextParam(JSON.toJSONString(svyTaskVO.getTextParamMap()));
|
if (svyTaskVO.getIsoperation() != null && svyTaskVO.getIsoperation() == 1) {
|
//往任务表中,新增任务
|
if (ObjectUtils.isNotEmpty(svyTaskVO.getSendTimeSlot()))
|
svyTask.setSendTimeSlot(JSON.toJSONString(svyTaskVO.getSendTimeSlot()));
|
if (svyTask.getSendState() == null) svyTask.setSendState("1");
|
svyTask.setTemplateid(svyTaskVO.getLibtemplateid());
|
svyTaskService.insertSvyTask(svyTask);
|
|
//将任务信息放到服务表中
|
SvyTaskSingle svyTaskSingle = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTaskSingle.class);
|
svyTaskSingle.setTaskid(svyTask.getTaskid());
|
//新增
|
if (CollectionUtils.isNotEmpty(svyTaskVO.getPatTaskRelevances())) {
|
for (PatTaskRelevance patTaskRelevance : svyTaskVO.getPatTaskRelevances()) {
|
//将任务信息新增到随访服务表中
|
svyTaskSingle.setSendname(patTaskRelevance.getName());
|
svyTaskSingle.setAge(patTaskRelevance.getAge());
|
svyTaskSingle.setSfzh(patTaskRelevance.getSfzh());
|
svyTaskSingle.setPhone(patTaskRelevance.getPhone());
|
svyTaskSingle.setAddr(patTaskRelevance.getAddr());
|
svyTaskSingle.setPatid(patTaskRelevance.getPatid());
|
svyTaskSingle.setSendstate(1L);
|
svyTaskSingle.setHospType(patTaskRelevance.getHospType());
|
svyTaskSingle.setCreateTime(DateUtils.getNowDate());
|
svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle);
|
integer = svyTaskSingle.getId().intValue();
|
}
|
}
|
|
} else if (svyTaskVO.getIsoperation() != null && svyTaskVO.getIsoperation() == 2) {
|
//任务修改
|
if (ObjectUtils.isNotEmpty(svyTaskVO.getSendTimeSlot()))
|
svyTask.setSendTimeSlot(JSON.toJSONString(svyTaskVO.getSendTimeSlot()));
|
//修改操作,需要将stopState状态+1
|
SvyTask svyTask1 = svyTaskService.selectSvyTaskByTaskid(svyTaskVO.getTaskid());
|
svyTask.setStopState(svyTask1.getStopState() + 1);
|
svyTask.setTemplateid(svyTaskVO.getLibtemplateid());
|
svyTaskService.updateSvyTask(svyTask);
|
|
if (CollectionUtils.isNotEmpty(svyTaskVO.getPatTaskRelevances())) {
|
for (PatTaskRelevance patTaskRelevance : svyTaskVO.getPatTaskRelevances()) {
|
|
SvyTaskSingle svyTaskSingle = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTaskSingle.class);
|
svyTaskSingle.setSendname(patTaskRelevance.getName());
|
svyTaskSingle.setAge(patTaskRelevance.getAge());
|
svyTaskSingle.setSfzh(patTaskRelevance.getSfzh());
|
svyTaskSingle.setPhone(patTaskRelevance.getPhone());
|
svyTaskSingle.setAddr(patTaskRelevance.getAddr());
|
svyTaskSingle.setPatid(patTaskRelevance.getPatid());
|
svyTaskSingle.setHospType(patTaskRelevance.getHospType());
|
svyTaskSingle.setCreateTime(DateUtils.getNowDate());
|
svyTaskSingle.setTextParam(new Gson().toJson(svyTaskVO.getTextParamMap()));
|
if (patTaskRelevance.getIsoperation() != null) {
|
optionHandle(svyTaskSingle, svyTaskVO.getTaskid(), patTaskRelevance.getIsoperation(), patTaskRelevance.getPatid());
|
} else if (patTaskRelevance.getIsoperation() == null) {
|
optionHandle(svyTaskSingle, svyTaskVO.getTaskid(), svyTaskVO.getIsoperation(), patTaskRelevance.getPatid());
|
}
|
integer = svyTaskSingle.getTaskid().intValue();
|
}
|
}
|
}
|
return integer;
|
}
|
|
@Override
|
public SvyTaskVO queryTaskByCondition(SvyTaskSingle svyTaskSingle) {
|
//定义患者与单一任务关联表集合
|
List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
|
List<SvyTaskSingle> list = selectSvyTaskSingleList(svyTaskSingle);
|
if (CollectionUtils.isEmpty(list) || list.size() == 0) {
|
return new SvyTaskVO();
|
}
|
SvyTask svyTask = svyTaskService.selectSvyTaskByTaskid(svyTaskSingle.getTaskid());
|
//将查出来的数据倒入ivrTasksingleVO中
|
SvyTaskVO svyTaskVO = DtoConversionUtils.sourceToTarget(list.get(0), SvyTaskVO.class);
|
svyTaskVO.setShowDate(svyTask.getShowDate());
|
svyTaskVO.setShowTimeMorn(svyTask.getShowTimeMorn());
|
svyTaskVO.setShowTimeNoon(svyTask.getShowTimeNoon());
|
svyTaskVO.setShowTimeNight(svyTask.getShowTimeNight());
|
svyTaskVO.setPreachform(svyTask.getPreachform());
|
String sendTimeSlot = svyTask.getSendTimeSlot();
|
ObjectMapper objectMapper = new ObjectMapper();
|
try {
|
//获取到发送时间的集合
|
if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {
|
List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);
|
svyTaskVO.setSendTimeSlot(taskSendTimeVOList);
|
svyTaskVO.setSendType(svyTask.getSendType());
|
}
|
//文本变量参数
|
if (com.ruoyi.common.utils.StringUtils.isNotEmpty(svyTask.getTextParam())) {
|
Map<String, Map<String, String>> textParam = objectMapper.readValue(svyTask.getTextParam(), Map.class);
|
svyTaskVO.setTextParam(textParam);
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
|
for (SvyTaskSingle svyTaskSingle1 : list) {
|
PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
|
if (!svyTaskSingle1.getHospType().equals("2")) {
|
log.info("随访查询不为出院,{}", svyTaskSingle1.getHospType());
|
//获取到患者信息,并放入到集合中
|
patTaskRelevance.setName(svyTaskSingle1.getSendname());
|
patTaskRelevance.setAge(svyTaskSingle1.getAge());
|
patTaskRelevance.setSfzh(svyTaskSingle1.getSfzh());
|
patTaskRelevance.setPhone(svyTaskSingle1.getPhone());
|
patTaskRelevance.setAddr(svyTaskSingle1.getAddr());
|
patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname());
|
patTaskRelevance.setPatid(svyTaskSingle1.getPatid());
|
patTaskRelevance.setSendStatus(svyTaskSingle1.getSendstate());
|
patTaskRelevances.add(patTaskRelevance);
|
}
|
if (svyTaskSingle1.getHospType().equals("2")) {
|
log.info("随访查询为出院,{}", svyTaskSingle1.getHospType());
|
patTaskRelevance.setName(svyTaskSingle1.getSendname());
|
patTaskRelevance.setAge(svyTaskSingle1.getAge());
|
patTaskRelevance.setSfzh(svyTaskSingle1.getSfzh());
|
patTaskRelevance.setPhone(svyTaskSingle1.getPhone());
|
patTaskRelevance.setAddr(svyTaskSingle1.getAddr());
|
patTaskRelevance.setDeptName(svyTaskSingle1.getDeptname());
|
patTaskRelevance.setBedNo(svyTaskSingle1.getBedno());
|
patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname());
|
patTaskRelevance.setPatid(svyTaskSingle1.getPatid());
|
patTaskRelevance.setSendStatus(svyTaskSingle1.getSendstate());
|
patTaskRelevances.add(patTaskRelevance);
|
}
|
}
|
|
svyTaskVO.setPatTaskRelevances(patTaskRelevances);
|
return svyTaskVO;
|
}
|
|
private void optionHandle(SvyTaskSingle svyTaskSingle, Long taskId, Integer isoperation, Long patid) {
|
if (isoperation == 1) {
|
svyTaskSingle.setSendstate(1L);
|
svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle);
|
} else if (isoperation == 2) svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle);
|
else if (isoperation == 3) svyTaskSingleMapper.deleteSvyTaskcallByCondition(taskId, patid);
|
}
|
}
|