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.core.redis.RedisCache;
|
import com.ruoyi.common.enums.HospTypeEnum;
|
import com.ruoyi.common.enums.ServiceTaskTypeEnum;
|
import com.ruoyi.common.exception.base.BaseException;
|
import com.ruoyi.common.utils.*;
|
import com.smartor.common.LyraTokenUtil;
|
import com.smartor.domain.*;
|
import com.smartor.mapper.BaseOrganizationMapper;
|
import com.smartor.mapper.ServiceSubtaskMapper;
|
import com.smartor.service.IServiceTaskService;
|
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.io.IOException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* 单一任务(问卷)Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2024-06-12
|
*/
|
@Slf4j
|
@Service
|
public class SvyTaskSingleServiceImpl implements ISvyTaskSingleService {
|
|
@Autowired
|
private ServiceSubtaskMapper serviceSubtaskMapper;
|
|
@Autowired
|
private IServiceTaskService iServiceTaskService;
|
|
@Autowired
|
private BaseOrganizationMapper baseOrganizationMapper;
|
|
@Autowired
|
private RedisCache redisCache;
|
|
|
@Override
|
public int insertOrUpdateSvyTask(ServiceTaskVO serviceTaskVO) {
|
if (ObjectUtils.isEmpty(serviceTaskVO)) {
|
log.info("问卷任务入参为空,请检查入参");
|
throw new BaseException("问卷任务入参为空,请检查入参");
|
}
|
Integer integer = 1;
|
ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
|
serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
|
if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {
|
//往任务表中,新增任务
|
if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
|
serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
|
if (serviceTask.getSendState() == null) serviceTask.setSendState(1L);
|
serviceTask.setTemplateid(Long.valueOf(serviceTaskVO.getLibtemplateid()));
|
iServiceTaskService.insertServiceTask(serviceTask);
|
|
//将任务信息放到服务表中
|
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
|
serviceSubtask.setTaskid(serviceTask.getTaskid());
|
//新增
|
if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
|
for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
|
//将任务信息新增到随访服务表中
|
serviceSubtask.setSendname(patTaskRelevance.getName());
|
serviceSubtask.setAge(patTaskRelevance.getAge());
|
serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
|
serviceSubtask.setPhone(patTaskRelevance.getPhone());
|
serviceSubtask.setAddr(patTaskRelevance.getAddr());
|
serviceSubtask.setPatid(patTaskRelevance.getPatid());
|
serviceSubtask.setSendstate(1L);
|
serviceSubtask.setHospType(patTaskRelevance.getHospType());
|
serviceSubtask.setCreateTime(DateUtils.getNowDate());
|
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
|
integer = serviceSubtask.getId().intValue();
|
}
|
}
|
|
} else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
|
//任务修改
|
if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
|
serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
|
//修改操作,需要将stopState状态+1
|
ServiceTask serviceTask2 = iServiceTaskService.selectServiceTaskByTaskid(serviceTaskVO.getTaskid());
|
// serviceTask2.setStopState(serviceTask.getStopState() + 1);
|
serviceTask2.setTemplateid(Long.valueOf(serviceTaskVO.getLibtemplateid()));
|
iServiceTaskService.updateServiceTask(serviceTask2);
|
|
//获取到该任务所有的服务,并从队列里删除
|
ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
|
serviceSubtaskVO.setTaskid(serviceTask2.getTaskid());
|
serviceSubtaskVO.setSendstate(2L);
|
List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
|
serviceSubtaskVO.setSendstate(1L);
|
List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
|
if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
|
if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);
|
} else {
|
if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;
|
}
|
if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
|
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
|
log.error("insertOrUpdateSvyTask需要移除的subId为:{}", serviceSubtask.getId().toString());
|
serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
|
redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
|
redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
|
redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
|
redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
|
redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
|
redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
|
}
|
}
|
|
|
if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
|
for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
|
|
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
|
serviceSubtask.setSendname(patTaskRelevance.getName());
|
serviceSubtask.setAge(patTaskRelevance.getAge());
|
serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
|
serviceSubtask.setPhone(patTaskRelevance.getPhone());
|
serviceSubtask.setAddr(patTaskRelevance.getAddr());
|
serviceSubtask.setPatid(patTaskRelevance.getPatid());
|
serviceSubtask.setHospType(patTaskRelevance.getHospType());
|
serviceSubtask.setCreateTime(DateUtils.getNowDate());
|
serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
|
if (patTaskRelevance.getIsoperation() != null) {
|
optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), patTaskRelevance.getIsoperation(), patTaskRelevance.getPatid());
|
} else if (patTaskRelevance.getIsoperation() == null) {
|
optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), serviceTaskVO.getIsoperation(), patTaskRelevance.getPatid());
|
}
|
integer = serviceSubtask.getTaskid().intValue();
|
}
|
}
|
}
|
return integer;
|
}
|
|
@Override
|
public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
|
//定义患者与单一任务关联表集合
|
List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
|
ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
|
serviceSubtaskVO.setTaskid(serviceSubtask.getTaskid());
|
List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
|
if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {
|
return new ServiceTaskVO();
|
}
|
ServiceTask serviceTask = iServiceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
|
//将查出来的数据倒入ivrTasksingleVO中
|
ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(selectServiceSubtaskList.get(0), ServiceTaskVO.class);
|
serviceTaskVO.setShowDate(serviceTask.getShowDate());
|
serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());
|
serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());
|
serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());
|
serviceTaskVO.setPreachform(serviceTask.getPreachform());
|
String sendTimeSlot = serviceTask.getSendTimeSlot();
|
ObjectMapper objectMapper = new ObjectMapper();
|
try {
|
//获取到发送时间的集合
|
if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {
|
List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);
|
serviceTaskVO.setSendTimeslot(taskSendTimeVOList);
|
serviceTaskVO.setSendType(serviceTask.getSendType());
|
}
|
//文本变量参数
|
if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {
|
Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
|
serviceTaskVO.setTextParam(textParam);
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
|
for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {
|
PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
|
if (!serviceSubtask1.getHospType().equals("2")) {
|
log.info("随访查询不为出院,{}", serviceSubtask1.getHospType());
|
//获取到患者信息,并放入到集合中
|
patTaskRelevance.setName(serviceSubtask1.getSendname());
|
patTaskRelevance.setAge(serviceSubtask1.getAge());
|
patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
|
patTaskRelevance.setPhone(serviceSubtask1.getPhone());
|
patTaskRelevance.setAddr(serviceSubtask1.getAddr());
|
patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
|
patTaskRelevance.setPatid(serviceSubtask1.getPatid());
|
patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
|
patTaskRelevances.add(patTaskRelevance);
|
}
|
if (serviceSubtask1.getHospType().equals("2")) {
|
log.info("随访查询为出院,{}", serviceSubtask1.getHospType());
|
patTaskRelevance.setName(serviceSubtask1.getSendname());
|
patTaskRelevance.setAge(serviceSubtask1.getAge());
|
patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
|
patTaskRelevance.setPhone(serviceSubtask1.getPhone());
|
patTaskRelevance.setAddr(serviceSubtask1.getAddr());
|
patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
|
patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
|
patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
|
patTaskRelevance.setPatid(serviceSubtask1.getPatid());
|
patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
|
patTaskRelevances.add(patTaskRelevance);
|
}
|
}
|
|
serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
|
return serviceTaskVO;
|
}
|
|
private void optionHandle(ServiceSubtask serviceSubtask, Long taskId, Integer isoperation, Long patid) {
|
if (isoperation == 1) {
|
serviceSubtask.setSendstate(1L);
|
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
|
} else if (isoperation == 2) serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
|
else if (isoperation == 3) serviceSubtaskMapper.deleteServiceSubtaskByCondition(taskId, patid);
|
}
|
|
@Override
|
public int insertTaskInfo(ServiceTaskInfo serviceTaskVO) {
|
if (ObjectUtils.isEmpty(serviceTaskVO)) {
|
log.info("新增任务入参为空,请检查入参");
|
throw new BaseException("新增任务入参为空,请检查入参");
|
}
|
//将任务信息放到服务表中
|
ServiceSubtask serviceSubtask = new ServiceSubtask();
|
serviceSubtask.setTaskGuid(serviceTaskVO.getTaskguid());
|
String type = "0";
|
if (StringUtils.isNotEmpty(serviceTaskVO.getServicetype()))
|
type = ServiceTaskTypeEnum.getDescByCode(serviceTaskVO.getServicetype());
|
serviceSubtask.setServiceType(type);
|
//第三方传过来的,直接统一定为问卷
|
serviceSubtask.setType("2");
|
serviceSubtask.setLabelstatus(serviceTaskVO.getTaskstate());
|
serviceSubtask.setTaskName(serviceTaskVO.getTaskname());
|
serviceSubtask.setTaskDesc(serviceTaskVO.getTaskdesc());
|
//第三方传过来的,直接统一定为"人工"
|
serviceSubtask.setPreachform("1");
|
serviceSubtask.setCreateBy(serviceTaskVO.getCreateBy());
|
serviceSubtask.setCreateTime(serviceTaskVO.getCreateTime());
|
serviceSubtask.setOperatorNo(serviceTaskVO.getOperatorno());
|
serviceSubtask.setRemark(serviceTaskVO.getRemark());
|
serviceSubtask.setOperator(serviceTaskVO.getOperatorname());
|
serviceSubtask.setEndtime(serviceTaskVO.getFinishtime());
|
serviceSubtask.setResult(serviceTaskVO.getResult());
|
serviceSubtask.setSuggest(serviceTaskVO.getSuggest());
|
serviceSubtask.setDelFlag(serviceTaskVO.getDelflag());
|
serviceSubtask.setOrgid(serviceTaskVO.getOrgguid());
|
serviceSubtask.setPatguid(serviceTaskVO.getPatguid());
|
serviceSubtask.setSendname(serviceTaskVO.getPatname());
|
if (StringUtils.isNotEmpty(serviceTaskVO.getPatsex()) && serviceTaskVO.getPatsex().equals("男"))
|
serviceSubtask.setSex(1L);
|
if (StringUtils.isNotEmpty(serviceTaskVO.getPatsex()) && serviceTaskVO.getPatsex().equals("女"))
|
serviceSubtask.setSex(2L);
|
serviceSubtask.setAge(serviceTaskVO.getPatage());
|
serviceSubtask.setSfzh(serviceTaskVO.getPatidno());
|
serviceSubtask.setPhone(serviceTaskVO.getPatphone());
|
serviceSubtask.setAddr(serviceTaskVO.getPataddr());
|
serviceSubtask.setWechat(serviceTaskVO.getPatopenid());
|
serviceSubtask.setInhospno(serviceTaskVO.getInhosno());
|
String hosptype = "-1";
|
hosptype = HospTypeEnum.getDescByCode(serviceTaskVO.getVisittype());
|
serviceSubtask.setHospType(hosptype);
|
serviceSubtask.setHospno(serviceTaskVO.getVisitno());
|
serviceSubtask.setAdmindate(serviceTaskVO.getVisittime());
|
serviceSubtask.setRoomno(serviceTaskVO.getRoomno());
|
serviceSubtask.setBedNo(serviceTaskVO.getBedno());
|
serviceSubtask.setDeptname(serviceTaskVO.getDeptname());
|
serviceSubtask.setDeptcode(serviceTaskVO.getDeptcode());
|
serviceSubtask.setSendstate(1L);
|
serviceSubtask.setCreateTime(new Date());
|
serviceSubtask.setLeavehospitaldistrictcode(serviceTaskVO.getDistrictcode());
|
//先查询一遍,该taskGuid是否存在
|
ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
|
serviceSubtaskVO.setTaskGuid(serviceTaskVO.getTaskguid());
|
List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
|
if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
|
serviceSubtask.setId(serviceSubtaskList.get(0).getId());
|
serviceSubtask.setUpdateTime(new Date());
|
serviceSubtaskMapper.updateServiceSubtaskByTaskGuid(serviceSubtask);
|
} else {
|
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
|
}
|
Integer integer = serviceSubtask.getId().intValue();
|
log.error("插入的ID是:{}", integer);
|
return integer;
|
}
|
|
|
@Override
|
public Map query360PatInfo(ServiceQueryInfo serviceQueryInfo) {
|
if (ObjectUtils.isEmpty(serviceQueryInfo)) {
|
log.info("360查询条件为空");
|
throw new BaseException("360查询条件为空");
|
}
|
String token = null;
|
|
LyraTokenUtil lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
|
try {
|
token = lyraTokenUtil.getToken();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
//用户信息,通过ZuZhiJGID去bse_organization中获取机构信息
|
if (StringUtils.isBlank(serviceQueryInfo.getYeWuXX().getYongHuXX().getZuZhiJGID()))
|
throw new BaseException("机构id不能为空!");
|
BaseOrganization baseOrganization = new BaseOrganization();
|
baseOrganization.setGuid(serviceQueryInfo.getYeWuXX().getYongHuXX().getZuZhiJGID());
|
List<BaseOrganization> baseOrganizations = baseOrganizationMapper.selectBaseOrganizationList(baseOrganization);
|
if (CollectionUtils.isNotEmpty(baseOrganizations)) {
|
YongHuXX yongHuXX = serviceQueryInfo.getYeWuXX().getYongHuXX();
|
yongHuXX.setZuZhiJGID(baseOrganizations.get(0).getGuid());
|
yongHuXX.setZuZhiJGMC(baseOrganizations.get(0).getOrganizationName());
|
serviceQueryInfo.getYeWuXX().setYongHuXX(yongHuXX);
|
}
|
|
//消息头信息时间
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
|
serviceQueryInfo.getXiaoXiTou().setFaSongSJ(simpleDateFormat.format(new Date()));
|
|
log.error(new Gson().toJson(serviceQueryInfo));
|
log.error("serviceQueryInfo的结果为:{}", serviceQueryInfo);
|
ObjectMapper objectMapper = new ObjectMapper();
|
String result = null;
|
Map map = new HashMap();
|
try {
|
String jsonString = objectMapper.writeValueAsString(serviceQueryInfo);
|
log.error("token的值为:{}", token);
|
result = OkHttpExample.sendPostRequest("https://9.0.124.104:13021/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun", jsonString, token);
|
map = objectMapper.readValue(result, Map.class);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
Integer code = (Integer) map.get("code");
|
if (code != null && code == 0) {
|
map.put("code", 200);
|
}
|
|
return map;
|
}
|
|
@Override
|
public Map focus(ServiceQueryFocus serviceQueryFocus) {
|
return null;
|
}
|
|
}
|