Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/SycnDataFromHIPDaoImpl.java =================================================================== diff -u -r27486 -r27879 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/SycnDataFromHIPDaoImpl.java (.../SycnDataFromHIPDaoImpl.java) (revision 27486) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/SycnDataFromHIPDaoImpl.java (.../SycnDataFromHIPDaoImpl.java) (revision 27879) @@ -245,10 +245,13 @@ throw new RuntimeException("xml中关键参数不能为空!"); } // 1、查询器械包实例 - TousseInstance tousseInstance = new TousseInstance(); - tousseInstance.setBarcode(barcode); + String[] barcodes = barcode.split(";"); List list = new ArrayList(); - list.add(tousseInstance); + for (String code : barcodes) { + TousseInstance tousseInstance = new TousseInstance(); + tousseInstance.setBarcode(code); + list.add(tousseInstance); + } // 2、生成使用记录 UseRecord useRecord = new UseRecord(); useRecord.setTousseInstanceList(list); Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/dysrmyy/HIPMessageWebServiceImpl.java =================================================================== diff -u -r27776 -r27879 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/dysrmyy/HIPMessageWebServiceImpl.java (.../HIPMessageWebServiceImpl.java) (revision 27776) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/dysrmyy/HIPMessageWebServiceImpl.java (.../HIPMessageWebServiceImpl.java) (revision 27879) @@ -189,78 +189,86 @@ if (useRecord != null) { messageId = useRecord.getRemark(); List list = useRecord.getTousseInstanceList(); - if (CollectionUtils.isNotEmpty(list)) { - TousseInstance ti = list.get(0); - BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(ti.getBarcode()); - if (bd instanceof TousseInstance) { - // 1、查询器械包实例 - TousseInstance tousseInstance = (TousseInstance) bd; - if(!StringUtils.equals(TousseInstance.STATUS_SHIPPED, tousseInstance.getStatus()) - && !StringUtils.equals(TousseInstance.STATUS_SIGNED, tousseInstance.getStatus())){ - throw new RuntimeException("患者消毒物料使用登记失败 :器械包条码为" + bd.getBarcode() + "的器械包为“" + tousseInstance.getStatus() + "”状态,请录入“已发货”或“已签收”的器械包"); + List tiList = new ArrayList(); + // 1、查询器械包实例 + if(CollectionUtils.isNotEmpty(list)){ + for (TousseInstance ti : list) { + BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(ti.getBarcode()); + if (bd instanceof TousseInstance) { + // 1、查询器械包实例 + TousseInstance tousseInstance = (TousseInstance) bd; + if(!StringUtils.equals(TousseInstance.STATUS_SHIPPED, tousseInstance.getStatus()) + && !StringUtils.equals(TousseInstance.STATUS_SIGNED, tousseInstance.getStatus())){ + throw new RuntimeException("患者消毒物料使用登记失败 :器械包条码为" + bd.getBarcode() + "的器械包为“" + tousseInstance.getStatus() + "”状态,请录入“已发货”或“已签收”的器械包"); + } + tiList.add(tousseInstance); + } else { + throw new RuntimeException(ti.getBarcode() + "不是器械包条码"); } - // 2、查询患者信息 - // (可以调用手麻系统提供患者查询服务,或者调用HIS系统提供患者查询服务,实现其中一种即可,之前已经实现手麻系统提供患者查询服务,所以这里调用的是手麻系统提供患者查询服务) - PatientInfoVO patient = sycnDataFromHIPDao.findPatientInfoByHospitalNum(useRecord.getHospitalNum()); - if (patient == null) { - throw new RuntimeException("患者消毒物料使用登记失败 :未找到住院号为" + useRecord.getHospitalNum() + "的患者信息"); - } - // 3、创建使用记录 - UseRecord newUseRecord = new UseRecord(); - newUseRecord.setHospitalNum(patient.getHospitalNumber()); - newUseRecord.setTreatmentNum(patient.getClinicNumber()); - newUseRecord.setPatientName(patient.getPatientName()); - newUseRecord.setPatientAge(patient.getPatientAge()); - newUseRecord.setPatientSex(patient.getPatientSex()); - newUseRecord.setPatientIDCard(patient.getPatientIDCard()); - newUseRecord.setDoctorName(patient.getDoctorName()); - newUseRecord.setOperation(patient.getOperation()); - newUseRecord.setOperationRoom(patient.getOpRoomId()); - newUseRecord.setPatientArea(patient.getPatientArea()); - newUseRecord.setRoomNumber(patient.getRoomNumber()); - newUseRecord.setBedNumber(patient.getBedNumber()); - newUseRecord.setDepart(patient.getAscriptionDepartment()); - newUseRecord.setVisitId(patient.getVisitId()); - newUseRecord.setWashHandNurse(patient.getWashHandNurse()); - newUseRecord.setCircuitNurse(patient.getCircuitNurse()); - // 登记人 - newUseRecord.setOperator(useRecord.getOperator()); - // 审核人 - newUseRecord.setReviewer(useRecord.getOperator()); - Date currentDate = new Date(); - // 录入时间 - newUseRecord.setEnteringDate(useRecord.getOperationTime()); - // 审核时间 - newUseRecord.setReviewTime(useRecord.getOperationTime()); - newUseRecord.setApplicationTime(currentDate); - newUseRecord.setOperationTime(useRecord.getOperationTime()); - // 使用记录转申请单 - useRecordManager.saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED( - newUseRecord, useRecord.getOperator(), null, useRecord.getDepartCoding(), - useRecord.getOperationTime(), InvoicePlan.TYPE_COMBO_FORM, - useRecord.getOperator(), useRecord.getOperator()); - // 登记人 - newUseRecord.setOperator(useRecord.getOperator()); - // 审核人 - newUseRecord.setReviewer(useRecord.getOperator()); - // 录入时间 - newUseRecord.setEnteringDate(useRecord.getOperationTime()); - // 审核时间 - newUseRecord.setReviewTime(useRecord.getOperationTime()); - objectDao.saveOrUpdate(newUseRecord); + } + } + if (CollectionUtils.isNotEmpty(tiList)) { + // 2、查询患者信息 + // (可以调用手麻系统提供患者查询服务,或者调用HIS系统提供患者查询服务,实现其中一种即可,之前已经实现手麻系统提供患者查询服务,所以这里调用的是手麻系统提供患者查询服务) + PatientInfoVO patient = sycnDataFromHIPDao.findPatientInfoByHospitalNum(useRecord.getHospitalNum()); + if (patient == null) { + throw new RuntimeException("患者消毒物料使用登记失败 :未找到住院号为" + useRecord.getHospitalNum() + "的患者信息"); + } + // 3、创建使用记录 + UseRecord newUseRecord = new UseRecord(); + newUseRecord.setHospitalNum(patient.getHospitalNumber()); + newUseRecord.setTreatmentNum(patient.getClinicNumber()); + newUseRecord.setPatientName(patient.getPatientName()); + newUseRecord.setPatientAge(patient.getPatientAge()); + newUseRecord.setPatientSex(patient.getPatientSex()); + newUseRecord.setPatientIDCard(patient.getPatientIDCard()); + newUseRecord.setDoctorName(patient.getDoctorName()); + newUseRecord.setOperation(patient.getOperation()); + newUseRecord.setOperationRoom(patient.getOpRoomId()); + newUseRecord.setPatientArea(patient.getPatientArea()); + newUseRecord.setRoomNumber(patient.getRoomNumber()); + newUseRecord.setBedNumber(patient.getBedNumber()); + newUseRecord.setDepart(patient.getAscriptionDepartment()); + newUseRecord.setVisitId(patient.getVisitId()); + newUseRecord.setWashHandNurse(patient.getWashHandNurse()); + newUseRecord.setCircuitNurse(patient.getCircuitNurse()); + // 登记人 + newUseRecord.setOperator(useRecord.getOperator()); + // 审核人 + newUseRecord.setReviewer(useRecord.getOperator()); + Date currentDate = new Date(); + // 录入时间 + newUseRecord.setEnteringDate(useRecord.getOperationTime()); + // 审核时间 + newUseRecord.setReviewTime(useRecord.getOperationTime()); + newUseRecord.setApplicationTime(currentDate); + newUseRecord.setOperationTime(useRecord.getOperationTime()); + // 使用记录转申请单 + useRecordManager.saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED( + newUseRecord, useRecord.getOperator(), null, useRecord.getDepartCoding(), + useRecord.getOperationTime(), InvoicePlan.TYPE_COMBO_FORM, + useRecord.getOperator(), useRecord.getOperator()); + // 登记人 + newUseRecord.setOperator(useRecord.getOperator()); + // 审核人 + newUseRecord.setReviewer(useRecord.getOperator()); + // 录入时间 + newUseRecord.setEnteringDate(useRecord.getOperationTime()); + // 审核时间 + newUseRecord.setReviewTime(useRecord.getOperationTime()); + objectDao.saveOrUpdate(newUseRecord); + for (TousseInstance tousseInstance : tiList) { tousseInstance.setUseRecord_id(newUseRecord.getId()); tousseInstance.setStatus(TousseInstance.STATUS_USED); tousseInstance.setPatientName(patient.getPatientName()); tousseInstance.setDoctorName(patient.getDoctorName()); tousseInstance.setUseTime(useRecord.getOperationTime()); - objectDao.saveOrUpdate(tousseInstance); - if (StringUtils.isNotBlank(messageId)) { - typeCode = "AA"; - returnStr = "患者消毒物料使用登记成功"; - } - } else { - returnStr = "该条码不是器械包条码"; } + objectDao.batchSaveOrUpdate(tiList); + if (StringUtils.isNotBlank(messageId)) { + typeCode = "AA"; + returnStr = "患者消毒物料使用登记成功"; + } } } } catch (Exception e) {