|  |  | 
 |  |  | package com.smartor.service.impl; | 
 |  |  |  | 
 |  |  | import com.fasterxml.jackson.core.JsonProcessingException; | 
 |  |  | import com.fasterxml.jackson.core.type.TypeReference; | 
 |  |  | import com.fasterxml.jackson.databind.ObjectMapper; | 
 |  |  | import com.ruoyi.common.core.domain.entity.SysDept; | 
 |  |  | import com.ruoyi.common.utils.DateUtils; | 
 |  |  | import com.ruoyi.common.utils.DtoConversionUtils; | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ServiceSubtaskMapper serviceSubtaskMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SysUserDeptMapper sysUserDeptMapper; | 
 |  |  |     private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper; | 
 |  |  |  | 
 |  |  |     @Value("${visitHosp}") | 
 |  |  |     private Integer visitHosp; | 
 |  |  |     @Value("${spring.profiles.active}") | 
 |  |  |     private String active; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 查询患者住院记录 | 
 |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //根据患者所在病区,获取该病区的长期任务,新华医院可以先不用根据病区和疾病来做 | 
 |  |  |         if (visitHosp != 1) { | 
 |  |  |  | 
 |  |  |         if (active.equals("xh")) { | 
 |  |  |             PatMedInhosp pmbq = new PatMedInhosp(); | 
 |  |  |             //获取需要出院部门随访,未处理的数据 | 
 |  |  |             pmbq.setWardcheckFlag("0"); | 
 |  |  | 
 |  |  |         st.setTaskid(taskid); | 
 |  |  |         st.setSendState(2L); | 
 |  |  |         List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st); | 
 |  |  |         if (CollectionUtils.isEmpty(serviceTasks)) { | 
 |  |  |         if (CollectionUtils.isEmpty(serviceTasks) && type == 1) { | 
 |  |  |             log.info("该患者出院随访长期任务不存在,任务ID为:{}", taskid); | 
 |  |  |             patMedInhosp1.setDeptcheckFlag("2"); | 
 |  |  |             patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者出院随访长期任务不存在,任务ID为:" + taskid); | 
 |  |  |             patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院科室长期任务不存在,任务ID为:" + taskid); | 
 |  |  |             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); | 
 |  |  |             return; | 
 |  |  |         } else if (CollectionUtils.isEmpty(serviceTasks) && type == 2) { | 
 |  |  |             patMedInhosp1.setWardcheckFlag("2"); | 
 |  |  |             patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院病区长期任务不存在,任务ID为:" + taskid); | 
 |  |  |             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); | 
 |  |  |             return; | 
 |  |  |         } else if (CollectionUtils.isEmpty(serviceTasks) && type == 3) { | 
 |  |  |             patMedInhosp1.setDiagcheckFlag("2"); | 
 |  |  |             patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者疾病长期任务不存在,任务ID为:" + taskid); | 
 |  |  |             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         ServiceTask serviceTask = serviceTasks.get(0); | 
 |  |  |  | 
 |  |  |         if (Objects.isNull(patMedInhosp1.getEndtime())) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         //封装serviceSubtask | 
 |  |  |         ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive); | 
 |  |  |         if (type != 2) { | 
 |  |  | 
 |  |  |                         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); | 
 |  |  |                         //重新新增子任务 | 
 |  |  |                         i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); | 
 |  |  |                         //这里需要全失败 | 
 |  |  |                         addServiceSubtaskPreachform(serviceSubtask, "5"); | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                     serviceSubtask.setRemark("手机号为空"); | 
 |  |  |                     serviceSubtask.setSendstate(4L); | 
 |  |  |                     serviceSubtask.setResult("error"); | 
 |  |  | //                    serviceSubtask.setFinishtime(new Date()); | 
 |  |  |                 } | 
 |  |  |                 serviceSubtask.setCreateBy(serviceTask.getCreateBy()); | 
 |  |  |                 serviceSubtask.setCreateTime(new Date()); | 
 |  |  | 
 |  |  |                 serviceSubtask.setRemark("手机号为空"); | 
 |  |  |                 serviceSubtask.setSendstate(4L); | 
 |  |  |                 serviceSubtask.setResult("error"); | 
 |  |  | //                serviceSubtask.setFinishtime(new Date()); | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |             serviceSubtask.setCreateBy(serviceTask.getCreateBy()); | 
 |  |  |             serviceSubtask.setCreateTime(new Date()); | 
 |  |  |             i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); | 
 |  |  |             addServiceSubtaskPreachform(serviceSubtask, null); | 
 |  |  |         } | 
 |  |  |         if (i == 1) { | 
 |  |  |             //将check_flag改成1(已处理) | 
 |  |  | 
 |  |  |             patMedInhospMapper.updatePatMedInhosp(patMedInhosp2); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private Integer addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) { | 
 |  |  |         //将preachform的json对象,放到list集合中 | 
 |  |  |         String preachform = serviceSubtask.getPreachform(); | 
 |  |  |         ObjectMapper objectMapper = new ObjectMapper(); | 
 |  |  |         if (org.apache.commons.lang3.StringUtils.isNotEmpty(preachform)) { | 
 |  |  |             List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = null; | 
 |  |  |             try { | 
 |  |  |                 serviceSubtaskPreachformList = objectMapper.readValue(preachform, new TypeReference<List<ServiceSubtaskPreachform>>() { | 
 |  |  |                 }); | 
 |  |  |             } catch (JsonProcessingException e) { | 
 |  |  |                 log.error("preachform转List<ServiceSubtaskPreachform>报错了:{}", e.getMessage()); | 
 |  |  |             } | 
 |  |  |             for (ServiceSubtaskPreachform serviceSubtaskPreachform : serviceSubtaskPreachformList) { | 
 |  |  |                 serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); | 
 |  |  |                 serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); | 
 |  |  |                 //这个sendstate需要在数据库设置一个默认值为“1” | 
 |  |  |                 serviceSubtaskPreachform.setSendstate("1"); | 
 |  |  |                 if (StringUtils.isNotEmpty(sendstate)) serviceSubtaskPreachform.setSendstate(sendstate); | 
 |  |  |  | 
 |  |  |                 serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid()); | 
 |  |  |                 return serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform); | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return 0; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     //封装serviceSubtask | 
 |  |  |     private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive) { | 
 |  |  | 
 |  |  |         serviceSubtask.setUpdateTime(new Date()); | 
 |  |  |         //设置发送时间 | 
 |  |  |         if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L); | 
 |  |  |         Date newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue()); | 
 |  |  |         Date newDate = null; | 
 |  |  |         if (!Objects.isNull(patMedInhosp1.getEndtime())) { | 
 |  |  |             newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue()); | 
 |  |  |         } else { | 
 |  |  |             //如果出院时间为空,则返回一个新对象 | 
 |  |  |             return new ServiceSubtask(); | 
 |  |  |         } | 
 |  |  |         serviceSubtask.setLongSendTime(newDate); | 
 |  |  |         serviceSubtask.setVisitTime(newDate); | 
 |  |  |         //如果是通知的话,需要提前几天将通过短信发出去(具体几天,这个可以配置在sys_conf表中) |