| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import java.io.IOException; |
| | | import java.time.Instant; |
| | |
| | | } |
| | | //封装serviceSubtask |
| | | ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive, config); |
| | | if(ObjectUtils.isEmpty(serviceSubtask)){ |
| | | return; |
| | | } |
| | | if (type != 2) { |
| | | //科室和疾病 都用 科室填充 |
| | | serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeaveldeptcode()); |
| | |
| | | serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeavehospitaldistrictcode()); |
| | | serviceSubtask.setVisitDeptName(patMedInhosp1.getLeavehospitaldistrictname()); |
| | | } |
| | | //记录insertServiceSubtask语句返回状态 |
| | | Integer i = 0; |
| | | try { |
| | | //先判断一下,是否需要校验 |
| | |
| | | Date endTime = serviceSubtask.getEndtime(); |
| | | Date endTime1 = serviceSubtask1.getEndtime(); |
| | | //出院时间判空,如果为空跳过 |
| | | if(Objects.isNull(endTime)){ |
| | | if(ObjectUtils.isEmpty(endTime)){ |
| | | serviceSubtask.setResult("error"); |
| | | serviceSubtask.setRemark("出院时间为空,serviceSubtask的Id为" + serviceSubtask.getId()); |
| | | serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); |
| | | serviceSubtask.setUpdateTime(new Date()); |
| | | Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); |
| | | Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | if (aBoolean) i = 1; |
| | | continue; |
| | | } |
| | | if(Objects.isNull(endTime1)){ |
| | | if(ObjectUtils.isEmpty(endTime1)){ |
| | | serviceSubtask1.setResult("error"); |
| | | serviceSubtask1.setRemark("出院时间为空,serviceSubtask的Id为" + serviceSubtask1.getId()); |
| | | serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy()); |
| | |
| | | //如果当前循环的子任务的出院时间在“准备新增的子任务”的出院时间之前,则将循环的子任务停掉 |
| | | serviceSubtask1.setSendstate(4L); |
| | | if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) |
| | | serviceSubtask.setRemark(serviceSubtask.getRemark() + ",疾病患者再入院"); |
| | | else serviceSubtask.setRemark("疾病患者再入院"); |
| | | serviceSubtask.setRemark(serviceSubtask.getRemark() + ",科室/病区患者再入院"); |
| | | else serviceSubtask.setRemark("科室/病区患者再入院"); |
| | | serviceSubtask1.setResult("error"); |
| | | // serviceSubtask1.setFinishtime(new Date()); |
| | | serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy()); |
| | | serviceSubtask1.setUpdateTime(new Date()); |
| | | Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); |
| | |
| | | } else { |
| | | //相反,则将当有的数据停掉 |
| | | serviceSubtask.setResult("error"); |
| | | // serviceSubtask.setFinishtime(new Date()); |
| | | serviceSubtask.setSendstate(4L); |
| | | if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) |
| | | serviceSubtask.setRemark(serviceSubtask.getRemark() + ",当前患者出院时间后有待执行的出院随访长期任务"); |
| | |
| | | } catch (Exception e) { |
| | | //出错回滚事务 |
| | | log.info("生成子任务报错回滚serviceSubtask的taskid为:{},patid为:{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid()); |
| | | PatMedInhosp patMedInhosp2 = new PatMedInhosp(); |
| | | patMedInhosp2.setInhospid(patMedInhosp1.getInhospid()); |
| | | if (type == 1) patMedInhosp2.setDeptcheckFlag("2"); |
| | | if (type == 2) patMedInhosp2.setWardcheckFlag("2"); |
| | | if (type == 3) patMedInhosp2.setDiagcheckFlag("2"); |
| | | patMedInhosp2.setRemark("生成子任务报错回滚 " + type); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp2); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | |
| | | subtask.setSendstate(2L); |
| | | List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask); |
| | | // log.error("入院的患者待执行的任务:{}", selectServiceSubtaskList); |
| | | if (CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) { |
| | | if (CollectionUtils.isNotEmpty(selectServiceSubtaskList)) { |
| | | for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) { |
| | | if (Objects.isNull(serviceSubtask1.getLongSendTime())) { |
| | | //不是长期任务,不处理 |