package com.smartor.service.impl; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; 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.enums.HospTypeEnum; import com.ruoyi.common.enums.ServiceTaskTypeEnum; import com.ruoyi.common.enums.TaskTypeEnum; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.http.HttpEntity; import com.ruoyi.common.utils.http.HttpUtils; 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 com.sun.org.apache.bcel.internal.generic.NEW; import lombok.extern.slf4j.Slf4j; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; 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; @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); 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 patTaskRelevances = new ArrayList<>(); ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); serviceSubtaskVO.setTaskid(serviceSubtask.getTaskid()); List 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 taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class); serviceTaskVO.setSendTimeslot(taskSendTimeVOList); serviceTaskVO.setSendType(serviceTask.getSendType()); } //文本变量参数 if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) { Map> 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); String tasktype = "-1"; if (StringUtils.isNotEmpty(serviceTaskVO.getTasktype())) tasktype = TaskTypeEnum.getDescByCode(serviceTaskVO.getTasktype()); serviceSubtask.setType(tasktype); serviceSubtask.setLabelstatus(serviceTaskVO.getTaskstate()); serviceSubtask.setTaskName(serviceTaskVO.getTaskname()); serviceSubtask.setTaskDesc(serviceTaskVO.getTaskdesc()); serviceSubtask.setPreachform(serviceTaskVO.getExemode()); 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.setOrgid(serviceTaskVO.getOrgguid()); serviceSubtask.setPatid(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.setSendstate(1L); serviceSubtask.setCreateTime(new Date()); //先查询一遍,该taskGuid是否存在 ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); serviceSubtaskVO.setTaskGuid(serviceTaskVO.getGuid()); List serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { 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 baseOrganizations = baseOrganizationMapper.selectBaseOrganizationList(baseOrganization); if (CollectionUtils.isNotEmpty(baseOrganizations)) { YongHuXX yongHuXX = serviceQueryInfo.getYeWuXX().getYongHuXX(); yongHuXX.setYongHuID(baseOrganizations.get(0).getOrgid()); 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.84:13021/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun", jsonString, token); map = objectMapper.readValue(result, Map.class); } catch (Exception e) { e.printStackTrace(); } return map; } @Override public Map focus(ServiceQueryFocus serviceQueryFocus) { return null; } }