| | |
| | | import com.ruoyi.system.mapper.SysConfigMapper; |
| | | import com.smartor.common.FtpService; |
| | | import com.smartor.common.MtSubmitSmUtil; |
| | | import com.smartor.common.ScheduleSubtaskBuilder; |
| | | import com.smartor.config.PhoneUtils; |
| | | import com.smartor.domain.DTO.ServiceSubtaskDetailDTO; |
| | | import com.smartor.domain.*; |
| | |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.collections4.MapUtils; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | |
| | | private IServiceTaskScheduleService serviceTaskScheduleService; |
| | | |
| | | @Autowired |
| | | private com.smartor.common.ScheduleSubtaskBuilder scheduleSubtaskBuilder; |
| | | private ScheduleSubtaskBuilder scheduleSubtaskBuilder; |
| | | |
| | | @Autowired |
| | | private FtpService ftpService; |
| | |
| | | serviceSubtaskRes.setSendstateView(1L); |
| | | if (serviceSubtaskRes.getSendstate() == 6) serviceSubtaskRes.setSendstateView(2L); |
| | | if (serviceSubtaskRes.getSendstate() == 4) serviceSubtaskRes.setSendstateView(3L); |
| | | // 填充当前补偿 |
| | | if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())){ |
| | | if(StringUtils.isNotEmpty(serviceSubtask.getPreachform())){ |
| | | //默认取第一个 |
| | | serviceSubtaskRes.setCurrentPreachform(serviceSubtask.getPreachform().split(",")[0]); |
| | | } |
| | | } |
| | | serviceSubtaskResList.add(serviceSubtaskRes); |
| | | } |
| | | return serviceSubtaskResList; |
| | |
| | | ServiceTaskoper serviceTaskoper = new ServiceTaskoper(); |
| | | serviceTaskoper.setOpcode(serviceTaskVO.getOpcode()); |
| | | serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc()); |
| | | serviceTaskoper.setOplevelcode(serviceTaskVO.getOplevelcode()); |
| | | // serviceTaskoper.setOplevelcode(serviceTaskVO.getOplevelcode()); |
| | | serviceTaskoper.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskoper.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask())); |
| | | serviceTaskoper.setGuid(serviceTask.getGuid()); |
| | | serviceTaskoper.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskoper.setCreateTime(new Date()); |
| | | //配置科室、病区 |
| | | serviceTaskoper.setDeptCode(serviceTaskVO.getDeptcode()); |
| | | serviceTaskoper.setDeptName(serviceTaskVO.getDeptname()); |
| | | serviceTaskoper.setWardCode(serviceTaskVO.getLeavehospitaldistrictcode()); |
| | | serviceTaskoper.setWardName(serviceTaskVO.getLeavehospitaldistrictname()); |
| | | //多选手术等级 |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getOplevelcode())) { |
| | | log.info("----serviceTaskoper的值为:{}", serviceTaskoper); |
| | | serviceTaskoperService.insertServiceTaskoper(serviceTaskoper); |
| | | String[] opLevelcodes = serviceTaskVO.getOplevelcode().split(","); |
| | | for (String opLevelcode : opLevelcodes) { |
| | | //先查询一下是否存在 |
| | | log.info("----serviceTaskoper的值为:{}", serviceTaskoper); |
| | | serviceTaskoper.setOplevelcode(opLevelcode); |
| | | serviceTaskoperService.insertServiceTaskoper(serviceTaskoper); |
| | | } |
| | | } |
| | | |
| | | } else if (serviceTaskVO.getAppltype().equals("5")) { |
| | |
| | | scheduleVO.setOrgid(serviceTask.getOrgid()); |
| | | scheduleVO.setCampusid(serviceTask.getCampusid()); |
| | | scheduleVO.setCreateBy(serviceTask.getCreateBy()); |
| | | |
| | | scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode()); |
| | | scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode()); |
| | | scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code()); |
| | | scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode()); |
| | | |
| | | log.info("----serviceTaskSchedule的值为:{}", scheduleVO); |
| | | serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO); |
| | | // 绑定维度写条件表(供 HIS 自动纳入匹配,longtask 恒=1) |
| | | bindDimensionCondition(serviceTask, serviceTaskVO); |
| | | } else { |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | |
| | | List<ServiceTaskScheduleDetail> detailList = |
| | | serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId()); |
| | | scheduleSubtaskBuilder.buildSubtasksForPatient( |
| | | serviceTask, serviceTaskVO, schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | continue; |
| | | } |
| | | |
| | |
| | | scheduleVO.setTaskid(serviceTask.getTaskid()); |
| | | scheduleVO.setOrgid(serviceTask.getOrgid()); |
| | | scheduleVO.setCampusid(serviceTask.getCampusid()); |
| | | scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode()); |
| | | scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode()); |
| | | scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code()); |
| | | scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode()); |
| | | scheduleVO.setCreateBy(serviceTask.getUpdateBy()); |
| | | serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO); |
| | | // 先清旧维度条件表,再按最新入参重写(防过期维度残留导致误纳入) |
| | | clearDimensionCondition(serviceTask.getTaskid()); |
| | | bindDimensionCondition(serviceTask, serviceTaskVO); |
| | | } |
| | | } |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) { |
| | |
| | | serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); |
| | | serviceSubtask.setCreateBy(serviceTask.getUpdateBy()); |
| | | scheduleSubtaskBuilder.buildSubtasksForPatient( |
| | | serviceTask, serviceTaskVO, schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | continue; |
| | | } |
| | | if (patTaskRelevance.getIsoperation() == 2) { |
| | |
| | | Map<String, Integer> map = new HashMap<>(); |
| | | map.put("taskId", serviceTask.getTaskid().intValue()); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 任务组(appltype=5)绑定维度写条件表,供 HIS 自动纳入匹配。 |
| | | * longtask 恒=1(否则独立扫描/主扫描按 longtask=1 查不到)。 |
| | | * 复用现有 service_taskdept(科室deptType=1/病区deptType=2)、service_taskdiag(疾病)。 |
| | | * 手术维度本期不写(暂不支持自动纳入)。 |
| | | */ |
| | | private void bindDimensionCondition(ServiceTask serviceTask, ServiceTaskVO vo) { |
| | | // 科室 |
| | | if (StringUtils.isNotEmpty(vo.getDeptcode())) { |
| | | for (String deptCode : vo.getDeptcode().split(",")) { |
| | | if (StringUtils.isEmpty(deptCode)) continue; |
| | | ServiceTaskdept d = new ServiceTaskdept(); |
| | | d.setTaskId(serviceTask.getTaskid()); |
| | | d.setTaskName(serviceTask.getTaskName()); |
| | | d.setOrgid(serviceTask.getOrgid()); |
| | | d.setLongtask(1L); |
| | | d.setDeptCode(deptCode); |
| | | d.setDeptType("1"); |
| | | d.setServiceType(vo.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(d); |
| | | } |
| | | } |
| | | // 病区 |
| | | if (StringUtils.isNotEmpty(vo.getLeavehospitaldistrictcode())) { |
| | | for (String wardCode : vo.getLeavehospitaldistrictcode().split(",")) { |
| | | if (StringUtils.isEmpty(wardCode)) continue; |
| | | ServiceTaskdept d = new ServiceTaskdept(); |
| | | d.setTaskId(serviceTask.getTaskid()); |
| | | d.setTaskName(serviceTask.getTaskName()); |
| | | d.setOrgid(serviceTask.getOrgid()); |
| | | d.setLongtask(1L); |
| | | d.setDeptCode(wardCode); |
| | | d.setDeptType("2"); |
| | | d.setServiceType(vo.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(d); |
| | | } |
| | | } |
| | | // 疾病(用 split(","),勿照抄 appltype=3 现网的 split("$") bug) |
| | | if (StringUtils.isNotEmpty(vo.getIcd10code())) { |
| | | String[] codes = vo.getIcd10code().split(","); |
| | | String[] names = StringUtils.isNotEmpty(vo.getIcd10name()) ? vo.getIcd10name().split(",") : new String[0]; |
| | | for (int i = 0; i < codes.length; i++) { |
| | | if (StringUtils.isEmpty(codes[i])) continue; |
| | | ServiceTaskdiag dg = new ServiceTaskdiag(); |
| | | dg.setTaskId(serviceTask.getTaskid()); |
| | | dg.setTaskName(serviceTask.getTaskName()); |
| | | dg.setOrgid(serviceTask.getOrgid()); |
| | | dg.setLongtask(1L); |
| | | dg.setServiceType(vo.getServiceType()); |
| | | dg.setIcd10code(codes[i]); |
| | | dg.setIcd10name(i < names.length ? names[i] : null); |
| | | dg.setGuid(serviceTask.getGuid()); |
| | | dg.setCreateTime(new Date()); |
| | | serviceTaskdiagService.insertServiceTaskdiag(dg); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 任务组修改时,先软删该 task 旧的维度条件表记录(防过期维度残留导致误纳入)。 |
| | | */ |
| | | private void clearDimensionCondition(Long taskId) { |
| | | ServiceTaskdept dq = new ServiceTaskdept(); |
| | | dq.setTaskId(taskId); |
| | | List<ServiceTaskdept> depts = serviceTaskdeptService.selectServiceTaskdeptList(dq); |
| | | if (CollectionUtils.isNotEmpty(depts)) { |
| | | for (ServiceTaskdept d : depts) { |
| | | serviceTaskdeptService.deleteServiceTaskdeptById(d.getId()); |
| | | } |
| | | } |
| | | ServiceTaskdiag gq = new ServiceTaskdiag(); |
| | | gq.setTaskId(taskId); |
| | | List<ServiceTaskdiag> diags = serviceTaskdiagService.selectServiceTaskdiagList(gq); |
| | | if (CollectionUtils.isNotEmpty(diags)) { |
| | | for (ServiceTaskdiag g : diags) { |
| | | serviceTaskdiagService.deleteServiceTaskdiagById(g.getId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | return resultMap; |
| | | } |
| | | |
| | | @Override |
| | | public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds) { |
| | | return serviceSubtaskMapper.statQuestionOption(taskIds); |
| | | } |
| | | |
| | | private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) { |
| | | Boolean result = true; |
| | | //3.4 如果3.1或3.2为true的话,根据type判断什么类型 |