Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r40471 -r40486 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 40471) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 40486) @@ -7444,6 +7444,18 @@ StringBuffer sbf = new StringBuffer(); RecyclingApplication application = mergeApplications(recyclingApplication, sbf,true); + //{{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //在病人使用记录转单时,若同时配置了按科室合并,则需要将病人使用记录中的字段“手术间”的值记录到对应的申请单中。ZJYY-166 + if(StringUtils.isBlank(application.getOperationRoom()) + && recyclingApplication.getUseRecord() != null + && StringUtils.isNotBlank(recyclingApplication.getUseRecord().getOperationRoom())){ + String useRecordConvertRecyclingApplicationMergeRegular = CssdUtils.getSystemSetConfigByName("useRecordConvertRecyclingApplicationMergeRegular"); + if(StringUtils.equals(useRecordConvertRecyclingApplicationMergeRegular, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_DEPART) + && this.enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo()){ + application.setOperationRoom(recyclingApplication.getUseRecord().getOperationRoom()); + } + } + saveOrUpdateRecyclingApplication(application, true); List useRecordList = new ArrayList(); @@ -12319,5 +12331,38 @@ throw new RuntimeException(tousseInstance.getTousseName() + "未配置处理科室."); } - + + @Override + public boolean enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo() { + //新增config.js配置项,英文名:useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo, + //中文名:使用记录转换申请单时根据病人信息进行合并; + //例如:useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo: ["patientIDCard", "hospitalNumber", "clinicNumber"] + //只支持:"patientIDCard", "hospitalNumber", "clinicNumber", "patientName"字段 + String useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo = + ConfigUtils.getSystemSetConfigByName("useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo"); + if(StringUtils.isBlank(useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo)){ + return false; + } + JSONArray useRecordConvertRecyclingApplicationMergeRegularOfPatientInfoArray = null; + try { + useRecordConvertRecyclingApplicationMergeRegularOfPatientInfoArray = JSONArray.fromObject(useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo); + } catch (Exception e) {} + if(useRecordConvertRecyclingApplicationMergeRegularOfPatientInfoArray == null || useRecordConvertRecyclingApplicationMergeRegularOfPatientInfoArray.size() == 0){ + return false; + } + for (int i = 0; i < useRecordConvertRecyclingApplicationMergeRegularOfPatientInfoArray.size(); i++) { + String field = useRecordConvertRecyclingApplicationMergeRegularOfPatientInfoArray.optString(i); + if(StringUtils.equals(field, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_CLINICNUMBER)){ + return true; + }else if(StringUtils.equals(field, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_HOSPITALNUMBER)){ + return true; + }else if(StringUtils.equals(field, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTIDCARD)){ + return true; + }else if(StringUtils.equals(field, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTNAME)){ + return true; + } + } + return false; + } + } Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r40457 -r40486 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 40457) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 40486) @@ -4819,6 +4819,9 @@ //灭菌方式不在lowTempSterilizationModes中的器械包不能合并到灭菌方式为lowTempSterilizationModes的申请单上DGSDBZXYY-31 String lowTempSterilizationModeNotInSql = buildLowTempSterilizationModeNotInSql(lowTempSterilizationModesJSONArray); + //开启按照病人信息合并 + boolean enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo = recyclingApplicationManager.enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo(); + //申请单类型(2表示分开的申请单,1为通用申请单) if(InvoicePlan.APPLICATION_FORM_TYPE_SPLIT.equals(applicationFormType)){ for(String urgentStatus : urgentStatusSettleAccountDeptCodeTousseMap.keySet()){ @@ -5099,10 +5102,16 @@ } } if(!willMergeConvertApplication || !departCanMerge){ + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //在病人使用记录转单时,若同时配置了按科室合并,则需要将病人使用记录中的字段“手术间”的值记录到对应的申请单中。ZJYY-166 + String recyclingApplicationOperationRoom = null; + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo){ + recyclingApplicationOperationRoom = operationRoom; + } //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( tempApplyTousseMap,new HashMap(), applicant, depart, departCoding, settleAccountDept, settleAccountDeptCode, hospitalNumbers, remark, - tempTousseBarcodeMap,applicationCreateDate,null,null,dpf,InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, + tempTousseBarcodeMap,applicationCreateDate,recyclingApplicationOperationRoom,null,dpf,InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, tempApplyUrgentTousseMap,tempApplyTousseNameToUrgentAmountMap,tempApplyTousseNameToMaxUrgentLevelMap,firstUseRecordId, handlerDepartCode); if(CollectionUtils.isNotEmpty(recyclingApplicationList)){ @@ -5176,6 +5185,12 @@ //备注重新设置(病人巡回洗手护士需要将来自多条使用记录的数据拼接,手术数量与器械包数量进行重新设值) recyclingApplication.setRemark(getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication)); + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //若合并到已存在的申请单,则需判断当前申请单中的字段“手术间”的值是否为空,如果为空则取本次合并的使用记录中手术间的值,若不为空,则不需要再取值。ZJYY-166 + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo + && StringUtils.isBlank(recyclingApplication.getOperationRoom())){ + recyclingApplication.setOperationRoom(operationRoom); + } objectDao.saveOrUpdate(recyclingApplication); //只有当使用记录数量为1时,才启用器械交接 @@ -5546,10 +5561,16 @@ } } if(!willMergeConvertApplication || !departCanMerge){ + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //在病人使用记录转单时,若同时配置了按科室合并,则需要将病人使用记录中的字段“手术间”的值记录到对应的申请单中。ZJYY-166 + String recyclingApplicationOperationRoom = null; + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo){ + recyclingApplicationOperationRoom = operationRoom; + } //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( tempApplyTousseMap,new HashMap(), applicant, depart, departCoding, settleAccountDept, settleAccountDeptCode, hospitalNumbers, remark, - tempTousseBarcodeMap,applicationCreateDate,null,null,dpf,InvoicePlan.TYPE_COMBO_FORM, + tempTousseBarcodeMap,applicationCreateDate,recyclingApplicationOperationRoom,null,dpf,InvoicePlan.TYPE_COMBO_FORM, tempApplyUrgentTousseMap,tempApplyTousseNameToUrgentAmountMap,tempApplyTousseNameToMaxUrgentLevelMap,firstUseRecordId, handlerDepartCode); if(CollectionUtils.isNotEmpty(recyclingApplicationList)){ @@ -5621,6 +5642,12 @@ //备注重新设置(病人巡回洗手护士需要将来自多条使用记录的数据拼接,手术数量与器械包数量进行重新设值) recyclingApplication.setRemark(getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication)); + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //若合并到已存在的申请单,则需判断当前申请单中的字段“手术间”的值是否为空,如果为空则取本次合并的使用记录中手术间的值,若不为空,则不需要再取值。ZJYY-166 + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo + && StringUtils.isBlank(recyclingApplication.getOperationRoom())){ + recyclingApplication.setOperationRoom(operationRoom); + } objectDao.saveOrUpdate(recyclingApplication); //只有当使用记录数量为1时,才启用器械交接 @@ -5993,10 +6020,16 @@ } } if(!willMergeConvertApplication || !departCanMerge){ + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //在病人使用记录转单时,若同时配置了按科室合并,则需要将病人使用记录中的字段“手术间”的值记录到对应的申请单中。ZJYY-166 + String recyclingApplicationOperationRoom = null; + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo){ + recyclingApplicationOperationRoom = operationRoom; + } //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( tempApplyTousseMap,new HashMap(), applicant, depart, departCoding, settleAccountDept, settleAccountDeptCode, hospitalNumbers, remark, - tempTousseBarcodeMap,applicationCreateDate,null,null,dpf,InvoicePlan.TYPE_COMBO_FORM, + tempTousseBarcodeMap,applicationCreateDate,recyclingApplicationOperationRoom,null,dpf,InvoicePlan.TYPE_COMBO_FORM, tempApplyUrgentTousseMap,tempApplyTousseNameToUrgentAmountMap,tempApplyTousseNameToMaxUrgentLevelMap,firstUseRecordId, handlerDepartCode); if(CollectionUtils.isNotEmpty(recyclingApplicationList)){ @@ -6067,6 +6100,12 @@ //备注重新设置(病人巡回洗手护士需要将来自多条使用记录的数据拼接,手术数量与器械包数量进行重新设值) recyclingApplication.setRemark(getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication)); + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //若合并到已存在的申请单,则需判断当前申请单中的字段“手术间”的值是否为空,如果为空则取本次合并的使用记录中手术间的值,若不为空,则不需要再取值。ZJYY-166 + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo + && StringUtils.isBlank(recyclingApplication.getOperationRoom())){ + recyclingApplication.setOperationRoom(operationRoom); + } objectDao.saveOrUpdate(recyclingApplication); //只有当使用记录数量为1时,才启用器械交接 @@ -7373,6 +7412,9 @@ //根据供应室处理科室编码分组 Map> handlerDepartCodeTousseInstanceMap = recyclingApplicationManager.getHandlerDepartCodeTousseInstanceMap(tousseInstanceWillBeConvertedTousseItemList, departCoding); + //开启按照病人信息合并 + boolean enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo = recyclingApplicationManager.enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo(); + List recyclingApplicationListAfterConvert = new ArrayList(); for (Entry> handlerDepartCodeTousseInstanceMapEntry : handlerDepartCodeTousseInstanceMap.entrySet()) { //供应室处理科室编码 @@ -7620,10 +7662,16 @@ } } if(!willMergeConvertApplication || !departCanMerge){ + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //在病人使用记录转单时,若同时配置了按科室合并,则需要将病人使用记录中的字段“手术间”的值记录到对应的申请单中。ZJYY-166 + String recyclingApplicationOperationRoom = null; + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo){ + recyclingApplicationOperationRoom = operationRoom; + } //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( tempApplyTousseMap,new HashMap(), applicant, depart, departCoding, settleAccountDept, settleAccountDeptCode, hospitalNumbers, remark, - tempTousseBarcodeToTdIdMap,applicationCreateDate,null,sterilizationMode,dpf,invoicePlanTypeAfterTousseConvert, + tempTousseBarcodeToTdIdMap,applicationCreateDate,recyclingApplicationOperationRoom,sterilizationMode,dpf,invoicePlanTypeAfterTousseConvert, tempApplyUrgentTousseMap,tempApplyTousseNameToUrgentAmountMap,tempApplyTousseNameToMaxUrgentLevelMap,firstUseRecordId, handlerDepartCode); if(CollectionUtils.isNotEmpty(recyclingApplicationList)){ @@ -7685,6 +7733,12 @@ //备注重新设置(病人巡回洗手护士需要将来自多条使用记录的数据拼接,手术数量与器械包数量进行重新设值) recyclingApplication.setRemark(getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication)); + //{在启用配置项“useRecordConvertRecyclingApplicationMergeRegularOfPatientInfo”后, + //若合并到已存在的申请单,则需判断当前申请单中的字段“手术间”的值是否为空,如果为空则取本次合并的使用记录中手术间的值,若不为空,则不需要再取值。ZJYY-166 + if(enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo + && StringUtils.isBlank(recyclingApplication.getOperationRoom())){ + recyclingApplication.setOperationRoom(operationRoom); + } //追加申请项(相同物品的,则数量进行叠加) /*appendTousseItemForRecyclingApplication(recyclingApplication , applyTousseMap, @@ -14071,13 +14125,13 @@ return ""; } - if(StringUtils.equals(mergeField, "hospitalNumber")){ + if(StringUtils.equals(mergeField, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_HOSPITALNUMBER)){ mergeField = "hospitalNum"; - }else if(StringUtils.equals(mergeField, "clinicNumber")){ + }else if(StringUtils.equals(mergeField, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_CLINICNUMBER)){ mergeField = "treatmentNum"; - }else if(StringUtils.equals(mergeField, "patientIDCard")){ + }else if(StringUtils.equals(mergeField, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTIDCARD)){ mergeField = "patientIDCard"; - }else if(StringUtils.equals(mergeField, "patientName")){ + }else if(StringUtils.equals(mergeField, UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTNAME)){ mergeField = "patientName"; } @@ -14138,25 +14192,25 @@ if(fieldValueSet == null){ fieldValueSet = new HashSet(); } - if(StringUtils.equals("patientIDCard", field)){ + if(StringUtils.equals(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTIDCARD, field)){ Set patientIDCardSet = new HashSet(); useRecordList.stream().forEach(ur -> patientIDCardSet.add(StringTools.defaultString(ur.getPatientIDCard()).trim())); if(CollectionUtils.isNotEmpty(patientIDCardSet)){ fieldValueSet.addAll(patientIDCardSet); } - }else if(StringUtils.equals("clinicNumber", field)){ + }else if(StringUtils.equals(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_CLINICNUMBER, field)){ Set treatmentNumSet = new HashSet(); useRecordList.stream().forEach(ur -> treatmentNumSet.add(StringTools.defaultString(ur.getTreatmentNum()).trim())); if(CollectionUtils.isNotEmpty(treatmentNumSet)){ fieldValueSet.addAll(treatmentNumSet); } - }else if(StringUtils.equals("hospitalNumber", field)){ + }else if(StringUtils.equals(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_HOSPITALNUMBER, field)){ Set hospitalNumSet = new HashSet(); useRecordList.stream().forEach(ur -> hospitalNumSet.add(StringTools.defaultString(ur.getHospitalNum()).trim())); if(CollectionUtils.isNotEmpty(hospitalNumSet)){ fieldValueSet.addAll(hospitalNumSet); } - }else if(StringUtils.equals("patientName", field)){ + }else if(StringUtils.equals(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTNAME, field)){ Set patientNameSet = new HashSet(); useRecordList.stream().forEach(ur -> patientNameSet.add(StringTools.defaultString(ur.getPatientName()).trim())); if(CollectionUtils.isNotEmpty(patientNameSet)){ Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r40444 -r40486 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 40444) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 40486) @@ -742,4 +742,10 @@ */ public Map> getHandlerDepartCodeTousseInstanceMap(Collection tousseInstanceWillBeConvertedTousseItemList, String departCoding); + /** + * 判断是否启用“使用记录转换申请单时根据病人信息进行合并”的配置项FSFY-101 + * @return + */ + public boolean enableUseRecordConvertRecyclingApplicationMergeRegularOfPatientInfo(); + } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java =================================================================== diff -u -r40458 -r40486 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 40458) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 40486) @@ -366,7 +366,24 @@ public static String CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_NONE = "none"; public static String CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_OPERATIONROOM = "operationRoom"; public static String CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_DEPART = "depart"; + /** + * 根据病人信息-身份证号码合并转换申请单FSFY-101 + */ + public static String CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTIDCARD = "patientIDCard"; + /** + * 根据病人信息-诊疗号合并转换申请单FSFY-101 + */ + public static String CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_CLINICNUMBER = "clinicNumber"; + /** + * 根据病人信息-住院号合并转换申请单FSFY-101 + */ + public static String CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_HOSPITALNUMBER = "hospitalNumber"; + /** + * 根据病人信息-病人名称合并转换申请单FSFY-101 + */ + public static String CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_PARENT_INFO_PATIENTNAME = "patientName"; + /** * 是否已推送 * (默认值为“否”)XMSFYBJY-7