| | |
| | | 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; |
| | |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.Instant; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | @Autowired |
| | | private ServiceSubtaskMapper serviceSubtaskMapper; |
| | | @Autowired |
| | | private SysUserDeptMapper sysUserDeptMapper; |
| | | private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper; |
| | | |
| | | @Value("${visitHosp}") |
| | | private Integer visitHosp; |
| | |
| | | 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; |
| | | } |
| | |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); |
| | | //重新新增子任务 |
| | | i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); |
| | | //这里需要全失败 |
| | | addServiceSubtaskPreachform(serviceSubtask, "5"); |
| | | |
| | | } |
| | | } |
| | | } else { |
| | | if (StringUtils.isEmpty(serviceSubtask.getPhone())) { |
| | | serviceSubtask.setRemark("手机号为空"); |
| | | serviceSubtask.setSendstate(4L); |
| | | serviceSubtask.setResult("error"); |
| | | // serviceSubtask.setFinishtime(new Date()); |
| | | } |
| | | serviceSubtask.setCreateBy(serviceTask.getCreateBy()); |
| | | serviceSubtask.setCreateTime(new Date()); |
| | | i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); |
| | | } |
| | | } else { |
| | | if (StringUtils.isEmpty(serviceSubtask.getPhone())) { |
| | | 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.setSex(patArchive.getSex()); |
| | | serviceSubtask.setAge(patArchive.getAge()); |
| | | serviceSubtask.setSendstate(2L); |
| | | serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor()); |
| | | serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode()); |
| | | serviceSubtask.setStarttime(patMedInhosp1.getStarttime()); |
| | | serviceSubtask.setEndtime(patMedInhosp1.getEndtime()); |
| | | serviceSubtask.setServiceType(serviceTask.getServiceType()); |
| | |
| | | Date newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue()); |
| | | serviceSubtask.setLongSendTime(newDate); |
| | | serviceSubtask.setVisitTime(newDate); |
| | | //如果是通知的话,需要提前几天将通过短信发出去(具体几天,这个可以配置在sys_conf表中) |
| | | if ("3".equals(serviceTask.getType())) { |
| | | serviceSubtask.setVisitTime(minusDay(newDate, 2)); |
| | | } |
| | | |
| | | |
| | | //患者发送时间 |
| | | if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) { |
| | | // log.error("serviceSubtask99999999的值为:{}",serviceSubtask); |
| | | String remark = patArchive.getNotrequiredreason(); |
| | | serviceSubtask.setRemark(remark); |
| | | serviceSubtask.setResult("error"); |
| | | // serviceSubtask.setFinishtime(new Date()); |
| | | //不执行 |
| | | serviceSubtask.setSendstate(4L); |
| | | } |
| | | return serviceSubtask; |
| | | } |
| | | |
| | | /** |
| | | * 减去相应天数 |
| | | * |
| | | * @param originalDate |
| | | * @param day |
| | | * @return |
| | | */ |
| | | public Date minusDay(Date originalDate, Integer day) { |
| | | // 1. 将 Date 转换为 Instant |
| | | Instant instant = originalDate.toInstant(); |
| | | |
| | | // 2. 在 Instant 上减去2天 |
| | | Instant twoDaysAgoInstant = instant.minus(2, ChronoUnit.DAYS); |
| | | |
| | | // 3. 将计算后的 Instant 转回 Date |
| | | return Date.from(twoDaysAgoInstant); |
| | | } |
| | | |
| | | //处理入院信息 |
| | | private void dealInHospInfo(List<PatMedInhosp> patMedInhospList) { |
| | | for (PatMedInhosp patMedInhosp1 : patMedInhospList) { |